Batterie Abfrage / Benachrichtigung

Begonnen von Xell1984, 14 Februar 2018, 17:41:16

Vorheriges Thema - Nächstes Thema

guhu

Versuch doch mal das Modul Homemode, das hat eine Batterieüberwachung out of the box drin. Bin mir aber nicht sicher, ob Zigbee unterstützt wird, sollte aber kein Problem sein.
FHEM 5.9 auf Synology DS918+ (in Docker), HM-CFG-USB2 mit hmlan, HM-CC-RT-DN, HM-SEC-SC-2, nanoCUL,a-culfw,deCONZ,Brennenstuhl-Steckdosen,-FB
Module:ENIGMA2,SONOS,FRITZBOX,FB_CALLLIST,WDT_TIMER,VCONTROL300,WITHINGS

yellowpinky

Danke für eure Antworten...
Der Ursprungscode war ja auch "geklaut" und bezog sich nur auf HM-Komponenten mit battery ok bzw. low und hat auch funktioniert.
Er hat auch verhindert dass bei battery low das email mehrfach/immer wieder gesendet wird.
Das hatte ber zur Folge, das bei der Inbetriebnahme von zigbee Komponenten mit 100 Prozent Batterie immer sofort eine email ausgelöst wurde (da ungleich OK), welches ich nun mit or ($EVENT = 0) bzw. ($EVENT = 100) verhindern wollte.
if(($EVENT !~ m/ok/i) or ($EVENT = 0)) -> soll bei battery low oder battery 0 email senden
elsif(($EVENT =~ m/ok/i) or ($EVENT = 100)) -> soll comment löschen und das Reading lastBatChange mit dem aktuellen Datum befüllen.
Das funktioniert aber nur mit den HM-Komponenten (ok, low), nicht aber mit den zigbee (0, 100), da tut sich nichts - eigentlich wollte ich anstatt 0 auf <=5 vergleichen.

Güße
Daniel

Otto123

Hallo Daniel,

hast Du Dir mal so einen zigbee Event angeschaut? Kannst Du einen posten?!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yellowpinky

Hallo Otto:

Event Monitor:
2020-01-21 22:40:39 HUEDevice VibrationTest1 battery: 88

lt. Log-File der zigbee Komponete:
2020-01-21_22:15:48 VibrationTest1 orientation: 1,80,10
2020-01-21_22:15:48 VibrationTest1 vibrationstrength: 2
2020-01-21_22:15:48 VibrationTest1 tiltangle: 6
2020-01-21_22:15:48 VibrationTest1 vibration: 0
2020-01-21_22:40:39 VibrationTest1 reachable: 1
2020-01-21_22:40:39 VibrationTest1 temperature: 23
2020-01-21_22:40:39 VibrationTest1 battery: 88

LG Daniel

Otto123

Naja ich denke der $EVENT auf den Du scharf bist ist dieser hier: "battery: 88"

Du könntest mal mitloggen, aber ich denke $EVTPART1 könnte den Wert enthalten ;) $EVENT enthält auf alle Fälle keine Zahl (bzw. nicht nur)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yellowpinky

Hallo Otto;

$EVTPART1 hab ich auch schon versucht, kann aber aus meiner Sicht nicht helfen weil ja das Reading battery nur eine Zahl enthält.
Irgendwie muss es am "or" liegen?

LG Daniel

yellowpinky

#21
geht auch mit "nur" zigbee (HUEDevice) nicht :-[

define n_batt_chk notify .*:[Bb]attery:.* {if($EVENT = 0) {\
my $AttComment=AttrVal($NAME,"comment",0);;\
#Log 3, "comment ist $AttComment";;\
if ($AttComment ne 1) {\
my $DNAME = AttrVal($NAME,"alias",$NAME);;\
Log 3, 'about to use DebianMail';;\
{ DebianMail('vorname.nachname@mail.com','FHEM Batteriewarnung', "$DNAME -> $EVENT") };;\
Log 3,"Bat $DNAME $EVENT";;\
fhem "attr $NAME comment 1";;\
}\
}elsif($EVENT = 100) {\
if (AttrVal("$NAME","comment",0) eq 1){\
fhem("setreading $NAME lastBatChange ".localtime);;\
fhem("deleteattr $NAME comment")\
}\
}\
}



LG Daniel

Otto123

#22
Ja sorry, ich war blind. Liegt nicht am or es liegt am Operator = -> ==
https://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity
Merke
=  Zuweisung: linke Tasche = rechte Tasche
== Vergleich: links gleich rechts?
;D ;D ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Zitat von: Otto123 am 22 Januar 2020, 09:01:13
Merke
=  Zuweisung: linke Tasche = rechte Tasche
== Vergleich: links gleich rechts?
;D ;D ;D

Hi Otto,

so philosophisch schon am (frühen) Morgen ;)

Aber das ist sehr einleuchtend formuliert :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#24
Und ich bleibe dabei:
2020-01-21 22:40:39 HUEDevice VibrationTest1 battery: 88
$NAME ist VibrationTest1
In $EVENT steht battery: 88
In $EVTPART1 steht 88
Kannst Du mit diesem Ausführungsteil überprüfen:
{Log 1, "Name $NAME Gesamter Event $EVENT Teil0 $EVTPART0 Teil1 $EVTPART1"}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yellowpinky

#25
Hallo;

Otto du hattest in beiden Dingen recht, so funktioniert es jetzt:
define n_batt_chk notify .*:[Bb]attery:.* {if (($EVENT =~ m/low/i) or ($EVTPART1 == 3)) {\
my $AttComment=AttrVal($NAME,"comment",0);;\
#Log 3, "comment ist $AttComment";;\
if ($AttComment ne 1) {\
my $DNAME = AttrVal($NAME,"alias",$NAME);;\
Log 3, 'about to use DebianMail';;\
{ DebianMail('vorname.nachname@mail.com','FHEM Batteriewarnung', "$DNAME -> $EVENT") };;\
Log 3,"Bat $DNAME $EVENT";;\
fhem "attr $NAME comment 1";;\
}\
}elsif (($EVENT =~ m/ok/i) or ($EVTPART1 == 100)) {\
if (AttrVal("$NAME","comment",0) eq 1){\
fhem("setreading $NAME lastBatChange ".localtime);;\
fhem("deleteattr $NAME comment")\
}\
}\
}


DANKE

Otto123

Ich frag nochmal nach: Warum setzt Du ein Attribute? Warum nimmst Du kein Reading?
attribute setzen verändert die config, Readings werden im state File gespeichert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yellowpinky

Hallo Otto;

Wie ich schon erwähnt hatte, habe ich den Ursprungscode übernommen und mich damit ehrlich gesagt nicht weiter auseinander gesetzt. Auch mangels Kenntnis.
Hättest du diesbezüglich einen Optimierungstipp für mich?

Danke
Daniel

Otto123

Naja, ich würde es einfach anstatt ins attr comment  in ein reading comment schreiben?
ReadingsVal statt AttrVal
setreading statt attr
deletereading statt deleteattr

Gruß  Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yellowpinky

Hallo Otto;

Hab ich mit Readings umgesetzt und funktioniert perfekt. ;D

define n_batt_chk notify .*:[Bb]attery:.* {if (($EVENT =~ m/low/i) or ($EVTPART1 == 3)) {\
my $ReadingsComment=ReadingsVal($NAME,"comment",0);;\
#Log 3, "comment ist $ReadingsComment";;\
if ($ReadingsComment ne 1) {\
my $DNAME = ReadingsVal($NAME,"alias",$NAME);;\
Log 3, 'about to use DebianMail';;\
{ DebianMail('vorname.nachname@mail.com','FHEM Batteriewarnung', "$DNAME -> $EVENT") };;\
Log 3,"Bat $DNAME $EVENT";;\
fhem "setreading $NAME comment 1";;\
}\
}elsif (($EVENT =~ m/ok/i) or ($EVTPART1 == 100)) {\
if (ReadingsVal("$NAME","comment",0) eq 1){\
fhem("setreading $NAME lastBatChange ".localtime);;\
fhem("deletereading $NAME comment")\
}\
}\
}


Danke nochmal für die Unterstützung und die Tipps!

Gruß Daniel