Hauptmenü

Tabelle

Begonnen von Sebastian84, 29 September 2025, 21:10:54

Vorheriges Thema - Nächstes Thema

Sebastian84

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.

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Prof. Dr. Peter Henning

#2
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

Sebastian84

#3
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?


Sebastian84

Hab das in das device "attr FBDECT_FritzBox_11963_0142552 batteryType ignore" in Raw definition eingetragen. Aber trotzdem kommt in den Gruppen reading.