[FBDECT] Readings für Batteriezustand etc.

Begonnen von Timmäää, 22 Januar 2019, 11:05:01

Vorheriges Thema - Nächstes Thema

Timmäää

Hallo zusammen,

ich habe eine readingsGroup für alle batteriegestützen Geräte implementiert.

Hierzu habe ich auch die Diskussion zum Vereinheitlichen der battery-Readings gelesen (siehe https://forum.fhem.de/index.php/topic,87575.60.html).
Hieraus hatte ich mitgenommen, dass die meisten Modulbetreuer versuchen, es - wie folgt von rudolfkoenig zusammengefasst - umzusetzen:

ZitatIch fasse zusammen
- es gibt die drei Readings batteryState, batteryPercent, batteryVoltage
- Wertebereich:
batteryState: ok|low
batteryPercent: \d{1,2}|100
batteryVoltage: \d+.\d+
- das jeweilige Modul setzt _nur_ die Readings, die es aus den aktuellen Daten vom Geraet bestimmen kann. Konkret: niemand kann sich darauf  verlassen, welche der drei battery Readings vorhanden sind (es gibt nicht ueberall ein batteryState). Wenn das Geraet frueher ein Percent gemeldet hat, aber in der letzten Nachricht nur state, dann wird das Percent Reading nicht angefasst.


Im Fall von ZWave wird bei einer Prozentangabe batteryState:ok gesetzt, weil das implizit der Fall ist. Falls ein ZWave-Firmware-implementierer aber nicht daran denkt, den Wert low jeweils zu senden, dan wird das vom Modul auch nie gesetzt, dann steht dann halt auch fuer Percent:0 batteryState:ok

Bei dem Modul FBDECT von rudolfkoenig allerdings sind die Readings für meinen Thermosthat AVM DECT 301 wie folgt:

battery 100 % 2019-01-22 10:56:22
batteryState ok 2019-01-22 10:56:22
batterylow 0 2019-01-22 10:56:22

Mein Problem ist, dass die Einheit im Reading "battery" vorkommt, sodass mein ValueFormat beim Prüfen der numerischen Bedingungen über den String "100 %" stolpert  und das im Log als Warnung ausspuckt. Zunächst dachte ich, dass es alte readings sind, aber da sie immer noch aktualisiert werden, ist das ausgeschlossen. Darüber hinaus frage ich mich, was batterylow von batteryState differenziert. Ist das reading nicht implizit schon Teil vom batteryState-reading?

Bevor ich hier in meiner readingsGroup Anpassungen vornehme, möchte ich gern die Diskussion anregen, ob im Modul nicht lieber das reading batteryPercent übernommen wird und die Einheit aus dem Wert genommen wird.

Was meint ihr und was meinst du, rudolfkoenig als Maintainer des Moduls?

Danke und viele Grüße,
Tim

rudolfkoenig

Die besprochenen Standard-Readings beinhalten kein battery, das ist Modul-Optional :)
Falls du battery numerisch vergleichen willst, empfehle ich ReadingsNum statt ReadingsVal.
Ich habe aber jetzt auch batteryPercent hinzugefuegt. Da ich z.Zt. nur "trocken" testen kann, bin ich fuer Feedback dankbar.

Timmäää

Hallo Rudolf,

danke für die schnelle Anpassung. Brauchst du bzw. eine Merhzahl der Modulnutzer denn das reading battery überhaupt?
Die Ergebnisse aus dem Thread sind in den Wiki-Eintrag (siehe https://wiki.fhem.de/wiki/DevelopmentGuidelines#Readings_2) geflossen:

ZitatBatteryReadings
Es gibt nur diese drei Readings für den Batteriestatus:

batteryState
batteryPercent
batteryVoltage
Wertebereich:

batteryState: ok|low
batteryPercent: \d{1,2}|100
batteryVoltage: \d+.\d+

Momentan prüfe ich bspw. nur so: return "75" if( $VALUE < 2.5) . Hier habe ich durch deinen Tipp jetzt stehen: return "75" if( ReadingsNum($DEVICE,$READING,undef) < 2.5 )
Das scheint unabhängig von dem Thema der Reading-Benennung zu klappen.

Gruß,
Tim

Timmäää

Hi Rudolf,

danke für die Umsetzung von batteryPercent. Hier ist allerdings noch die Einheit im Value drin, das ist implizit ja im Namen des Readings.

Nimmst du das bitte noch heraus?

Danke,
Tim

rudolfkoenig

Danke fuer den Hinweis, habs uebersehen, jetzt korrigiert.

Timmäää

Danke dir auch für die Umsetzung!

Gruß,
Tim