Node Red, Shelly Integration

MQTT finde ich nichts, was der Shelly sendet. Sieht aus wie eine Einbahnstraße. Man kann allerdings eine URL senden bei Taste gedrückt.


Habe mich aber bisher noch nicht damit beschäftigt, wie man das in Node Red auswerten kann.

Hey zusammen,
Damit ein shelly mqtt spricht muss die Funktion auch in den Advanced developer Settings aktiviert werden.
Diese findest du aber nicht in der App sondern nur beim Aufruf des shellys über die IP-Adresse!

Danach kann man ihn über mqtt ansprechen bzw. Sendet er auch darüber seinen Status an den mqtt-Server. Du musst die entsprechenden Daten des Servers halt nach Aktivierung noch hinterlegen. Allerdings geht nach Aktivierung von mqtt keine shelly cloud mehr…was ja auch nicht mehr nötig ist, wenn der shelly im homee drin ist :sweat_smile:
dann gehts quasi über die homee-cloud :innocent:

Vlg

4 „Gefällt mir“

Hallo Starbuck,

danke für den Hinweis. Dann muss ich vielleicht doch mal MQTT anschauen.
Hast du die Kombination homee - shelly via mqtt / node red im Einsatz?

Servus… ich betreibe die Shellys nur über MQTT. Alles bestens!

MQTT ist auch nicht schwer. Einen Mosquito/MQTT Server kannst du fast überall laufen lassen… z.B. Pi, Docker auf NAS, usw.
Welche Plattform hast du?

Normalerweise hat der Server dann folgende Adresse:

HOST-IP:1883

Dieser kann kann Nachrichten senden (publish) oder empfangen (listen) oder beides… In der Shelly-Config über den ip-basierten Webseitenaufruf trägt man den MQTT-Server ein und definiert das Topic (z.B. /shelly1).
In NodeRed nimmt man den MQTT-in bzw. den MQTT-out Node und trägt ebenfalls Server und Topic ein.

Flow kann ich gerne posten.

Hallo Michael,

ich habe einen Pi4.
Aber hast du die Shellys auch in homee angebunden? Weil du schreibst, dass du sie nur über MQTT betreibst?

VG

Hi,
Grundsätzlich Haben die Shellies ja einen eigenen Web Server und arbeiten somit eigentlich immer komplett für sich und in deinem Heimnetzwerk.
Das Einbinden an eine zentrale wie zum Beispiel bei z-Wave, Zigbee usw. ist hier ja gar nicht notwendig.

Aber über die Mqtt-Anbindung kannst du die Shellies quasi fernsteuern, als wären sie an deinen Raspi über Nodered eingebunden.
Über Nodered erzeugst du ja auch in deinem Flow ein virtuelles Gerät (zum Beispiel einen Schalter), der via vhih am echten homee angelernt wird.
So wie es Medicus07 beschrieben hat, wird dann der shelly über mqtt über Nodered aufgrund der Befehle des echten homees gesteuert.

Vg

Hi Michael (praktisch, alle drei hier heißen Michael :-)),

brauche ich da einen bestimmten MQTT auf dem PI? Habe mal den Mosquitto installiert.
Dass die Shellys keine Zentrale brauchen ist mir klar, aber ich möchte alle Geräte schön zentral in meiner homee App haben und auch die Zustände sehen.
Und damit habe ich hier gerade das Problem, da ich den Shelly zwar über die App in homee als virtuelles Gerät steuern kann, aber mir bei lokaler Betätigung des Tasters keine Info an homee gesendet wird.

Hi,

Um auch eine externe Zustandsänderung eines shellys in Homee zu sehen, brauchst du in deinem nodered-Flow auch einen Rückkanal.

Wenn du mqtt am shelly korrekt eingerichtet hast, sendet dieser seinen Zustand (also auch eine Schalterbetätgung) an den mqtt-Server.
Wenn dein Node-red Flow richtig eingerichtet ist (wie von medicus07 mit den mqtt-nodes) ändert sich auch der Zustand des Schalters in homee.

Welchen mqtt Server du nimmst ist egal.
Mosquitto nutzen hier einige.
Ich selbst nutze ioBroker und den Sonoff-Adapter.

Vielleicht kann ja @medicus07 doch mal einen Beispielflow (ohne ioBroker) Posten. Ist glaube ich am
Einfachsten.
Ich komme leider erst am Montag wieder an meinen pc…

Vlg.

ok, das wäre wahrscheinlich wirklich am Besten.
Vielen Dank Euch noch einmal!

