Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Tutorial - Shelly via MQTT und NodeRed anbinden
#1
Information 
Vorwort:


Anfangs hatte ich die Shelly (1er, 2.5er, HT's) nur mittels Http Request abgefragt. Je nachdem wie diese verbaut und somit erreichbar waren klappt das bei mir gut oder nicht. Der Shelly hat auf Anfrage des Gekkos seinen Zustand mitgeteilt, aber auch nur dann wenn er erreichbar war. 
 
Seit heute habe ich alle geändert und auf MQTT umgestellt. Dafür nutze ich meinen RasperryPi.
 
Vorteile:
 
·       Shelly überträgt aktiv seinen Status an einen MQTT Server
  • bei Zustandsänderung
  • regelmäßigen Abständen
  • Gekko reagiert schneller auf Schaltänderungen und aktualisiert somit schneller das ICON
  • bei 2.5 Shelly "Echtzeitübertragung" der anliegenden Leistungsabnahme möglich
·       Durch Nutzung des externen MQTT-Servers keine zusätzliche Last am Gekko
 
 
Nachteil:
 
·       MQTT Server notwendig und somit ggf. extra Hardware
·       bei Ausfall der Hardware keine Übermittlung des Shelly-Zustandes
·       erhöhter Konfigurationsaufwand (MQTT und NodeRed)
·       Mit Aktivierung der MQTT Funktion im Shelly deaktiviert sich die Cloud-Funktionalität
 
 
Nachteile überwiegen erstmal, jedoch ist die Reaktion und die garantierte Übermittlung des Status für mich schwerwiegender. Geschalten wird (momentan) weiterhin oldshool via http OUTPUT.
 
 
Was Ihr braucht:
 
1.   MQTT Server (idealerweise auf Raspberry) 
2.   NodeRed Server ohne besondere Nodes (idealerweise auf dem selben Raspberry)
 
 
 
 
Konfiguration des Shelly's anhand eines Shelly 2.5
 
Die MQTT - Funktionalität kann nur in einem klassischen Browser und nicht via App konfiguriert werden. 
Der notwendige Menüpunkt fehlt in der APP schlichtweg. 
 


 
 
1. 

Gewünschten Shelly über IP, in einem Browser, aufrufen. 
Abschließend den Menüpunkt "Internet & Security" aufrufen.



   




2. Unter "Advanced - Developer Settings" den MQTT anschalten. 

Die IP-Adresse des MQTT Servers abändern und einen individuellen Prefix für die spätere Unterscheidbarkeit vergeben. In diesen Beispiel lautet der Prefix 40-shelly. Die Zahl steht bei mir für die IP des Shelly's. Ihr könnt das euren Wünschen anpassen, müsst dies aber später auch in NodeRed mit anpassen.



   



3. Ganz unten auf "Speichern" klicken nicht vergessen.

   



Konfiguration des Nodes
 
 
 
Flow Beispiel


Code:
[{"id":"3d3460e8.8e952","type":"tab","label":"Beispiel Shelly","disabled":false,"info":""},{"id":"a280e942.1e11f8","type":"mqtt in","z":"3d3460e8.8e952","name":"40a-WZ-Steckdose-rechts-AN_AUS","topic":"shellies/40-shelly/relay/0","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":200,"y":220,"wires":[["d0b21f9d.6da4d"]]},{"id":"69e2b453.ad053c","type":"mqtt in","z":"3d3460e8.8e952","name":"40b-WZ-Steckdose-links-POWER","topic":"shellies/40-shelly/relay/1/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":190,"y":340,"wires":[["c7124f96.8817c"]]},{"id":"a0867ad8.27fe58","type":"mqtt in","z":"3d3460e8.8e952","name":"40a-WZ-Steckdose-rechts-POWER","topic":"shellies/40-shelly/relay/0/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":200,"y":260,"wires":[["dae68b08.a0d5f8"]]},{"id":"77da137e.0598ac","type":"mqtt in","z":"3d3460e8.8e952","name":"40b-WZ-Steckdose-links-AN_AUS","topic":"shellies/40-shelly/relay/1","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":200,"y":300,"wires":[["d6d357b9.38b908"]]},{"id":"42b3fd2c.9d4a64","type":"function","z":"3d3460e8.8e952","name":"","func":"flow.set('40a-AN_AUS',msg.payload)\nreturn msg;","outputs":0,"noerr":0,"x":1055,"y":220,"wires":[],"l":false},{"id":"e88a71bb.de802","type":"function","z":"3d3460e8.8e952","name":"","func":"flow.set('40b-AN_AUS',msg.payload)\nreturn msg;","outputs":0,"noerr":0,"x":1055,"y":300,"wires":[],"l":false},{"id":"8defc050.1e443","type":"function","z":"3d3460e8.8e952","name":"","func":"flow.set('40a-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":1055,"y":260,"wires":[],"l":false},{"id":"da05bb21.db4e48","type":"function","z":"3d3460e8.8e952","name":"","func":"flow.set('40b-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":1055,"y":340,"wires":[],"l":false},{"id":"90445e58.da728","type":"trigger","z":"3d3460e8.8e952","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"3","extend":false,"units":"s","reset":"","bytopic":"all","name":"","x":730,"y":260,"wires":[["8defc050.1e443"]]},{"id":"8e696588.c2e278","type":"trigger","z":"3d3460e8.8e952","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"3","extend":false,"units":"s","reset":"","bytopic":"all","name":"","x":730,"y":340,"wires":[["da05bb21.db4e48"]]},{"id":"d0b21f9d.6da4d","type":"rbe","z":"3d3460e8.8e952","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":395,"y":220,"wires":[["42b3fd2c.9d4a64"]],"l":false},{"id":"dae68b08.a0d5f8","type":"rbe","z":"3d3460e8.8e952","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":395,"y":260,"wires":[["90445e58.da728"]],"l":false},{"id":"d6d357b9.38b908","type":"rbe","z":"3d3460e8.8e952","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":395,"y":300,"wires":[["e88a71bb.de802"]],"l":false},{"id":"c7124f96.8817c","type":"rbe","z":"3d3460e8.8e952","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":395,"y":340,"wires":[["8e696588.c2e278"]],"l":false},{"id":"e6967885.87f0c8","type":"http in","z":"3d3460e8.8e952","name":"/Shelly/Schalter","url":"/Shelly/Schalter","method":"get","upload":false,"swaggerDoc":"","x":140,"y":540,"wires":[["a38ea300.f0504"]]},{"id":"a38ea300.f0504","type":"function","z":"3d3460e8.8e952","name":"","func":"//----------------------------------------\\\\\n\nvar o=\n        {\n        Status_40a:flow.get('40a-AN_AUS'),\n        Power_40a:flow.get('40a-POWER'),\n        Status_40b:flow.get('40b-AN_AUS'),\n        Power_40b:flow.get('40b-POWER'),\n        };\nmsg.payload  = JSON.stringify(o);\nreturn msg;","outputs":1,"noerr":0,"x":275,"y":540,"wires":[["a1d949c9.e18888"]],"l":false},{"id":"a1d949c9.e18888","type":"http response","z":"3d3460e8.8e952","name":"HTTP-Response","statusCode":"200","headers":{"content-type":"text/html"},"x":410,"y":540,"wires":[]},{"id":"655f1deb.838944","type":"comment","z":"3d3460e8.8e952","name":"MQTT Topic","info":"","x":130,"y":180,"wires":[]},{"id":"50dd03dc.54c0bc","type":"comment","z":"3d3460e8.8e952","name":"Nur bei Änderung weitergeben","info":"","x":500,"y":180,"wires":[]},{"id":"587fafd2.fe76f","type":"comment","z":"3d3460e8.8e952","name":"maximal aller 3 sek neue Nachricht","info":"","x":800,"y":180,"wires":[]},{"id":"4e4a55ef.679cec","type":"comment","z":"3d3460e8.8e952","name":"Speichern des Wertes in Flow-Variable","info":"","x":1170,"y":180,"wires":[]},{"id":"49f68dea.5d7a14","type":"comment","z":"3d3460e8.8e952","name":"Alle Variablen mittels Http Abrufbar machen","info":"","x":220,"y":480,"wires":[]},{"id":"46f269ab.1b2ba8","type":"comment","z":"3d3460e8.8e952","name":"","info":"","x":760,"y":540,"wires":[]},{"id":"7438383a.9fc788","type":"mqtt-broker","z":"","name":"MQTT Broker","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]


   



Bei einem Shelly 2.5 können zwei Relais unabhängig geschalten werden. Zusätzlich kann jeweils die momentane Leistung abgefragt werden. In diesem Beispiel werden die beiden Schaltzustände und die Leistung erst in Flowvariablen gespeichert und anschließend als http zur Verfügung gestellt.
 
In diesem Beispiel ist die Http Seite unter folgender Adresse erreichbar: [IP eures RedNode]:1880/Shelly/Schalter
 
Achtet darauf euren Prefix in den MQTT Nodes anzupassen, je nachdem was ihr bei der Konfiguration des Shelly gewählt habt. 


   







Konfiguration Gekko
 
 
1. Unter Einstellungen einen HTTP/WebAPI erstellen und auf „Konfigurieren“ klicken.



   




2. für den Shelly 2.5 zum Schalten beider Relais jeweils ein Eingang und ein Ausgang anlegen


   



Statusabfrage Erstes Relay:
 
Typ:                                  Get- INPUT 
Read Int:                            0
Request On:                       [IP eures RedNode]:1880/Shelly/Schalter
Request Off / Parameter:     JSON@Status_40a@on
 
Statusabfrage Zweites Relay:
 
Typ:                                  Get-INPUT 
Read Int:                            0
Request On:                       [IP eures RedNode]:1880/Shelly/Schalter
Request Off / Parameter:     JSON@Status_40b@on
 
Schalten Erstes Relay:
 
Typ:                                  Get-OUTPUT
Read Int:                            0
Request On:                       [IP des Shellys]/relay/0/?turn=on
Request Off / Parameter:     [IP des Shellys]/relay/0/?turn=off
 
Schalten Erstes Relay:
 
Typ:                                  Get-OUTPUT
Read Int:                            0
Request On:                       [IP des Shellys]/relay/1/?turn=on
Request Off / Parameter:     [IP des Shellys]/relay/1/?turn=off
 
 
Andere Shellys müssen gegebenenfalls abgeändert werden. z.B. ein Shelly 1 hat nur ein Relay und somit entfällt hier je einmal IN- und OUTPUT. Die Leistungsabfrage wurde hier erstmal ignoriert. (siehe Folgepost)
 
Vergesst nicht auf Speichern zu klicken.  

Für nähere Informationen zu den einzelnen Produkten siehe >>>hier<<<. 
Auf der Seite findet ihr alle Informationen zu MQTT, API ... der einzelnen Produkte

 

Gruß


Angehängte Dateien
.zip   flows.zip (Größe: 1,44 KB / Downloads: 1)
#2
Hier jetzt nochmal eine Variante, um den Stromleistung mittels 2.5 Shelly im Gekko anzeigen zu lassen.
 
Im Beispiel habe ich 3 Shelly 2.5 mit je zwei Relais verwende. Diese verwenden, wie im vorherigen Post erwähnt MQTT und senden ihren aktuellen Zustand somit von "sich" aus.
 
Funktion der einzelnen  2.5 Relais: 
 
1.   Schaltet Licht Wohnzimmer und Licht Esszimmer
2.   Je eine Steckdose hinter der Couch
3.   Schalte zwei unabhängige Lampen im Bad Obergeschoss


   
 
 
Zusätzlich summiere ich in einer Funktion verschiedene Verbraucher mittels NodeRed. Das erspart mir Logiken, da diese mit "den wenigen" Feldern schnell voll wären. Die Summen stelle ich dann einfach dem Gekko als Ergebnis zur Verfügung. 
 
Als Beispiel angelegte Summen 
 
·       Gesamt_WZ:                       Alle Verbraucher im Wohnzimmer
·       Gesamt_EZ:                        Alle Verbraucher im Esszimmer
·       Gesamt_BZ:                        Alle Verbraucher im Badezimmer
·       Gesamt_Licht:                     Alle Verbraucher des Typs Licht
·       Gesamt_Steckdosen:            Alle Verbraucher des Typs Steckdose
·       Gesamt_EG:                        Alle Verbraucher im Erdgeschoss
·       Gesamt_OG:                       Alle Verbraucher im Obergeschoss
·       Gesamt_gesamt:                 Alle Verbraucher des Hauses
 

 
Die Verbraucher einzeln, wie auch die Summen, werden mittels HTTP dem Gekko zur Verfügung gestellt. 
Pro Wert den ihr Abgreifen möchtest benötigt ihr je ein INPUT im Gekko. Ein Output entfällt hier, da wir hier nicht schalten wollen.
 
 
Typ:                                  Get-INPUT 
Read Int:                            0
Request On:                       [IP eures RedNode]:1880/Shelly/Strom
Request Off / Parameter:     JSON@Gesamt_WZ
 

   



Das ganze kann dann weiter verwendet werden, um z.B. Analysen zu betreiben oder was auch immer  Smile


   




Code:
[{"id":"20291643.ca9eea","type":"tab","label":"Strom Beispiel","disabled":false,"info":""},{"id":"33094b6b.8b4254","type":"mqtt in","z":"20291643.ca9eea","name":"33b-Bad-Abstell-POWER","topic":"shellies/33-shelly/relay/1/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":890,"y":360,"wires":[["35a83449.9100ec"]]},{"id":"dbc6f7d8.fb44c8","type":"mqtt in","z":"20291643.ca9eea","name":"33a-Bad-Haupt-POWER","topic":"shellies/33-shelly/relay/0/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":890,"y":320,"wires":[["34049e01.0b3212"]]},{"id":"937ccef7.d28f5","type":"mqtt in","z":"20291643.ca9eea","name":"32b-Esszimmer-POWER","topic":"shellies/32-shelly/relay/1/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":270,"y":360,"wires":[["1b32b18.4d0a04f"]]},{"id":"3aded2e5.8ec08e","type":"mqtt in","z":"20291643.ca9eea","name":"32a-Wohnzimmer-POWER","topic":"shellies/32-shelly/relay/0/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":270,"y":320,"wires":[["1078432b.a0ba7d"]]},{"id":"d29b7f49.33162","type":"mqtt in","z":"20291643.ca9eea","name":"41b-WZ-Sonos-links-POWER","topic":"shellies/41-shelly/relay/1/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":280,"y":460,"wires":[["ac202b4c.3f6178"]]},{"id":"67eab0ed.2afd","type":"mqtt in","z":"20291643.ca9eea","name":"41a-WZ-hinter-Sofa-links-POWER","topic":"shellies/41-shelly/relay/0/power","qos":"0","datatype":"auto","broker":"7438383a.9fc788","x":300,"y":420,"wires":[["9c110868.0244c8"]]},{"id":"32a01465.cc534c","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('32a-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":535,"y":320,"wires":[],"l":false},{"id":"28c4dbe7.3c3344","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('32b-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":535,"y":360,"wires":[],"l":false},{"id":"7213f2d1.7c4cdc","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('33a-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":1155,"y":320,"wires":[],"l":false},{"id":"5b062604.473e58","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('33b-POWER',Number(msg.payload))\nreturn msg;","outputs":0,"noerr":0,"x":1155,"y":360,"wires":[],"l":false},{"id":"2b2e0b98.ad21b4","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('41a-POWER',msg.payload)\nreturn msg;","outputs":0,"noerr":0,"x":535,"y":420,"wires":[],"l":false},{"id":"c6764a2.4048eb8","type":"function","z":"20291643.ca9eea","name":"","func":"flow.set('41b-POWER',msg.payload)\nreturn msg;","outputs":0,"noerr":0,"x":535,"y":460,"wires":[],"l":false},{"id":"1078432b.a0ba7d","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":475,"y":320,"wires":[["32a01465.cc534c"]],"l":false},{"id":"1b32b18.4d0a04f","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":475,"y":360,"wires":[["28c4dbe7.3c3344"]],"l":false},{"id":"35a83449.9100ec","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1095,"y":360,"wires":[["5b062604.473e58"]],"l":false},{"id":"34049e01.0b3212","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1095,"y":320,"wires":[["7213f2d1.7c4cdc"]],"l":false},{"id":"9c110868.0244c8","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":475,"y":420,"wires":[["2b2e0b98.ad21b4"]],"l":false},{"id":"ac202b4c.3f6178","type":"rbe","z":"20291643.ca9eea","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":475,"y":460,"wires":[["c6764a2.4048eb8"]],"l":false},{"id":"d98c8b4c.0a2eb8","type":"http in","z":"20291643.ca9eea","name":"/Shelly/Strom","url":"/Shelly/Strom","method":"get","upload":false,"swaggerDoc":"","x":90,"y":100,"wires":[["c1009714.19c9b8"]]},{"id":"c1009714.19c9b8","type":"function","z":"20291643.ca9eea","name":"","func":"// Deklaration der Variablen der einzelnen Räume\n\n \n//Wohnzimmer\nvar wz_LI               = Number(flow.get('32a-POWER'));\nvar wz_SD_sofa_re       = Number(flow.get('41a-POWER'));\nvar wz_SD_sofa_li       = Number(flow.get('41b-POWER'));\n\n//Esszimmer\nvar ez_LI               = Number(flow.get('32a-POWER'));\n\n\n//Bad\nvar ba_LI_haupt         = Number(flow.get('33a-POWER'));\nvar ba_LI_abstell       = Number(flow.get('33b-POWER'));\n\n\n\n//Zusammenfassungen / Summenbildung\n\n//Funktion Math.round() rundet auf Ganzzahl // *100 und /100 sorgt für zwei Nachkommastellen\n\n//Räume\nvar gesamt_WZ           = Math.round((wz_LI + wz_SD_sofa_re + wz_SD_sofa_li)*100)/100;\nvar gesamt_EZ           = Math.round((ez_LI)*100)/100;\nvar gesamt_BZ           = Math.round((ba_LI_haupt + ba_LI_abstell)*100)/100;\n\n//Licht /Steckdosen /EG /OG /Gesamt\nvar gesamt_Licht        = wz_LI + ez_LI + ba_LI_haupt + ba_LI_abstell;\nvar gesamt_Steckdosen   = wz_SD_sofa_re + wz_SD_sofa_li;\nvar gesamt_EG           = gesamt_WZ + gesamt_EZ;\nvar gesamt_OG           = gesamt_BZ;\nvar gesamt_gesamt       = gesamt_EG + gesamt_OG;\n\n\nvar o=\n        {\n        Gesamt_gesamt:gesamt_gesamt,\n        \n        Gesamt_EG:gesamt_EG,\n        \n        Gesamt_WZ:gesamt_WZ,\n        Gesamt_EZ:gesamt_EZ,\n        Gesamt_FL:gesamt_FL,\n        \n        Gesamt_OG:gesamt_OG,\n\n        Gesamt_BZ:gesamt_BZ,\n        \n        Gesamt_Licht:gesamt_Licht,\n        Gesamt_Steckdosen:gesamt_Steckdosen,\n        };\nmsg.payload  = JSON.stringify(o);\nreturn msg;","outputs":1,"noerr":0,"x":195,"y":100,"wires":[["f52d71db.4d967"]],"l":false},{"id":"f52d71db.4d967","type":"http response","z":"20291643.ca9eea","name":"HTTP-Response","statusCode":"200","headers":{"content-type":"text/html"},"x":330,"y":100,"wires":[]},{"id":"51a9aecb.b6faa","type":"comment","z":"20291643.ca9eea","name":"EG","info":"","x":220,"y":240,"wires":[]},{"id":"fe99549b.a69428","type":"comment","z":"20291643.ca9eea","name":"OG","info":"","x":830,"y":240,"wires":[]},{"id":"9fe80d75.f1b76","type":"comment","z":"20291643.ca9eea","name":"Licht","info":"","x":50,"y":340,"wires":[]},{"id":"75ef05ea.96daec","type":"comment","z":"20291643.ca9eea","name":"Steckdosen","info":"","x":70,"y":440,"wires":[]},{"id":"2cc5dd28.7035f2","type":"comment","z":"20291643.ca9eea","name":"Licht","info":"","x":710,"y":340,"wires":[]},{"id":"7438383a.9fc788","type":"mqtt-broker","z":"","name":"MQTT Broker","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
Information Tutorial - Konfiguration Shelly am Gekko Licht / Steckdose Strabbit 33 5.780 14.11.2020, 01:34
Letzter Beitrag: Strabbit
  AVM DECT 200 / 210 an das Gekko anbinden nowtilus 8 4.842 29.05.2019, 17:55
Letzter Beitrag: santos

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste