DOIF - Zeitverzögertes abschalten eines Dummys

Begonnen von Stargazer, 21 Juli 2017, 08:02:07

Vorheriges Thema - Nächstes Thema

Stargazer

Hallo zusammen,

ich konnte das DOIF nun schon etwas genauer testen. Durch eine alte Schreibtischlampe habe ich auch die Möglichkeit, einen "Blitz" zu erzeugen, den der Sensor erfasst.

Was ich bisher beobachten konnte war, dass das DOIF Modul den Dummy aktiviert, jedoch nicht zurück springt.
Der HomeMatic-Switch wird nur für 0,5 Sekunden via Relais ausgelöst. So kommt das "short"-Signal an FHEM an.

Hier mal ein List des DOIF's:

Internals:
   DEF        ([Blitzalarm:short.*]) (set BlitzBox BLITZ)  (set BlitzBox ENTWARNUNG)
   NAME       BlitzBoxDOIF
   NR         407
   NTFY_ORDER 50-BlitzBoxDOIF
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-07-23 10:52:10   Device          Blitzalarm
     2017-07-23 09:34:15   cmd             0
     2017-07-23 09:34:15   state           initialized
   condition:
     0          ReadingValDoIf($hash,'Blitzalarm','short.*')
   devices:
     0           Blitzalarm
     all         Blitzalarm
   do:
     0:
       0          set BlitzBox BLITZ
       1          set BlitzBox ENTWARNUNG
     1:
   helper:
     event      Short 1_46 (to broadcast),trigger: Short_46,trigger_cnt: 46
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Blitzalarm
     triggerEvents:
       Short 1_46 (to broadcast)
       trigger: Short_46
       trigger_cnt: 46
     triggerEventsState:
       state: Short 1_46 (to broadcast)
       trigger: Short_46
       trigger_cnt: 46
   internals:
   itimer:
   readings:
     0           Blitzalarm:short.*
     all         Blitzalarm:short.*
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   do         resetwait
   group      BlitzBox
   room       Wetter
   wait       0,300


Setzte ich das cmd nach dem Initialisieren manuell auf cmd1, so funktioniert es und der Status springt nach 5 Minuten von BLITZ auf ENTWARNUNG.

Was kann das jetzt noch sein ?

Stargazer

Nachtrag:

So sieht das List aus, nachdem ich nochmal den Blitz über die Lampe simuliert habe.
Das DOIF scheint es zu registrieren, schaltet aber nicht die "Zeitschaltuhr" ein.

Ich hatte heute morgen schon, wo das Problem ja auch schon war, die DEF nochmal von Blitzalarm:short auf Blitzalarm:short.*
geändert. Scheint aber auch egal zu sein, was ich jetzt so sehen konnte.


Hier nochmal das List:

Internals:
   DEF        ([Blitzalarm:short.*]) (set BlitzBox BLITZ)  (set BlitzBox ENTWARNUNG)
   NAME       BlitzBoxDOIF
   NR         407
   NTFY_ORDER 50-BlitzBoxDOIF
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-07-23 11:58:28   Device          Blitzalarm
     2017-07-23 11:50:44   cmd             1.2
     2017-07-23 11:50:44   cmd_event       set_cmd_1
     2017-07-23 11:50:44   cmd_nr          1
     2017-07-23 11:50:44   cmd_seqnr       2
     2017-07-23 11:45:54   mode            enable
     2017-07-23 11:50:44   state           cmd_1
     2017-07-23 11:50:44   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Blitzalarm','short.*')
   devices:
     0           Blitzalarm
     all         Blitzalarm
   do:
     0:
       0          set BlitzBox BLITZ
       1          set BlitzBox ENTWARNUNG
     1:
   helper:
     event      Short 1_50 (to broadcast),trigger: Short_50,trigger_cnt: 50
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_1
     sleepsubtimer -1
     sleeptimer -1
     triggerDev Blitzalarm
     triggerEvents:
       Short 1_50 (to broadcast)
       trigger: Short_50
       trigger_cnt: 50
     triggerEventsState:
       state: Short 1_50 (to broadcast)
       trigger: Short_50
       trigger_cnt: 50
   internals:
   itimer:
   readings:
     0           Blitzalarm:short.*
     all         Blitzalarm:short.*
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   do         resetwait
   group      BlitzBox
   room       Wetter
   wait       0,300



VG

André

Ellert

Zitat von: Stargazer am 23 Juli 2017, 12:06:22
Nachtrag:

So sieht das List aus, nachdem ich nochmal den Blitz über die Lampe simuliert habe.
Das DOIF scheint es zu registrieren, schaltet aber nicht die "Zeitschaltuhr" ein.

Ich hatte heute morgen schon, wo das Problem ja auch schon war, die DEF nochmal von Blitzalarm:short auf Blitzalarm:short.*
geändert. Scheint aber auch egal zu sein, was ich jetzt so sehen konnte.


Hier nochmal das List:

Internals:
   DEF        ([Blitzalarm:short.*]) (set BlitzBox BLITZ)  (set BlitzBox ENTWARNUNG)
   NAME       BlitzBoxDOIF
   NR         407
   NTFY_ORDER 50-BlitzBoxDOIF
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-07-23 11:58:28   Device          Blitzalarm
     2017-07-23 11:50:44   cmd             1.2
     2017-07-23 11:50:44   cmd_event       set_cmd_1
     2017-07-23 11:50:44   cmd_nr          1
     2017-07-23 11:50:44   cmd_seqnr       2
     2017-07-23 11:45:54   mode            enable
     2017-07-23 11:50:44   state           cmd_1
     2017-07-23 11:50:44   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Blitzalarm','short.*')
   devices:
     0           Blitzalarm
     all         Blitzalarm
   do:
     0:
       0          set BlitzBox BLITZ
       1          set BlitzBox ENTWARNUNG
     1:
   helper:
     event      Short 1_50 (to broadcast),trigger: Short_50,trigger_cnt: 50
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_1
     sleepsubtimer -1
     sleeptimer -1
     triggerDev Blitzalarm
     triggerEvents:
       Short 1_50 (to broadcast)
       trigger: Short_50
       trigger_cnt: 50
     triggerEventsState:
       state: Short 1_50 (to broadcast)
       trigger: Short_50
       trigger_cnt: 50
   internals:
   itimer:
   readings:
     0           Blitzalarm:short.*
     all         Blitzalarm:short.*
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   do         resetwait
   group      BlitzBox
   room       Wetter
   wait       0,300



VG

André

Das Gerät Blitzalarm erzeugt ein Event:
Short 1_50 (to broadcast)

Für dieses Ereignis musst Du den regulären Ausdruck formulieren.

Das hier [Blitzalarm:short.*] ist keine DOIF Syntax und keine passende Regexp.

Nach https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events wäre die richtige Syntax [<devicename>:"<regex>"]
Inhaltlich müsstest Du darauf achten, dass die Schreibung zum Event passt.

Hilft Dir das weiter?

Stargazer

Hallo Ellert,

das hilft mir so schon weiter. Nur habe ich das Problem, dass sich "Short 1_50 (to broadcast)" mit der Nummer hinter stetig ändert.
Bei anderen Modulen (z.B. notify), war das bis jetzt immer eine einfache Sache. Dort reicht dann das "Blitzalarm:short" bzw. "Blitzalarm:long" aus.

Die Regex kenne ich derzeit nur vom HTTPMOD-Modul bedingt aus. Waren bis jetzt nie Freunde... ???.

VG und besten Dank

André

CoolTux

#19
Blitzalarm:"sShort"
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Zitat von: Stargazer am 23 Juli 2017, 13:02:57
Bei anderen Modulen (z.B. notify), war das bis jetzt immer eine einfache Sache. Dort reicht dann das "Blitzalarm:short" bzw. "Blitzalarm:long" aus.

Das stimmt aber nicht. Bei notify müsstest  du Blitzalarm:short.* angeben, bei DOIF kannst du auf .* verzichten. Dafür musst du das short in Anführungszeichen setzen, sonst wird es bei DOIF als Reading interpretiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#21
Wir kommen der Lösung immer näher, jetzt muss nur noch s durch S ersetzt werden  ;)

Edit: oder das s weglassen

CoolTux

Stimmt. Habe ich nicht drauf geachtet. Werde es mal korrigieren
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Stargazer

Hallo zusammen,

so ! Dann habe ich heute wieder etwas gelernt. Man kann echt schon schnell etwas falsch machen oder verwechseln.

@Damian: Das mit dem Short.* meinte ich auch bei einem notify. Ist im eifer des "Schreibgefechts" irgendwie falsch rüber
gekommen.

Fakt ist: So läuft es dank euch richtig gut !

Wenn jetzt ein Blitz erfasst wird, erscheint im UI das Wort "BLITZ" in Rot. Wurde dann über eine gewisse Zeit nichts erfasst, springt er wieder auf ein grünes "ENTWARNUNG".

Viele Grüße und besten Dank nochmals...

André