Wenn du nun MQTT benutzt dann ist der Rückkanal sehr einfach zu lösen.
Einfach das MQTT in Node nehmen und dann den Ausgabewert in das entsprechende Format bringen und das vhih damit füttern.

Fertig :slightly_smiling_face:

1 „Gefällt mir“

Hier mal ein Beispiel für einen Shelly Dimmer… (ist nicht von mir, da meine Shelly-Aktoren über die Tasmota FW laufen. Habe gerade nur zwei Temp.-Sensoren mit Shelly FW laufen.

[{"id":"c414830.a778f8","type":"mqtt in","z":"c69e167a.226bc","name":"","topic":"shellies/shellydimmer-treppenlicht/light/0/power","qos":"2","datatype":"auto","broker":"ce968524.35f848","x":200,"y":200,"wires":[["842243c6.8df17"]]},{"id":"842243c6.8df17","type":"function","z":"c69e167a.226bc","name":"Filter power","func":"node.send({payload:{\"id\":682,\"value\":(Math.round(10*msg.payload))/10}})","outputs":1,"noerr":0,"x":610,"y":200,"wires":[["6eff167d.ce62b8"]]},{"id":"24cd8275.f7da56","type":"mqtt out","z":"c69e167a.226bc","name":"","topic":"shellies/shellydimmer-treppenlicht/light/0/set","qos":"2","retain":"","broker":"ce968524.35f848","x":1190,"y":180,"wires":[]},{"id":"cd10c879.b33db","type":"mqtt in","z":"c69e167a.226bc","name":"","topic":"shellies/shellydimmer-treppenlicht/light/0/energy","qos":"2","datatype":"auto","broker":"ce968524.35f848","x":200,"y":240,"wires":[["fec09f92.b6cbf"]]},{"id":"fec09f92.b6cbf","type":"function","z":"c69e167a.226bc","name":"Filter Energy","func":"/*var energy = (msg.payload/100000)\n\nnode.send({payload:{\"id\":683,\"value\":parseFloat(energy)}})\n*/\n\nnode.send({payload:{\"id\":683,\"value\":(Math.round(msg.payload))/100000}})\n","outputs":1,"noerr":0,"x":610,"y":240,"wires":[["6eff167d.ce62b8"]]},{"id":"f340c1b7.17c8a8","type":"function","z":"c69e167a.226bc","name":"","func":"if (msg.payload.attributeId === 680 && msg.payload.targetValue === 1){node.send({payload:{\"turn\":\"on\"}})}\nif (msg.payload.attributeId === 680 && msg.payload.targetValue === 0){node.send({payload:{\"turn\":\"off\",\"brightness\":0 }})}\n\nif (msg.payload.attributeId === 681 && msg.payload.targetValue >= 1){node.send({payload:{\"turn\":\"on\",\"brightness\":msg.payload.targetValue}})}\nif (msg.payload.attributeId === 681 && msg.payload.targetValue === 0){node.send({payload:{\"turn\":\"off\",\"brightness\":msg.payload.targetValue}})}\n","outputs":1,"noerr":0,"x":950,"y":180,"wires":[["24cd8275.f7da56"]]},{"id":"6eff167d.ce62b8","type":"homeeDevice","z":"c69e167a.226bc","virtual-homee":"de3d6408.f67bb8","name":"Treppenlicht","nodeId":"68","profile":"11","icon":"default","attributes":"[{\"id\":680,\"node_id\":68,\"instance\":0,\"minimum\":0,\"maximum\":1,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"\",\"step_value\":1,\"editable\":1,\"type\":1,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":681,\"node_id\":68,\"instance\":0,\"minimum\":0,\"maximum\":100,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"%25\",\"step_value\":1,\"editable\":1,\"type\":2,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":682,\"node_id\":68,\"instance\":0,\"minimum\":0,\"maximum\":3000,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"W\",\"step_value\":0.5,\"editable\":0,\"type\":3,\"state\":1,\"last_changed\":1572619585,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":683,\"node_id\":68,\"instance\":0,\"minimum\":0,\"maximum\":50000,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"kWh\",\"step_value\":1,\"editable\":0,\"type\":4,\"state\":1,\"last_changed\":1572807225,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"}]","x":810,"y":180,"wires":[["f340c1b7.17c8a8"]]},{"id":"6c10779a.0ad058","type":"mqtt in","z":"c69e167a.226bc","name":"","topic":"shellies/shellydimmer-treppenlicht/light/0","qos":"2","datatype":"auto","broker":"ce968524.35f848","x":180,"y":120,"wires":[["35db4b00.959d76"]]},{"id":"fdebaf00.b4ae18","type":"function","z":"c69e167a.226bc","name":"On/Off","func":"if (msg.payload === \"on\"){var status =1}\nif (msg.payload === \"off\"){var status =0}\n\nnode.send({payload:{\"id\":680,\"value\":status}})\nif (status === 0){node.send({payload:{\"id\":681,\"value\":0}})}","outputs":1,"noerr":0,"x":590,"y":120,"wires":[["6eff167d.ce62b8"]]},{"id":"35db4b00.959d76","type":"rbe","z":"c69e167a.226bc","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":470,"y":120,"wires":[["fdebaf00.b4ae18"]]},{"id":"92f16ea4.6907f","type":"mqtt in","z":"c69e167a.226bc","name":"","topic":"shellies/shellydimmer-treppenlicht/light/0/status","qos":"2","datatype":"auto","broker":"ce968524.35f848","x":200,"y":160,"wires":[["2ca3b537.35dc6a"]]},{"id":"2ca3b537.35dc6a","type":"json","z":"c69e167a.226bc","name":"","property":"payload","action":"","pretty":false,"x":470,"y":160,"wires":[["3f9c32ae.5496d6"]]},{"id":"3f9c32ae.5496d6","type":"function","z":"c69e167a.226bc","name":"","func":"if (msg.payload.ison === true){node.send({payload:{\"id\":681,\"value\":msg.payload.brightness}})}","outputs":1,"noerr":0,"x":590,"y":160,"wires":[["6eff167d.ce62b8"]]},{"id":"ce968524.35f848","type":"mqtt-broker","z":"","name":"MQTT Raspi (Pi3 - 150)","broker":"10.1.103.150","port":"1883","clientid":"NanoPi NodeRed","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"de3d6408.f67bb8","type":"virtualHomee","z":"","name":"virtualHomee01"}]

Ich bekomme demnächst noch ein paar Shelly Geräte, dann kann ich noch mal einen eigenen Flow posten.

1 „Gefällt mir“

ok, danke Euch!
Ich wurschtel mich dann mal durch die MQTT Konfiguration :slight_smile:

Hm, vielleicht hab ich jetzt Blödsinn gemacht…
Ich habe den ioBroker installiert. Zusammen mit den Adaptern von Node-Red, homee und Shelly… das Problem ist jetzt, dass ich im ioBroker Node-Red nicht mehr die Nodes von shelly und homee habe und es den damaligen Punkt „Paletten“ zum installieren nicht mehr gibt. Node-Red Version 2.0.1
Hat jemand das selbe Problem, bzw das Problem lösen können? Danke :wink:

Wenn du vorher Node-Red stand allone hattest und danach den Node-Red-Adapter unter iobroker laufen lässt, kommen die sich in die Quere - benutzen beide den selben Port. Hatte ich auch am Anfang. Du musst das normale Node Red deaktivieren. Vorher deine Flows exportieren, damit du diese beim iobroker Node-Red importieren kannst. Die fehlenden Nodes musst du natürlich auch instrallieren.

Ja, das mit dem deaktivieren habe ich gemerkt. Habe es hinbekommen. Allerdings kann ich in dem „neuen“ node-red nicht die homee und shelly nodes installieren. Hast du da vielleicht einen Tipp?
Danke und Gruß,
Chris

Den Palletenmanager bekommst du wieder, wenn du in der Instanz den Haken bei Palettenmanager benutzen setzt. Dann bekommst du allerdings die Meldung im roten Feld. Alternativ geht es auch die Nodes in der Konfiguration der Instanz zu installieren.


Wenn du schon mal dabei bist, solltest du den Max. zugewiesenen RAM erhöhen, 1024 oder höher. Findest du weiter unten.

1 „Gefällt mir“

Hat geklappt! Hätte ich auch selber drauf kommen können…sorry…
Aber tausend Dank :grin:

Alles schick, dafür sind wir doch alle hier.

2 „Gefällt mir“

Muss ich eigentlich auch noch zusätzlich einen MQTT Adapter installieren um die Statusänderungen der Shellys in Node-Red nutzen zu können?

Wenn du die Shellys via iobroker-Adapter betreibst, dann brauchst du keinen MQTT extra. In Node Red hast du ja den iobroker-Node. Damit kannst du dann die Daten hin und her schicken.