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
NEU! FREIGEGEBENE HAUPTVERSION V4 verfügbar!
NEU! LOGIK! VISU! IFTTT! FIXES
Infos im Wiki: https://elabnet.atlassian.net/l/cp/TrZ03Nr7
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
NEU! LOGIK! VISU! IFTTT! FIXES
Infos im Wiki: https://elabnet.atlassian.net/l/cp/TrZ03Nr7
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
[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
-
- Reactions:
- Beiträge: 20
- Registriert: Do Nov 26, 2020 10:59 pm
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 3 Mal
Shelly Generation 2 über Node Red bedienen
Zuletzt geändert von MarcusC am Di Dez 13, 2022 11:09 pm, insgesamt 1-mal geändert.
Timberwolf 950 ID 435 -VPN offen- Reboot nach Absprache
-
- Reactions:
- Beiträge: 3668
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1287 Mal
- Danksagung erhalten: 1691 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
#3 PBM 3 Kanäle, #4 Modbus-Extension
Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
-
- Reactions:
- 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
-
- Reactions:
- Beiträge: 369
- Registriert: So Okt 14, 2018 1:48 pm
- Hat sich bedankt: 234 Mal
- Danksagung erhalten: 283 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
-
- Reactions:
- 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