NEWS
Wert von Adapter über MQTT setzen
-
Hallo zusammen,
bin neu in der iobroker Thematik und habe folgendes Problem
Ich habe einen iobroker im Docker aufgesetzt, dieser läuft auch sauber - was ich beurteilen kann
ich habe dann noch den enet Adapter und den MQTT broker server/client installiertConnection zum enet Server funktioniert und wenn ich einen Wert im iobroker für einen enet Wert setzte kann ich die enet Geräte auch schalten.
Was auch funktioniert ist dass ich über MQTT einen Wert setzte - diesen sehe ich im MQTT Explorer und der Wert wird auch in das Objekt im iobroker übernommen - ABER das enet Objekt schaltet bzw. reagiert nicht.
Also an der gleichen Stelle manuell funktioniert es mit MQTT steht am Ende der gleiche Wert aber es funktioniert nicht ...
So und hier komm ich nicht weiter - liegt das an irgendeiner Berechtigung ? denn am Wert im Objekt kann ich sehen, dass manuell der Wert mit von: enet.0 und über MQTT mit von: mqtt.0 ??? - Einen anderen Unterschied habe ich nicht feststellen können.
Wer kann mir sagen ob das daran liegt - bzw. wie ich das einstellen kann um den Wert so setzen kann,
Danke & Viele Grüße
-
@amuelkx
Mal davon abgesehen, dass hier alles an Informationen fehlt (Screenshots der Einstellungen, Logs/Fehlerprotokoll, etc.) und man damit gleich im Glaskugelmodus ist, verstehe ich aktuell auch gar nicht was Du da wie eigentlich machst.Ich nutze und kenne den genannten Adapter zwar nicht, aber ich steuere Geräte entweder mit einem spezifischen Adapter oder per MQTT. Nicht beides gleichzeitig. Der Beschreibung nach machst Du aber beides.
-
Wie Samson schon schreibt, ist das Ziel noch etwas unklar. Ich gehe davon aus, dass du die enet Geräte per MQTT steuern willst und Du hast den MQTT Adapter so angepasst, dass er auch den enet Objektbaum mit veröffentlicht?
Dann wird es wohl ein Thema mit (un) bestätigten Nachrichten sein.
Mit mehr Informationen kommen wir sicher weiter.
-
Also das Ziel ist dass ich über MQTT die enet Geräte steuern kann.
Natürlich werden die enet Geräte auch manuell gesteuert sprich z.B. über die enet Tasten welche auf den Dimmern sitzen.Hier mal der Auszug aus dem MQTT Explorer - dort sieht man dass die Werte im MQTT gelesen und auch gepostet werden.
Im Objekt im iobroker sieht das dann so aus
Wenn ich über MQTT einen Wert verändere steht der auch hier drin:
Hier die Werteänderung wenn ich den slider im openhab hochfahre und die Werte über MQTT an iobroker übertragen werden
Wenn ich manuell im iobroker den Wert setzte geht von dem Change im Adapter die Info an MQTT
Was fehlt ist der Change Trigger an den Adapter vom MQTT aus ... - MQTT Einstellungen hier
Ich bin davon ausgegangen, dass wenn ich die Werte in den Adapter schreibe der Change automatisch ausgelöst wird, da der Wert ja im Adpater steht - scheint aber nicht der Fall ...
Oder muss ich bei Änderung den Change noch manuell setzten ?? Falls ja wie kann ich das im iobroker tun ...Danke und Grüße
-
ja, wie gedacht. Hier siehst du das Problem:
Die States werden als "bestätigt" vom MQTT Adapter gesetzt. Damit nimmt der enet Adapter diese als "nicht zu bearbeiten" wahr. Das ist leider nicht mit einem Haken setzen zu fixen.
Es gibt verschiedene Ansätze, damit umzugehen. Mein bevorzugter:
- den MQTT (Server) Adapter wieder auf die Grundeinstellungen zurücksetzen, insbesondere den Teil "Maske zum Bekanntgeben eigener States". Damit hast du einen simplen Broker, ohne Verbindung zu enet.
- Du installierst zusätzlich den MQTT Client Adapter und verbindest ihn (sozusagen intern) mit deinem Broker
- die zu steuernden enet-Datenpunkte konfigurierst du jetzt einzeln über das Zahnrad und setzt das ACK Flag nicht
Das MQTT-Topic könntest du jetzt frei definieren, es muss nur mit dem übereinstimmen, was der Publisher (z.B. MQTT Explorer) sendet.
Mit dieser Vorgehensweise bist zu am flexiblesten, kannst auf Datenpunktebene entscheiden, ob du subscriben und /oder publishen willst , ...
EDIT: Und, wenn du mal Bock darauf hast, könntest du easy auf einen externen Broker (wie Mosquitto) umswitchen, indem du den MQTT Client einfach auf den anderen Broker zeigen lässt.
-
Verstanden umgesetzt aber irgendwas passt noch nicht
Alle Dienste laufen
Settings Server
Settings Client
Settings am Objekt
Allerdings funktioniert die Kommunikation zwischen enet und MQTT nun nicht mehr.
Wenn ich schalte sehe ich im Log keinen MQTT Eintrag und Wenn ich Werte extern über MQTT triggere werden die nicht mehr übernommen - der log ist "leer" ...
Ne Idee wo es klemmt ? -
@amuelkx sagte in Wert von Adapter über MQTT setzen:
Allerdings funktioniert die Kommunikation zwischen enet und MQTT nun nicht mehr.
Wenn ich schalte sehe ich im Log keinen MQTT Eintrag und Wenn ich Werte extern über MQTT triggere werden die nicht mehr übernommen - der log ist "leer" ...
Ne Idee wo es klemmt ?Der MQTT Adapter (broker/Server) ist nicht auf Standardeinstellungen. Lösch die Instanz zur Sicherheit noch mal weg und erstelle neu, und ändere nichts mehr.
Gib hier ein benutzerdefiniertes Topic ein (z.B. enet/TischEsszimmer/Output), sonst nimmt er den Namen des States. Bei den ganzen Leerzeichen und Sonderzeichen da drin kann einiges schief gehen.
Dann alles zeigen und die MQTT Explorer Ein-/ausgaben zeigen. Außerdem bitte konkreter beschreiben was du tust. Wenn du zB. schreibst "Wenn ich schalte sehe ich im log keinen Eintrag .." weiß kein Mensch WAS du da eigentlich schaltest.
-
@marc-berg said in Wert von Adapter über MQTT setzen:
enet/TischEsszimmer/Output
Funktioniert - gehe davon aus dass es die Leerzeichen oder das fehlende Topic im Client waren ...
Besten Dank