FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: somansch am 20 Dezember 2018, 23:32:45

Titel: userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 20 Dezember 2018, 23:32:45
Ich habe schon einige userReadings erfolgreich umgesetzt. Jetzt habe ich einfach keine Erklärung, warum mit dieser Konfig aus dem "batteryState" das reading "battery" nicht erzeugt wird?!

nternals:
   CHANGED   
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     33
   NAME       Abstellraum_Wassersensor
   NR         437
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 33
   XIAOMI_TIME 2018-12-20 23:28:40
   .attraggr:
   .attreour:
     1
   .attrminint:
   .userReadings:
     HASH(0x739057c)
   OLDREADINGS:
   READINGS:
     2018-12-20 23:28:40   batteryState    ok
     2018-12-20 23:28:40   batteryVoltage  3.0
     2018-12-20 23:28:40   heartbeat       158d000234bc24
Attributes:
   event-on-update-reading 1
   room       XIAOMI
   userReadings battery {ReadingsVal("Abstellraum_Wassersensor","batteryState",0)}


Jemand eine Idee?

Danke vorab und viele Grüße
Andreas
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: MadMax-FHEM am 20 Dezember 2018, 23:47:44
Hast du bei den anderen auch event-on-update-reading gesetzt!?

So wie ich das im Wiki lese wird bei deinem Attribut nur noch ein Event für Reading mit dem Namen '1' erzeugt.
Gibt es aber nicht...
Ergo: kein Event -> keine Berechnung/Aktualisierung des userReadings...

https://wiki.fhem.de/wiki/Event-on-update-reading

Gruß, Joachim
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 21 Dezember 2018, 00:23:56
Zitat von: MadMax-FHEM am 20 Dezember 2018, 23:47:44
Hast du bei den anderen auch event-on-update-reading gesetzt!?

So wie ich das im Wiki lese wird bei deinem Attribut nur noch ein Event für Reading mit dem Namen '1' erzeugt.
Gibt es aber nicht...
Ergo: kein Event -> keine Berechnung/Aktualisierung des userReadings...

https://wiki.fhem.de/wiki/Event-on-update-reading

Gruß, Joachim

Hallo Joachim,
danke für den Hinweis. Habe event-on-update mal rausgenommen und auf das nächste update gewartet, leider erfolglos  :(
Internals:
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     36
   NAME       Abstellraum_Wassersensor
   NR         437
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 36
   XIAOMI_TIME 2018-12-21 00:18:48
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x739057c)
   OLDREADINGS:
   READINGS:
     2018-12-21 00:18:48   batteryState    ok
     2018-12-21 00:18:48   batteryVoltage  3.0
     2018-12-21 00:18:48   heartbeat       158d000234bc24
Attributes:
   room       XIAOMI
   userReadings battery {ReadingsVal("Abstellraum_Wassersensor","batteryState",0)}
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: MadMax-FHEM am 21 Dezember 2018, 01:15:34
Kommt denn ein Event im Eventmonitor?

Habe es eben bei einem Dummy getestet: Reading test und userReadings tes...

Also das mit dem Trigger kann es nicht sein aber es muss ein Event kommen, sonst wird das userReadings ja nicht bearbeitet...

Bei meinen Xiaomi läuft grad der EventMonitor aber bislang noch nix...

Gruß, Joachim
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 21 Dezember 2018, 12:35:53
Es ist ein Bug! Ich habe gerade mal statt "battery" das Reading "test" genannt, dies funktioniert auf Anhieb:
Internals:
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     46
   NAME       Abstellraum_Wassersensor
   NR         437
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 46
   XIAOMI_TIME 2018-12-21 12:32:01
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x6fb9bb8)
   OLDREADINGS:
   READINGS:
     2018-12-21 12:32:01   batteryState    ok
     2018-12-21 12:32:01   batteryVoltage  3.0
     2018-12-21 12:01:36   heartbeat       158d000234bc24
     2018-12-21 12:32:01   test            ok
