Mal wieder virtuelle Geräte - jetzt aber richtig!

Ja :+1:

Ahhh

{ "state": 2 }

It’s also possible to update the state of the node. The following example sets the state of the virtual device to unavailable.

hallo @Micha ,

vielen Dank für die Unterstützung.
So funktioniert das ein- und ausschalten meines plugs schon mal. :+1:

Wie müsste ich den function node erweitern, wenn ich jetzt z.b. eine dimmbare Farbled habe?
Da kommen die Befehle dann ja nicht nur als „switch“, sonder beim dimmlevel z.b. als „level“.

Die Beschreibung sagt hier folgendes, ich bin mir aber noch unschlüssig, wie ich das bei dieser Lampe umsetze.

topic string
update force the node to output the current state
topic string
pull force the node to update its current state and output it
topic string
switch can be used to change device state. The message will be something like this: { topic: "switch", payload: { value: (1|0) } }
topic string
level can be used to change device state. The message will be something like this: { topic: "level", payload: { value: [0 - 100] } }
topic string
hue can be used to change device state. The message will be something like this: { topic: "hue", payload: { value: [0 - 255] } }
topic string
saturation can be used to change device state. The message will be something like this: { topic: "saturation", payload: { value: [0 - 255] } }
topic string
temperature can be used to change device state. The message will be something like this: { topic: "temperature", payload: { value: [2700 - 5600] } }
Output 1
topic string
value of device
payload object
switch capability device status
Output 2
topic string
value of device
payload object
level capability device status
Output 3
topic string
value of device
payload object
color capability device status
Output 4
topic string
value of device
payload object
temperature capability device status
This node represents a color light device. It will keep device state. Every time the device state changes at Smartthings, the webhook will send us the current state.
Besides, if you need it to output the status, like when responding a http request, you can use the topic with the update value to force it to report.

Die andere Frage wäre, wie ich eine Rückmeldung in in homee einbaue, wenn ich es über eine andere App schalte.

Hier mal der Aufbau für eine rgb birne, bei denen die function nodes aber noch nicht korrekt sind (übernahme aus dem Beispiel von himpler.com)

[
    {
        "id": "513cfedd.9bd1f",
        "type": "homeeDevice",
        "z": "e0fa50adab69ac96",
        "virtual-homee": "",
        "name": "Decke Büro",
        "nodeId": "2060",
        "showNodeId": true,
        "profile": "1008",
        "icon": "default",
        "attributes": [
            {
                "state": 1,
                "instance": 0,
                "minimum": 0,
                "maximum": 1,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1598988338,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "type": 1,
                "id": "2060",
                "node_id": "2060"
            },
            {
                "state": 1,
                "instance": 0,
                "minimum": 0,
                "maximum": 100,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "n%2Fa",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1598988342,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "type": 2,
                "id": "2061",
                "node_id": "2060"
            },
            {
                "state": 1,
                "instance": 0,
                "minimum": 1700,
                "maximum": 6500,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "K",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1598988347,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "type": 42,
                "id": "2062",
                "node_id": "2060"
            },
            {
                "state": 1,
                "instance": 0,
                "minimum": 0,
                "maximum": 16777215,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1598988361,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "type": 23,
                "id": "2063",
                "node_id": "2060"
            }
        ],
        "statusTemplate": "",
        "x": 290,
        "y": 780,
        "wires": [
            [
                "1b3612d8.31d2ed"
            ]
        ]
    },
    {
        "id": "1b3612d8.31d2ed",
        "type": "function",
        "z": "e0fa50adab69ac96",
        "name": "RGBW",
        "func": "attributeId = msg.payload.attributeId;\ntargetValue = msg.payload.targetValue;\n\nswitch (attributeId) {\n    case 2060:\n        msg.payload = { on: targetValue };\n        break;\n    case 2061:\n        msg.payload = { brightness: targetValue };\n        break;\n    case 2062:\n        msg.payload = {\n            colorTemp: Math.round(1 / targetValue * 1000000)\n        };\n        break;\n    case 2063:\n        msg.payload = { hex: targetValue.toString(16) };\n        break;\n    default:\n        return;\n}\n\nreturn msg;\n\n\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 470,
        "y": 780,
        "wires": [
            [
                "055f8c0afc13d002"
            ]
        ]
    },
    {
        "id": "1e6e11c6.765756",
        "type": "function",
        "z": "e0fa50adab69ac96",
        "name": "RGBW Rückkanal",
        "func": "const value = msg.payload;\n\nif (!value.reachable) {\n    node.send({ payload: { state: 2 }});\n    return;\n} else {\n    node.send({ payload: { state: 1 }});\n}\n\nmsg.payload = {\n    attributes: [\n        { id: 2060, value: value.on ? 1 : 0 },\n        { id: 2061, value: value.brightness },\n        {\n            id: 2062,\n            value: Math.round(1 / value.colorTemp * 1000000),\n        },\n        { id: 2063, value: parseInt(value.hex, 16) },\n    ]\n}\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 890,
        "y": 780,
        "wires": [
            [
                "513cfedd.9bd1f"
            ]
        ]
    },
    {
        "id": "055f8c0afc13d002",
        "type": "smartthings-node-color-temperature",
        "z": "e0fa50adab69ac96",
        "conf": "3685559422692a7f",
        "name": "Dartscheibe",
        "device": "406c991b-2757-4b12-92bd-464f25fb74a9",
        "x": 670,
        "y": 780,
        "wires": [
            [],
            [
                "1e6e11c6.765756"
            ],
            []
        ]
    },
    {
        "id": "3685559422692a7f",
        "type": "smartthings-config",
        "name": "Samsung_Account",
        "token": "2685b5b9-97c7-4557-8c21-2867352c5da2"
    }
]

