ein weiteres DOIF Problem !! Lichsteuerung im Aussenbereich

Begonnen von sash.sc, 11 September 2016, 12:10:46

Vorheriges Thema - Nächstes Thema

sash.sc

Habe eine Lichsteuerung, recht sinple über DOIF und Lighscene reaslisiert.

Da es jetzt früher dunkel wird, verschieben sich die ganzen Schaltzeiten nach vorne. Irgendwann wird das Licht komplett ausgeschaltet. Leider zu früh, im Moment.

Hier erstmal das DOIF komplett.

Internals:
   DEF        ([lichtsens:Indikator:d] < [lichtanteil:state]) (set EG_wz_EckeLicht on) (set LS scene 01) (set LS scene 02) (set LS scene 01) (set LS scene 02) (set LS scene Off) DOELSE (set LS scene Off)
   NAME       LW1
   NR         211
   NTFY_ORDER 50-LW1
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-09-11 11:56:26   Device          lichtsens
     2016-09-11 06:53:50   cmd             2
     2016-09-11 06:53:50   cmd_event       lichtsens
     2016-09-11 06:53:50   cmd_nr          2
     2016-09-10 19:00:15   e_lichtanteil_state 27
     2016-09-11 11:56:26   e_lichtsens_Indikator 96
     2016-09-11 06:53:50   state           cmd_2
     2016-09-10 23:00:39   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'lichtsens','Indikator','(-?\d+(\.\d+)?)','',AttrVal($hash->{NAME},'notexist',undef)) < ReadingValDoIf($hash,'lichtanteil','state','','',AttrVal($hash->{NAME},'notexist',undef))
   Devices:
     0           lichtsens lichtanteil
     all         lichtsens lichtanteil
   Do:
     0:
       0          set EG_wz_EckeLicht on
       1          set LS scene 01
       2          set LS scene 02
       3          set LS scene 01
       4          set LS scene 02
       5          set LS scene Off
     1:
       0          set LS scene Off
   Helper:
     event      Indikator: 96
     globalinit 1
     last_timer 0
     sleepdevice lichtsens
     sleepsubtimer -1
     sleeptimer -1
     timerdev   lichtsens
     timerevent Indikator: 96
     triggerDev lichtsens
     timerevents:
       Indikator: 96
     timereventsState:
       Indikator: 96
     triggerEvents:
       Indikator: 96
     triggerEventsState:
       Indikator: 96
   Internals:
   Itimer:
   Readings:
     0           lichtsens:Indikator lichtanteil:state
     all         lichtsens:Indikator lichtanteil:state
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   checkReadingEvent 1
   devStateIcon cmd_1:rc_1:disable cmd_2:rc_2:disabledisabled:general_aus@red:initialize initialize:general_an@green:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disableinitialized:general_an@orange:initialize
   icon       light_light_dim_100@yellow
   room       10_Draussen,10_WoZi,99_Licht,99_Steuerung
   wait       301,1,1,3600,3600,3600,3600


Wie man sieht wird der Lichtwechsel über das WAIT Attribut gestalltet.

Jetzt zu meinem Anliegen.

Ich möchte die Zeiten im WAIT dynamisch berechnen.
z.B.: Maximal Lichtwesel sollten 5 oder 6 sein.
Berechnung: Endzeit (alles aus) - Startzeit (Lichschwellwertschalter) / Anz.d. Lichtwechsel = Laufzeit für ein Lichtwechsel (WAIT) Attribut.

Wie kann man einfach, die Zeiten für das Wait berechnen und ins WAIT schreiben ?

Grüß0e und danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

sash.sc

Das heisst, die Berechnung der Pausenintervalle im WAIT können dort direkt gemacht werden ?!?!

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

igami

Zitat von: sash.sc am 11 September 2016, 17:22:56
Das heisst, die Berechnung der Pausenintervalle im WAIT können dort direkt gemacht werden ?!?!
Hast du dir den Abschnitt durchgelesen? Dann kannst du dir die Frage selbst beantworten. Im zweifelsfall einfach mal testen. Wenn es nicht klappt, mal einen Blick in die Logs werfen oder das error Reading vom DOIF angucken.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

