NEU! UPGRADE IP 10 verfügbar!
Timberwolf VISU jetzt mit Graphic V Upgrade
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TIPP] Shelly Generation 2 über Node Red bedienen

Wissen, Planung & Diskussion zur MQTT Unterstützung im Timberwolf Server.
Stellt uns hier Eure MQTT Projekte und Ideen vor.
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
Antworten

Ersteller
MarcusC
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

#1

Beitrag von MarcusC »

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
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

gbglace
Reactions:
Beiträge: 3601
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1265 Mal
Danksagung erhalten: 1670 Mal

#2

Beitrag von gbglace »

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.
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

Ersteller
MarcusC
Reactions:
Beiträge: 20
Registriert: Do Nov 26, 2020 10:59 pm
Hat sich bedankt: 4 Mal
Danksagung erhalten: 3 Mal

#3

Beitrag von MarcusC »

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
Timberwolf 950 ID 435 -VPN offen- Reboot nach Absprache

maggyver
Reactions:
Beiträge: 364
Registriert: So Okt 14, 2018 1:48 pm
Hat sich bedankt: 228 Mal
Danksagung erhalten: 274 Mal

#4

Beitrag von maggyver »

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" ...

Bild
Grüße
René
_______________________________________________________________________________

TWS 2600LW ID:504 + PBM ID:892 + PBM ID:910 , VPN offen , Reboot erlaubt, Offline, Insider
TWS 950QL ID:379 , VPN offen, Reboot erlaubt, Offline, Insider

Ersteller
MarcusC
Reactions:
Beiträge: 20
Registriert: Do Nov 26, 2020 10:59 pm
Hat sich bedankt: 4 Mal
Danksagung erhalten: 3 Mal

#5

Beitrag von MarcusC »

Hallo Rene,

danke für den Hinweis. Hier mit dem Shelly Knoten:

Bild

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
Antworten

Zurück zu „MQTT“