einfaches DOIF wird nicht ausgeführt?

Begonnen von Steffen, 25 April 2020, 06:20:02

Vorheriges Thema - Nächstes Thema

Frank_Huber

mit 10Sek kann ich dein DOIF abfeuern. aber eben nur nach mehr als 10Sek jeweils.

Bin mir nicht ganz sicher, aber es kann auch sein dass die cmdpause erst losläuft wenn der Zweig abgearbeitet ist.
Da du aber 5 Minuten Pause wür den zweiten Wasserbefehl hast kommen die noch oben drauf.

fast-eddy

Zitat von: Frank_Huber am 27 April 2020, 15:44:33
mit 10Sek kann ich dein DOIF abfeuern. aber eben nur nach mehr als 10Sek jeweils.

...hmmm!?
Jetzt verwirrst Du mich etwas. Bei mir funktionieren nur max 9 Sekunden - ab 10 Sekunden tut sich gar nix mehr

ZitatBin mir nicht ganz sicher, aber es kann auch sein dass die cmdpause erst losläuft wenn der Zweig abgearbeitet ist.
Da du aber 5 Minuten Pause wür den zweiten Wasserbefehl hast kommen die noch oben drauf.

Das setzen von cmdpause sollte sich m.E. nur auf die ausführung des nächsten Triggers  auswirken. Das manuelle Auslösen
sollte dagegen alle Conditions ignorieren - so habe ich zumindest die commandref verstanden.


Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Frank_Huber

Das wait Attribut gehört zum Ausführungsteil.

ohne das wait Attribut geht dein DOIF auch mit 100Sek in cmdpause.

fast-eddy

???
Das verstehe ich jetzt nicht!

Die 1. Frage ist doch warum lösen weder cmd_1 noch cmd_2 aus, wenn bei cmdpause x:y:0:0 mit x|y >9 ?
Wenn wait hier reinpfuscht würden ja nur 1.3 bzw 2.3 gar nicht oder verzögert auslösen

Und 2. was hat sich geändert, dass gleichzeitig mehrere DOIF mit dieser Konstruktion ohne Änderung
bei mir nicht mehr funktionieren?

Ich beharre ja nicht drauf, dass meine bisherige Konstruktion korrekt war oder um es mit Ottos Worten zu
formulieren
ZitatEs besteht kein Anspruch auf die Beibehaltung von Fehlern.
;)
Aber um es zu korrigieren, muss ich erst verstehen wo mein Fehler liegt und was ich anderes machen muss?
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Frank_Huber

Wenn ich das jetzt richtig sehe läuft die Zeit der cmdpause los nachdem der ganze Zweig abgearbeitet ist.
Und das ist er erst nachdem cmd_x_3 ausgeführt wurde nach den 5 Minuten.

fast-eddy

Zitat von: Frank_Huber am 27 April 2020, 16:38:51
Wenn ich das jetzt richtig sehe läuft die Zeit der cmdpause los nachdem der ganze Zweig abgearbeitet ist.
Und das ist er erst nachdem cmd_x_3 ausgeführt wurde nach den 5 Minuten.

Soweit kann ich Dir folgen. Aber dazu muss das DOIF halt erst mal getriggert werden was es nicht tut (weder manuell noch via sunset_el) wenn die Verzögerung bei cmdpause > 9 Sekunden ist :-\
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Otto123

Ich bin mit euren Tests nicht mitgekommen.  ::)
Zwei Zitate aus der Doku:
Bei wait steht in der Doku:
ZitatDie Verzögerungszeit bezieht sich immer auf den vorherigen Befehl.

Bei cmdpause weiß ich nicht, ob es auch für manuell auslösen wirkt:
ZitatZwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderung   back

Mit dem Attribut cmdpause <Sekunden für cmd_1>:<Sekunden für cmd_2>:... wird die Zeitspanne in Sekunden angegeben für eine Zwangspause seit der letzten Zustandsänderung. In der angegebenen Zeitspanne wird ein Kommando nicht ausgeführt, auch wenn die dazugehörige Bedingung wahr wird.

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

fast-eddy

Hallo Otto,

das Problem ist ja nicht, dass cmdpause nicht greift, dh. nicht pausiert wird, sondern dass die Zweige des DOIF überhaupt nicht getriggert werden (weder manuell noch zeitgesteuert) bei denen im im Attribut cmdpause Werte  >9 stehen.

Das Problem ist bei mir in mehreren DOIF reproduierbar und trat vor dem ersten Update nach langer Zeit, das ich vor zwei Wochen durchgeführt habe definitiv nicht auf. Hat das komplette letzte Jahr zuverlässig funktioniert.

