NEWS
MQTT Server Fragen
-
@homoran said in MQTT Server Fragen:
@hot-air-balloon sagte in MQTT Server Fragen:
Nicht das ich mich erinnern kann:
das ist kein Adapter!
das ist ein selbständiges ProgrammDanke für die Info, habe ich bewusst auch nicht installiert. Eigentlich nur RaspberryOS dann direkt die Bash für ioBroker ausgeführt.
@mickym said in MQTT Server Fragen:
Jeder Shelly oder Sonoff Adapter - oder auch owntracks - emulieren oder stellen einen mqtt-Broker zur Verfügung. Entweder lässt Du alles über unterschiedliche Ports laufen, oder Du nimmst ein mqtt-Broker (extern oder Adapter).
Muss ich daraus schließen, dass ich für jeden Hersteller auch einen eigenen Adapter installieren muss ? Ich kann nicht einfach die Shellys über den Sonoff Adapter laufen lassen, oder fehlt mir dann was ?
@mickym said in MQTT Server Fragen:
Der Vorteil der originären mqtt-Kommunikation
Hier meinst du den Mosquitto adapter ? Nur der Sammelt alle Informationen und gibt die unverfälscht an ioBroker weiter ?
@marty56 said in MQTT Server Fragen:
Der Nachteil von dem mosquitto server ist, dass man wieder einen separaten Server mit der Konsole konfigurieren muss
Das wollte ich halt vermeiden, bekomme ich sicher hin, muss aber nicht sein. Auf der anderen Seite, wäre es schon schön nur ein MQTT Broker zu haben und nicht auf jeden Port einen
-
@marty56 Mein Plädoyer war in erster Linie das Verwenden von originärem MQTT, anstelle von diversen Adapter, die jeder ihren eigen mqtt-Broker mitbringen.
Was aus deiner Sicht die Vorteile der mosquitto Lösung, die einen Ansatz außerhalb von iobroker rechtfertigen?
Nun ich lehne die Verwendung des mqtt-Client/Server Adapters als Broker nicht grundsätzlich ab, aber bei mir gab es da einige Fehler, die mich mehrere Wochen gekostet haben und ich dann halt nicht mehr bereits war, hier auf Fehlerbehebungen zu warten, während mosquitto out of the box ohne Fehler lief. Das mag damals auch mangelnde Erfahrung oder Unwissen gewesen sein, aber inzwischen hat sich meine mqtt-Infrastruktur derart weiter entwickelt, das sich das mit den iobroker Adaptern nicht abbilden ließe.
So und um Deine aus Deiner Sicht erwähnten Nachteile, speziell für mosquitto zu beleuchten, will ich mal meine Sicht dagegen stellen.
Der Nachteil von dem mosquitto server ist, dass man wieder einen separaten Server mit der Konsole konfigurieren muss, updaten und starten muss. Sprich, man muss wieder herumfummeln und sich mit Start Scripts in Linux herumschlagen. Mich nervt das bei mir schon bei Grafana, InfluxDB und dem SONOS HTTP API gewaltig.
Nun bei mosquitto - ist das herumfummeln aber auf ein Minimum begrenzt, da es über den Linux Paket-Manager installiert wird und das war es schon. Wenn man nichts konfiguriert (also keine Passwörter etc) ist mosquitto direkt nutzbar und startet beim Start des Systems automatisch. Ist also Einmalaufwand und Updates kommen in der Regel beim mosquitto über den apt Manager also bei OS Updates automatisch mit. Also in diesem Fall 0 Aufwand. Etwas Aufwand, wenn man Passwort-Dateien erstellen muss, aber das macht man einmal.
Ich habe nur den mqtt Adapter installiert. Der hat einen Server Mode.
Das hatte ich am Anfang auch. Der Adapter hat aber in bestimmten Situationen nicht funktioniert. Das mag an den ACK- Flags gelegen haben, die aus Sicht eines iob Adapters essentiell sind, in Bezug auf mqtt aber irrelevant. Erkläre mal einem Anfänger was ein Zustand ist - den gibts unter mqtt einfach nicht, sondern halt nur im iob bzw. dem Adapter
Das der Broker einfach bestimmte Nachrichten einfach gelöscht hatte: https://forum.iobroker.net/topic/33772/mqtt-message-xxx-deleted-after-11-retries?_=1657368175331
war dann für mich ein NoGo und nachdem ich damit Wochen den Fehler bei mir gesucht hatte, habe ich kein Issue aufgemacht.
Ich konnte mich entweder für das Senden von Zuständen entscheiden, hatte dann aber ggf. sehr schnell Endlosschleifen oder es wurde die Nachricht einfach gelöscht und ich kann Dir nicht mal sagen warum.Damit ist die Konfiguration extrem einfach und das Backup ist auch mit dem iob Backup erledigt und ich bekomme die Updates über die iob Infrastruktur.
Zumindest der letzte Punkt ist für mich nicht unbedingt immer von Vorteil. Beim mqtt-Adapter konnte ich dank der hilfreichen Entwickler hier bei diesem Adapter gerade nach dem letzten Update wieder Dinge reaktivieren, die aber zwischendurch einfach weggefallen wären. Ist teilweise hier: https://forum.iobroker.net/topic/54903/mqtt-kein-publish-von-iob-states-ausserhalb-mqt-gelöst?_=1657368758471, ausführlicher auf gitHub dokumentiert.
Beim Zigbee Adapter ist es mir nach einem Update oft so gegangen, dass gar nichts mehr ging und der Support - dann manchmal darin endete, dass meine verwendete Hardware Schrott ist. Da bin ich nun auf zigbee2mqtt umgestiegen und das läuft aus meiner Sicht stabiler und ich bin froh, dass ich hier unabhängig von iob Updates bin.
Langer Rede, kurzer Sinn. Ich liebe das iob System, aber das System ist eine Integrationsplattform und nicht jeder Adapter hat den gleichen Support oder die gleiche Qualität.
Außerdem ist der Ansatz auch für Menschen nutzbar, die Blocky benutzen und sich mit der ganzen Komplexität des Betriebssystems nicht auseinandersetzen wollen.
Nun ich nutze ja ebenfalls den gleichen Adapter wie Du, nur dass ich ihn als Client betreibe und mosquitto als Broker. Da ich alle Topic mit # beschreibe, habe ich quasi die gleichen Datenpunkte, wie Du in meinem iob System, wie Du, der diesen Adapter als Broker betreibst. Insofern kann auch ich mqtt, wie Du mit meiner Logikmaschine im iobroker system nutzen (Blockly, JS oder NodeRed).
Also aus der Sicht, wie leicht man mit mqtt im iobroker umgehen kann, gibt es keinen Unterschied, ob ich den Adapter als Client oder als Broker betreibe.Was aus deiner Sicht die Vorteile der mosquitto Lösung, die einen Ansatz außerhalb von iobroker rechtfertigen?
Nun ich habe inzwischen eine Infrastruktur, wo ich einen mosquitto Broker - als Brücke und verschlüsselt - direkt nach aussen kommuniziere, um direkt von meinem Handy mqtt-Nachrichten in meinen Broker zu verschicken. Dabei kann man den externen mqtt-Verkehr verschlüsseln, während der interne unverschlüsselt bleibt. Die Brücke arbeitet als Proxy und man kann auch die topics filtern, die von innen nach aussen gehen. Das würde den Rahmen aber hier sprengen - und das ist für mich der Grund, warum ich definitiv meinen Broker auf mosquitto Basis betriebe.
ABER: Wie gesagt, wenn der mqtt-Adapter als Broker gut funktioniert, würde ich keinesfalls davon abraten. In jedem Fall ist das besser, als sich zig-Adapter zu installieren, die ihren eigenen mqtt-Broker mitbringen.
-
@hot-air-balloon sagte in MQTT Server Fragen:
Jeder Shelly oder Sonoff Adapter - oder auch owntracks - emulieren oder stellen einen mqtt-Broker zur Verfügung. Entweder lässt Du alles über unterschiedliche Ports laufen, oder Du nimmst ein mqtt-Broker (extern oder Adapter).
Muss ich daraus schließen, dass ich für jeden Hersteller auch einen eigenen Adapter installieren muss ? Ich kann nicht einfach die Shellys über den Sonoff Adapter laufen lassen, oder fehlt mir dann was ?
Ja - der SONOFF Adapter ist KEIN mqtt-Adapter. Ich sag das hier an Board mehrfach. Er kann für Tasmota geflashte Devices (von mir aus auch geflashte Shellies) verwendet werden, interpretiert aber teilweise auch Datenpunkte. Und das was er nicht kennt, da schaust halt aus der Röhre. Er wird nicht alles was mit Tasmota möglich ist, wiedergeben. Ich hab hier Probleme schon mehrfach gepostet, schau mal in die FAQ zum MQTT - da ist vielleicht was drin.
Muss ich daraus schließen, dass ich für jeden Hersteller auch einen eigenen Adapter installieren muss ? Ich kann nicht einfach die Shellys über den Sonoff Adapter laufen lassen, oder fehlt mir dann was ?
Ja Du kannst keine Shellies (wenn nicht mit Tasmota betrieben) über den Sonoff Adapter laufen lassen. Du solltest Dir den mqtt- Adapter installieren, mit dem kannst Du beides betreiben und noch viel mehr. Auch andere Geräte die keine Shellies sind oder kein Tasmota als Firmware benutzen kannst Du weder mit dem Sonoff, noch mit dem Shelly Adapter benutzen, sondern Du nimmst entweder den mqtt-Adapter - oder einen spezifischen Adapter, der Dir einen weiteren Broker aufmacht.
Und wie gesagt, wenn Du mein Vorposting durchliest und Du keine Probleme feststellst, ist der mqtt-Adapter als Broker betrieben, eine einfache Lösung. Da stimme ich @Marty56 durchaus zu!
-
@hot-air-balloon sagte in MQTT Server Fragen:
@mickym said in MQTT Server Fragen:
Der Vorteil der originären mqtt-Kommunikation
Hier meinst du den Mosquitto adapter ? Nur der Sammelt alle Informationen und gibt die unverfälscht an ioBroker weiter ?
Es gibt keinen mosquitto Adapter.
Man kann den mqtt-Adapter (Client/Server) als Client oder als Broker betrieben. Als Broker brauchst Du kein mosquitto - nichts. Als Client brauchst Du halt einen Broker - in meinem Fall halt mosquitto.
Und JA nur der mqtt-Adapter gibt Dir die mqtt Nachrichten unverfälscht weiter. Alle anderen Adapter interpretieren die mqtt-Nachrichten, so gut oder so schlecht sie eben können.
-
@hot-air-balloon sagte in MQTT Server Fragen:
@marty56 said in MQTT Server Fragen:
Der Nachteil von dem mosquitto server ist, dass man wieder einen separaten Server mit der Konsole konfigurieren muss
Das wollte ich halt vermeiden, bekomme ich sicher hin, muss aber nicht sein. Auf der anderen Seite, wäre es schon schön nur ein MQTT Broker zu haben und nicht auf jeden Port einen
Wie gesagt den mqtt-(Client/Server) Adapter als Broker betreiben. Mosquitto ist aber sehr einfach und unkompliziert zu betreiben. Das kostet Dich keine 5 Minuten. Das kann man aber auch dann relativ leicht umstellen, wenn Du Probleme mit dem mqtt-Adapter feststellst, die sich nicht so einfach lösen lassen. Das bleibt dann immer noch eine Option.
Jedenfalls ist das in meinen Augen allemal besser, als x Adapter zu installieren, die alle mqtt-sprechen, nur um nicht mit JSON Strings umgehen zu müssen, alles in separaten Datenpunkten zu haben.
Der Vorteil der gerätespezifischen Adapter ist zwar die Aufbereitung, der Nachteil ist halt das alles gepflegt werden muss und wenn was nicht interpretiert werden kann, dann schaut man halt in die Röhre. Originäre mqtt-Nachrichten sind das jedenfalls nicht, die Du mit ShellyAdapter, Sonoff und co. erhälst.Der Shelly Adapter kann sicher noch mehr, für das die Shellies zum Beispiel keine mqtt-Befehle anbieten. Da wird dann auch die HTTP API bemüht. Ggf. muss man das halt noch implementieren, das ist aber auch kein Hexenwerk.
Insgesamt gibt es viele Wege nach Rom und Du musst halt rausfinden, was Dir am Besten gefällt.
-
@hot-air-balloon sagte in MQTT Server Fragen:
Habe ich gesehen, dass mosquitto auf dem Port lauscht:
Dann hast Du aber doch bereits einen mosquitto Broker auf deinem System laufen.
Dann brauchst Du nur einen mqtt Adapter als Client an Deinen mosquitto dran hängen und mit # alle topics subscriben, so wie ich das tue. Dann kannst Du alle Deine Geräte über den bestehenden mosquitto laufen lassen.
-
@mickym
Ok danke, ich installiere mal den mqtt client/server adapter dann und habe gerade erstmal mosqutto deinstalliert.
Soll ich an den standard Einstellungen etwas ändern ? -
@hot-air-balloon OK wollte gerade die Einstellungen posten mit mosquitto - so wie ich es habe. Aber wenn Du den nun gelöscht hast. ...
Nee lass Standardeinstellungen - bzw. Passwort und User musst Du halt wissen.
Alle Haken sollten nicht gesetzt sein:
-
@mickym
Danke, kannst du, wenn ich später dann doch wechseln solle, trotzdem deine config posten -
@hot-air-balloon sagte in MQTT Server Fragen:
@mickym
Danke, kannst du, wenn ich später dann doch wechseln solle, trotzdem deine config postenNun bei der Verbindung steht halt Client/Subscriber und UserID und Passwort muss halt im mosquitto definiert sein, weil Du Dich ja dort anmeldest. (Ansonsten siehst Du ja die Verbindungseinstellungen - ist auch localhost, da mosquitto auf der gleichen Maschine, wie der iob installiert ist.
Die mqtt-Einstellungen sind auch mehr oder weniger Standard:
Bei Dir ist das halt alles mqtt.0.* - da Du sehr wahrscheinlich 0 als Instanznummer hast.
-
@mickym Ok danke, ich arbeite mich da noch mal weiter rein.
-
@hot-air-balloon sagte in MQTT Server Fragen:
@mickym Ok danke, ich arbeite mich da noch mal weiter rein.
Ja und wie gesagt - alles hast Du dann unter EINER mqtt Instanz (Shellies, Tasmota (Sonoff), ...)