FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: iceman am 10 Juli 2020, 10:36:52

Titel: Letzten Batteriewechsel merken
Beitrag von: iceman am 10 Juli 2020, 10:36:52
Hallo zusammen, ich schreibe die aktuellen Batteriestände meiner Xiaomi Sensoren in eine LogDatei.

Nun würde ich gerne in jedem Device den Zeitpunkt speichern, an dem ich die Batterie ausgetauscht habe. Ich stelle mir vor das mittels UserReading zu machen. Quasi so:


wenn BatteryPercent > lastBatteryPercent dann lastChange = aktuellen Zeitpunkt.


Wie ihr an meine pseudo Beschreibung seht fällt es mir noch schwer das ganze in ein Code zu giessen. Kann mir dabei jemand helfen? Oder gibt es eine elegantere Lösung.?

Danke schon mal um voraus.

Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: betateilchen am 10 Juli 2020, 11:14:22
Ich habe in meinen batteriebetriebenen Homematic Geräten einen Aufkleber am Batteriefach, auf dem ich mit Bleistift das Wechseldatum der Batterie notiere und beim Wechsel ausradiere und neu beschrifte.

Eine richtig schöne analoge Lösung.
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: iceman am 10 Juli 2020, 11:17:32
Das hab ich bei meinen Rauchmeldern (nicht smart) auch. Wenn man aber schon so einen Wert wie Battery geliefert bekommt, kann man ihn doch auch benutzen...
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: MadMax-FHEM am 10 Juli 2020, 11:29:01
Vielleicht das hier interessant: https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514

Bei diesem Beispiel steht es dann nicht in jedem Device selbst sondern in einem "Sammeldummy" aber das lässt sich ja anpassen... ;)

Mit den Änderungen/Anpassungen/Erweiterungen weiter hinten wird (bei mir) auch in der Telegram Nachricht mitgegeben WELCHER TYP Batterie :)
Damit ich eben auch weiß was ich besser da habe bzw. besorgen muss weil demnächst eine Batterie fällig wird...
(steht bei mir somit auch im Device -> userAttr)

Und es wird (bei mir / weiß nicht, was alles übernommen wurde) auch mit protokolliert, wie die Haltbarkeit ist/war.

D.h. langsam (habe ja meine Homematic Dinger schon seit fast 6 Jahren / die anderen Batterie geräte noch nicht lange genug ;)  ) füllt sich die "Tabelle" wo drin steht wie lange (wieviele Wochen) die Batterien gehalten haben...
...natürlich alles automatisch :)

Gruß, Joachim
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: jkriegl am 10 Juli 2020, 12:41:46
Ich benutze "attr comment". Sieht dann so aus (HM-Beispiel) Bat-Wechsel 2017-08-28 2020-03-08
Gibt es auch bei den Xiaomi's
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: MadMax-FHEM am 10 Juli 2020, 13:28:03
Zitat von: jkriegl am 10 Juli 2020, 12:41:46
Ich benutze "attr comment". Sieht dann so aus (HM-Beispiel) Bat-Wechsel 2017-08-28 2020-03-08
Gibt es auch bei den Xiaomi's

Manuell oder automatisch!?

Wenn automatisch -> rotes Fragezeichen mit autom. "save" hinterher!? (kann "kritisch" sein)

Wenn manuell -> naja, manuell halt (für was heißt es HeimAUTOMATISIERUNG ;)  )...


In comment schreibe ich (wichtige) Schritte für einen (evtl. nötigen) "Neuanfang" oder sonstige (wichtige) Anmerkungen...
...da wäre kein Platz für die Info...

Auch eine Anzeige einer Übersicht geht mit einer readingsGroup nicht "dynamisch", weil da Attribute nur aktualisiert werden, wenn die Seite der readingsGroup neu geladen wird (soweit mir bekannt)...
...gut einen Batteriewechsel hat mal nicht alle Tage ;)

Und den Batteriezustand!?
Eine Übersicht!?
Eine Warnung, dass bald leer bzw. jetzt leer!?

Das alles bietet das verlinkte "Modul"... :)

Gruß, Joachim
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: Markus M. am 12 Juli 2020, 12:03:04
Einfach für das batteryState Reading (das mit low/ok) timestamp-on-change-reading setzen reicht nicht?
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: MadMax-FHEM am 12 Juli 2020, 12:06:53
Naja, dann weiß man nur wann sie leer waren...
...und das Reading "verschwindet" ja wieder (bzw. -> ok) nach dem Einlegen neuer Batterien... ;)

Homematic (Batterie-)Geräte haben (oft) ein powerOn Reading, da sollte für lange Zeit (also wenn nichts mit Spannungsversorgung passiert) die "Wechselzeit" drin stehen -> weil danach ja der Power on passiert (passieren sollte ;) )...

Gruß, Joachim
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: Icinger am 12 Juli 2020, 19:41:49
defmod BatteriewarnungNotify notify .*:[Bb]attery:.* {if($EVENT !~ m/ok/i || (looks_like_number($EVENT) && $EVENT<10) || (looks_like_number($EVTPART1) && $EVTPART1<10)) {\
   if (AttrVal("$NAME","comment",0) ne 1) {\
      Log 3,"Bat $NAME $EVTPART1";;\
      fhem "attr $NAME comment 1";;\
      fhem "msg Bitte Batterie bei Gerät $NAME tauschen";;\
   }\
}elsif(($EVENT =~ m/ok/i || (looks_like_number($EVENT) && $EVENT>50) || (looks_like_number($EVTPART1) && $EVTPART1>50)) and (AttrVal("$NAME","comment","0") eq 1)) {fhem("setreading $NAME lastBatChange ".localtime)}\
elsif (AttrVal("$NAME","comment",0) eq 1) {fhem("deleteattr $NAME comment")}\
\
}


So läuft das bei mir schon länger.
Wenn Batterie nicht "ok" oder unter 10%, wird "comment" auf 1 gesetzt
Wenn Batterie wieder ok oder >50% und "comment" auf 1 ist, wird das reading "lastBatChange" gesetzt.

lg, Stefan
Titel: Antw:Letzten Batteriewechsel merken
Beitrag von: Markus M. am 13 Juli 2020, 15:52:03
Zitat von: MadMax-FHEM am 12 Juli 2020, 12:06:53
Naja, dann weiß man nur wann sie leer waren...
...und das Reading "verschwindet" ja wieder (bzw. -> ok) nach dem Einlegen neuer Batterien... ;)
Und wenn du das loggst, hast du eben die Batteriewechsel.
(Und je nach Gerät auch die Zeit mit halbleeren Batterien in der das Reading hin und herspringt)