Guten Abend
Ich möchte gerne von Hand oder automatik alle Sensoren wenn ich eine Batterie wechsele das Datum und den Sensor eintragen.
Die Tabelle soll dann in Fhem dargestellt werden. Das man sehen kann wie lange die Batterien gehalten haben.
Hallo Sebastian,
eine fertige Lösung hab ich nicht, aber ich würde es so angehen:
- Im jeweiligen Device mit setreading ein Reading, z.B. time_batt_change setzen. Damit erhält man ein Reading und kann das Alter des Readings (mit ReadingsAge) ermitteln.
- Das ganze dann in einer readingsGroup zusammenfassen und das Austauschdatum und Alter der Batterien anzeigen lassen.
Viele Grüße Gisbert
Zitat von: Gisbert am 29 September 2025, 21:25:39Im jeweiligen Device mit setreading ein Reading, z.B. time_batt_change setzen
Nicht doch. Das ist kein "Reading", das man vom Device lesen kann. Also sinnvollerweise stattdessen globale User-Attribute batteryType und batteryDate
Und daraus dann eine Readingsgroup, die alle REadings (das sind wirklich Readings vom Device) battery,Battery,batteryState,BatteryState sowie diese beiden Attribute darstellt. Und auch gleichzeitig anzeigt, wann das letzte Mal ein OK von der Batterie kam.
defmod rg_battery readingsGroup <Gerät>,<Zustand>,<Datum>,<Typ>,<Wechsel> .*:FILTER=battery(State)?=.*:FILTER=batteryType!=ignore:[bB]attery(State)?,[bB]attery:t,?batteryType,?batteryDate
attr rg_battery alias Batteriestatus
attr rg_battery nameStyle style="font-weight:bold"
attr rg_battery room System->Hardware
attr rg_battery valueFormat {if(defined($COLUMN) && $COLUMN eq "2"){my $age=int(time-time_str2num($VALUE));;if($age<3600){"<1h"}elsif($age<86400){"<1d"}elsif($age<1209600){"<14d"}else{">14d"}}}
attr rg_battery valueStyle {if(defined($COLUMN) && $COLUMN eq "1"){($VALUE =~ /low/)?'style="color:red"':'style="color:green"'}\
elsif(defined($COLUMN) && $COLUMN eq "2"){my $age=int(time-time_str2num($VALUE));;{if($age<86400){'style="color:green"'}elsif($age<1209600){'style="color:black"'}else{'style="color:red"'}}}\
else{'style="color:black"'}}
LG
pah
Edit: Wenn batteryType=ignore, wird dieses Device nicht in die Liste aufgenommen
Guten Abend
Ich hab das jetzt nach deinen Vorschlag gemacht "Prof. Dr. Peter Henning"
Meine Frage wenn ich jetzt eine Batterie wechsle kommt dann das Datum in Wechsel eingetragen?
Kann mann diese Devices " FBDECT_FritzBox_11963_0142552 " irgendwie ausblenden?
Hab das in das device "attr FBDECT_FritzBox_11963_0142552 batteryType ignore" in Raw definition eingetragen. Aber trotzdem kommt in den Gruppen reading.