Attributes:
   room       XIAOMI
   userReadings test {ReadingsVal("Abstellraum_Wassersensor","batteryState",0)}


Ich vermute, dass der Bug daher kommt, dass das Ursprungsreading (batteryState) mit "battery" beginnt.

Wer kann sich um diesen Bug kümmern?

Danke und Gruß
Andreas
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: marvin78 am 21 Dezember 2018, 13:11:03
Warum benötigst du das Reading battery überhaupt identisch zu dem batteryState Reading?

Funktioniert folgendes?

userReadings battery:batteryState.* {ReadingsVal($name,"batteryState",0)}
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 21 Dezember 2018, 13:32:01
Zitat von: marvin78 am 21 Dezember 2018, 13:11:03
Warum benötigst du das Reading battery überhaupt identisch zu dem batteryState Reading?

Funktioniert folgendes?

userReadings battery:batteryState.* {ReadingsVal($name,"batteryState",0)}

Danke für den Ansatz. Leider ohne Erfolg  :(.

Ich benötige das Reading für meine ReadingGroup und die Templates in FTUI. Möchte halt alle Batteriestati einheitlich ansprechen können  ;).
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: MadMax-FHEM am 21 Dezember 2018, 13:40:04
Zitat von: somansch am 21 Dezember 2018, 12:35:53
Es ist ein Bug! Ich habe gerade mal statt "battery" das Reading "test" genannt, dies funktioniert auf Anhieb:

Ich vermute, dass der Bug daher kommt, dass das Ursprungsreading (batteryState) mit "battery" beginnt.

Wer kann sich um diesen Bug kümmern?

Danke und Gruß
Andreas

Dann würde aber mein Test mit dem Dummy auch fehlgeschlagen sein...

Hast du mal den Eventmonitor geöffnet, ob da überhaupt der Event kommt?
Wenn kein Event kommt, dann wird auch kein userReadings berechnet...

Ich werde das später mal bei meinen XiaomiDingern einbauen...

@marvin78: wahrscheinlich für eine Batterieübersichtsanzeige oder leer-Nachricht (die aus dem Wiki!? Die "hört" glaube ich nur auf "battery" und nicht auf die Änderung/Angleichung batteryState)... Aber: nat. nur Vermutung... ;)

Ich selbst nutze für Batterieanzeige etc. (in etwa ;)  ) das hier: https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514

Das Monitoring Modul wäre eine weiter Möglichkeit: https://forum.fhem.de/index.php?topic=68765.0


Gruß, Joachim
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: MadMax-FHEM am 21 Dezember 2018, 13:42:40
Zitat von: somansch am 21 Dezember 2018, 13:32:01
Danke für den Ansatz. Leider ohne Erfolg  :(.

Ich benötige das Reading für meine ReadingGroup und die Templates in FTUI. Möchte halt alle Batteriestati einheitlich ansprechen können  ;).

Genau wegen Einheitlichkeit wurde die Änderung/Anpassung auf batteryState etc. vorgenommen...
...zukunftssicherer scheint da wohl die Anpassung an batteryState...

Weil vermutlich (über kurz oder lang) alle Module nachziehen und neue gleich so gebaut werden dürften...

Gruß, Joachim
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: MadMax-FHEM am 21 Dezember 2018, 19:18:14
So ich habe das nun mal bei meinen Xiaomi angelegt und was soll ich sagen: geht.
Nix Bug etc.

Irgendwas scheint bei dir "eigenartig" zu sein...


Internals:
   DEF        xxxxxxxxxxxxxxxxxxxxx sensor_ht XiaomiGateway
   IODev      XiaomiGateway
   LASTInputDev XiaomiGateway
   MODEL      sensor_ht
   MSGCNT     1
   NAME       XiaomiHumTemp_Buero
   NR         378
   SID        xxxxxxxxxxxxxxxxxx
   STATE      13.49 °C, 71.50 %
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XiaomiGateway_MSGCNT 1
   XiaomiGateway_TIME 2018-12-21 19:14:23
   OLDREADINGS:
   READINGS:
     2018-12-21 19:14:23   battery         ok
     2018-12-21 19:14:23   batteryState    ok
     2018-12-21 19:14:23   batteryVoltage  3.0
     2018-12-21 19:14:23   dewpoint        8.4
     2018-12-21 18:55:28   heartbeat       158d0001c2c887
     2018-12-21 19:14:23   humidity        71.50
     2018-12-21 19:14:23   temperature     13.49
