NEWS
Mqtt best practice
-
Hi
Ich habe eine Frage zu Mqqt.
Hauptsächlich nutze ich shellys mit mqqt und dem Adapter. Ich möchte allerdings nicht mehr auf den Adapter angewiesen sein, da ich inzwischen bald 50stück im Einsatz habe.Ich hab mal den mqqt Adapter installiert und etwas rumgespielt, aber im Netz lese ich immer wieder diesen Mosquitto Server. Ich hab ein Proxmox und Platz / Ressourcen frei.
Was wäre die Empfehlung aus der Runde? vielleicht nutzt bereits jemand den Server und kann etwas zu den Vor/ Nachteilen sagen.
Vielen Dank
-
@dos1973
Moin,ich hatte Anfangs auch "nur" den mqtt Adapter. Mit irgendeinem Gerät, ich weiß leider nicht mehr welches, gab es da Problemchen, sodass ich den Mosquitto zum Probieren installierte. Seit dem läuft alles ohne Auffälligkeiten.
Installiert ist er unter Proxmox auf der selben VM wie ioBroker. (Vorher Snapshot erstellen kann nicht schaden)
Die Kommunikation läuft weiterhin über den mqtt-Adapter, welcher jetzt (nur noch) als Slave konfiguriert ist und automatisch alle Datenpunkte vom und zum Mosquitto synchronisiert.
Bei mir laufen neben anderen Geräten sämtliche Shellys auf mqtt.
-
@peterfido said in Mqqt best practice:
nikation läuft weiterhin über den mqtt-Adapter, welcher jetzt (nur noch) als Slave konfiguriert ist und automatisch alle Datenpunkt
Ich spiele auch gerade mit dem mosquitto im Docker-Container und dem MQTT Adapter als Server rum. Bisher laufen alle meine Geräte mit dem Adapter problemlos. Ich hatte nur Probleme mit Geräten, die z.B. mehrere Publish als Datenpunkte brauchen wie z.B. der Sonoff 4ch Switch. Aber nach einmaligen Publish über einen anderen MQTT Client (bei mir MQTT.fx) wurden die Datenpunkte angelegt und der Switch ist voll einsatzfähig. Ich nutze folgendes mit MQTT über den einen Adapter: Sonoff, Gosund, Blitzwolf alle mit Tasmota, Shellys im MQTT Mode und eigen Sketche auf ESP8266... Falls ich mal Probleme bekomme, kann ich den Mosquitto Container wieder hochfahren und es damit prüfen.
-
@dos1973 Mein Empfehlung ist mosquitto als Broker/Server einzusetzen und den mqtt Client/Server Adapter als Client zu betreiben. Mit dem mqtt-Adapter gabs und gibt es vielleicht noch manchmal Probleme, dass dieser mit dem ACK Flag nicht richtig umgeht.
https://forum.iobroker.net/topic/33772/mqtt-message-xxx-deleted-after-11-retries
Generell wenn Du mqtt 11 retries in die Suche eingibst, wirst Du diverse Probleme mit dem mqtt-Adapter als Broker finden.Ich kann es nun nicht mehr sicher sagen, da ich nun seit fast 2 Jahren auf diese Konfiguration gewechselt bin, nachdem ich die ersten 3 Monate nur den mqtt-Adapter als Broker/Server genutzt habe. Man braucht für den normalen Einsatz dafür aber keine extra Maschine.
Mit mosquitto hast Du ausserdem die Möglichkeit Topics zu filtern und die Kommunikation ggf. zu verschlüsseln.
Mein Konfig habe ich ja schon mal gepostet:
Generell kann ich Dir die mqtt Videos und Tutorials von Steve empfehlen (sofern Englisch kein Problem ist - der spricht aber in meinen Augen sehr verständlich):
http://www.steves-internet-guide.com/mqtt/
Im Übrigen habe ich auch alle Shellies und Tasmotas und owntracks über mqtt laufen, da mit dem mqtt-Adapter für mich damit alle Geräte die mqtt sprechen auch abgedeckt sind und ich unabhängig von einzelnen Adaptern bin zudem Du diese ja, wenn Du sie auch noch parallel betreiben willst, alle als Broker funktionieren.
Den einzigen Nachteil von mosquitto ist in meinen Augen, dass er halt keine GUI mit sich bringt. Mit dem mqtt Adapter als Client hast Du aber ein hervorragendes Front-End.
-
Danke für euer feedback.
@mickym : ich schaue mir die videos an. Danke
Derzeit bin ich noch an der Installation als LXC Debian Container auf Proxmox.
Nochmals zum meinem Verständnis, der Mosquitto ist der MQQT Broker und der Mqqt Adapter auf dem iobroker ist dann der client? Alle Shellies würden zum Mosquitto ihre Meldungen senden?
brauche ich die Verschlüsselung eigentlich?, daran scheitert mein Setup. Sobald ich das mache bekomme ich keine Verbindung.
-
- Ja, Mosquitto ist der Broker, der Adapter arbeitet dann als Client
- Netzintern / Hausintern geht es - nach meiner Meinung - auch ohne Verschlüsselung. Viele andere Systeme wie z.B. Tasmota unterstützen die Verschlüsselung nicht unbedingt.
- Es heisst MQTT ! Nicht MQQT!!! MQTT!
-
@dos1973 Nein Du brauchst keine Verschlüsselung.
Du installierst den mosquitto als Server - die mosquitto Clients brauchst nicht.
Geht super easy mit
sudo apt install mosquitto
Denn mqtt- Adapter als Client zu dem mosquitto Server:
. Musst halt die IP Adresse eingeben, wenn Du den nicht auf der gleichen Maschine wie den iobroker installiert hast.
Alle Haken weg:
Bei Dir wird das Publishen wohl eher mqtt.0.* heißen - ist aber ggf. schon vorgegeben - hängt ja von der Instanz Nummer ab.
Datenpunkte mit den Du was an die Shellies schickst musst Du dann noch selbst anlegen, wie beispielsweise set oder command.
Ich empfehle das kurzfristig auf Admin4 umzuschalten - da der Admin5 hier Zicken macht und das nicht erlaubt:Und Ja und alle Shellies senden an den mosquitto Broker - und das FrontEnd ist der mqtt Adapter im iobroker.
Wie Du ein Passwort bzw. User im mosquitto Server anlegst, beschreibt Steve auch gut. Wenn Du aber Hilfe brauchst, melde Dich halt einfach.
http://www.steves-internet-guide.com/mqtt-username-password-example/
Wichtig ist im Prinzip das:
Damit hast Du alle Möglichkeiten Authentisierung zu nutzen oder auch nicht.
-
läuft alles soweit, ich hab jetzt mal 2 Shelly direkt an den Mosquitto gehängt.
Im Iobroker sehe ich auch die Struktur
@mickym sagte in Mqqt best practice:
Datenpunkte mit den Du was an die Shellies schickst musst Du dann noch selbst anlegen, wie beispielsweise set oder command.
aber das verstehe ich noch nicht was damit gemeint ist?
ich dachte, ich bekomme DP, welche ich dann schalte kann, analog zum Shelly Adapter, also true/ false, oder Postion etc. -
@dos1973 Ja - aber diese Datenpunkte musst Du anlegen, da der Shelly von sich aus ja nicht seine eigenen Kommandos schickt. Es gibt eine Struktur auf die er hört.
Wenn Du die relay Struktur aufmachst, findest Du erst mal nur die DP, die der Shelly sendet aber nicht auf die er hört:
Sprich Du wirst die Datenpunkte energy und power haben, der command Datenpunkt den musst Du selbst anlegen, da der Shelly auf diesen hört aber ihn nicht sendet.
Du kannst den Admin5 auch kurz überlisten (solange die Entwickler das noch nicht bereinigt haben), indem Du relay markierst und dann dort einen Datenpunkt über 0.command anlegst.
In diesen command Datenpunkt - kannst Du dann mit on und off schalten. (bei Relay).
-
@mickym
ich gebe zu ich stehe gerade auf dem Schlauch mit dem "überlisten" -
@dos1973 Mach mal Deinen Baum mit dem relay Knoten ganz auf und poste mal den Screenshot
-
-
@dos1973 sagte in Mqqt best practice:
Genau wie ich dacht - Dir fehlt der command Datenpunkt.
Um den Admin5 zu überlisten. Mach den Relay Knoten aktiv und drücke das + oben, um einen neuen Datenpunkt hinzuzufügen:
In dem Dialog gibst Du dann den Name das Datenpunktes 0.command ein - wie in dem Screenshot unten.
-
-
@dos1973 Generell findest Du die Datenpunkte zum steuern für jedes Shelly Device in der offiziellen Shelly Dokumentation:
https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-mqtt
Du siehst hier braucht es den command Datenpunkt und dann kannst den schalten.
-
@dos1973 probiere mal folgendes:
hast du einen MQTT Client auf deiner Maschine? Ich habe unter Windows den MQTT.fx
Dort die Adresse des Mosquittos eintragen:
dann verbinden und bei publish den publish string eintragen. Bei mir z.B.:dann auf publish klicken. Der Shelly sollte schalten. Bei mir wurden damit auch die Datenpunkte dafür angelegt...
evt. muss ON auch on sein... Wenn der Shelly schaltet bei den Datenpunkten schauen... Geht auch im 5er Admin...
RUDI
-
@dos1973 sagte in Mqqt best practice:
@mickym sagte in Mqqt best practice:
0.command
aber ich kann nur "Verzeichnis" auswählen
Wieder löschen - Du hast Dich nicht genau an meine Vorgehensweise gehalten.
- Du markierst den Relay Datenpunkt und NICHT die 0 !!!!
-
Jetzt + drücken
-
Und als Name: 0.command eingeben
Ansonsten gehst halt auf den Admin4 zurück erstellst die Datenpunkte und stellst dann wieder um.
Anhaken, Browser refreshen und dann alle benötigten DP anlegen. Ist leider so mit dem S..Admin5
-
@barnie2017
das klappt! -
@barnie2017 sagte in Mqqt best practice:
@dos1973 probiere mal folgendes:
hast du einen MQTT Client auf deiner Maschine? Ich habe unter Windows den MQTT.fx
Dort die Adresse des Mosquittos eintragen:
dann verbinden und bei publish den publish string eintragen. Bei mir z.B.:dann auf publish klicken. Der Shelly sollte schalten. Bei mir wurden damit auch die Datenpunkte dafür angelegt...
evt. muss ON auch on sein... Wenn der Shelly schaltet bei den Datenpunkten schauen... Geht auch im 5er Admin...
RUDI
Das geht natürlich - aber geht auch mit direkten publishen im MQTT-Adapter. Das wurde nur mit dem Admin 5 nicht berücksichtigt und scheint wohl auch nicht so schnell behoben zu werden.
-
@mickym schon mal meinen Weg probiert? siehe Post vorher... Damit konnte ich allen fehlenden Datenpunkte im 5er Admin anlegen. Kein Aufwand und man sieht gleich, ob der Befehl stimmt...
RUDI