Ich habe die Hoffnung, das ich den Aufbau dann verstehe, wenn ich sehe, wie du den function node für mehrere Attribute anpasst. :see_no_evil:

Kannst du auch mal die Nachricht einstellen die du von der Lampe bekommst?

du meinst einen debug node an die Lampe?

die Lampe hat 3 Ausgänge und gibt das wieder:

{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"switch","name":"Decke","value":1,"timestamp":"2023-01-12T15:13:18.913Z"}
{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"level","name":"Decke","value":69,"unit":"%","timestamp":"2023-01-12T15:13:18.914Z"}
{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"temperature","name":"Decke","value":3300,"unit":"K","timestamp":"2023-01-12T15:13:18.914Z"}

Ist jetzt zwar nur ne dimmbare LED mit Weiß spektrum, sollte aber ja vom vorgehen überall gleich sein.

Ja genau das meinte ich, die Nachrichten kommen also einzeln für die entsprechenden Werte und werden durch den devicetype zugeordnet.
Ich mach dir mal ein Beispiel fertig.

1 „Gefällt mir“

Wäre wohl einer der Sonosnutzer so nett und würde mir mal einen Flow zur Steuerung der Sonos inklusive Rückmeldung in die homee App teilen?

Ich habe natürlich diesen Flow von Micha gesehen,
https://flows.nodered.org/flow/ca42fa0e9ae352c5497b34ca12cc0a5e

aber der ist ja auch schon etwas älter und ich frage mich daher, ob das noch aktuell ist, oder ob es da mittlerweile auch was aktuelleres gibt?
Vielen Dank für eine Rückmeldung

Ohja das ist echt alt. Geht auch anders und besser über das vhih Node.
Müsste ich mal kramen ob ich da noch was finde dazu.
:see_no_evil:

1 „Gefällt mir“

Vielen Dank und sorry, das ich dich da gerade an zwei Ecken nerve!!

Vielen Dank nochmal an alle, die sich hier auch immer wieder um die kümmern, die eben nicht so tief im Thema sind, auch wenn es dann gefühlt wahrscheinlich dann immer die gleichen Fragen sind.

Das Problem für mich ist dann schon mal, das man von den Suchergebnissen erschlagen wird und der eine oder andere thread dann auch noch ein gewisses Eigenleben entwickelt :wink:, so dass Infos und Hilfefestellungen über viele post verteilt sind und es echt schwierig ist, das dann noch zusammenzubringen und dann auch noch durchzusteigen.
Und wenn sich dann jemand z.b wie du @Micha auch noch die Mühe macht, ein paar Videos zum Thema zu machen, die zum Einstieg ja eigentlich sehr gut sind, dann wird irgendwann das json format geändert und die Hilfen, die es im Netz oder hier im Forum gibt, passen auf einmal alle nicht mehr.

Also nochmal vielen Dank für die Unterstützung und die Zeit!!

3 „Gefällt mir“

Du sagst das Node hat für jedes Attribute einen eigenen Ausgang ?
Dann kannst du doch ganz normal die Funktion benutzen.

[
    {
        "id": "d55bf519.0c4d18",
        "type": "function",
        "z": "f8cfd140.72f5a8",
        "name": "",
        "func": "if (msg.payload.deviceType === \"switch\"){\n return { payload:{\"attribute\":{\"id\":0,\"value\": msg.payload.value}} }   \n}\nelse if (msg.payload.deviceType === \"level\"){\n return { payload:{\"attribute\":{\"id\":0,\"value\": msg.payload.value}} }   \n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 300,
        "y": 140,
        "wires": [
            [
                "ebde5104.b1467"
            ]
        ]
    },
    {
        "id": "6ac18346.f81de4",
        "type": "inject",
        "z": "f8cfd140.72f5a8",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"deviceId\":\"406c991b-2757-4b12-92bd-464f25fb74a9\",\"deviceType\":\"switch\",\"name\":\"Decke\",\"value\":0,\"timestamp\":\"2023-01-12T15:13:18.913Z\"}",
        "payloadType": "json",
        "x": 130,
        "y": 140,
        "wires": [
            [
                "d55bf519.0c4d18"
            ]
        ]
    },
    {
        "id": "ebde5104.b1467",
        "type": "debug",
        "z": "f8cfd140.72f5a8",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 490,
        "y": 140,
        "wires": []
    }
]

Hmm :thinking:,

