[Bugs] 00_MQTT2_SERVER / 10_MQTT2_DEVICE

Begonnen von betateilchen, 10 August 2018, 18:01:33

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Das Modul speichert inzwischen die retained Meldungen in dem Reading mit dem Namen RETAIN, damit werden diese auch gespeichert, und stehen nach einem FHEM-Start wieder zur Verfuegung. Ich habe die Doku angepasst.

MarkusN

Was wäre denn die korrekte Herangehensweise wenn ich retained messages entfernen will? Mit deletereading das ganze Reading im MQTT2_SERVER löschen?

rudolfkoenig

Ja, mit deletereading alles entfernen, oder mit setreading den Wert aendern.
Der Wert der RETAINED Readings muss aber weiterhin ein gueltiger JSON sein.

der-pw

Bitte um Rücksicht, falls das schon bekannt ist. Ich habe mich jetzt nicht durch den gesamten Thread gelesen und gefunden habe ich nichts.

Wenn ich über readingList einen Topic abonniere bspw. "DVES_9D7CEE:stat/sonoff_wz_dual/POWER1:.* POWER1", einen weiteren anlege, bspw. "DVES_9D7CEE:stat/sonoff_wz_dual/POWER2:.* POWER2",
den "POWER2" dann wieder lösche, wird er fleißig weiter abonniert. Erst "shutdown restart" oder das Löschen und Neuanlegen von "readingList" löst das Problem.

Ist das bekannt/bewusst, oder liegt der Fehler irgendwo zwischen meinem rechten und linken Ohr?

Schöne Grüße,
Patrick

Beta-User

Dürfte denselben Hintergrund haben wie das bereits häufiger beschriebene Phänomen, dass nach einem "copy" und Änderungen der Topics auch das mit copy angelegte Device alle Aktualisierungen erhält (hatte ich z.B. beim Kopieren der IKEA-zigbee-Bulb bereits beschrieben). Scheint an mit übernommenen internals zu liegen.

Das Problem wird auch durch einen Reload des MQTT2_DEVICE-Moduls behoben, shutdown+restart ist nicht erforderlich.

@Rudi, da das häufiger (hier mind. Fall 3) zu Irritationen führt: Kann man daran was ändern (als Nicht-Experte ich würde auf die notifydev als Ursache tippen, die nach copy bzw. der Änderung der readingList neu zu generieren wäre).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Ich meine das Problem behoben zu haben, bitte um Test und Feedback.

der-pw

Mit der aktuellen Version aus dem trunk soeben getestet.

Sobald ich das zusätzliche Topic wieder lösche, ist nun auch sofort Funkstille auf dem Reading.
Super! :)

essera

Ich habe seit ein paar Tagen auf meinem Testsystem von Mosquitto auf MQTT2 Server und MQTT2_DEVICES umgestellt. Das Ganze funktioniert , auch Dank der Infos aus dem Thread sehr gut - danke dafür!
Nun möchte ich auch eine farbige Leuchte von HUE einbinden.
Das dazugehörige Device habe ich erstellt.


DEVICETOPIC test_hue
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 87
   MQTT2_FHEM_Server_TIME 2018-12-02 00:46:30
   MSGCNT     87
   NAME       test_hue
   NR         28
   STATE      ON
   TYPE       MQTT2_DEVICE
   READINGS:
     2018-12-02 00:46:30   brightness      15
     2018-12-02 00:46:30   color_temp      153
     2018-12-02 00:46:30   color_x         0.153
     2018-12-02 00:46:30   color_y         0.048
     2018-12-02 00:46:30   state           ON
Attributes:
   IODev      MQTT2_FHEM_Server
   icon       light_control
   readingList zigbee_pi:zigbee2mqtt/0x0017880102784501:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    on:noArg zigbee2mqtt/0x0017880102784501/set {"state":"ON"}
  off:noArg zigbee2mqtt/0x0017880102784501/set {"state":"OFF"}
  brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x0017880102784501/set {"state":"on","$EVTPART0":"$EVTPART1"}
  color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x0017880102784501/set {"$EVTPART0":"$EVTPART1"}
  hue:colorpicker,HUE,0,1,359 zigbee2mqtt/0x0017880102784501/set {"color":"$EVTPART1"}
   webCmd     brightness:color_temp:hue:on:off

On, off, brightness und color_temp funktionieren einwandfrei. Ich habe nur Probleme mit der eigentlichen Farbeinstellung.
Setze ich z.B.
{"color_temp":"454"}  erhalte ich als Antwort auch: {"state":"ON","brightness":105,"color_temp":454,"color":{"x":0.505,"y":0.415}}

