NEWS
MQTT Server oder/und Client oder externen MQTT Server
-
Hallo,
ich komme jetzt gerade nicht klar mit dem MQTT Server als Adapter bei IObroker. Ich komme von Domoticz und da habe ich Mosquito als broker neben Domoticz auf dem Raspberry installiert. Domoicz fungierte da dann als Client. Wie mache ich das beim iobroker?
Ich habe jetzt den Adapter MQTT broker/client installier, dann den broker konfiguriert. Nur habe ich jetzt ja keinen Client oder? Oder sollte ich den Client konfigurieren und den Mosquito broker dann unabhängig davon nochmal installieren (also nicht im iobroker sondern aben als Mosquito Broker)
Ich frage weil ich einige Tasmota Devices aber, und das ist mir wichtiger, ESPeasy devices habe und sich sehe die nicht im Objekte Baum. Irgendwas mache ich falsch ist mir klar nur was. Gibt es denn ein Best practise tutorial? Was gebe ich zB als "Prefix für alle Topics" ein und was für als "maske für Bekanntgeben von eigenen States" ? Kann ich frei lassen oder?
ich komme da irgendwie nicht weiter...
DANKE -
@joachim-h Ich kann Dir nur empfehlen, dass Du
- den MQTT Adapter verwendest, den Du sowohl als Client wie Server verwenden kannst. Den der nur als Client dient, ist glaub veraltet.
- den MQTT Adapter ebenfalls wie in Deiner bisherigen Konfiguration als Client konfigurierst und mosquitto noch zusätzlich.
Der Adapter als Broker machte aus meiner Sicht Probleme (habe schlechte Erfahrungen mit gemacht) und ist halt auch nicht so flexibel, wenn Du später eine mqtt-Bridge aufbauen willst etc.
Als Konfiguration für den Client auf mosquitto haben sich bei mir diese Einstellungen bewährt (alles ausschalten ;))
bei Dir halt für das publishen mqtt.0.* wahrscheinlich.
Warum Du vielleicht nicht alles siehst, schau mal ob Du im Log Einträge hast, dass irgendwelche Nachrichten nach 11 retries gelöscht werden. Meines Erachtens hat der Adapter als Broker Probleme mit nicht mit ACK bestätigten Nachrichten.
Beim Broker - wie gesagt mein Screenshot ist als Client nicht als Broker konfiguriert - brauchst Du nur dann wenn Du aus bestimmten Instanzen etwas unter einem Ast vom iobroker aus in mqtt publishen willst.
Das mache ich zum Beispiel mit dem Fritzbox Adapter, um diese Datenpunkte im mqtt zu haben (brauche ich heute nicht mehr, hatte aber historische Gründe).
Dazu habe ich mir dann aber eine zusätzliche Instanz eingerichtet. -
@mickym also nochmal damit ich es richtig verstanden habe.
Ich nehm den Client aus dem client/broker paket weil der aktueller ist als der "nur" client...
Ich installiere, ähnlich wie bei Domoticz Mosquito irgendwo (oh auf dem Raspi wo iobroker drauf ist...und verwende den als Broker..
Alles klaro
Mal sehen wie das so läuft.. -
@joachim-h Ja so läuft das bei mir nun seit einem Jahr super stabil. Also mosquitto auf den Raspi wo der iobroker drauf ist und dann den Adapter mit dem Client/Broker als Client auf den mosquitto.
Du musst nur aufpassen, dass Du keine anderen Adapter nutzt die auch einen mqtt-Broker darstellen, wie sonoff-Adapter etc. . Falls Du diese Adapter anstelle orginärem mqtt nehmen willst, dann musst die halt auf andere Ports legen. Meines Erachtens braucht man diese Adapter aber dann nicht, wenn man mit reinem mqtt arbeitet.
-
Tja das wahr wohl nix. MQTT adapter deinstalliert und dann als Client neu installiert.
Mosquitto broker und nur den (also ohne Clients) dann auf den Rapsberry installiert. aber leider geht es nicht.
Der Adapter bleibt gelb, obwohl der Test sagt er wäre verbunden. Beim ersten starten hat der Adapter noch wild grün und gelb geblinkt und sich ständig reconnected:
Mosquitto -v
1616193141: mosquitto version 1.5.7 starting
1616193141: Using default config.
1616193141: Opening ipv4 listen socket on port 1883.
1616193141: Error: Address already in use <==== schätze ds ist ipv6?
Ich hatte vorher unter Domoticz einen Mosquitto Broker laufen, mit dem hat er sich einwandfrei verbunden aber das kann ja auch keine Lösung sein.
Weis jemand ob das an der Mosquitto version liegt?
So war der Adapter besser. -
@joachim-h Das ist kein Problem .- Du wirst wahrscheinlich einen Adapter laufen haben, der bereits den mqtt Port nutzt (sonoff oder was weiß ich). Einfach den Port ändern bleibt Dir überlassen entweder vom welchem Adapter oder vom mosquitto.
Ich empfehle dann eher den vom Adapter der diesen Port nutzt zu ändern - damit mosquitto auf dem Standardport arbeiten kann. Ansonsten kannst Du auch einfach den port vom Mosquitto ändern.
Der Adapter bleibt solange gelb, solange nicht verbunden.
-
@mickym said in MQTT Server oder/und Client oder externen MQTT Server:
Naja ich habe einige Sonoffs mit ESP Easy bzw auch ein paar mit Tasmota drauf nur die sind doch Clients und keine Broker...ich steh grad aufm Schlauch.
Edit: jetzt ist er grün geworden, ich habe beim Client Adapter alle Häkchen raus gemacht.....
-
@joachim-h Der Sonoff Adapter agiert als mqtt broker das ist das Problem. Also entweder Du änderst den Port des Adapters oder des mosquitto.
Nein der Sonoff Adapter arbeitet mit Tasmota.Geh mal in /etc/mosquitto oder /etc/mosquitto/conf.d
Da findest Du eine Konfigurationsdatei - um den Port des mosquitto Servers zu ändern.
Da steht dann.
listener 1883
Ich würde zwar eher den Port vom Adapter ändern - das ist aber erst mal wohl mit mehr Aufwand verbunden. Aber ein Tod musst Du sterben, es können nicht beide auf dem gleichen Port laufen.
mosquitto läuft auf ipv6 und auf ipv4 problemlos neben dem iobroker. Wie gesagt manche Adapter belegen den Port .
mach halt mal auf Kommandozeile:
sudo netstat -l -p
Wenn bei Dir
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 675/mosquitto tcp 0 0 localhost:42819 0.0.0.0:* LISTEN 834/perl tcp 0 0 localhost:9000 0.0.0.0:* LISTEN 685/iobroker.js-con tcp 0 0 localhost:9001 0.0.0.0:* LISTEN 685/iobroker.js-con tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 834/perl tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 709/sshd tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN 405/cupsd tcp6 0 0 [::]:1883 [::]:* LISTEN 675/mosquitto
statt mosquitto halt iobroker steht, dann ist das ein Adapter.
-
@mickym
Ok ich schaus mir morgen mal an.
Ich habe aber keine Sonoffs mit Original Firmware, es ist immer entweder Tasmota oder ESPEasy drauf. Du meinst sicher die Original Firmware Sonoffs, die laufen bei mir nicht und sind es auch nie.Einzig ein Arilux (MAgic Home) adapter läuft bei mir im Haus, der hat die Original Software drauf aber bei Domoticz ist mir nie aufgefallen das es da Probleme gab.
Ich will halt ungern den Standard port ändern zumal es vorher ja mit dem Broker Adapter einigermassen gelaufen ist..Schaut so aus als würde einfach nur Mosquitto laufen...i
-
@joachim-h Ja das schaut gut aus.
Ansonsten das mit dem Bild einfach den Text zwischen die CodeTags kopieren:
</>
-
@mickym
So erstmal Danke, ich hab derzeit nur eine Tasmota Steckdose dran aber da fehlen mir ein paar Einträge die vorher da waren, also cmd Einträge damit ich schalten kann. seis drum schau ich mir morgen an und werde berichten Soweit so gut.. -
@joachim-h
Ja wenn die sich nicht selbst melden - dann muss man die Datenpunkte entweder selbst anlegen oder man nutzt (unter Windows) den Tasmota Device Managerda werden so gut wie alle Punkte angelegt.
aber sehe gerade - auch nicht alle. Bei dem screenshot fehlt der backlog Punkt - den ich woanders drin habe.
-
@mickym
Sodala, also die 4 Tasmota switches die ich habe sind drin und soweit klappt alles eigentlich. Die lassen sich auch schalten.
Sorgen machen mir meine ESPEasy, die sind relativ zickig was MQTT angeht, bzw sehr restriktiv. das Muss ich mir nochmal genauer anschauen. Die Datenpunkte, wie Temperatur oder sowas übermitteln die auch aber das schalten geht über Rules und die zugehörigen MQTT Topics werden einfach nicht angelegt...
Gibt es eigentlich auch die Möglichkeit http/get commands zu versenden? ICh habs über ein Skript gelöst aber gibts da nen Adapter?
Wichtiger: Wie geht denn das mit den Datenpunkten selbst anlegen?Und danke nochmal für Deine Hilfe..
-
@joachim-h sagte in MQTT Server oder/und Client oder externen MQTT Server:
Datenpunkte, wie Temperatur oder sowas übermitteln die auch aber das schalten geht über Rules und die zugehörigen MQTT Topics werden einfach nicht angelegt...
Das macht aber nichts - das hatte ich glaub schon erwähnt - Du kannst alle mqtt Punkte selbst anlegen. Bei mir ging das etwas durch den Tasmota Device Manager - aber das spielt keine Rolle.
Einfach unter Deinem cmnd Ast die Datenpunkte Rule1-3 anlegen (s. Screenshot).
Grundsätzlich kannst Du http get Kommandos über Skript, Blockly (denke habe ich auch gesehen) und NodeRed (nutze ich) absenden. Brauchst Du aber nicht, weil Du wie gesagt alle benötigten Punkte Dir selbst anlegen kannst.
Hier hast Du auch nochmal die Anleitung:
-
@mickym so ich hab mich bei dem Sauwetter mal länger beschäftigt. in ESPeasy ist MQTT etwas gefrickel aber wenn man es mal geschnallt hat dann gehts schon.
Hab die Datenpunkte (nennt man die so?) mit dem Mqtt Explorer angelegt. So habe ich auch schön gesehen was da gesendet wird und wie es ankommt und der iobroker hat dann den Datenpunkt einfach angelegt...praktisch irgendwie.
Die Anleitung hat da sehr gut geholfen... -
@joachim-h Wenn Du den mqtt Adapter so eingestellt hast, wie ich, dann werden die Datenpunkte, die Du in der mqtt-Instanz des Clients im iobroker anlegst auch im mosquitto angelegt - das kannst ja mit Deinem Mqtt Explorer mal prüfen und dann kann man auf diesen verzichten.
Du kannst dann generell auf die Datenpunkte direkt in iobroker mittels Deiner präferierten Logikmaschine zugreifen oder falls Deine Logikmaschine (wie Node Red) auch direkt einen mqtt-Broker ansprechen kann auf zweierlei Art und Weise.
-
@mickym Mal sicherheitshalber: Ich habe auf dem Raspberry wo iobroker drauf ist nur den Mosquitto server installiert. nicht den Client. Allerdings hab ich den Client aus dem Adapter vom iobroker broker/client installiert. Das ist schon ok oder?
Node Red nimmt aber schon den Mosquitto her, Port und Ip ist ja identisch zu vorher..oder wo kann man das einstellen?Node Red habe ich auch asl adapter vom iobroker, erschien mir einfach. Das ist ok oder soll ich den auch auf den Raspberry (ohne den Umweg über den Adapter) installieren?
Ausserdem hab ich mich zufrüh gefreut, er legt mir nicht jeden Datenpunkt mit dem Mqtt explorer an, also muss ich mich mal mit Node Red mehr vertraut machen..
-
- Ja es ist OK nur den mosquitto Server zu installieren, die Clients brauchst Du nicht, dafür hast Du den Adapter.
- Klar mit dem MQTT iobroker client/server adapter kannst Du, wenn Du den mqtt Adapter als Client konfiguriert hast (siehe mein Screenshot) direkt modifizieren. Der Adapter dient also als mqtt Client.
- Node Red als Adapter ist sogar wichtig, sonst kannst Du aus NodeRed gar nicht auf die Datenpunkte Deines iobrokers zugreifen.
- Wie gesagt wenn Du unter der mqtt-Instanz Deines mqtt-Adapters (also in den Objekten unter mqtt.0) selbst einen Datenpunkt anlegst, dann wird der auch zu Deinem mosquitto Broker/Server gepublisht.
So kannst Du direkt aus dem iobroker an Deine Geräte Kommandos schicken.
Wie gesagt iobroker ist flexibel welche Logikmaschine Du verwenden willst. Wenn Du blockly oder Javascript bevorzugst, kannst Du die Datenpunkte unter Deinem mqtt.0. instanz modifizieren.
Ich bevorzuge Node Red - da hast Du die iobroker-out Nodes um auch direkt die Datenpunkte im iobroker zu modifizieren.
Ansonsten hast Du die mqtt Nodes in Node Red - dann musst Du die Kommunikationsparameter zum mosquitto Server eintragen.Ich zeige Dir mal 2 Screenshots:
im iobroker-out Node gibst Du den Datenpunkt in der iobroker Notation im Topic an:
Bei den mqtt - out Nodes
konfigurierst Du Dir den iobroker den kontaktieren willst und gibst auch noch das Topic an:
Falls Du im Node Red noch keinen mqtt Broker definiert hast, wirst Du automatisch auf den folgenden Dialog geleitet:
-
@joachim-h sagte in MQTT Server oder/und Client oder externen MQTT Server:
Node Red nimmt aber schon den Mosquitto her, Port und Ip ist ja identisch zu vorher..oder wo kann man das einstellen?
Nun es kann nur ein mqtt / Server / Broker auf dem gleichen Port auf der gleichen Maschine laufen. Falls Du also nichts anderes laufen hast, kann nur mosquitto auf Port 1883 hören.
Im Übrigen gibst Du sowohl bei mqtt-Client Adapter, als auch bei Node Red einen Namen angeben, um jeden mqtt Client zu identifizieren.
Auf Deiner Maschine findest Du im Verzeichnis /var/log/mosquitto die aktuelle mosquitto.log Datei - da siehst Du genau welche Geräte sich mit welcher Kennung und IP mit Deinem mosquitto Broker verbinden.
Aber nochmal Du brauchst Node Red nicht, um Datenpunkte im mosquitto anzulegen!
Das machst Du einfach mit den Datenpunkten im iobroker. Ausserdem wundert mich, warum es mit Deinem mqtt Exploerer nicht gegangen ist. Sollte ebenfalls funktionieren.
-
@mickym also Node Red habe ich gerade noch konfiguriert, läuft soweit.
Ich hab den iobroker neu gestartet (eigentlich musste ich den Raspberry neu starten) und plötzlich waren die Datenpunkte da. Egal, ich werd mich jetzt in Node Red einarbeiten, das hab ich bei Domoticz eher stiefmütterlich behandelt...
Danke für deine Hilfe, ist echt hilfreich ;-)vor allem die Screenshots