Hast Du eine Idee was die Ursache sein könnte ? Hat sich da was am Wertebereich der Parameter bei cmdpause vereändert? Oder habe ich da etwa einen alten Syntaxfehler eingebaut, der sich erst jetzt auswirkt?

Bin gespannt auf dein Feedback...
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

amenomade

#38
Wie oft melden sich die andere Sensoren? NIEDERSCHLAG, GARTEN, garten_SWC_02 und 03?

Und wie stellst Du fest, dass "die Zweige des DOIF überhaupt nicht getriggert werden"? Wartest Du jedes Mal auf {sunrise} ?

Ich würde gerne ein "list" des DOIFs morgen früh sehen (nach sunrise)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Dass cmdpause > 9 nicht funktioniert, kann ich nicht nachvollziehen.

Gegenbeweis:

defmod di_test DOIF ([FS])
attr di_test cmdpause 10
attr di_test do always


FS ist ein Dummy, testen kann man es mit trigger FS.

Nach 10 Sekunden wird cmd_1 immer ausgeführt, wenn das Modul angetriggert wird.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

baerm

Guten Morgen,
mein gestern korrigiertes DOIF, dass einmal durchgelaufen ist, funktionierte heute Früh um 07:30 wieder nicht. Habs um 08:46 nochmal versucht und ist wieder nicht gelaufen. Was stimmt hier nicht?

Internals:
   DEF        ([[Startzeit_BW1]] and [Bewaesserung1] eq "an") (set KNX_0503002 on, set MessageTxt Bewaesserung_1 Start )
