NEWS
Fehler mit mqtt Adapter - Forbidden properties
-
@sebi85 sagte in Fehler mit mqtt Adapter - Forbidden properties:
weil der mqtt-Adapter den Typ des Objects von "object" auf "mixed"
Die Objekte werden doch alle als
mixed
angelegt, oder nicht?Bitte NIE manuell an Objekten rumspielen, welche man nicht selbst angelegt hat. Nie nie nie.
-
@haus-automatisierung nein, es wird erst als "object" angelegt und dann umgestellt auf "mixed" (durch den mqtt-Adapter, ich habe da manuell nichts gemacht).
Folgendes Vorgehen hatte ich durchgeführt:
- Stoppen der mqtt3 Instanz
- Löschen des p1b4 Objekts
- Starten der mqtt3 Instanz
- Triggerung des events am Lanbon
Durch die Triggerung des events wird durch den mqtt-Client das Objekt angelegt und anschließend anscheinend direkt geändert. Bei der Erstanlage bekomme ich die Daten auch richtig angezeigt/gelesen - nur dann ändert er das Objekt auf "mixed" und es klappt nicht mehr.
mqtt.3 2024-08-07 11:22:48.170 warn Error while setting state "mqtt.3.hasp.lanbon_l8.state.p1b4" for Client: Error: The state contains the forbidden properties event! mqtt.3 2024-08-07 11:22:48.146 info Client: Changed type of "mqtt.3.hasp.lanbon_l8.state.p1b4" from "object" to "mixed"
-
@sebi85 sagte in Fehler mit mqtt Adapter - Forbidden properties:
es wird erst als "object" angelegt und dann umgestellt auf "mixed"
Das sollte nicht so sein. Aus meiner Sicht sollten die alle mixed sein. Muss ich mir in einer ruhigen Minute mal anschauen.
-
@haus-automatisierung sofern es als "mixed" definiert ist, würde aber auch der von dir integrierte Fix nicht mehr funktionieren (weshalb ich dann auch wieder den Fehler
The state contains the forbidden properties event!
erhalte.
-
@sebi85 Warum? Ich habe das eigentlich ausführlich getestet. Du bist aber schon im Client-Mode, oder? Im Server-Mode habe ich das nicht angeschaut.
-
@haus-automatisierung für mich sieht es so aus als würde der Code nur durchlaufen werden wenn das Object auch vom Typ "object" ist.
Initialer Start (mqtt legt das Objekt in diesem Zuge auch an, es ist vorher nicht vorhanden):
Hier ist die Meldung auch erhalten und er speichert es im Objekt ab --> erster Lauf funktioniert. Allerdings ändert er dann (siehe info-Meldung) automatisch den Typ auf "mixed".
Jegliche weitere Änderung wird dann ignoriert und die obige gelbe Zeile kommt auch nicht mehr.
Ich hätte jetzt vermutet, dass hier dein Code nicht durchlaufen wird, weil er das Objekt gar nicht als solches erkennt:
-
Hallo zusammen, gibt es bereits eine überarbeitete Version des mqtt Adapters oder einen alternativen Workaround um die OpenHASP Stati korrekt auszulesen?
Vielen Dank.
-
@sebi85 sagte in Fehler mit mqtt Adapter - Forbidden properties:
Initialer Start (mqtt legt das Objekt in diesem Zuge auch an, es ist vorher nicht vorhanden):
Hier ist die Meldung auch erhalten und er speichert es im Objekt ab --> erster Lauf funktioniert. Allerdings ändert er dann (siehe info-Meldung) automatisch den Typ auf "mixed".
Der Typ sollte eigentlich immer
mixed
bleiben. So werden ja alle Objekte vom MQTT-Adapter angelegt. Oder habe ich etwas übersehen? Die Idee war ja auch nicht, dass man den Zustandstyp aufobject
ändert, sondern nur den Wert korrekt als JSON speichert. Das scheint im ersten Lauf ja auch geklappt zu haben. Ziel sollte also sein: Typmixed
+ JSON als Wert.@sebi85 sagte in Fehler mit mqtt Adapter - Forbidden properties:
Jegliche weitere Änderung wird dann ignoriert und die obige gelbe Zeile kommt auch nicht mehr.
Das sollte natürlich nicht so sein. Müsste ich noch einmal in Ruhe testen. Kostet leider alles extrem viel Zeit (und die habe ich gerade nicht).
-
@phiwie said in Fehler mit mqtt Adapter - Forbidden properties:
Hallo zusammen, gibt es bereits eine überarbeitete Version des mqtt Adapters oder einen alternativen Workaround um die OpenHASP Stati korrekt auszulesen?
Vielen Dank.
Welche Version ist für dich die nicht überarbeitete Version?
Latest Version des Adapters ist 6.1.1 -
Hallo
habe gerade den Beitrag gefunden und versuche ebenso openHASP mit dem MQTT Adapter zu nutzen und wunderte mich warum nur einmal der value in den Datenpunkt geschrieben wurde.
Nachdem Beitrag hier den Log geprüft und finde dort im Zeitrahmen diese Einträge:
2024-10-23 06:39:45.926 - info: mqtt.0 (1003) Server: Changed type of "mqtt.0.hasp.plate.state.p1b2" from "number" to "object" 2024-10-23 06:39:45.948 - info: mqtt.0 (1003) Server: Changed type of "mqtt.0.hasp.plate.state.p1b2" from "object" to "mixed" 2024-10-23 06:40:09.046 - info: mqtt.0 (1003) Server: Changed type of "mqtt.0.hasp.plate.state.p1b3" from "number" to "object" 2024-10-23 06:40:09.077 - info: mqtt.0 (1003) Server: Changed type of "mqtt.0.hasp.plate.state.p1b3" from "object" to "mixed"
Die Datenpunkte (nichts von mir geändert) haben aktuell alle den type mixed aber Daten kommen dort keine mehr an.
Verwende die stable Version 6.1.2 des Mqtt Adapters.
Gibt schon eine Lösung oder Workaround?
Danke
Edit: Hoffe die Beobachtung hilft. Angelegte PushButtons die einen Mqtt Nachricht liefern
{\"event\":\"up\"}
funktionieren wie hier im log und Ergebnis zu sehen ist weiterhin:
mqtt.0 2024-10-23 13:41:15.953 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"down\"}","ack":true,"ts":1729683675946,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683675946} mqtt.0 2024-10-23 13:41:15.200 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"up\"}","ack":true,"ts":1729683675193,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683675193} mqtt.0 2024-10-23 13:41:15.117 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"down\"}","ack":true,"ts":1729683675110,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683675110} mqtt.0 2024-10-23 13:41:14.354 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"up\"}","ack":true,"ts":1729683674347,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683674347} mqtt.0 2024-10-23 13:41:14.244 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"down\"}","ack":true,"ts":1729683674237,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683674237} mqtt.0 2024-10-23 13:41:13.524 debug stateChange mqtt.0.hasp.plate.state.p1b5: {"val":"{\"event\":\"up\"}","ack":true,"ts":1729683673517,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1729683673517}
Alleine angelegte devices mit festen/konstanten stati wie Switche oder Auswahllisten funktionieren nicht mehr. Auch im Debug Zustand sehe ich keinerlei Einräge im Log dazu. Dann per Mqtt-Explorer geschaut und hier funktionieren diese Nachrichten zB für p1b2,p1b3,p1b4:
Edit2: Der Unterschied genauer hier beschrieben, was ein object button (https://openhasp.haswitchplate.com/0.6/design/objects/#button) und ein object switch (https://openhasp.haswitchplate.com/0.6/design/objects/#switch) so neben dem Unterschied data type so rauschickt.
Einen Log-Eintrag dazu habe ich bisher nicht erhalten.
Um gleich der Mqtt Nachricht von @sebi85 zu prüfen
{"event" : "up", "val": 1}
habe ich sowohl beim button als auch beim switch die toggle-funktion aktiviert aber keine erkennbare Änderung zu sehen.
Vermute es ist sehr sinnig genau zu wissen was da über MQTT geschickt wird bzw ankommt. Der Debug-Log wie gesagt leer und im MQTT-Explorer sehe ich nur das funktionierende Ergebnis. Daher gerne einen Hinweis wie ich das zur Verfügung stellen kann.
-
Da ich das openHASP Panel benötige habe ich nach Möglichkeiten weiter probiert.
Dazu temporär nun gleiches Setup aufgesetzt wie @Sebi85
openHASP <--> mosquitto server <--> iobroker mqtt client
Auf dem MQTT-Explorer funktioniert alles dauerhaft einwandfrei wie zuvor.
Die Nachrichten, die auch jetzt weiterhin im IO-Broker funktionieren sind Nachrichten mit dem Inhalt:
{"event":"up"}
Nachrichten von Buttons oder Switchen mit festem Stati, zeigen sich nun allerdings ergänzt um den value :
{"event":"up","val":1}
Das funktioniert im Mqtt-Explorer wie bekannt unbegrenzt einwandfrei.
Im IOBroker funktioniert das genau einmal. Allerdings steht nun auch im Datenpunkt (type: "mixed"):
{"event":"down","val":0}
Zusätzlich nun die Meldung im Debug-Log:
mqtt.1 2024-10-24 15:07:57.319 warn Error while setting state "mqtt.1.hasp.plate.state.p1b1" for Client: Error: The state contains the forbidden properties event! mqtt.1 2024-10-24 15:07:57.058 warn Error while setting state "mqtt.1.hasp.plate.state.p1b1" for Client: Error: The state contains the forbidden properties event! mqtt.1 2024-10-24 15:07:55.109 warn Error while setting state "mqtt.1.hasp.plate.state.p1b1" for Client: Error: The state contains the forbidden properties event!
Somit auch über diesen Umweg eines zweiten Mqtt-Brokers und den Mqtt-Adapter Einsatz als Client leider keine funktionierende Lösung.
Verwende Mqtt Adapter 6.1.2 und hier besprochene Fixe sehe ich auf Github mit 6.0.1 vom 6.8.2024 durch @haus-automatisierung. Das Thema doch noch offen?
Bitte um Unterstützung, Thanks.
-
Hallo @dieter_p ,
ich habe leider bisher keinen Fix gesehen. Ich habe die Probleme hauptsächlich bei den Toggle-/Switch-Buttons in OpenHASP wo der "val" relevant ist. Die normalen Buttons funktionieren soweit.
--> Ich habe mein Display so angepasst, dass ich nur noch normale Buttons - ohne Switch-Funktionalität habe. -
@dieter_p
Ich nutze den mqtt-client Adapter.
Läuft bei mir mit openhasp ohne Fehler. -
@sebi85 said in Fehler mit mqtt Adapter - Forbidden properties:
Hallo @dieter_p ,
ich habe leider bisher keinen Fix gesehen. Ich habe die Probleme hauptsächlich bei den Toggle-/Switch-Buttons in OpenHASP wo der "val" relevant ist. Die normalen Buttons funktionieren soweit.
--> Ich habe mein Display so angepasst, dass ich nur noch normale Buttons - ohne Switch-Funktionalität habe.Danke. Ja genau so hab ich es auch beobachtet und interessant dass wenn man einen anderen Broker nutzt und sich dort die Daten anschaut, funktioniert alles.
Ich nutze normal halt den Mqtt Adapter auch als Broker. Für die Problemstellung scheint das aber prinzipiell keinen Unterschied zu machen. Die Fehler bzw. Teilergebnisse sind nur leicht anders.
Puh, jetzt nur noch Buttons (ohne toggle) zu nutzen fände ich schon heftig und geht massiv auf die Usebility vom Display. Überlege und versuche gerade heraus zu finden, ob man nicht in openHASP ein zusätzliches und modifiziertes MQTT publish einbauen kann, dass nur den value published. Das sollte der Mqtt Adapter ja verstehen.
Ist zwar irgendwie selten "krumm" aber ich brauche gerade recht dringend ein funktionsfähiges Display und laufe leider in Hürde nach Hürde. Unter HASPmota trifft man übrigens die gleiche Problemstellung....basiert ja irgendwie auf openHASP.
@mrjeschke said in Fehler mit mqtt Adapter - Forbidden properties:
@dieter_p
Ich nutze den mqtt-client Adapter.
Läuft bei mir mit openhasp ohne Fehler.Kannst Du das bitte näher erläutern? Nutzt Du Switches und Buttons mit toggle-Funktion?
Welche Adapterversion? -
@dieter_p
Ich habe das Gerät noch nicht lange, aber bis jetzt ohne Fehler.
Ich nutze Schwitches und Buttons mit Toggle.
Der Adapter mqtt-client v2.0.1 (nicht der mqtt Adapter) -
@mrjeschke said in Fehler mit mqtt Adapter - Forbidden properties:
mqtt-client v2.0.1
Danke. Ah ok der andere Adapter.
Wärst Du so nett mir ein Screenshot der Adaptersettings zu zeigen?Verbinde damit zum Mosquitto Broker (klappt) aber die Messages vom ebenfalls verbundenen openHASP Panel werden nicht durchgereicht. Evtl. etwas an den Subskription-Einstellung im Adapter zu ändern?
-
@dieter_p
Ist schon 'ne Weile her das ich den Adapter installiert habe.
Keine Ahnung ob das alles richtig ist.
-
@mrjeschke
Danke vielmals. Ich seh endlich Licht am Ende des DisplaytunnelsFunktioniert und im default fehlte der Eintrag:
Nun funktioniert alles und dauerhaft:
Danke!
P.S.: Im stable liegt der Mqtt-Client Adapter v2.0 nicht v2.0.1. Der läuft aber bei mir