Setze ich jedoch {"color":"115"} erhalte ich als Antwort: {"state":"ON","brightness":105,"color_temp":153,"color":{"x":0.153,"y":0.048}}
Egal welchen Wert ich für Color nehme ist die color_temp immer 153 - und der entsprechende x-Wert ist auch 0.153, y-Wert verändert sich.

Hat jemand eine Rat ?
btw, der Colorpicker mit RGB Werten funktioniert auch nicht.



rudolfkoenig

ZitatSetze ich jedoch {"color":"115"} erhalte ich als Antwort: {"state":"ON","brightness":105,"color_temp":153,"color":{"x":0.153,"y":0.048}}
Das schaut fuer mich nicht nach einem MQTT2_SERVER oder MQTT2_DEVICE Problem aus, sondern nach einem HUE bs. zigbee2mqtt Problem.

Die mit attrTemplate setzbare zigbee2mqtt2_colorbulb enthaelt kein hue Befehl.
Woher stammt die Idee, dass es so funktionieren sollte?

essera

War ein Fehler meinerseits mit dem falschen Thread. Ich wollte eigentlich hier posten:  "Thema: Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE"
und hatte wohl zu viele Fenster auf und bin falsch gelandet. Evtl. kannst du den Post verschieben...

ZitatWoher stammt die Idee, dass es so funktionieren sollte?
Die Idee es so zu versuchen stammt von mir - weil es nicht klappt hatte ich ja um Hilfe gebeten.

Ich habe inzwischen dein anderes MQTT_DEVICE Template ausprobiert: "zigbee2mqtt_ColorbulbWithout_Color_Temp"

Dann sieht das Device so aus:

Internals:
   DEVICETOPIC test_hue
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 38
   MQTT2_FHEM_Server_TIME 2018-12-04 22:24:39
   MSGCNT     38
   NAME       test_hue
   NR         22
   STATE      color
   TYPE       MQTT2_DEVICE
   READINGS:
     2018-12-04 22:24:39   brightness      225
     2018-12-04 22:24:39   color_temp      153
     2018-12-04 22:24:39   color_x         0.153
     2018-12-04 22:24:39   color_y         0.048
     2018-12-04 22:26:45   state           color
Attributes:
   IODev      MQTT2_FHEM_Server
   devStateIcon {devStateIcon255($name)}
   icon       hue_filled_white_and_color_e27_b22
   readingList zigbee_pi:zigbee2mqtt/0x0017880102784501:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    on:noArg zigbee2mqtt/0x0017880102784501/set {"state":"ON"}
  off:noArg zigbee2mqtt/0x0017880102784501/set {"state":"OFF"}
  brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x0017880102784501/set {"state":"on","$EVTPART0":"$EVTPART1"}
  color:colorpicker,RGB {"zigbee2mqtt/0x0017880102784501/set " . encode_json(convertRGBtoR_G_B($EVTPART1))}
   stateFormat {lc ReadingsVal("$name","state",0)}
   webCmd     toggle:on:off:brightness:color


Ich erhalte aber schon bei der Ausführung des Templates im Event Log folgende Fehler:
2018.12.04 22:33:35.260 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 560) line 1.
2018-12-04 22:33:35.266 Global global ATTR test_hue icon hue_filled_white_and_color_e27_b22
2018.12.04 22:33:35.268 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 561) line 1.
2018.12.04 22:33:35.278 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 564) line 1.
2018-12-04 22:33:35.284 Global global ATTR test_hue stateFormat {lc ReadingsVal("$name","state",0)}
2018.12.04 22:33:35.286 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 565) line 1.
2018.12.04 22:33:35.297 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 567) line 1.
2018-12-04 22:33:35.302 Global global ATTR test_hue devStateIcon {devStateIcon255($name)}
2018.12.04 22:33:35.304 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 568) line 1.
2018.12.04 22:33:35.314 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 569) line 1.
2018-12-04 22:33:35.318 Global global ATTR test_hue webCmd toggle:on:off:brightness:color
2018.12.04 22:33:35.319 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 570) line 1.
2018.12.04 22:33:35.326 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 572) line 1.
2018-12-04 22:33:35.329 Global global ATTR test_hue setList on:noArg zigbee2mqtt/0x0017880102784501/set {"state":"ON"}   off:noArg zigbee2mqtt/0x0017880102784501/set {"state":"OFF"}   brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x0017880102784501/set {"state":"on","$EVTPART0":"$EVTPART1"}   color:colorpicker,RGB {"zigbee2mqtt/0x0017880102784501/set " . encode_json(convertRGBtoR_G_B($EVTPART1))}
2018.12.04 22:33:35.330 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 573) line 1.
2018.12.04 22:33:35.335 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 574) line 1.
2018-12-04 22:33:35.337 MQTT2_DEVICE test_hue attrTemplate zigbee2mqtt_colorbulbWithoutColorTemp
2018.12.04 22:33:35.339 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 575) line 1.
2018.12.04 22:33:35.362 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 576) line 1.
2018.12.04 22:33:35.547 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 579) line 1.