DOELSEIF ([([Startzeit_BW1] + [0:20])] and [Bewaesserung1] eq "an" and [KNX_0503011:state] eq "on") (set KNX_0503001 on, set KNX_0503002 off)
DOELSEIF ([([Startzeit_BW1] + [0:30])] and [Bewaesserung1] eq "an" and [KNX_0503011:state] eq "on") (set KNX_0503003 on, set KNX_0503001 off)
DOELSEIF ([([Startzeit_BW1] + [01:00])] and [Bewaesserung1] eq "an" and [KNX_0503011:state] eq "on") (set KNX_0503000 on, set KNX_0503003 off)
DOELSEIF ([([Startzeit_BW1] + [01:50])] and [Bewaesserung1] eq "an" and [KNX_0503011:state] eq "on") (set KNX_0503000 off, set KNX_0503011 off, set MessageTxt Bewaesserung_1 Ende )
   FUUID      5e9f434a-f33f-e2c0-1dd9-285490e95a58c7f6
   FVERSION   98_DOIF.pm:0.212240/2020-02-18
   MODEL      FHEM
   NAME       di_Bewaesserung_BW1
   NOTIFYDEV  KNX_0503011,global,Startzeit_BW1,Bewaesserung1
   NR         904
   NTFY_ORDER 50-di_Bewaesserung_BW1
   STATE      initialized
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-04-28 08:47:43   cmd             0
     2020-04-28 08:47:43   mode            enabled
     2020-04-28 08:47:43   state           initialized
     2020-04-28 08:47:43   timer_01_c01    29.04.2020 08:46:00
     2020-04-28 08:47:43   timer_02_c02    28.04.2020 09:06:00
     2020-04-28 08:47:43   timer_03_c03    28.04.2020 09:16:00
     2020-04-28 08:47:43   timer_04_c04    28.04.2020 09:46:00
     2020-04-28 08:47:43   timer_05_c05    28.04.2020 10:36:00
   Regex:
     accu:
     cond:
       Bewaesserung1:
         0:
           &STATE     ^Bewaesserung1$
         1:
           &STATE     ^Bewaesserung1$
         2:
           &STATE     ^Bewaesserung1$
         3:
           &STATE     ^Bewaesserung1$
         4:
           &STATE     ^Bewaesserung1$
       KNX_0503011:
         1:
           state      ^KNX_0503011$:^state:
         2:
           state      ^KNX_0503011$:^state:
         3:
           state      ^KNX_0503011$:^state:
         4:
           state      ^KNX_0503011$:^state:
     itimer:
       Startzeit_BW1:
         itimer:
           &STATE     ^Startzeit_BW1$
   attr:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an"
     1          ::DOIF_time_once($hash,1,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     2          ::DOIF_time_once($hash,2,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     3          ::DOIF_time_once($hash,3,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     4          ::DOIF_time_once($hash,4,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
   days:
   do:
     0:
       0          set KNX_0503002 on, set MessageTxt Bewaesserung_1 Start
     1:
       0          set KNX_0503001 on, set KNX_0503002 off
     2:
       0          set KNX_0503003 on, set KNX_0503001 off
     3:
       0          set KNX_0503000 on, set KNX_0503003 off
     4:
       0          set KNX_0503000 off, set KNX_0503011 off, set MessageTxt Bewaesserung_1 Ende
     5:
   helper:
     DEVFILTER  ^global$|^KNX_0503011$|^Bewaesserung1$|^Startzeit_BW1$
     NOTIFYDEV  global|KNX_0503011|Bewaesserung1|Startzeit_BW1
     globalinit 1
     last_timer 5
     sleeptimer -1
   internals:
     all         Bewaesserung1:STATE
   intervalfunc:
   localtime:
     0          1588142760
     1          1588057560
     2          1588058160
     3          1588059960
     4          1588062960
   readings:
     all         KNX_0503011:state
   realtime:
     0          08:46:00
     1          09:06:00
     2          09:16:00
     3          09:46:00
     4          10:36:00
   time:
     0          [Startzeit_BW1]
     1          ([Startzeit_BW1]+[0:20])
     2          ([Startzeit_BW1]+[0:30])
     3          ([Startzeit_BW1]+[01:00])
     4          ([Startzeit_BW1]+[01:50])
   timeCond:
     0          0
     1          1
     2          2
     3          3
     4          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0
     1           1
     2           2
     3           3
     4           4
   triggertime:
     1588057560:
       localtime  1588057560
       hash:
     1588058160:
       localtime  1588058160
       hash:
     1588059960:
       localtime  1588059960
       hash:
     1588062960:
       localtime  1588062960
       hash:
     1588142760:
       localtime  1588142760
       hash:
   uiState:
   uiTable:
Attributes:
   room       AUSSEN,KG->Maschinenraum

fast-eddy

@ amenomade
Danke für Deine Antwort.

Zitat von: amenomade am 28 April 2020, 01:23:37
Wie oft melden sich die andere Sensoren? NIEDERSCHLAG, GARTEN, garten_SWC_02 und 03?
NIEDERSCHLAG ist ein Z-Wave Device und ziemlich faul - Meldet sich wenn es nicht regnet u.U. nur alle 24 Stunden
GARTEN und garten_SWC_x sind Homatic Geräte die sich i.d.R so alle 3 Minuten melden. Die Werte angezeigten sind auch plausibel...

ZitatUnd wie stellst Du fest, dass "die Zweige des DOIF überhaupt nicht getriggert werden"? Wartest Du jedes Mal auf {sunrise} ?

Indem ich set cmd_x absetze oder wie vermutet auf {sunrise} warte (da steh´ ich auf dem Schlauch wie ich das manuell triggern könnte   :-[  )

ZitatIch würde gerne ein "list" des DOIFs morgen früh sehen (nach sunrise)

Habe Deine Antwort gerade erst gesehen und in der Zwischenzeit war ich weiter am testen. Daher ist das "list" jetzt wohl leider nicht mehr wirklich aussagekräftig - werde gleich morgen früh eines "jungfräuliches" erstellen.

Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

fast-eddy

@Damian
Auch Dir danke für Deine Unterstützung!

ZitatDass cmdpause > 9 nicht funktioniert, kann ich nicht nachvollziehen.

...hmmm?
Vielleicht liegt es dann an meiner Formatierung? Ich habe ja cmdpause für mehrere commands gesetzt:
attr controller_BEWAESSERUNG_GARTEN cmdpause 86400:86400:0:0:0

Habe gestern Abend zum Testen mal
attr controller_BEWAESSERUNG_GARTEN cmdpause 0:0:0:0:0 gesetzt und schon läuft alles wie es soll  ?!



Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Otto123

#43
@Matthias Du warst mit deinem Versuch aber zu spät :)
Zitat2020-04-28 08:47:43   timer_01_c01    29.04.2020 08:46:00
Damit wird der test den Du heute morgen wolltest erst morgen :)

Warum es heute morgen nicht ging kann ich nicht sagen. Es wäre ev. gut gewesen ohne Veränderung erstmal ein list zu machen, da sieht man eventuell woran es gelegen hat.

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

baerm

Hallo Otto,
Das list habe ich leider erst nach einer Änderung erstellt. Ich werde morgen den selben Test machen und das List vorher und nachher erstellen.
lg,
Matthias