sash.sc

Hallo zusammen.

Nachdem der Lichtwechsel jetzt eine Zeit lang lief, musste ich feststellen, dass morgens immer noch eine der Lampen leuchtet.
Hier erstmal das DOIF


Internals:
   DEF        ([lichtsens:Indikator] < [lichtanteil]) (set LS scene 01) (set LS scene 02) (set LS scene 01)  (set LS scene 02)(set LS scene 01)  (set LS scene 02) (set LS scene Off) DOELSE (set LS scene Off)
   NAME       LW1
   NR         205
   NTFY_ORDER 50-LW1
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-10-28 15:46:11   Device          lichtsens
     2016-10-28 08:29:20   cmd             2
     2016-10-28 08:29:20   cmd_event       lichtsens
     2016-10-28 08:29:20   cmd_nr          2
     2016-10-26 07:12:10   e_lichtanteil_STATE 27
     2016-10-28 15:46:11   e_lichtsens_Indikator 64
     2016-10-26 19:26:07   mode            enable
     2016-10-28 08:29:20   state           cmd_2
     2016-10-27 22:47:05   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'lichtsens','Indikator','','',AttrVal($hash->{NAME},'notexist',undef)) < InternalDoIf($hash,'lichtanteil','STATE','','',AttrVal($hash->{NAME},'notexist',undef))
   Devices:
     0           lichtsens lichtanteil
     all         lichtsens lichtanteil
   Do:
     0:
       0          set LS scene 01
       1          set LS scene 02
       2          set LS scene 01
       3          set LS scene 02
       4          set LS scene 01
       5          set LS scene 02
       6          set LS scene Off
     1:
       0          set LS scene Off
   Helper:
     event      Indikator: 64
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   lichtsens
     timerevent Indikator: 64
     triggerDev lichtsens
     timerevents:
       Indikator: 64
     timereventsState:
       Indikator: 64
     triggerEvents:
       Indikator: 64
     triggerEventsState:
       Indikator: 64
   Internals:
     0           lichtanteil:STATE
     all         lichtanteil:STATE
   Itimer:
   Readings:
     0           lichtsens:Indikator
     all         lichtsens:Indikator
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   devStateIcon cmd_2:rc_2:disable disabled:general_aus@red:initialize initialize:general_an@lime:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disable initialized:general_an@orange:initialize
   icon       light_light_dim_100@yellow
   room       10_Draussen
   wait       360,3600,3600,3600,3600,3600,3600


Hatte es wenig abgeändert gegenüber am Anfang.
Habe auch mal ein Log zu dem DOIF angelegt.
Dort zeigt sich, dass die Befehle nach dem WAIT nicht mehr erreicht bzw. geschaltet werden.


