DOIF Nur bei Status "on" eines Gerätes ausführen

Begonnen von bismosa, 18 August 2017, 17:04:29

Vorheriges Thema - Nächstes Thema

bismosa

Hallo,

vermutlich mache ich nur einen kleinen Anfängerfehler....
Ich überwache über RPI_GPIO meine Heizung.
defmod GPIO_Heizung_Brenner RPI_GPIO 5
attr GPIO_Heizung_Brenner active_low yes
attr GPIO_Heizung_Brenner direction input
attr GPIO_Heizung_Brenner icon icoHEIZUNG
attr GPIO_Heizung_Brenner interrupt both
attr GPIO_Heizung_Brenner pud_resistor up
attr GPIO_Heizung_Brenner room Heizung
attr GPIO_Heizung_Brenner toggletostate yes
attr GPIO_Heizung_Brenner webCmd :


Und habe ein DOIF (DEF)
([HeizungsStoerung:"on"])
({
DebianMail("ich\@jemand.de","Heizung ausgefallen!","ACHTUNG! Die Heizung ist ausgefallen!");
fhem("set pushmsg msg device=ich title=Ausfall priority=2 retry=30 expire=3600 ACHTUNG! Die Heizung ist ausgefallen!");
})


Jetzt löst der Alarm immer wieder zwischendurch (meist wenn die Heizung abschaltet) aus.

Ich habe das jetzt mal im EventMonitor beobachtet:
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner Pinlevel: low
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner off
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner Longpress: off
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner LastStartTime: 1503065604.84483
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner LetzterVerbauch: 3.90187474091848e-05
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner LetzteLaufzeit: 0.00118873516718547
2017-08-18 16:13:24 RPI_GPIO GPIO_Heizung_Brenner Gesamtmenge: 3.90187474091848e-05
2017-08-18 16:13:32 DOIF di_HeizungStoerung cmd_nr: 2
2017-08-18 16:13:32 DOIF di_HeizungStoerung cmd: 2
2017-08-18 16:13:32 DOIF di_HeizungStoerung cmd_event: HeizungsStoerung
2017-08-18 16:13:32 DOIF di_HeizungStoerung cmd_2
2017-08-18 16:13:32 RPI_GPIO HeizungsStoerung Dblclick: off
2017-08-18 16:13:34 Pushover pushmsg msg device=ich title=Ausfall priority=2 retry=30 expire=3600 ACHTUNG! Die Heizung ist ausgefallen!
2017-08-18 16:13:34 DOIF di_HeizungStoerung cmd_nr: 1
2017-08-18 16:13:34 DOIF di_HeizungStoerung cmd: 1
2017-08-18 16:13:34 DOIF di_HeizungStoerung cmd_event: HeizungsStoerung
2017-08-18 16:13:34 DOIF di_HeizungStoerung cmd_1
2017-08-18 16:13:34 RPI_GPIO HeizungsStoerung Pinlevel: low
2017-08-18 16:13:34 RPI_GPIO HeizungsStoerung off
2017-08-18 16:13:34 RPI_GPIO HeizungsStoerung Longpress: off
...


Ich bin immer noch auf der Suche, ob nicht durch eine kleine Störung der GPIO der Störung kurzzeitig auf "on" wechselt. Im Event Monitor erscheint dieses Event jedoch nicht. Nur "RPI_GPIO HeizungsStoerung off"

Ich habe das jetzt auch mal protokolliert:
./log/HeizungsStoerung_Alle-%Y.log HeizungsStoerung
Das einzige was erscheint ist:
2017-08-18_16:13:32 HeizungsStoerung Dblclick: off
2017-08-18_16:13:32 HeizungsStoerung Pinlevel: low
2017-08-18_16:13:32 HeizungsStoerung off
2017-08-18_16:13:32 HeizungsStoerung Longpress: off


1.) Kann es sein, das mein DOIF auf "HeizungsStoerung Longpress: off" reagiert? Wie müsste ich das richtig im DOIF angeben, das er auch wirklich nur bei "on" reagiert?
2.) Kann der Impuls des "on" so kurz sein? Das würde doch protokolliert werden? Müsste sich doch mit dem DOIF umsetzen lassen? Wait?
3.) Warum kommt beim RPI_GPIO der Status "off", obwohl vorher kein "on" da war?

Ich hoffe ihr versteht was ich meine...
 
Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Damian

Zitat1.) Kann es sein, das mein DOIF auf "HeizungsStoerung Longpress: off" reagiert? Wie müsste ich das richtig im DOIF angeben, das er auch wirklich nur bei "on" reagiert?

ja, es kann!

daher:



([HeizungsStoerung:"^on$"])


alternativ den Status abfragen mit:

([HeizungsStoerung] eq "on")

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

bismosa

Hallo!

Vermutung richtig...Umsetzung mangelhaft.  *Grmpf
Da muss ich also noch richtig viel lernen...vor allem beim Regex. Gelöst habe ich es jetzt mit
([HeizungsStoerung] eq "on")

Das versrtehe ich wenigstens  ;D

Eine weitere Beobachtung die ich machen konnte war das die GPIO wohl bei Auslastung des Raspberry gelegentlich neu eingelesen werden. Daher kommt vermutlich des öfteren der gleiche Status...aber das muss ich jetzt noch ein bisschen beobachten. Kann ich ja jetzt zum Glück...keine Fehlalarme mehr  :)

Vielen Dank!

Gruß
Bismosa

1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Damian

Zitat aus der Commandref:

ZitatIm Gegensatz zum notify werden vom DOIF-Modul selbst keine Regex-Sonderzeichen hinzugefügt. Insb. wird kein ^ für Anfang vorangestellt, bzw. kein $ für Ende angehängt.

Beispiele für Regex-Angaben:

["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten
["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen
["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
([":^temp"]) triggert auf beliebige Devices, die im Event mit "temp" beginnen
(["^FS$:^temp$"] triggert auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt
[""] triggert auf alles
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

bismosa

Hallo,

danke. Den Abschnitt muss ich überlesen haben. Vermutlich weil ich auf etwas anderes so fixiert war.
Wer lesen kann ist klar im Vorteil! Schande auf mein Haupt! ::)*duckundwech

Gruß
Bismosa

1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...