Hallo,
nachdem ich länger gefummelt habe, eine Switch der 2. Generation von Shelly zu schalten, und es mir zu kompliziert war ein verschachteltes JSON Objekt im TWS zusammen zu setzen, bin ich auf Node Red ausgewichen.
Im Geräte Manager des TWS habe ich zu dem Main Level der Switch das App Level "/Schalten" angefügt.
In Node Red empfängt ein MQTT-in Knoten mit dem Topic "shellyplus1pm-id-des Gerätes/Schalten" die Nachrichten des TWS. Der anschließende Funktionsknoten wandelt den Wert "on" oder "off" in das entsprechende Objekt
"topic":"shellyplus1pm-id-des Gerätes/rpc","payload":{"id":1,"src":"user_2","method":"Switch.Set","params":{"id":0,"on":true}}, bzw. "topic":"shellyplus1pm-id-des Gerätes/rpc","payload":{"id":145,"src":"user_2","method":"Switch.Set","params":{"id":0,"on":false}}
Das Objekt wird anschließend über den MQTT-out Knoten gesendet.
Zum Empfang muß leider anscheinend für jedes MQTT Gerät eine MQTT-in Knoten mit dem Topic "shellyplus1pm-id-des Gerätes/Schalten" angelegt und mit dem Funktionsknoten verbunden werden, zum Senden reicht ein MQTT-out Knoten: Das Topic wird in den Objekt zu sehen enthalten.
Hier der Flow:
[{"id":"15ca9fe9.760d5","type":"mqtt in","z":"6af39f69.08883","name":"","topic":"shellyplus1pm-id-des Gerätes/Schalten","qos":"2","datatype":"auto","broker":"d457a115.b395e","x":150,"y":80,"wires":[["acb958b9.b9717","fdf48828.716278"]]},{"id":"fdf48828.716278","type":"function","z":"6af39f69.08883","name":"","func":"let adr = msg.topic.split(/\\//);\nlet wert; \nif (msg.payload===\"on\") {\n wert = true\n } else if (msg.payload===\"off\") {\n wert = false\n } \nnachricht = {\"id\":145, \"src\":\"user_2\", \"method\":\"Switch.Set\", \"params\":{\"id\":0,\"on\":wert}};\nmsg.topic = adr[0]+\"/rpc\";\nmsg.payload = nachricht;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":460,"y":160,"wires":[["acb958b9.b9717","2bf49aca.74f316"]]},{"id":"2bf49aca.74f316","type":"mqtt out","z":"6af39f69.08883","name":"","topic":"","qos":"","retain":"","broker":"d457a115.b395e","x":670,"y":220,"wires":[]},{"id":"d457a115.b395e","type":"mqtt-broker","name":"ZuHause","broker":"192.168.2.62","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Einen schönen Gruß
Marcus
Kleiner Fehler mit IP 5 - FIX in Dev-Test

Uns wurde ein Problem im Logik Editor mit IP 5 gemeldet, FIX für DEV-TEster bereitgestellt
Problem: Beim Anlegen von Logiken können keine Parameter vom Typ String vorgegeben werden. Laufende Logiken sind nicht betroffen. Der Fehler wird als "Minor" eingestuft, da nur geringe Auswirkung. Der Fehler kann umgangen werden, indem ein String nicht als Parameter sondern als Objektwert vorgeben wird (z.B. via ETS eine GA beschreiben).
Update: Der Fehler wurde bereits behoben und den DEV-Testern heute zur Verfügung gestellt. Rollout an Insider womöglich noch heute, Sonntag, spät Abend.
Info im Insider-Forum: viewtopic.php?t=6230
[TIPP] Shelly Generation 2 über Node Red bedienen
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
gbglace
- Beiträge: 4297
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1505 Mal
- Danksagung erhalten: 2048 Mal
Hi Marcus
Ich kann dem irgendwie nicht wirklich folgen, wieso da noch Nodered im Spiel ist wenn das eh schon per MQTT an den Shelly gehen kann. Also warum nicht alles im TWS fertig bauen und an den Shelly-senden und dessen Status direkt in den TWS bringen?
diese vielen ID's xxxxxxxxx.xxxxx haben welche Bedeutung?
Also wenn das ein echter Tipp werden soll, dann bitte mal genauer beschreiben was da wo passiert und wofür da was in dem Code-Schnipsel gut ist.
Ich kann dem irgendwie nicht wirklich folgen, wieso da noch Nodered im Spiel ist wenn das eh schon per MQTT an den Shelly gehen kann. Also warum nicht alles im TWS fertig bauen und an den Shelly-senden und dessen Status direkt in den TWS bringen?
diese vielen ID's xxxxxxxxx.xxxxx haben welche Bedeutung?
Also wenn das ein echter Tipp werden soll, dann bitte mal genauer beschreiben was da wo passiert und wofür da was in dem Code-Schnipsel gut ist.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
-
MarcusC
- Beiträge: 20
- Registriert: Do Nov 26, 2020 10:59 pm
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 3 Mal
Hallo Göran,
die vielen IDs sind Bestandteil des Node Red Flows. Die erschließen sich, wenn man den Text kopiert und nach Node Red importiert
VG Marcus
die vielen IDs sind Bestandteil des Node Red Flows. Die erschließen sich, wenn man den Text kopiert und nach Node Red importiert
VG Marcus
Timberwolf 950 ID 435 -VPN offen- Reboot nach Absprache
-
maggyver
- Beiträge: 387
- Registriert: So Okt 14, 2018 1:48 pm
- Hat sich bedankt: 252 Mal
- Danksagung erhalten: 307 Mal
Hallo Markus,
nun es ist sicherlich nicht der einzigste Weg in Node Red um mit den Geräten von Shelly zu kommunizieren.
Warum nicht eine fertige Node dafür benützen? Wie zum Beispiel "node-red-contrib-shelly" ...

nun es ist sicherlich nicht der einzigste Weg in Node Red um mit den Geräten von Shelly zu kommunizieren.
Warum nicht eine fertige Node dafür benützen? Wie zum Beispiel "node-red-contrib-shelly" ...

Grüße
René
_______________________________________________________________________________
TWS 2600LW ID:504
TWS 3500 ID:1306
VPN offen , Reboot erlaubt , Offline , Insider
René
_______________________________________________________________________________
TWS 2600LW ID:504
TWS 3500 ID:1306
VPN offen , Reboot erlaubt , Offline , Insider
-
MarcusC
- Beiträge: 20
- Registriert: Do Nov 26, 2020 10:59 pm
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 3 Mal
Hallo Rene,
danke für den Hinweis. Hier mit dem Shelly Knoten:

Der Flow:
[{"id":"7a728150.0412b8","type":"mqtt in","z":"d9aafb38.150928","name":"","topic":"shellyplus1pm-xxx/Schalten","qos":"2","datatype":"auto","broker":"d457a115.b395e","x":270,"y":160,"wires":[["f3b14277.a6727"]]},{"id":"f3b14277.a6727","type":"function","z":"d9aafb38.150928","name":"","func":"let adr = msg.topic.split(/\\//);\nlet wert; \nswitch (msg.payload) {\n case true:\n case 1:\n case \"on\":\n case \"true\":\n wert = true\n break;\n case false:\n case 0:\n case \"off\":\n case \"false\":\n wert = false\n}\nnachricht = {\n hostname: adr[0],\n method: \"Switch.Set\",\n parameters : {\n id : 0,\n on : wert,\n }\n};\n\nmsg.payload = nachricht;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":600,"y":160,"wires":[["e21bda9d.279af"]]},{"id":"e21bda9d.279af","type":"shelly-gen2","z":"d9aafb38.150928","hostname":"","description":"","mode":"polling","server":"04263f2d054cc2a1","uploadretryinterval":"5000","pollinginterval":5000,"pollstatus":false,"getstatusoncommand":false,"devicetype":"Relay","outputs":1,"x":810,"y":160,"wires":[[]]},{"id":"d457a115.b395e","type":"mqtt-broker","name":"ZuHause","broker":"192.168.2.62","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"04263f2d054cc2a1","type":"shelly-gen2-server","port":"10001","hostname":"unimatrix"}]
danke für den Hinweis. Hier mit dem Shelly Knoten:

Der Flow:
[{"id":"7a728150.0412b8","type":"mqtt in","z":"d9aafb38.150928","name":"","topic":"shellyplus1pm-xxx/Schalten","qos":"2","datatype":"auto","broker":"d457a115.b395e","x":270,"y":160,"wires":[["f3b14277.a6727"]]},{"id":"f3b14277.a6727","type":"function","z":"d9aafb38.150928","name":"","func":"let adr = msg.topic.split(/\\//);\nlet wert; \nswitch (msg.payload) {\n case true:\n case 1:\n case \"on\":\n case \"true\":\n wert = true\n break;\n case false:\n case 0:\n case \"off\":\n case \"false\":\n wert = false\n}\nnachricht = {\n hostname: adr[0],\n method: \"Switch.Set\",\n parameters : {\n id : 0,\n on : wert,\n }\n};\n\nmsg.payload = nachricht;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":600,"y":160,"wires":[["e21bda9d.279af"]]},{"id":"e21bda9d.279af","type":"shelly-gen2","z":"d9aafb38.150928","hostname":"","description":"","mode":"polling","server":"04263f2d054cc2a1","uploadretryinterval":"5000","pollinginterval":5000,"pollstatus":false,"getstatusoncommand":false,"devicetype":"Relay","outputs":1,"x":810,"y":160,"wires":[[]]},{"id":"d457a115.b395e","type":"mqtt-broker","name":"ZuHause","broker":"192.168.2.62","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"04263f2d054cc2a1","type":"shelly-gen2-server","port":"10001","hostname":"unimatrix"}]
Timberwolf 950 ID 435 -VPN offen- Reboot nach Absprache