NEWS
MQTT- Adapter/ Verbindung mit HiveMQ
-
@marc-berg Hättest du ein Beispiel und zwar habe ich ihn installiert und möchte nun die Zustände von den Tasmota Geräten haben bzw die schaltzustände ändern. Bei dem anderen Adapter hatte ich ja ein Ordner state und cmnd (DBs musste ich selbst erstellen). Muss ich dann auf das Zahnrad gehen um den erstellten DB in user zu "verknüpfen" und wo gebe ich an welches Gerät es sein soll. Den theoretisch müssten das Tasmota Gerät irgendwie angezeigt werden. Oder?
-
@basti97 sagte in MQTT- Adapter/ Verbindung mit HiveMQ:
Muss ich dann auf das Zahnrad gehen um den erstellten DB in user zu "verknüpfen" und wo gebe ich an welches Gerät es sein soll.
Zeig doch bitte mal, wie jetzt der Baum unter mqtt.0 für ein Tasmota Gerät aussieht. Dies entspricht 1:1 den MQTT Topics, die du verwenden musst. Warum sollten wir jetzt mit Beispielen hantieren, wenn es doch gleich konkret werden kann!?
-
Da hast du recht und zwar habe bzw musste ich unter cmnd die Datenpunkte per Hand erstellen damit ich die Zustände im MQTT state ändern bzw im Tasmota Gerät. So weit hat es dann auch geklappt. was ich aber am Sonoff Adapter besser finde ist das man den state und cmnd Zustand in einem Datenpunkt hat was wahrscheinlich hier im Adapter nicht funktoniert? Das "zusammenführen" habe ich auch schon mal per Blockly getestet hat eigentlich auch funktoniert. Da aber der MQTT Adapter immer wieder neu gestartet hat und die Zustände in diesen Augenblick nicht vom Server/ Tasmota Gerät ankamen waren sie mit dem virtuellen Datenpunkte unterschiedlich. Und leider ist es am Ende zu einem Loop gekommen wo der Ausgang angefangen mit blinken und die CPU hoch ging. Außerdem hat es dann noch lange gedauert bis die Zustände wieder "ruhig waren".
Danke das du mir hilfst. Dir noch ein schönen Abend.
-
...und wenn du die Objektdaten hier als Text in CodeTags reinkopiert hättest, könnte man auch rauskopieren, das tippe ich jetzt nicht ab.
Wie ich es machen würde:
Lesend:
- einen Datenpunkt deiner Wahl (genaue Namen spielen hier keine Rolle) unter "0_Userdata" anlegen, z.B. "0_Userdata.Tasmota.ESPimFlur.getPower1"
- Auf Zahnrad klicken und mqtt-client aktivieren, nur "Subscribe" aktivieren und "nur Änderungen"
- Als Topic dein MQTT Topic eintragen (stat/ESP...)
Für Daten, die du an die Tasmota-Geräte schreiben/senden willst, anders herum:
- einen Datenpunkt deiner Wahl (genaue Namen spielen hier keine Rolle) unter "0_Userdata" anlegen, z.B. "0_Userdata.Tasmota.ESPimFlur.setPower1"
- Auf Zahnrad klicken und mqtt-client aktivieren, nur "Publish" aktivieren und "nur Änderungen"
- Als Topic dein MQTT Topic eintragen (cmnd/ESP...)
Wichtig: ggf. vorhandene schreibende Aktionen auf mqtt.0.cmnd... vorher abschalten.
-
@marc-berg Hätte ich machen können ist ja noch nicht zu spät schicke es dir dann später. Schon mal vielen Dank für die Hilfe und dein Lösungsvorschlag.
Brauche ich dann trotzdem zusätzlich noch den Mqtt Adapter oder nicht? Ich würde sagen nein ein kurzes Update wo ich heute Nachmittag geschaut habe läuft der mqttclient ohne Verbindungsabbrüche. Gut verbunden ist er er hat ja aber noch keine Daten zum DB.
-
@marc-berg ich habe es gerade probiert aber irgendwie funktoniert es nicht.
Das sind die Einstellungen des Adapters verbindung zu hivemq besteht bzw Adapter ist grün.
Muss ich vielleicht das auch noch anpassen die Namen unten habe ich einfach erfunden. Mir ist nichts anders eingefallen oder müssen sie zum Gerät passenfür schreiben
cmnd/ESPWemos_mini/POWER1
für lesen
state/ESPWemos_mini/POWER1
-
Publish: auf keinen Fall "als Objekt" anhaken. Da kann Tasmota nichts mit anfangen, du willst ja nur den Wert übertragen.
Subscribe: Wurden denn vom Tasmota-Gerät neue Werte bzw. Änderungen übertragen? Nur dann erfolgt hier eine Aktualisierung.
Ansonsten würde ich aus der Datenpunkt-ID Zeichen wie Klammern und Umlaute zur Sicherheit rauslassen.
Zur weiteren Fehlersuche kannst du auch mal den MQTT Explorer auf HiveMQ loslassen. Damit siehst du dann genau, welche Topics gerade übertragen werden. -
@marc-berg Dankeschön probiere ich am Freitag noch einmal vielleicht schaffe ich den Durchbruch. Aber unabhängig davon das ich kein Gerät schalten kann bzw abfragen kann. Funktioniert der Adapter zu HiveMQ ohne Fehlermeldungen.
-
Kurz eine Info ich habe das ganze mit einem Raspberry mal getestet und es kommt der gleiche Fehler
-
@basti97 sagte in MQTT- Adapter/ Verbindung mit HiveMQ:
Kurz eine Info ich habe das ganze mit einem Raspberry mal getestet und es kommt der gleiche Fehler
Was steht im Log direkt vor "ECONNRESET"?
EDIT: kann es sein, dass du die "Client ID" auf der Seite "Client Settings" nicht gesetzt hast? Schreib da mal einen eindeutigen Namen rein, der von keinem anderen Client genutzt wird. Außerdem QoS mal auf "1" setzen.
-
@marc-berg Unter Client steht bei mir nichts drinnen muss ich da das ESP Gerät eingeben oder die HiveMQ Seite. Das andere habe ich auf 1 geändert
-
@basti97 sagte in MQTT- Adapter/ Verbindung mit HiveMQ:
Unter Client steht bei mir nichts drinnen muss ich da das ESP Gerät eingeben oder die HiveMQ Seite
Dort muss eine beliebiger Text rein. Wichtig ist nur, dass dies über alle Clients (also auch Tasmota) eindeutig ist, also z.B. "mqttclientiob". Es könnte sein, dass Probleme auftreten, wenn die ID leer oder doppelt vergeben ist, das gilt auch für den mqtt-client Adapter.
-
@Marc-Berg
Das ist ein auszug vom Log habe noch mal die State geändert um das auch auszuschliesen. -
Dann habe ich auch keine Idee mehr. Also entweder das Publishen der eigenen States abschalten um den Traffic zu sparen (Fehlermeldungen bleiben dann) oder auf den mqtt-client Adapter wechseln, das muss gehen.
In der HiveMQ Oberfläche gibt es den "Web Client", darin kannst du doch alle Messages sehen, ohne jetzt noch extra den MQTT Explorer zu installieren.
Ausgehend von den Messages und Topics, die dort erscheinen und den Einstellungen des mqtt-client Adapters könnten wir weiter den Fehler eingrenzen.
-
@marc-berg Danke für deine Meldung ich habe jetzt den Adapter nochmal gestartet in den ich bei client deinen vorgeschlagenen Name hinein kopiert habe.
-
@marc-berg Die erste erfolgsmeldung mit den MQTT- Client Adapter kann ich bis jetzt schon die Zustände in Tasmota schreiben. Nun fehlen noch die state durch den Explorer in HiveMQ sieht man es sehr gut woran es lag. Denn der Adapter hat "Weihnachten/cmnd/Weihnachten/cmnd/Adventskranz/POWER5" immer weggeschickt anstatt nur "cmnd/Adventskranz/POWER5"
-
Wenn du hier weiterkommst / machst, dann schließ bitte das Issue im Repo des mqtt Adapters. So wie es aussieht liegt ja weder ein Fehler im Adapter noch ein Featurerequest vor.
-
@mcm1957 Naja es erschließt mich aber trotzdem nicht warum das mit dem MQTT Adapter nicht funktioniert aber mit den MQTT.client wahrscheinlich schon. Sind die Adapter so verschieden im Aufbau?
-
@basti97 sagte in MQTT- Adapter/ Verbindung mit HiveMQ:
Sind die Adapter so verschieden im Aufbau?
Habe mir das nochmal genauer angeschaut und die Ursache gefunden. Der mqtt (Broker/Client)-Adapter hat fix eine "keepalive"-Zeit vom 1000 Sekunden gesetzt, die sich über die Instanzeinstellungen nicht anpassen lässt. Diese Zeit ist HiveMQ zu lang, sodass die Verbindung abgebrochen wird und neu aufgebaut werden muss.
Der mqtt-client-Adapter hat die keepalive-Zeit NICHT gesetzt, damit greift der Default-Wert von 60 Sekunden.
Workaround1: regelmäßig, z.B. alle 60 Sekunden, eine MQTT Nachricht senden
Workaround2: In der Instanz die Einstellungen als json runterladen, nach "keepalive" suchen, die 1000 in 60 ändern und speichern. Danach die json Datei wieder hochladen.