NEWS
[gelöst] MQTT Datenaustausch in beide Richtungen ?
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
Eine Instanz als Server und eine als Client. Bin mir halt nicht sicher, ob das sauber funktioniert.
war damals kein Problem. Hab das genau so gemacht.
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
weil man den Broker dann auch später noch auslagern könnte.
nur dewegen habe ich einen MQTT Multihost client.
da ich meine Geräte (hier 2x Raumsensoren auf Basis von Teensy LC) nicht programmieren kann, muss ich jetzt immer die alte IP nutzen.
Auf dem Client ist nur der Broker -
@djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
u kannst es aber auch erst mal mit 2 Instanzen des mqtt Adapters probieren
Daran hab ich auch gedacht aber gleich wieder verworfen wegen den Ordnernamen dann "mqtt.0" und "mqtt.1"
Ich mach mich mal an die "Auslagerung", kann ja nicht so schwer sein.
Na ich habe mehrere Instanzen - das ist doch nicht schlimm.
Aber ansonsten halte es einfach und der Broker ist easy zu installieren. Die Clients brauchst ja nicht. Hier mal eine kleine Anleitung meines NodeRed- Professors:
-
@djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:
Heiliges Blechle - ganz easy? Naja, es soll ja heute nicht ganz soo heiss werden, dann kann man das mal machen.
Na das sind Möglichkeiten, aber doch kein muss.
Wenn Du nur via ssh
sudo apt install mosquitto
den Broker installiert hast - geht ja ratz fatz - schau nur, dass Du Deinen iobroker Server Adapter stoppst - 2 Broker auf der gleichen Maschine mit dem gleichen Port mögen sich nicht
würde ich die Standardkonfiguration behalten und eine eigene Konfig-Datei anlegen (hier mal meine Struktur):
$cd /etc/mosquitto $ ls aclfile.example ca_certificates certs conf.d mosquitto.conf pskfile.example pwfile pwfile.bak pwfile.example $cat mosquitto.conf # Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example pid_file /run/mosquitto/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log include_dir /etc/mosquitto/conf.d
Das heißt Du machst Dir die Konfigurationsdatei unter /etc/mosquitto/conf.d
Prüfen ob der Broker läuft:
$ systemctl status mosquitto ● mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-08-03 22:20:15 CEST; 1 day 13h ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Process: 511 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 542 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 544 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS) Process: 552 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, status=0/SUCCESS) Process: 24355 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS) Main PID: 561 (mosquitto) Tasks: 1 (limit: 4915) CPU: 6min 35.243s CGroup: /system.slice/mosquitto.service └─561 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf Aug 03 22:20:13 MWHome systemd[1]: Starting Mosquitto MQTT Broker... Aug 03 22:20:14 MWHome mosquitto[561]: 1659558014: Loading config file /etc/mosquitto/conf.d/mwhome.conf Aug 03 22:20:14 MWHome mosquitto[561]: 1659558014: Warning: Error resolving bridge address: Temporary failure in name r> Aug 03 22:20:15 MWHome systemd[1]: Started Mosquitto MQTT Broker.
Wie Du siehst heisst meine Konfigdatei mwhome.conf - kannst Du natürlich nennen wie Du willst - muss halt nur in dem Verzeichnis stehen.
-
@mickym kann ich den eigentlich auch auf einem ganz anderen RPI installieren ? Wieviel Ressourcen benötigt der ?
Ich frage deshalb weil ich auf einem RPI3B+ im LAN-Netz PiHole, Influx, Grafana und Tautulli am Laufen habe.
Könnte ich den MQTT dort draufmachen ?! Hätte ja den Vorteil dass ich weitere ioB Installationen dann auch dort bequem einbinden kann. Oder sehe ich das falsch ? -
@djmarc75 Klar kannst Du das und der broker ist auch genügsam, das sollte mE schon funktionieren und ist sicher eine gute Idee. Es sollte trotzdem nicht unbedingt eine Maschine sein, die direkt vom Internet erreichbar ist.
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
die direkt vom Internet erreichbar ist
Du meinst mit so offenen Ports usw ? Ich frage für einen Freund
-
@djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
die direkt vom Internet erreichbar ist
Du meinst mit so offenen Ports usw ? Ich frage für einen Freund
Ja genau mit sowas.
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
Ja genau mit sowas
Gibbed bei mir nicht
Na dann weiss ich ja wie ich den Nachmittag verbringen werde.Danke fürs Erste an alle für die vielen tollen Tips !
-
So hier mal meine Konf-Datei:
$ cat mwhome.conf allow_anonymous false password_file /etc/mosquitto/pwfile listener 1883
Im Prinzip kannst Du erst mal allow_anonymous auf true machen. Dann ist mit den 2 Zeilen, der Broker schon einsatzbereit. Falls Du es mit user und Passwort absichern willst, musst Du eben noch eine Passwortdatei erstellen.
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
allow_anonymous auf true machen.
und wie deaktiviere ich die Zeile danach ? Also die PW Datei
-
@djmarc75 Ein # davor machen.
allow_anonymous true # password_file /etc/mosquitto/pwfile listener 1883
Im 2. Schritt kannst Du ja dann den Zugang einschränken und nur mit User-ID und Passwort den Zugang zum Broker erlauben und diese Passwort-Datei erstellen.
sudo mosquitto_passwd -c passwordfile username
Das -c darfst halt nur das erste Mal nehmen, da eine neue Datei erstellt wird.
Beispiel: Du legst für einen Benutzer mit Namen benutzer eine neue Datei an:
$ sudo mosquitto_passwd -c /etc/mosquitto/testpw benutzer
Darauf wirst du interaktiv nach Passwort mit Bestätigung gefragt:
Password: Reenter password:
/etc/mosquitto $ ls aclfile.example certs mosquitto.conf pwfile pwfile.example ca_certificates conf.d pskfile.example pwfile.bak testpw
In dem von Dir angegebenen Pfad siehst Du die Passwortdatei - man muss deshalb mit sudo machen, da Du sonst keine Schreibrechte im /etc/mosquitto Verzeichnis hast.
Wenn Du Dir die Datei anschaust siehst - Du den Benutzernamen mit dem verschlüsselten Passwort:
/etc/mosquitto $ cat testpw benutzer:$7$101$nS4SrGwWjhQfaCWX$JTheD4rsE44TdzmzjRWDKlF6lXN0m42zu1PaLVVJvj22C8Q28zwBeRuaW/TObAj6tvbbSfCLU3Hzqh2SI19xsg==
-
Für die Client Konfiguration stehst Du mit den mqtt-Adapter bisschen im Regen. Eigentlich wurde da in meinen Augen zwischenzeitlich Mist von den Entwicklern gebaut, aber ich hab es dann doch geschafft sie davon zu überzeugen, dass es Sinn macht auch eigene States außerhalb der jeweiligen mqtt- Instanz zu publishen. Ab Version 3.0.6 wurde das aus der GUI verbannt und sogar in der 1. 4er Version komplett entfernt. Erst ab Version 4.0.3 - ist es wieder konfigurierbar. Leider meckert dieser Adapter und höher die Versionsnummer des Adminadapters an. Ich hab die damals upgegraded und habe deshalb den Admin in der Version 5.4.9 drauf - der es allerdings nie in Stable geschafft hat. Warum weiß ich nicht, weil ich 0 Probleme habe - außerdem sollte man in meinen Augen vor dem großen Versionssprung immer die letzte Version ins Stable hieven - aber wurde halt nicht gemacht. Das heißt wenn Du im offiziellen stable Kontext bleiben willst, dann musst Du bei mqtt 3.0.6 bleiben oder anderenfalls wie ich ggf. 5.4.9 oder eine admin 6 Version nutzen.
Am Anfang ist das gar nicht so schlimm da Du ein eigenes Prefix und ein Subscribe Pattern angeben kannst.
Die eigenen States sind bei diesen Versionen halt nicht konfigurierbar und beschränken sich immer auf die eigenen mqtt-Instanz. - Aber wie gesagt später kannst Du dann auch fremde Instanzen verwenden, um diese zu publishen und so Deiner anderen Instanz zur Verfügung zu stellen.
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
Für die Client Konfiguration stehst Du mit den mqtt-Adapter bisschen im Regen. Eigentlich wurde da in meinen Augen zwischenzeitlich Mist von den Entwicklern gebaut, aber ich hab es dann doch geschafft sie davon zu überzeugen, dass es Sinn macht auch eigene States außerhalb der jeweiligen mqtt- Instanz zu publishen.
ich will diese Diskussion nicht wieder führen. Aber für @DJMarc75 zur Info ist genau das der Vorteil des mqtt-client Adapters, da kann über jeden x-beliebigen Datenpunkt in den Objekten mit beliebigen Topics gepublished oder subscribed werden
-
@mickym sagte in MQTT Datenaustausch in beide Richtungen ?:
wenn Du im offiziellen stable Kontext bleiben willst
Keine Sorge, bin schon seit knapp einem Jahr im Beta - weil ichs kann
Hab Mosquitto nun am laufen.
Jetzt interessiert mich was ich hier beim jeweiligen mqtt-client eintragen muss....
-
@djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:
Jetzt interessiert mich was ich hier beim jeweiligen mqtt-client eintragen muss....
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
mqtt-client Adapters, da kann über jeden x-beliebigen Datenpunkt in den Objekten mit beliebigen Topics gepublished oder subscribed werden
duckundwech
-
@djmarc75 Ich würde grundsätzlich mal alle Haken raus machen. Grundsätzlich kannst Du in beiden Clients natürlich alles subscriben, um quasi ein vollständiges Abbild Deines Brokers zu erhalten.
Ich würde aber in jedem Fall - wenn es Du den mosquitto nicht noch von aussen fütterst (also ohne die beiden iobroker) - halt jedem client ein unterschiedliches Präfix empfehlen, dann weisst Du welches topic von welchem iob stammt.
also rpi1/ für den einen und rpi2/ für den anderen. Musst Du halt wissen, wie Du das nennst. Solange Du nicht alles brauchst - zumindest nicht die eigenen States - und Datenverkehr minimierst - subscribest halt immer nur das jeweilige Topic des anderen:
Also auf rpi2 - dann rpi1/# und auf rpi1 dann rpi2/#
-
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
mqtt-client Adapters, da kann über jeden x-beliebigen Datenpunkt in den Objekten mit beliebigen Topics gepublished oder subscribed werden
Na klasse... jetzt hab ichs auch gelesen... Das kommt davon wenn man während dem Verfassen eines Beitrages kurz das Haus verlassen muss und erst DANACH auf "Absenden" klickt.....
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
duckundwech
Ja, so fühl ich mich auch grad
-
@djmarc75 jetzt bin ich mal gespannt ob du dir beide Versionen ansiehst und für welche du dich entscheidest.
und vor allem warum.Das sind zwei verschiedene Herangehensweisen und @mickym und ich haben "historisch" gesehen jeder "seine" Methode genutzt.
Ich tue mich daher schwer mich nochmal in die Broker/Client Adapter Technik einzuarbeiten zumal ich es vor Jahren damit nicht ans Laufen bekommen hatte.
Bei @mickym ist es wohl genau umgekehrt
-
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
Bei @mickym ist es wohl genau umgekehrt
Ja. - ich hatte den Adapter ja erst nur als Broker eingesetzt und hab mich dann erst später für mosquitto entschieden, da der Adapter eben als Broker Probleme gemacht hatte. Das war aber alles schon im Spätherbst 2019.
-
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
beide Versionen ansiehst
grad dabei
@homoran sagte in MQTT Datenaustausch in beide Richtungen ?:
für welche du dich entscheidest
Kommt drauf an wer mehr bietet