2016-10-28_08:29:20.342 LW1 cmd_2
2016-10-28_08:29:20.342 LW1 cmd_event: lichtsens
2016-10-28_08:29:20.342 LW1 cmd: 2
2016-10-28_08:29:20.342 LW1 cmd_nr: 2
2016-10-27_22:08:54.591 LW1 wait_timer: 27.10.2016 23:08:54 cmd_1_6 lichtsens
2016-10-27_22:08:54.565 LW1 cmd_1_5
2016-10-27_22:08:54.565 LW1 cmd_event: lichtsens
2016-10-27_22:08:54.565 LW1 cmd: 1.5
2016-10-27_22:08:54.565 LW1 cmd_seqnr: 5
2016-10-27_22:08:54.565 LW1 cmd_nr: 1
2016-10-27_22:08:54.535 LW1 wait_timer: no timer
2016-10-27_21:08:54.533 LW1 wait_timer: 27.10.2016 22:08:54 cmd_1_5 lichtsens
2016-10-27_21:08:54.511 LW1 cmd_1_4
2016-10-27_21:08:54.511 LW1 cmd_event: lichtsens
2016-10-27_21:08:54.511 LW1 cmd: 1.4
2016-10-27_21:08:54.511 LW1 cmd_seqnr: 4
2016-10-27_21:08:54.511 LW1 cmd_nr: 1
2016-10-27_21:08:54.478 LW1 wait_timer: no timer
2016-10-27_20:08:54.455 LW1 wait_timer: 27.10.2016 21:08:54 cmd_1_4 lichtsens
2016-10-27_20:08:54.438 LW1 cmd_1_3
2016-10-27_20:08:54.438 LW1 cmd_event: lichtsens
2016-10-27_20:08:54.438 LW1 cmd: 1.3
2016-10-27_20:08:54.438 LW1 cmd_seqnr: 3
2016-10-27_20:08:54.438 LW1 cmd_nr: 1
2016-10-27_20:08:54.413 LW1 wait_timer: no timer
2016-10-27_19:08:54.410 LW1 wait_timer: 27.10.2016 20:08:54 cmd_1_3 lichtsens
2016-10-27_19:08:54.392 LW1 cmd_1_2
2016-10-27_19:08:54.392 LW1 cmd_event: lichtsens
2016-10-27_19:08:54.392 LW1 cmd: 1.2
2016-10-27_19:08:54.392 LW1 cmd_seqnr: 2
2016-10-27_19:08:54.392 LW1 cmd_nr: 1
2016-10-27_19:08:54.363 LW1 wait_timer: no timer
2016-10-27_18:08:54.360 LW1 wait_timer: 27.10.2016 19:08:54 cmd_1_2 lichtsens
2016-10-27_18:08:54.343 LW1 cmd_1_1
2016-10-27_18:08:54.343 LW1 cmd_event: lichtsens
2016-10-27_18:08:54.343 LW1 cmd: 1.1
2016-10-27_18:08:54.343 LW1 cmd_seqnr: 1
2016-10-27_18:08:54.343 LW1 cmd_nr: 1
2016-10-27_18:08:54.312 LW1 wait_timer: no timer
2016-10-27_18:02:54.305 LW1 wait_timer: 27.10.2016 18:08:54 cmd_1_1 lichtsens



Ich kann im Moment nicht nachvollziehen, warum zum Schluß nicht ausgeschaltet wird.

Danke für eure Hilfe

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 28 Oktober 2016, 15:51:09

Hatte es wenig abgeändert gegenüber am Anfang.
Habe auch mal ein Log zu dem DOIF angelegt.
Dort zeigt sich, dass die Befehle nach dem WAIT nicht mehr erreicht bzw. geschaltet werden.

Ich kann im Moment nicht nachvollziehen, warum zum Schluß nicht ausgeschaltet wird.

Ich habe bei mir gerade 7 Befehle im Sekundentakt schalten lassen. Alle werden ausgeführt.

Teste es mal mit kurzen Abständen z. B. eine Sekunde.

Gruß

Damian

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

sash.sc

Habe das gleiche doif mit sechs Minuten im wait getestet. Hat alle befehle bis zum LS off durchgeschaltet.

Warum geht das nicht mit 3600 im wait Attribut? Evtl. Tagübergreifend?

oder hast eine andere Vermutung?

Gruß Sascha

Von mobil gesendet daher kurze Antwort

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 28 Oktober 2016, 21:02:05
Habe das gleiche doif mit sechs Minuten im wait getestet. Hat alle befehle bis zum LS off durchgeschaltet.

Warum geht das nicht mit 3600 im wait Attribut? Evtl. Tagübergreifend?

oder hast eine andere Vermutung?

Gruß Sascha

Von mobil gesendet daher kurze Antwort

Grundsätzlich wird ja die Kette unterbrochen, wenn ein anderer Zweig ausgeführt wird, hier z. B. DOELSE.

Eigentlich kann ich mir nicht vorstellen, dass über Mitternacht die Timer nicht mehr funktionieren, dann wäre es ein fhem.pl-Problem.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

Werde es mit den 3600 Sekunden nochmal laufen lassen.

Und dann schauen wa ma.  ;)

Von mobil gesendet daher kurze Antwort

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

Hallo zusammen.

Jetzt ist es wieder soweit. Das vorran gestellte DOIF wird nicht mehr aktualisiert. Das DOIF ist nach einem WAIT Befehl "stehen" geblieben.