Das Ein/ Auschalten geht auch. Wenn ich jedoch eine Farbe auswähle und setzen mochte kommt anschließend noch folgender Fehler:


2018.12.04 22:36:16.988 1 : ERROR evaluating my $EVENT='color ffaf54';my $EVTPART0='color';my $NAME='test_hue';my $EVTPART1='ffaf54';{"zigbee2mqtt/0x0017880102784501/set " . encode_json(convertRGBtoR_G_B($EVTPART1))}: Undefined subroutine &main::convertRGBtoR_G_B called at (eval 592) line 1.
2018.12.04 22:36:16.997 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 594) line 1.
2018.12.04 22:36:16.999 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 595) line 1.


Liegts an mir oder hat das Template noch eine kleine Macke ..?

essera

So - zu den Fehlermeldungen habe ich selber was gefunden.
Zitat
2018.12.04 22:33:35.268 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 561) line 1.
2018.12.04 22:33:35.278 1 : devStateIcon test_hue: Undefined subroutine &main::devStateIcon255 called at (eval 564) line 1.
Habe das Attr devStateIcon raus geschmissen weil ich die Sub Routine nicht in der 99_myUtils.pm hatte

Zitat
ERROR evaluating my $EVENT='color ffaf54';my $EVTPART0='color';my $NAME='test_hue';my $EVTPART1='ffaf54';{"zigbee2mqtt/0x0017880102784501/set " . encode_json(convertRGBtoR_G_B($EVTPART1))}: Undefined subroutine &main::convertRGBtoR_G_B called at (eval 592) line 1.
Hier habe ich die Sub convertRGBtoR_G_B() in der 99_myUtils.pm auch ergänzt.

Leider kann ich zur Sub encode_json() nichts wirklich richtiges finden. Den Hinweis es statt dessen mit der sub toJSON() zu versuchen führt zu diesem merkwürdigen Befehl

zigbee2mqtt/0x0017880102784501/set {"color":{"b":"0.729411764705882","g":"1","r":"0.937254901960784"},"transition":"1"}

mit dieser Rückmeldung: {"state":"ON","brightness":180,"color_temp":153,"color":{"x":0.153,"y":0.048}}




Also ein Stück weiter aber noch nicht am Ende..... hoffentlich..

rudolfkoenig

encode_json gibt es nach einem { use JSON } (und die JSON Perl-Bibliothek muss installiert sein)
Ich habe jetzt in 10_MQTT2_DEVICE.pm eine zigbee2mqtt_RGB2JSON() Funktion eingebaut, was  encode_json(convertRGBtoR_G_B())  ersetzt, und mqtt2.template angepasst.

Auch devStateIcon255 gibt es jetzt als zigbee2mqtt_devStateIcon255 aus MQTT2_DEVICE, mit angepassten mqtt2.template.

Ueber Feedback wuerde ich mich freuen.

Beta-User

Zitat von: rudolfkoenig am 06 Dezember 2018, 13:30:52
Ueber Feedback wuerde ich mich freuen.
Vorab mal ein Dankeschön :) .

Werde es (soweit mir möglich, ich habe keine farbigen/color_temp) austesten und dann auch ins Wiki packen. Was mir aufgefallen ist:
attr DEVICE devStateIcon {zigbee2mqtt_devStateIcon255($name)}wird nur in zigbee2mqtt_colorbulbWithoutColorTemp verwendet, nicht in den anderen beiden davorstehenden bulb-Typen. Absicht?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Nicht wirklich, ich habe diese Daten (mangels Hardware ohne Testen) uebernommen, damit die Template-Datei nicht so leer ist.
Falls jemand bessere Vorschlaege hat, bitte melden.

essera

Zitat
Ueber Feedback wuerde ich mich freuen.

Erst mal danke für die schnelle Anpassungen.
Feedback gebe ich gerne: Checkst du denn die Änderungen noch ein oder muss ich die vorab irgendwo runter ziehen ? (im Update Check waren sie eben noch nicht drin)