erstmal vielen Dank!
Aber kann es sein, das wir aneinander vorbei gesprochen haben?

Ich bin ja wirklich ein blutiger Anfänger mit dem ganzen Code-Gedöns, aber wenn ich das doch korrekt verstehe, wandelt dein function node die Nachrichten anhand des deviceType um, oder?

Das wäre dann ja wahrscheinlich für den Rückkanal an homee notwendig, damit homee versteht, was da gerade nicht durch ihn geschaltet wurde.
Als Rückkanal funktioniert das allerdings auch nicht. Dein node gibt es meiner Meinung nach falsch aus, oder?
image

Denn wenn homee die Befehle sendet sieht das so aus:
image

Ich war gedanklich aber auch noch bei der Verbindung von homee zum Gerät.
homee sendet die Befehle ja z.b im Fall einer dimmbaren Lampe in diesem Format, wie oben schon mal gezeigt.

Einschalten

{"attributeId":100,"targetValue":1}

Dimmen

{"attributeId":101,"targetValue":48}

Farbtemperatur

{"attributeId":102,"targetValue":3388}

Meine Lampe gibt an einem debug node aber folgendes aus.
Ich muss abhängig von der Funktion (was ja dann von meiner attributeId abhängig ist) der deviceType verändert werden

Einschalten

{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"switch","name":"Decke","value":1,"timestamp":"2023-01-14T14:51:28.607Z"}

Dimmen

{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"level","name":"Decke","value":53,"unit":"%","timestamp":"2023-01-14T14:51:28.607Z"}

Farbtemperatur

{"deviceId":"406c991b-2757-4b12-92bd-464f25fb74a9","deviceType":"temperature","name":"Decke","value":3300,"unit":"K","timestamp":"2023-01-14T14:51:28.607Z"}

Für die Verbindung von homee zur Lampe, bräuchte ich also einen function node, der abhängig von der attributeid den devicetyp hinzufügt, oder nicht?

Ist das so verständlich erklärt? :see_no_evil:

Du musst das in der Funktion auf deine Werte ändern.
Und ja das mit ID muss dann attributeId und das Value muss dann targetValue sein.

Okay die Seite vom homee zu deinem Device benötigt dann eine andere Funktion.

Hast du Teamviewer auf deinem Rechner ? Wenn ja dann zeige ich es die 1:1 an deinem System.

VG

3 „Gefällt mir“

Moin,

ich taste mich auch gerade an Node Red heran und wollte den Plug / Zwischenstecker aus dem Video (homee und Node-Red - YouTube) nachbauen.

Der Plug wurde erfolgreich in homee als vhih eingelernt und lässt sich auch schalten.
Wenn ich nun in Node Red zwei injects (An / Aus) einbringe, bekomme ich eine Fehlermeldung ausgegeben

msg : string[63]

„Invalid message. Please check the Readme/Wiki. Ignoring message“

Mein virtueller homee sieht so aus:
image

Mein An Schalter so:
image

Schalte ich den Plug im homee, bekommt die debug-Node folgendes ausgegeben:
image

Hänge ich die debug-Node an den AN Schalter, erhalte ich dieselben Parameter.

Könnte mir jemand freundlicherweise einen Tipp geben, wie ich die „AN Node“ zum laufen bekomme?
Danke!

Probiere im filter oder change-node mal das aus:
image

Kann Dir auch gern den kompletten Flow geben.

1 „Gefällt mir“

Danke, das hat geholfen :+1:t2:

1 „Gefällt mir“

Hallo zusammen,

hat keiner die Sonos über vhih eingebunden? :cry:
Ich würde mich wirklich freuen, wenn mir da jemand seinen Flow zur Verfügung stellen könnte.

Schau mal auf github, da gibt es 5 Flows zu Sonos.

Hallo @ReneH ,

danke für den Hinweis. Aber ich hatte ja oben auch schon mal @Micha nach dem Flow gefragt.
Und da er meinte, das die Dinger dann doch recht alt sind und das es da ggf. was besseres gibt, habe ich mich damit erstmal nicht beschäftigt :see_no_evil:

Hast du die damit am laufen?
Ich würde gerne eine kurze Rückmeldung eines Sonos-Nutzers bekommen, ob das so läuft.

Am Ende bin ich da recht „anspruchslos“. Wenn ich Sonos damit über Schalter steuern kann, bin ich erstmal glücklich.

Woher weiß ich denn welche nodes ich für die Flows brauche?
Ich hab mir jetzt z.b. diesen hier mal importiert, aber da fehlen mir noch nodes.

image

Tut mir leid, aber ich kann Dir da leider nicht weiterhelfen. Ich spiel schon viel mit ioBroker und node-red rum. Aber für eine Anbindung von Sonos an homee fehlt mir noch die Fantasie, was ich damit anstellen/erreichen will. :wink:

Ich stell dir mal was zusammen.
Da Sonos leider nicht mehr so aktiv genutzt wird bei uns, habe ich die flies auch nicht mehr.
Was genau magst du ansteuern?

1 „Gefällt mir“