2016-11-04_17:58:10.087 LW1 wait_timer: 04.11.2016 18:58:10 cmd_1_3 lichtsens
2016-11-04_17:58:10.070 LW1 cmd_1_2
2016-11-04_17:58:10.070 LW1 cmd_event: lichtsens
2016-11-04_17:58:10.070 LW1 cmd: 1.2
2016-11-04_17:58:10.070 LW1 cmd_seqnr: 2
2016-11-04_17:58:10.070 LW1 cmd_nr: 1
2016-11-04_17:58:10.045 LW1 wait_timer: no timer
2016-11-04_16:58:10.043 LW1 wait_timer: 04.11.2016 17:58:10 cmd_1_2 lichtsens
2016-11-04_16:58:10.024 LW1 cmd_1_1
2016-11-04_16:58:10.024 LW1 cmd_event: lichtsens
2016-11-04_16:58:10.024 LW1 cmd: 1.1
2016-11-04_16:58:10.024 LW1 cmd_seqnr: 1
2016-11-04_16:58:10.024 LW1 cmd_nr: 1
2016-11-04_16:58:09.990 LW1 wait_timer: no timer
2016-11-04_16:56:09.983 LW1 wait_timer: 04.11.2016 16:58:09 cmd_1_1 lichtsens


Kann es sein, dass das DOIF nicht mehr fortgeführt wird, wenn einer der Aktoren (innerhalb der Lightscene) manuell betätigt wird ?
Dies habe ich geta, da der Aktor zwar angesteuert wurde, aber das Signal unter gegangen ist und der Aktor nicht geschaltet hat.
Daher habe ich den Aktor manuell geschaltet und die DOIF Timer wurden über WAIT nicht mehr aktualisiert.

Besteht die Möglichkeit, das DOIF wieder an der gleichen Stellen weiter laufen zu lassen ?
Wie die Pause Taste an einem Player ?

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 04 November 2016, 19:40:46
Hallo zusammen.

Jetzt ist es wieder soweit. Das vorran gestellte DOIF wird nicht mehr aktualisiert. Das DOIF ist nach einem WAIT Befehl "stehen" geblieben.


2016-11-04_17:58:10.087 LW1 wait_timer: 04.11.2016 18:58:10 cmd_1_3 lichtsens
2016-11-04_17:58:10.070 LW1 cmd_1_2
2016-11-04_17:58:10.070 LW1 cmd_event: lichtsens
2016-11-04_17:58:10.070 LW1 cmd: 1.2
2016-11-04_17:58:10.070 LW1 cmd_seqnr: 2
2016-11-04_17:58:10.070 LW1 cmd_nr: 1
2016-11-04_17:58:10.045 LW1 wait_timer: no timer
2016-11-04_16:58:10.043 LW1 wait_timer: 04.11.2016 17:58:10 cmd_1_2 lichtsens
2016-11-04_16:58:10.024 LW1 cmd_1_1
2016-11-04_16:58:10.024 LW1 cmd_event: lichtsens
2016-11-04_16:58:10.024 LW1 cmd: 1.1
2016-11-04_16:58:10.024 LW1 cmd_seqnr: 1
2016-11-04_16:58:10.024 LW1 cmd_nr: 1
2016-11-04_16:58:09.990 LW1 wait_timer: no timer
2016-11-04_16:56:09.983 LW1 wait_timer: 04.11.2016 16:58:09 cmd_1_1 lichtsens


Kann es sein, dass das DOIF nicht mehr fortgeführt wird, wenn einer der Aktoren (innerhalb der Lightscene) manuell betätigt wird ?
Dies habe ich geta, da der Aktor zwar angesteuert wurde, aber das Signal unter gegangen ist und der Aktor nicht geschaltet hat.
Daher habe ich den Aktor manuell geschaltet und die DOIF Timer wurden über WAIT nicht mehr aktualisiert.

Besteht die Möglichkeit, das DOIF wieder an der gleichen Stellen weiter laufen zu lassen ?
Wie die Pause Taste an einem Player ?

Gruß und Danke
Sascha

Poste mal List von diesem Zustand.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

#11
Habe das doif wieder neu gestartet.  Sieht schlecht aus!
Oder das list von doif?