Attributes:
   room       MiSmartHome
   stateFormat temperature °C, humidity %
   userReadings battery {ReadingsVal("XiaomiHumTemp_Buero", "batteryState",0)}


Gruß, Joachim
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 22 Dezember 2018, 16:37:41
Zitat von: MadMax-FHEM am 21 Dezember 2018, 19:18:14
So ich habe das nun mal bei meinen Xiaomi angelegt und was soll ich sagen: geht.
Nix Bug etc.

Irgendwas scheint bei dir "eigenartig" zu sein...


Internals:
   DEF        xxxxxxxxxxxxxxxxxxxxx sensor_ht XiaomiGateway
   IODev      XiaomiGateway
   LASTInputDev XiaomiGateway
   MODEL      sensor_ht
   MSGCNT     1
   NAME       XiaomiHumTemp_Buero
   NR         378
   SID        xxxxxxxxxxxxxxxxxx
   STATE      13.49 °C, 71.50 %
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XiaomiGateway_MSGCNT 1
   XiaomiGateway_TIME 2018-12-21 19:14:23
   OLDREADINGS:
   READINGS:
     2018-12-21 19:14:23   battery         ok
     2018-12-21 19:14:23   batteryState    ok
     2018-12-21 19:14:23   batteryVoltage  3.0
     2018-12-21 19:14:23   dewpoint        8.4
     2018-12-21 18:55:28   heartbeat       158d0001c2c887
     2018-12-21 19:14:23   humidity        71.50
     2018-12-21 19:14:23   temperature     13.49
Attributes:
   room       MiSmartHome
   stateFormat temperature °C, humidity %
   userReadings battery {ReadingsVal("XiaomiHumTemp_Buero", "batteryState",0)}


Gruß, Joachim

Ich habe gestern nochmal das UserReading von die kopiert und nur den Devicenamen angepasst, um eventuelle nicht sichtbare Zeichen auszuschliessen. Leider ohne Erfolg  ???

Stündlich gibt es einen Event, der den BatteryStatus aktualisiert. Ist ein Wassersensor, bei dir ein Tempsensor. Mir ist jedoch unklar, warum das ein Unterschied sein sollte?! Ich bin ratlos....
Internals:
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     23
   NAME       Abstellraum_Wassersensor
   NR         437
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 23
   XIAOMI_TIME 2018-12-22 16:26:04
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x572b814)
   OLDREADINGS:
   READINGS:
     2018-12-22 16:26:04   batteryState    ok
     2018-12-22 16:26:04   batteryVoltage  3.0
     2018-12-22 16:26:04   heartbeat       158d000234bc24
     2018-12-21 12:51:41   test            ok
Attributes:
   room       XIAOMI
   userReadings battery {ReadingsVal("Abstellraum_Wassersensor", "batteryState",0)}
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: CoolTux am 22 Dezember 2018, 17:57:25

userReadings battery:batteryState:.* { ReadingsVal($name, 'batteryState',0) }


Ist sauberer. Vielleicht klappt es ja so. Die Frage bleibt ob tatsächlich ein Event kommt oder das Reading ohne Event aktualisiert wird.
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 23 Dezember 2018, 15:40:26
Zitat von: CoolTux am 22 Dezember 2018, 17:57:25

userReadings battery:batteryState:.* { ReadingsVal($name, 'batteryState',0) }


Ist sauberer. Vielleicht klappt es ja so. Die Frage bleibt ob tatsächlich ein Event kommt oder das Reading ohne Event aktualisiert wird.

