NEWS
openDTU per MQTT auslesen und steuern
-
Es tut sich einfach nichts im Umrichter- Limit. Ich benutze den mqtt Adapter.
-
Der 2. Datenpunkt ist definitiv verkehrt nur der Name des 1. Datenpunktes mal anpassen.
Normalerweise steht im Namen - das originäre Mqtt topic
Ich glaube auch in den Objektdaten unter native
{ "_id": "mqtt.1.shellies.licht.wohnzimmer.decke.light.0.command", "common": { "name": "shellies/licht/wohnzimmer/decke/light/0/command", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "string" }, "native": { "topic": "shellies/licht/wohnzimmer/decke/light/0/command" }, "type": "state", "from": "system.adapter.mqtt.1", "user": "system.user.admin", "ts": 1670870062801, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Wie gesagt, wenn Du mehr mit mqtt machen willst, empfehle ich Dir wirklich mosquitto als mqtt Broker zu nutzen, da der Adapter in meinen Augen als Broker manche Merkwürdigkeiten aufweist.
-
@mickym eigentlich wollte ich ja den openDTU- Adapter verwenden. Aber dort gibt es auch Probleme. Unter Anderem wird die openDTU vom Router nicht gefunden. Aber dann geht mqtt auch bloß nicht.
Heute packe ich das nicht mehr. Danke für die Hilfe. Evtl. löst sich über Nacht ein Knoten in mir. Ich schalte meine Akku-Entladeregelung erst mal auf den openDTU- Adapter um. -
@laser Wie gesagt, ich benutze mosquitto als Broker für die gesamte mqtt Kommunikation ist easy und den Client/Broker mqtt Adapter als Client. Das funktioniert prima und einfach.
Ich habe kein openDTU, aber Du siehst, bei mir läuft alles mqtt von tasmota, shelly, zigbee2mqtt und owntracks alles über natives mqtt.
-
@mickym "mosquitto" ist wieder ein absolutes Neuland für mich. Da muß ich mich mit beschäftigen.
-
@laser Das ist easy.
Mitsudo apt install mosquitto
installieren (wenn es ein LINUX System) ist. Und dann in der Konfigurationsdatei nur Port und ggf. ein Passwort mit User erstellen.
Ich verlinke Dir gleich noch eine Anleitung. Aber im Prinzip ist das easy und läuft immer unauffällig parallel.
-
@mickym Das läuft bei mir auf einem Raspi4. Ich werde das morgen in Angriff nehmen.
Wenn die Kiste natürlich mal abschmiert (hatte immer mal Defekte in der SSD), habe ich ein Installationsproblem von Null an anzufangen. -
@laser sagte in openDTU per MQTT auslesen und steuern:
@mickym Das läuft bei mir auf einem Raspi4. Ich werde das morgen in Angriff nehmen.
Ok - ich such Dir noch eine Anleitung raus, ist aber easy. Ist englisch auch OK?
-
@mickym englisch ist zwar holprig, aber muß gehen.
-
@laser sagte in openDTU per MQTT auslesen und steuern:
@mickym Das läuft bei mir auf einem Raspi4. Ich werde das morgen in Angriff nehmen.
Wenn die Kiste natürlich mal abschmiert (hatte immer mal Defekte in der SSD), habe ich ein Installationsproblem von Null an anzufangen.Ja ich bin bei den Micro-SDs geblieben und ziehe mir regelmäßig Images und wenn dann so eine Micro SD kaputt geht, dann halt eine neue. Wenn die nicht so groß sind (bei mir auch ein PI4 - dann kommst mit 16 GB ohne Backups wunderbar aus).
Bei den SSDs ist es halt schwierig bei großen Kapazitäten Imagesicherungen zu machen.
-
@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