NEWS
openDTU per MQTT auslesen und steuern
-
@mickym ich mache immer mal ein Image mit einer Kopierstation. Dauert zwar, ist aber sicher.
Mein IO Broker System war eine Zeit lang sehr zuverlässig. Aber zur Zeit stolpere ich von einer Katastrophe in die Andere. -
Also hier nochmal eine kleine Anleitung von mir.
Installieren mosquitto:
sudo apt install mosquitto
dann Konfiguration erstellen. Eine eigene Datei im Verzeichnis /etc/mosquitto/conf.d erstellen. Ich mach mal eine mit Benutzer und Passwort, um es nicht ganz offen zu machen.
cd /etc/mosquitto/conf.d
Dann eine eigene Konfigurationsdatei mit conf als Dateityp. Ich nenne sie mal laser.conf.
Also nachdem Du in das Verzeichnis gewechselt bist:
sudo nano laser.conf
In die Datei kopierst Du folgende Zeilen.
allow_anonymous false password_file /etc/mosquitto/pwfile listener 1883
In der 1. Zeile legen wir fest, dass kein anonymer Zugang (also ohne Benutzername und Passwort) möglich ist.
In der 2. Zeile wo die Passwortdatei liegt, die wir aber noch erstellen müssen.
in der 3. Zeile auf den Port, auf den der Broker hören soll. 1883 ist Standard, aber Du musst halt einen Port wählen, der noch nicht von Deinen anderen Instanzen belegt ist und den Du dann auf openDTU und shellies und was weiß ich einstellen willst. Der darf auch nicht mit Adaptern kollidieren, die mqtt Broker emulieren (wie Shellie Adapter etc.).Nun legst Du noch Benutzer und Passwort an. Da wir die Passwortdatei pwfile in der Konfiguration genannt haben und in das Verzeichnis /etc/mosquitto legen, erstellen wir folgenden <benutzer> (wie auch immer Du ihn nennen willst) .
sudo mosquitto_passwd -c /etc/mosquitto/pwfile <benutzer>
Also nehmen wir mal an Dein Benutzer heißt laser.
Dann gibtst Du ein
sudo mosquitto_passwd -c /etc/mosquitto/pwfile laser
und wirst 2 mal nach Deinem Passwort gefragt.
Password: Reenter password:
Überprüfen kannst Du die Passwortdatei einfach mit
cd /etc/mosquitto cat pwfile laser:$7$101$9+FBgF4Rgcv8wANN$zzcWWzIBRYx6BaJ9yo5tGhPV5iMIgjKrxkxpRB+iuPiKy4cvzdjUCaGCNxN6AMOk5s3mcFoqJQsiPoqIvpbaAA==
Da steht dann Dein mqtt Benutzername mit Doppelpunkt mit einem verschlüsselten Passwort.
Dann startest Du mosquitto nochmal hoffentlich erfolgreich mit:
sudo systemctl restart mosquitto
mit
sudo systemctl status mosquitto
schaust Du ob der mosquitto sauber läuft. Die Ausgabe sollte dann so ähnlich wie folgt aussehen:
● mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; preset: enabled) Active: active (running) since Wed 2024-08-21 21:48:12 CEST; 4 days ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Process: 119 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 122 ExecStartPre=/bin/chown mosquitto:mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 123 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS) Process: 124 ExecStartPre=/bin/chown mosquitto:mosquitto /run/mosquitto (code=exited, status=0/SUCCESS) Main PID: 125 (mosquitto) Tasks: 1 (limit: 9190) Memory: 5.0M CPU: 12min 42.300s CGroup: /system.slice/mosquitto.service └─125 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf Aug 21 21:48:12 mwmqtt systemd[1]: Starting mosquitto.service - Mosquitto MQTT Broker... Aug 21 21:48:12 mwmqtt mosquitto[125]: 1724269692: Loading config file /etc/mosquitto/conf.d/default.conf Aug 21 21:48:12 mwmqtt mosquitto[125]: 1724269692: Loading config file /etc/mosquitto/conf.d/mwhome.conf Aug 21 21:48:12 mwmqtt systemd[1]: Started mosquitto.service - Mosquitto MQTT Broker.
Nun konfigurierst Du nur noch den mqtt Adapter als Client:
in die URL gibst localhost oder die IP Deines Raspies ein. Benutzername ist der den Du in mosquitto angelegt hast und Passwort entsprechend. Über die Schaltfläche die Verbindung testen.
in den Client-Settings gibst Du mit dem # an, dass Du alle topics abonnieren (subscriben) willst.
die Client - ID musst Du nicht angeben.
Bei den mqtt- Einstellungen ist weniger mehr.
Also alle Haken wegmachen.
Das wars schon.
-
@mickym Danke! Ich werde mich daran machen...
-
@laser sagte in openDTU per MQTT auslesen und steuern:
@mickym Danke! Ich werde mich daran machen...
Mir ist noch eingefallen, hast Du eigentlich in Deinem Inverter den Port geändert auf den mqtt Adapter, nicht dass da noch der Port von dem openDTU Adapter drin stand?
-
@mickym Den Port hatte ich extra neu vergeben. Den gab es vorher nirgendwo.
-
@mickym Habe versucht, mosquitto zu installieren. Klappt, aber der Service startet nicht-
otto@neuheizung:/etc/mosquitto $ sudo systemctl status mosquitto × mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; preset: enabled) Active: failed (Result: exit-code) since Tue 2024-08-27 10:41:19 CEST; 9min ago Duration: 8min 19.717s Docs: man:mosquitto.conf(5) man:mosquitto(8) Main PID: 172664 (code=exited, status=1/FAILURE) CPU: 40ms Aug 27 10:41:19 neuheizung systemd[1]: mosquitto.service: Scheduled restart job, restart counter is at 5. Aug 27 10:41:19 neuheizung systemd[1]: Stopped mosquitto.service - Mosquitto MQTT Broker. Aug 27 10:41:19 neuheizung systemd[1]: mosquitto.service: Start request repeated too quickly. Aug 27 10:41:19 neuheizung systemd[1]: mosquitto.service: Failed with result 'exit-code'. Aug 27 10:41:19 neuheizung systemd[1]: Failed to start mosquitto.service - Mosquitto MQTT Broker.
Wenn ich im Internet suche, was es Alles für Mosquitto Probleme auf der Welt gibt- ich glaube ich habe mit dem IO Broker genug davon. Ich versuche aber Mosquitto auf einem Reserve- Raspi zu üben. IOBroker sollte ja die ganzen Mini- Einzelinstallationen von Software in Adaptern bündeln und vereinfachen. Es ist unmöglich für mich, die ganzen IO-Broker Fehler mit Einzelinstallationen von Zusatzsoftware zu umschiffen. Ich muß warten, bis es mal wieder eine voll funktionsfähige IO-Broker Version gibt (fehlerfreie Software wird es vermutlich nie geben).
-
@laser Na gut - wenn Du meinst. Du hättest ja noch mal den iobroker stoppen können, um zu sehen, ob es da einen Konflikt gibt, aber wenn Du mosquitto wieder vom System runterschmeissen möchtest, kannst Du das mit
sudo apt remove mosquitto
Bei mir läuft das Teil aber seit Jahren stabil. Auch wegen Deiner openDTU bin ich dann ehrlicherweise am Ende meiner Weisheit, da ich das Teil nicht habe und ist immer schwer, nur aus der Literatur Probleme zu diagnostizieren.
-
@mickym Ich bleibe da schon dran. Aber zur Zeit habe ich so viele Probleme mit dem IOBroker. Die OpenDTU ist nur Eines davon. Die GPIO's funktionieren nicht. Dadurch kann ich kein Update vom Betriebsystem machen. Ich laufe auf einer alten Version, wo die GPIO's noch funktionierten. Möglicherweise ist das auch ein Problem mit dem mosquitto. Mosquitto klingt erst mal vielversprechend. Das wird auch, wenn meine Anlage wieder so läuft, wie es meine Mini-Solaranlage braucht. Zum Glück ist jetzt keine Heizperiode, da hätte ich ein noch größeres Problem.
Jetzt habe ich einen Clone von meiner SSD erstellt. Natürlich die SSD's genau verkehrt herum in die Station gesteckt. Jetzt habe ich 2 alte Versionen. Muß erst mal das Backup einspielen. Wenn's geht, neu clonen.
Ich habe einen 2. Raspi, den ich auf dem neuesten Stand halte. Dort teste ich mosquitto.
Dort läuft das auch fehlerfrei. Aber wie gesagt, auf meinem Produktivsystem kann ich kein Update/Upgrade machen, weil dann die GPIO's nicht funktionieren. Aber das fehlende Update scheint das mosquitto Problem zu sein. -
@laser Na dann denke ich mal, dass Du mit Deinen mqtt Ports im iob und deinen Instanzen irgendwo einen Konflikt hast.
Du kannst Dich ja auch mit dem iobroker und dem Adapter auf den mosquitto auf dem anderen Raspi verbinden, wenn Du willst.
-
@mickym
Ich häng mich hier mal rein. Mein Ziel ist es auch, das Limit des Investors zu steuern. Allerdings nich über Mqtt, sondern über den opendtu-Adapter.
Ich bin es gewohnt, inverterregister zu beschreiben über Script.
Auch manchmal direkt in den Objekten. Es verwundert mich, dass Limit_nonpersistent_absolut zwar beschrieben werden kann und der Wert dann auch in den Objekten steht, aber nicht in inverter übernommen wird. Der Adapter hat aber schon vorher nicht den Wert vom inverter angezeigt, sondern 0. Es wird nur current-Limit-absolute und -relative angezeigt, aber dieser Wert ist ja readonly.
Ich habe 2 Instanzen von opendtu, ist bei beiden das gleiche.
Eigentlich sollte es gehen -
@shipper
Wie kommst Du auf "read-only"?
Welche Version von OpenDTU? -
@codierknecht
Genauso sieht es bei mir auch aus. Die zu schreienden Werte sind erstmal auf Null aber lassen sich beschreiben. Nur im Inverter kommt Nix an.
Readonly? Der current wert ist readonly, ist nicht schreibbar, wird auch drauf hingewiesen.
Firmware. 2024.3.23Im opendtu thread ist das Problem auch beschrieben, ist aber geschlossen,weil es funktionieren soll
-
@codierknecht
Nun hab ich mal Mqtt aktiviert, und im Objektbaum erscheint ein Ordner powerlimiter und darunter ein Ordner cmd.
Also anders als hier beschrieben.
In cmd habe ich nun ein Objekt Limit nonpersitent absolute erstellt und einen Wert erstellt. Bleibt rot. -
@shipper sagte in openDTU per MQTT auslesen und steuern:
Der current wert ist readonly, ist nicht schreibbar
Beschrieben werden können nur die 4 States ab dem markierten. Da habe ich Dich wohl falsch verstanden.
Ich probiere das später mal, wenn es hell genug ist. -
@shipper
Wie nicht anders zu erwarten funktioniert das einwandfrei:
Du hast nicht zufällig den Haken bei "Bestätigt" gesetzt?
-
@codierknecht
hatte ich beachtet:
Bildschirmfoto 2024-10-11 um 11.02.20
Bildschirmfoto 2024-10-11 um 11.01.55Ich weiss, es sollte funktionieren, hab aber keine Idee, warum nicht.
-
@shipper sagte in openDTU per MQTT auslesen und steuern:
hab aber keine Idee, warum nicht.
Ich auch nicht mehr.
Meine OpenDTU-Version ist die v24.3.31. Adapter 2.0.0 -
@codierknecht
meine opendtu-adapter ist auch aktuell, iob auch.
ich wills nochmal mit mqtt versuchen. Der Objektbaum hat sich wohl inzwischen geändert. Ich habe da schon experimentiert, na ohne Erfolg. eine Idee, was ich unter cmd erstellen muss?
Bildschirmfoto 2024-10-11 um 11.20.20 -
@shipper
mit der neusten firmware läuft alles