NEWS
iobroker, MQTT und Shelly - Was geht wie?
-
Hallo,
ich möchte mich mit Shelly und MQTT etwas mehr befassen.
Ich habe auf dem iobroker den MQTT Server laufen. Dort sind alle meine Axis Kameras per MQTT angebunden und liefern auch die entsprechenden Daten.
Nun möchte ich Shelly einsetzen, die ja auch MQTT unterstützen. Allerdings ist mir noch nicht ganz klar, ob ich es richtig verstehe.
Lese ich das richtig, das Shelly nur für die Kommunikation innerhalb der Shelly Geräte MQTT nutzt und man ein Shelly Gerät überhaupt nicht im iobroker MQTT Server nutzen kann?
-
@th-g Nein, die Shellie’s können Deinen Adapter als MQTT Broker nutzen. Es ist nur so, dass bei den Generation 1 Geräten, diese sich dann nicht gleichzeitig mit der Shelly Cloud verbinden können.
-
@th-g sagte in iobroker, MQTT und Shelly - Was geht wie?:
Lese ich das richtig, das Shelly nur für die Kommunikation innerhalb der Shelly Geräte MQTT nutzt und man ein Shelly Gerät überhaupt nicht im iobroker MQTT Server nutzen kann?
Nein.
Bei den "älteren" Shellys (Shelly 1, 2.5 usw, also noch ohne Zusatz wie Pro und in in der Regel rundes Desgin) kann man einfach den MQTT-Server angeben und diese Melden dann in der Regel bei jeder Wertänderung Ihren Zustand.
Die haben dann für alles einen eigenen Datenpunkt, z.B. für Power, Leistung, Temperatur. Naja fast alles, manchmal kommt auch ein JSON, z.B.{"event":"S","event_cnt":4}
vom Shelly Button wenn man die Taste kurz drückt.
Wenn man bei diesen Shelly MQTT nutzt kann man NICHT gleichzeitig die Cloud nutzen.Die neueren Shellys (Eckig, Pro im Namen) können auch zusätzlich MQTT (und gleichzeitig in der Shelly Cloud sein).
Diese melden sich per MQTT aber oft nur mit JSON die dann alles enthalten und möchten dann auch per eben solcher JSONs gesteuert werden.Beide lassen sich auch per Shelly-Adapter einbinden. Bei den älteren kann das Protokoll "CoAP/HTTP" genutzt werden und parallel noch MQTT. Der Adapter findet in der Regel deine Geräte im Netzwerk automatisch.
Bei den neueren braucht der Adapter unbedingt MQTT. Dann muss du die IP und den Port des Adapters als MQTT auf den Shellys eintragen. Dann hast du natürlich die Meldungen nicht mehr in deinem normalen MQTT Broker.Der Adapter übersetzt dir dafür immer - egal wie es kommt - die Daten in einzelne Datenpunkte. Während im MQTT
{"event":"S","event_cnt":4}
steht macht der Adapter daraus die DatenpunkteEvent
undEventCount
Du kannst auch die alten Shellys per MQTT an den Adapter anbinden.
Du kannst den Adapter auch mit 2 Instanzen nutzen, einer Instanz auf CoAP und die andere auf MQTT.Und - das kann ich mir nicht verkneifen - du kannst die meisten Shellys auch auf Tasmota umflashen.
-
Danke für eure Antworten
Also bedeutet es, dass ich im Shelly die dort voreingestellten Einstellungen einfach ändern kann. Also Port 1882 auf 1883 mit den Anmeldedaten des MQTT Adapters der schon bei mir läuft?
-
@th-g Ja
-
Danke für die Bestätigung.
Ich bin nur etwas verwundert, weil in allem was ich zum Thema Shelly gelesen habe, immer von der Shelly App und dem Shelly iobroker Adapter gesprochen wird.
Hat es Vorteile mit dem Shelly Adapter zu arbeiten und nicht direkt über den MQTT Broker? Beide scheint ja nicht zu gehen oder?
-
@th-g Na viele haben halt Probleme, da sie sich nicht mit JSONs auseinandersetzen wollen, was nach wie vor noch geht - und lieber Datenpunkte einzeln haben wollen- Wie gesagt in die Cloud kannst Du nicht, aber im lokalen Netz funktioniert auch die Shelly App - selbst wenn Shellies MQTT sprechen.
Ich bin halt ein Anhänger davon die vom Hersteller genutzten MQTT-Schnittstellen zu nutzen und benutze grundsätzlich keine Adapter, die MQTT sprechen. Die Adapter haben sicher für Anfänger Vorteile, aber die Adapter sind halt nur so gut, wie sie die Geräte kennen. Wie oft findest Du hier Threads, dass dieses oder jenes Gerät noch nicht von dem Adapter unterstützt wird. Mit MQTT hast Du solche Probleme nicht, da dies ja die vom Hersteller mitgebrachte Schnittstelle ist. Du kannst halt bei den Gen. 1 geräten das Coap Protokoll nicht nutzen - dies wird nur vom Shelly Adapter unterstützt und damit können die Gen 1 Geräte in der Shelly-Cloud verbleiben. Wenn Du aber eh einen eigenen Remote-Zugang zu Deinem Netz hast, kannst Du darauf ja verzichten.
Bei mir ist alles unter mqtt:
Deshalb habe ich auch keinen sonoff adapter, kein owntracks und kein shelly Adapter.
Wie gesagt im lokalen Netz funktionieren auch die Gen1 Geräte ohne Cloud mit der Shelly App. Damit kannst Du zuhause also die Shellies immer noch per App schalten, falls der iobroker mal wegen Wartungsarbeiten nicht verfügbar ist.
-
Habe mir mal einige Shelly Produkte bestellt und werden das mal testen.
Ich möchte einen Standard haben, der unabhängig von Herstellersoftware ist und deswegen möchte ich versuchen, alles über den MQTT Broker zu machen.
Ich verstehe das noch nicht alles mit JSON aber hier bekommt man ja einen tollen Support wenn man Fragen hat.
-
@th-g Ja kein Problem - beim mir laufen alle Shellies über MQTT wie geschmiert. Ggf. würde ich Dir einen externen Broker empfehlen - wie mosquitto und den MQTT-Adapter als Client zu betreiben, da dieser manchmal bisschen Probleme macht und sich nicht ganz standardmässig verhält. - Aber wie gesagt - ich und @BananaJoe und andere helfen Dir gerne, falls es Probleme gibt.
-
Hallo,
die Shelly Plus 1 sind da und sind verbaut.
Eines der Geräte ist als Taster (Schaltuhr mit 1 Sekunde) an meinem Hörmann Garagentorantrieb angeschlossen. Über die Shelly App funktioniert alles.
Das Gerät ist auch über MQTT im iobroker sichtbar.
Ich möchte nun im VIS über MQTT den Taster auslösen aber ich bekomme es nicht hin.
Was müsste ich tun?
Danke
-
@th-g Du musst noch einen Datenpunkt selbst anlegen.
Ach so warte mal die shelly 1 plus - sind ja die der 2. generation. da musst du den rpc datenpunkt anlegen.
-
Ok aber ich stehe gerade dem Schlauch und kannst du mir bitte sagen, was ich wie wo machen muss?
mqtt.0.shellyplus1-Garagentor.events.rpc hier sehe ich den Status
-
@th-g Du musst eine rpc Datenpunkt anlegen unter dem Gerät - ich such mal hier im Forum - Ja Du musst direkt glaub unter Garagentor noch einen Datenpunkt rpc erstellen - und über den kommunzierst du.
Da schreibst dann
{ "id": 2, "src":"user_1", "method":"Switch.Set", "params": { "id":0, "on":true } }
Eventuell. brauchst unter den params nur die on eigenschschaft.
Ja ist id:0 - hier habe gibst auch einen Thread dazu: https://forum.iobroker.net/post/695061
Wie gesagt den rpc Datenpunkt direkt über den Admin erstellen.
Also direkt unter Garagentor:
mqtt.0.shellyplus1-Garagentor.rpc
Wie gesagt Expertenmodus einstellen:
Falls Dein plus ausgegraut ist musst Du oben drüber gehen und dann den Pfad mit punkt eingeben.
-
Ich habe nun einen JSON DP wie folgt angelegt.
Das steht in den Objektdaten:
{ "common": { "name": "Neuer Zustand", "desc": "Manuell erzeugt", "role": "state", "type": "json", "read": true, "write": true }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1677095544892, "_id": "mqtt.0.shellyplus1-Garagentor.events.Neuer_Zustand", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Wo füge ich jetzt deine Daten ein?
-
@th-g Also das Neuer_zustand kannst wieder löschen - du schreibst den JSON in deinen rpc Datenpunkt rein - aber nicht unter events sonder darüber.
Da schreibst den JSON rein:
-
@mickym sagte in iobroker, MQTT und Shelly - Was geht wie?:
Ja kein Problem - beim mir laufen alle Shellies über MQTT wie geschmiert.
Finde solche Aussagen immer Interessant. Klar läuft das. Aber: Den Shelly Adapter installiert man, liest kurz die Doku und konfiguriert alles so. Selbst als Einsteiger ist man (ohne etwas mit Topics oder JSON zu tun zu haben) in 5min fertig.
Jetzt kann man das alles natürlich noch einmal selbst implementieren und die Topics selbst zerlegen und die Payloads zusammenbauen und auf die richtigen Topics publishen um die Geräte anzusteuern. Aber da sitzt man sehr sehr viel länger dran, liest lange in der Shelly API-Dokumentation und muss sich wirklich mit dem Thema auseinandersetzen.
Das sollte jedem klar sein. Also 5min vs. mehrere Stunden.
Ich gucke hier mal zu, wie lange es dauert, bis das per MQTT mit allen benötigten Features bei @TH-G läuft -
@haus-automatisierung Keine Ahnung warum das nun sein muss - es gibt Vor- und Nachteile diese Adapter zu nutzen. Nachteil ist eben, wie man an dem neuesten Thread wieder sieht: https://forum.iobroker.net/topic/63285/mqtt-adapter-für-shellys
EDIT: Ich will doch Deine Arbeit nicht klein reden - aber es ist eine Philosophiefrage. Die Nutzung des Shellie Adapters mit Vor- und Nachteilen steht ja jedem offen. Wie gesagt man ist halt immer darauf angewiesen, dass jemand diese Adapter pflegt und imm aktuell hält. Das ist halt mit reinem MQTT nicht der Fall.
Das sollte jedem klar sein. Also 5min vs. mehrere Stunden.
Wenn man einmal weiß wie es geht, dann hat man das genauso schnell bei anderen Geräten drin. Mag ja sein, dass es das erste Mal länger dauert.
Gut ich habe keine Generation 2 Geräte - aber bei mir tut alles.
-
Habe den DP nun wie folgt angelegt. Ist das nun so richtig?
-
@th-g Nein der rpc Datenpunkt der ist schon da - warum auch immer. hab ihn doch grün markiert. In diesen RPC Datenpunkt schreibst Du einfach den JSON rein.
-
Ah ok.
Das kann man mit dem rpc im Shelly einstellen.
Das steht dort als Obejektdaten:
{ "_id": "mqtt.0.shellyplus1-Garagentor.rpc", "common": { "name": "shellyplus1-Garagentor/rpc", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "shellyplus1-Garagentor/rpc" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1677059163285, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Das alles ersetze ich jetzt durch deine Daten?