Ich habe deine Definition nochmal getestet für "battery" und gewartet bis ein Event kam. Leider ohne Erfolg  :(. Danach habe ich das UserReading auf "Test" geändert und wieder gewartet. Test wird aktualisiert! Ich bin ratlos....
Internals:
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     18
   NAME       Abstellraum_Wassersensor
   NR         438
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 18
   XIAOMI_TIME 2018-12-23 14:59:44
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x6c23d8c)
   OLDREADINGS:
   READINGS:
     2018-12-23 14:59:44   batteryState    ok
     2018-12-23 14:59:44   batteryVoltage  3.0
     2018-12-23 14:59:44   heartbeat       158d000234bc24
     2018-12-23 14:59:44   test            ok
Attributes:
   room       XIAOMI
   userReadings test:batteryState:.* { ReadingsVal($name, 'batteryState',0) }
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: CoolTux am 23 Dezember 2018, 15:55:51
Nimm mal statt battery batteryNew. Wieso das mit Test geht kann ich mir gerade nicht erklären. Aber schau doch Mal was im Log steht.
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 23 Dezember 2018, 17:24:46
Zitat von: CoolTux am 23 Dezember 2018, 15:55:51
Nimm mal statt battery batteryNew. Wieso das mit Test geht kann ich mir gerade nicht erklären. Aber schau doch Mal was im Log steht.

Mit "batteryNew" geht es auch. Hier das Event:
2018-12-23 17:22:19 XiaomiSmartHome_Device Abstellraum_Wassersensor batteryState: ok
2018-12-23 17:22:19 XiaomiSmartHome_Device Abstellraum_Wassersensor batteryVoltage: 3.0
2018-12-23 17:22:19 XiaomiSmartHome_Device Abstellraum_Wassersensor batteryNew: ok


Und die Raw Data:
Internals:
   DEF        158d000234bc24 sensor_wleak.aq1 XIAOMI
   IODev      XIAOMI
   LASTInputDev XIAOMI
   MODEL      sensor_wleak.aq1
   MSGCNT     1
   NAME       Abstellraum_Wassersensor
   NR         438
   SID        158d000234bc24
   STATE      initialized
   TYPE       XiaomiSmartHome_Device
   VERSION    1.30
   XIAOMI_MSGCNT 1
   XIAOMI_TIME 2018-12-23 17:22:19
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x734c89c)
   READINGS:
     2018-12-23 17:22:19   batteryNew      ok
     2018-12-23 17:22:19   batteryState    ok
     2018-12-23 17:22:19   batteryVoltage  3.0
     2018-12-23 15:49:52   heartbeat       158d000234bc24
Attributes:
   room       XIAOMI
   userReadings batteryNew:batteryState:.* { ReadingsVal($name, 'batteryState',0) }
   verbose    5
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: CoolTux am 23 Dezember 2018, 18:01:35
Er scheint battery und batteryState für ein und das selbe zu halten. Hier scheint die Regex nicht korrekt ab zu schließen. Muss ich mit bei Gelegenheit mal im Code anschauen.
Titel: Antw:userReading für "battery" funktioniert nicht ?!
Beitrag von: somansch am 23 Dezember 2018, 18:59:22
Zitat von: CoolTux am 23 Dezember 2018, 18:01:35
Er scheint battery und batteryState für ein und das selbe zu halten. Hier scheint die Regex nicht korrekt ab zu schließen. Muss ich mit bei Gelegenheit mal im Code anschauen.

Habe es jetzt nochmal auf "battery" geändert. Das Eventlog sieht gut aus, jedoch wird das Reading nicht erzeugt.
2018-12-23 18:51:37 XiaomiSmartHome_Device Abstellraum_Wassersensor batteryState: ok
2018-12-23 18:51:37 XiaomiSmartHome_Device Abstellraum_Wassersensor batteryVoltage: 3.0
2018-12-23 18:51:37 XiaomiSmartHome_Device Abstellraum_Wassersensor battery: ok


Danke vorab und ein paar schöne Feiertage!

PS: Das ist natürlich nicht zeitkritisch  ;)