Batteriewarnung aus der Commandref funktioniert nicht mehr

Begonnen von SouzA, 25 März 2017, 01:49:21

Vorheriges Thema - Nächstes Thema

amenomade

Bei mir geht die erste Variante. Was hast Du für eine Version des DOIF Moduls?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Per

Zitat von: heikoh81 am 09 Oktober 2018, 22:07:42
(setreading di_Batterieueberwachung B_$DEVICE low)

Hier kannst du bestimmt di_Batterieueberwachung durch $SELF ersetzen.

Zitat von: heikoh81 am 09 Oktober 2018, 22:07:42
Problem:
Bei mir überwacht das DOIF nur genau 1 Device (Bewegungsmelder HMBW05SchuppenGarage), warum weiß ich nicht.
Haben die anderen Batterien sich überhaupt schon mal gemeldet? Das DOIF erkennt sie ja erst, wenn sie mal "low" waren.

heikoh81

#17
Zitat von: amenomade am 10 Oktober 2018, 00:28:25
Bei mir geht die erste Variante. Was hast Du für eine Version des DOIF Moduls?

Latest Revision: 16307
98_DOIF.pm          16182 2018-02-14 21:36:04Z Damian
(Master-System für ein ganzes 1-Familien-Haus inkl. Alexa-Anbindung - Ich pflege da trotz raspibackup.sh gern das Motto "Never change a running system")
Der Thread endete im November 2017, sollte eigentlich aktuell genug sein?

Zitat von: Per am 10 Oktober 2018, 11:39:57
Hier kannst du bestimmt di_Batterieueberwachung durch $SELF ersetzen.

Ok, aber kein Muss?

ZitatHaben die anderen Batterien sich überhaupt schon mal gemeldet? Das DOIF erkennt sie ja erst, wenn sie mal "low" waren.
Die Homematic-Devices senden eigentlich zyklisch ihren Status (bis auf Taster/Fernbedienungen).
Somit werden also ca. alle 5 Minuten die readings aktualisiert.
Und das doif ist ja so gebaut, dass es auch den OK-Wert zumindest 1x ins Reading schreibt.

Zwischenzeitlich habe ich weiter beobachtet.
Ich habe das doif so modifiziert, dass jede OK-Meldung in die readings des doif geschrieben werden soll.

([":^[Bb]attery.*[Ll]ow"] and [?$SELF:B_$DEVICE] ne "low")
(setreading di_Batterieueberwachung B_$DEVICE low)
({DebianMail('mail@xyz.de','Batteriewarnung $DEVICE','siehe Betreff')})
DOELSEIF ([":^[Bb]attery.*[Oo]k"])
(setreading di_Batterieueberwachung B_$DEVICE ok)
##({DebianMail('mail@xyz.de','Batterie OK $DEVICE','siehe Betreff')})


Mein System wird 1x nachts neu gestartet. Und das doif hat dann auch die readings von fast allen Homematic-Devices eingelesen, die stehen jetzt auf OK.0
==> das wäre dann dieselbe Beobachtung wie von
Zitat von: SouzA am 26 März 2017, 12:03:04
Ein Restart hat das DOIF wieder zum Arbeiten gebracht.
Keine Ahnung, wo der hängen geblieben ist...

Problem: Aktuell gehalten wird nur das reading 1 Bewegungsmelder "B_HMBW05SchuppenGarage", und zwar der, der sich nach Anlegen des DOIF als erster gemeldet hatte (alle Bewegungsmelder melden sich auch ca. alle 5 Minuten). Trotz des Neustarts.
Und meine Fenstersensoren werden überhaupt nicht vom DOIF erfasst, obwohl deren battery-reading genau gleich aussieht wie bei den anderen Homematic-Devices.

Viele Grüße,
Heiko

Damian

Ich gehe mal davon aus, dass du do always Attribut gesetzt hast.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

heikoh81

Zitat von: Damian am 10 Oktober 2018, 19:32:23
Ich gehe mal davon aus, dass du do always Attribut gesetzt hast.

Ja, ist gesetzt.

Wie füge ich denn das von dir genannte Beispiel von weiter vorne in das WebUI ein?