Internals:
   DEF        ([lichtsens:Indikator] < [lichtanteil]) (set LS scene 01) (set LS scene 02) (set LS scene 01)  (set LS scene 02)(set LS scene 01)  (set LS scene 02) (set LS scene Off)
   NAME       LW1
   NR         203
   NTFY_ORDER 50-LW1
   STATE      cmd_1_1
   TYPE       DOIF
   Readings:
     2016-11-04 21:32:29   Device          lichtsens
     2016-11-04 20:54:21   cmd             1.1
     2016-11-04 20:54:21   cmd_event       lichtsens
     2016-11-04 20:54:21   cmd_nr          1
     2016-11-04 20:54:21   cmd_seqnr       1
     2016-10-31 18:21:46   e_lichtanteil_STATE 27
     2016-11-04 21:32:29   e_lichtsens_Indikator 0
     2016-11-04 20:54:21   state           cmd_1_1
     2016-11-04 20:54:21   wait_timer      04.11.2016 21:54:21 cmd_1_2 lichtsens
   Condition:
     0          ReadingValDoIf($hash,'lichtsens','Indikator','','',AttrVal($hash->{NAME},'notexist',undef)) < InternalDoIf($hash,'lichtanteil','STATE','','',AttrVal($hash->{NAME},'notexist',undef))
   Devices:
     0           lichtsens lichtanteil
     all         lichtsens lichtanteil
   Do:
     0:
       0          set LS scene 01
       1          set LS scene 02
       2          set LS scene 01
       3          set LS scene 02
       4          set LS scene 01
       5          set LS scene 02
       6          set LS scene Off
   Helper:
     event      Indikator: 0
     globalinit 1
     last_timer 0
     sleepdevice lichtsens
     sleepsubtimer 1
     sleeptimer 0
     timerdev   lichtsens
     timerevent Indikator: 0
     triggerDev lichtsens
     timerevents:
       Indikator: 0
     timereventsState:
       Indikator: 0
     triggerEvents:
       Indikator: 0
     triggerEventsState:
       Indikator: 0
   Internals:
     0           lichtanteil:STATE
     all         lichtanteil:STATE
   Itimer:
   Readings:
     0           lichtsens:Indikator
     all         lichtsens:Indikator
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   devStateIcon cmd_2:rc_2:disable disabled:general_aus@red:initialize initialize:general_an@lime:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disable initialized:general_an@orange:initialize
   icon       light_light_dim_100@yellow
   room       10_Draussen
   wait       120,3600,3600,3600,3600,3600,3600


Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 04 November 2016, 21:01:46
Habe das doif wieder neu gestartet.  Sieht schlecht aus!
Oder das list von doif?


Ich brauche ein list des doifs von dem Zustand, wo die Kette unterbrochen wurde.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

Guten morgen Damian.

Habe das doif heute morgen mit verkürzten zeigen als WAIT  Attribut durchlaufen lassen. Da hat alles funktioniert! Habe auch manuell die Lampen durchgeschaltet.
Werde es heute Abend mit den Standart Zeiten laufen lassen.
Habe den Eindruck, dass die grossen Zeiten im wait hin und wieder Probleme machen. Bei kurzen Zeiten anscheinend nicht!

Werde mal morgen oder heute abend schreiben.

Gruß Sascha

Von mobil gesendet daher kurze Antwort
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 05 November 2016, 10:28:47
Guten morgen Damian.

Habe das doif heute morgen mit verkürzten zeigen als WAIT  Attribut durchlaufen lassen. Da hat alles funktioniert! Habe auch manuell die Lampen durchgeschaltet.
Werde es heute Abend mit den Standart Zeiten laufen lassen.
Habe den Eindruck, dass die grossen Zeiten im wait hin und wieder Probleme machen. Bei kurzen Zeiten anscheinend nicht!

Werde mal morgen oder heute abend schreiben.

Gruß Sascha

Von mobil gesendet daher kurze Antwort

Ich gehe davon aus, dass der cmd_2 Zustand die Kette unterbricht (was normal wäre). Je länger die Wait-Zeiten, desto wahrscheinlicher, dass es passiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF