NEWS
MQTT korrekter Aufbau und Funktionsweise
-
Ich bin so noch ganz am Anfang mit dem Thema MQTT und co.
Ich habe mir mit 2 Raspberry Pi's ein Master - Slave - ioBroker System aufgebaut. Das klappt soweit.Nun möchte ich, dass auf meinem Master alle Daten zusammen laufen und zwar auch, wenn das Internet nicht aktiv ist. Somit muss ich laut meinem Verständis am Master einen MQTT Broker und auf dem Slave einen MQTT Client installieren.
Nun möchte ich aber auch Daten von meinem Master an MQTT Dashboard Apps auf 3 Android Smartphones im Netzwerk senden. Muss ich nun auch auf meinem Master einen MQTT Client Adapter zum Versenden erstellen?
Dies habe ich testweise gemacht und auch schon das Topic eingestellt, doch benötige ich dann jedweils die IP-Adressen der besagten Handys.
Tut mir leid, ich bin grad doch etwas durcheinander. -
@sunshineh Das ist ein etwas falsches Verständnis. Eine mqtt Veröffentlichung geht nie an einzelne Geräte, sondern immer nur zur mqtt Broker. Deine 3 Smartphones können nur die Themen die sie interessieren Subscriben = Abonnieren. Wenn sich die Smartphones mit dem Broker verbinden, werden sie von diesem informiert, dass neue Informationen vorliegen.
Also ein Client publisht an einen Broker. Der Broker ist im klassischen Umfeld nie aktiv. Leider ist der mqtt-Adapter beides - sowohl Client wie Broker. Und auch als Broker kann er Client Funktionalität ausüben und das führt zu Verwirrung. Nur wenn der Broker als Client publisht macht er das quasi nur zu sich selbst.
-
@mickym Vielen Dank für die Info.
Also mein Aufbau ist nun wie folgt
ioBroker-Master:
-MQTT-Broker
-MQTT-Client0 ...dieser publisht die Sensordaten, die direkt am ioBroker-Master abgerufen werdenioBroker-Slave:
-MQTT-Client1Wenn ich nun auf einen Sensorwert des ioBroker-Slave gehe, so habe ich die Möglichkeit, diesen Wert über den MQTT-Client0 oder den MQTT-Client1 zu publishen.
Oder hab ich hier einen Denkfehler, da die Werte vom ioBroker-Slave ja bereits ohne MQTT auf dem Master vorhanden sind. Wie funktioniert hier der Datenaustausch eigentlich? Und funktioniert der auch noch, wenn ich keine Internetverbindung mehr habe?
-
@sunshineh Das ist das was ich nicht verstehe. Wenn Du ein iobroker master slave system hast - hast Du doch nur einen Objektbaum. Du verteilst doch nur die Rechenlast oder ggf eine physische Anbindung direkt an Deinem slave System - aber insgesamt verhält sich ein iobroker master-slave system wie ein einziges System und da brauchst Du nicht zwischen drin hin und her publishen.
Und auch nochmal bzgl. MQTT. Weder ein Broker noch ein MQTT Client publisht irgendwelche Daten irgendwohin - sondern ein Client publisht immer nur an den Broker mit dem er connected ist und andere Clients abonnieren/subscriben die Themen an den sie interesse habe.
Wenn Du Deine Handys zum Beispiel mit owntracks und eigenem MQTT nutzen willst - dann würde ich Dir sowieso mosquitto empfehlen zumindest wenn Du ohne VPN auskommen willst - (das hat aber mit Master Slave im iobroker nichts zu tun).
Ich habe sowas realisiert und mal in diesem Beitrag beschrieben: https://forum.iobroker.net/topic/23078/multihost-slave-zu-viel-traffic/10
-
Mir geht es ja darum, dass mein System auch offline funktioniert und auch meine Handys sollen über WLAN auch im offline-Fall alles überwachen können.
Deshalb dachte ich, ich realisiere dies über MQTT und nicht mithilfe diverser Push-Notification Apps. Ist das soweit richtig gedacht??
OK ioBroker Master-Slave System verhält sich wie ein System und somit ist ein Datenaustausch sinnlos. Und dass funktioniert aber auch selbstständig, ohne online-Anbindung, oder??
-
@sunshineh sagte in MQTT korrekter Aufbau und Funktionsweise:
Mir geht es ja darum, dass mein System auch offline funktioniert und auch meine Handys sollen über WLAN auch im offline-Fall alles überwachen können.
Nun zuhause funktioniert das egal mit welchem Gerät immer offline - da Du ja über Deine Oberfläche via Browser auf Dein iobroker zugreifst. Bist Du aber mit Deinen Handys unterwegs bist Du automatisch auf das Internet angewiesen, da Du ja kein WLAN mehr hast, sondern Dich im Netz Deines Providers befindest.
Deshalb dachte ich, ich realisiere dies über MQTT und nicht mithilfe diverser Push-Notification Apps. Ist das soweit richtig gedacht??
OK ioBroker Master-Slave System verhält sich wie ein System und somit ist ein Datenaustausch sinnlos. Und dass funktioniert aber auch selbstständig, ohne online-Anbindung, oder??
MQTT ist aber kein System oder Alternative zu einem Push Notification system.
JA - wobei die beiden System aber immer eine Datenverbindung haben müssen.
Irgendwo hast Du in meinen Augen noch einen Denkfehler drin. Ich würde Dir gerne helfen, aber da müsstest Du dann mal sagen, was Du genau willst. Wie gesagt ein Handy ausserhalb Deines WLAN Bereichs befindet sich immer im Netz Deines Providers.
-
@mickym Ja, ich hab auch das Gefühl, ich hab nenn Denkfehler
Ich möchte mir zuhause ein System aufbauen, das auch funktioniert, wenn die Telekom mir kein Netz zur Verfügung stellt. Auch dann sollen die Handys - die hier im Haus sind - Benachrichtigungen erhalten.
Gibt es ne Möglichkeit Push Notification so umzusetzen, dass sie daheim ohne die Telekom funktionieren??
-
@sunshineh Ich kann Dir da nicht helfen. Bei Apple gehts sicher nicht. Eventuell gibts was über Browser notifications - aber ansonsten muss ich da passen.