Folgendes notify sendet mir auch keine Mail-Benachrichtigungen mehr, was meine Motivation war, auf doif umzustellen.

.*:[Bb]attery:.* {
if($EVENT !~ m/ok/) {
DebianMail('mail@xyz.de','FHEM Batteriestand niedrig ('.FmtDateTime(time()).') '.$NAME.' '.$EVENT,$NAME.' '.$EVENT);
Log 3, "$NAME: Batteriewarnung $EVENT";
}
}


Bei nachfolgendem funktioniert Aktualisierung noch, auch für meine Fenstersensoren.

define Batteriestaende readingsGroup .*:[Bb]attery

heikoh81

Ich habe mal das DOIF auf 1 konkreten Fenstersensor angepasst.
Und ich habe den Abgleich des readings auf "eq "low"" angepasst.
Damit wird bei jedem Öffnen/Schließen das doif ausgeführt und das reading "ok" erneuert.


([HMFenstersensor03_GaesteWC:battery] eq "low" and [?$SELF:B_$DEVICE] ne "low")
(setreading $SELF B_$DEVICE low)
({DebianMail('mail@xyz.de','Batteriewarnung $DEVICE','siehe Betreff')})
DOELSEIF ([HMFenstersensor03_GaesteWC:battery] eq "ok")
(setreading $SELF B_$DEVICE ok)
##({DebianMail('mail@xyz.de','Batterie OK $DEVICE','siehe Betreff')})


Könnte es sein, dass die RegExp nicht korrekt ausgewertet werden.
Was auch erklären würde, warum das notify nicht mehr funktioniert?

Viele Grüße,
Heiko

Damian

Vielleicht hast du irgendwo event-on-change-reading gesetzt, sodass nur noch Events bei Änderungen kommen?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

heikoh81

Zitat von: Damian am 10 Oktober 2018, 22:07:24
Vielleicht hast du irgendwo event-on-change-reading gesetzt, sodass nur noch Events bei Änderungen kommen?

Ich verwende dieses attr an einigen Stellen, aber nicht bei den Homematic-Devices und auf jeden Fall nicht beim battery-reading.
Und für mein Beispiel-Gerät (doif ohne regex, auf konkretes Device) funktioniert es ja zuverlässig.

Wie könnte man dem Problem weiter auf den Grund gehen?
Mit welchem RegEx könnte ich z.B. im EventMonitor die Aktivität der Batteriemeldungen beobachten?

Viele Grüße,
Heiko

Damian

#23
Zitat von: heikoh81 am 11 Oktober 2018, 21:02:23
Ich verwende dieses attr an einigen Stellen, aber nicht bei den Homematic-Devices und auf jeden Fall nicht beim battery-reading.
Und für mein Beispiel-Gerät (doif ohne regex, auf konkretes Device) funktioniert es ja zuverlässig.

Wie könnte man dem Problem weiter auf den Grund gehen?
Mit welchem RegEx könnte ich z.B. im EventMonitor die Aktivität der Batteriemeldungen beobachten?

Viele Grüße,
Heiko

z. B. mit

DOIF {Log 1,[":battery"]}

Edit: Besser

DOIF {[":battery"];Log (1,"Batterie-Event von $DEVICE")}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

heikoh81

Zitat von: Damian am 11 Oktober 2018, 22:08:53
DOIF {[":battery"];Log (1,"Batterie-Event von $DEVICE")}

Dies landet im Log:

2018.10.14 20:20:25 1: Batterie-Event von HKueche
2018.10.14 20:20:33 1: Batterie-Event von HWohnKlein
2018.10.14 20:20:37 1: Batterie-Event von HStudio
2018.10.14 20:21:04 1: Batterie-Event von HKinder
2018.10.14 20:21:06 1: Batterie-Event von HWindfang
2018.10.14 20:21:11 1: Batterie-Event von HEss
2018.10.14 20:21:12 1: Batterie-Event von HBadHandtuch
2018.10.14 20:21:33 1: Batterie-Event von HGaesteWC
2018.10.14 20:21:35 1: Batterie-Event von HMBW05SchuppenGarage
2018.10.14 20:21:35 1: Batterie-Event von HSchlafKlein
2018.10.14 20:21:59 1: Batterie-Event von HWohnGross
2018.10.14 20:22:27 1: Batterie-Event von HStudioDachschraege
2018.10.14 20:22:30 1: Batterie-Event von HSchlafGross
2018.10.14 20:22:41 1: Batterie-Event von HBadKlein
2018.10.14 20:23:03 1: Batterie-Event von HWohnKlein
2018.10.14 20:23:08 1: Batterie-Event von HKinder
2018.10.14 20:23:14 1: Batterie-Event von HKueche
2018.10.14 20:23:22 1: Batterie-Event von HBadHandtuch
2018.10.14 20:23:23 1: Batterie-Event von HWindfang
2018.10.14 20:23:34 1: Batterie-Event von HStudio
2018.10.14 20:23:56 1: Batterie-Event von HKeller
2018.10.14 20:24:05 1: Batterie-Event von HGaesteWC
2018.10.14 20:24:07 1: Batterie-Event von HSchlafKlein
2018.10.14 20:24:08 1: Batterie-Event von HEss
2018.10.14 20:24:34 1: Batterie-Event von HSchlafGross
2018.10.14 20:25:02 1: Batterie-Event von HWohnGross
2018.10.14 20:25:09 1: Batterie-Event von HStudioDachschraege
2018.10.14 20:25:14 1: Batterie-Event von HBadKlein
2018.10.14 20:25:17 1: Batterie-Event von HWohnKlein
2018.10.14 20:25:27 1: Batterie-Event von HWindfang
2018.10.14 20:25:49 1: Batterie-Event von HKueche
2018.10.14 20:26:02 1: Batterie-Event von HKinder
2018.10.14 20:26:17 1: Batterie-Event von HKeller
2018.10.14 20:26:17 1: Batterie-Event von HStudio
2018.10.14 20:26:21 1: Batterie-Event von HBadHandtuch
2018.10.14 20:26:22 1: Batterie-Event von HGaesteWC
2018.10.14 20:26:24 1: Batterie-Event von HSchlafKlein
2018.10.14 20:26:51 1: Batterie-Event von HEss
2018.10.14 20:27:18 1: Batterie-Event von HWohnKlein
2018.10.14 20:27:28 1: Batterie-Event von HSchlafGross
2018.10.14 20:27:33 1: Batterie-Event von HBadKlein
2018.10.14 20:27:37 1: Batterie-Event von HStudioDachschraege
2018.10.14 20:27:40 1: Batterie-Event von Batteriestaende
2018.10.14 20:27:40 1: Batterie-Event von HMBW05SchuppenGarage
2018.10.14 20:27:50 1: Batterie-Event von HWohnGross
2018.10.14 20:28:09 1: Batterie-Event von HKueche
2018.10.14 20:28:20 1: Batterie-Event von HWindfang
2018.10.14 20:28:24 1: Batterie-Event von HKeller
2018.10.14 20:28:25 1: Batterie-Event von HGaesteWC
2018.10.14 20:28:28 1: Batterie-Event von HSchlafKlein
2018.10.14 20:28:42 1: Batterie-Event von HKinder
2018.10.14 20:28:45 1: Batterie-Event von HStudio


Im Wesentlichen sind diese meine Homematic-Heizkörperaktoren.
Und Bewegungsmelder 5.
Aber nicht Bewegungsmelder 1 oder 2. Ich habe extra ein Event durch Bewegung provoziert.

Meine readingsgroup mit Definition

.*:[Bb]attery

hat das reading für Bewegungsmelder 1 & 2 mit der Uhrzeit meiner "Bewegung" als OK angezeigt.

HMBW01:battery ok 2018-10-14 20:24:17
HMBW02:battery ok 2018-10-14 20:24:11

Im Log taucht aber nichts auf.

Vielleicht kommen wir so dem Problem auf die Spur.
Wenn das doif HMBW01 und HMBW02 nicht mitbekommt, kann es auch nicht benachrichtigen.

Viele Grüße,
Heiko