einfaches DOIF wird nicht ausgeführt?

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

Vorheriges Thema - Nächstes Thema

Steffen

Guten Morgen,

ich bin ein wenig ratlos, denn ich wollte jetzt mein DOIF was ich so schon im letzten Jahr aktiv hatte für meine Gartenbewässerung wieder aktivieren.

Doch leider reagiert das DOIF nicht mehr so wie letztes Jahr wo ich es über den Winter deaktiviert hatte.


(([05:00-05:30]) and ([WetterFalkensee:fc0_chOfRain06] < 50) and ([WetterFalkensee:fc0_chOfRain09] < 50) and ([WetterFalkensee:fc0_chOfRain12] < 50) and ([SensorRasen:moisture] < 23))
(set RegnerTeichSeite on)
DOELSEIF (([19:00-20:00]) and ([WetterFalkensee:fc0_chOfRain21] < 60 ) and ([SensorRasen:moisture] < 23 ))
(set RegnerTeichSeite on)
DOELSE (set RegnerTeichSeite off)


das was ich raus gefunden habe ist das "[SensorRasen:moisture]" was damit zu tun hat, denn wenn ich das so

(([06:05-06:30]) and ([SensorRasen:moisture] < 22))(set Test on)
teste, dann wird ein cmd 1 auch nicht ausgeführt.


Internals:
   BTMAC      C4:7C:8D:6A:D5:E3
   DEF        C4:7C:8D:6A:D5:E3
   FUUID      5cfe32b9-f33f-2a44-7b21-5e2d5cd34641a4cc
   FVERSION   74_XiaomiBTLESens.pm:v2.8.2-s20924/2020-01-10
   INTERVAL   300
   NAME       SensorRasen
   NOTIFYDEV  global,SensorRasen
   NR         60
   NTFY_ORDER 50-SensorRasen
   STATE      active
   TYPE       XiaomiBTLESens
   VERSION    v2.8.2
   loglevel   4
   READINGS:
     2020-04-24 21:16:12   batteryPercent  99
     2020-04-24 21:16:12   batteryState    ok
     2020-04-25 06:08:30   fertility       191
     2020-04-24 21:16:12   firmware        3.2.1
     2020-04-24 19:58:48   lastGattError   charWrite faild
     2020-04-25 06:08:30   lux             396
     2020-04-25 06:08:30   moisture        30
     2020-04-25 06:08:30   state           active
     2020-04-25 06:08:30   temperature     10
   helper:
     CallBattery 0
     CallSensDataCounter 0
     updateTimeCallBattery 1587755772.69462
     updateTimestampCallBattery 2020-04-24 21:16:12
Attributes:
   interval   1200
   model      flowerSens
   room       Garten,XiaomiBTLESens
   sshHost    pi@192.168.2.141


Das ist doch eigentlich total Simple aber das DOIF reagiert einfach nicht?!?


Gisbert

Hallo Steffen,

bin auch ratlos, deshalb müsste wohl ein Profi ran. Was mir aber auffällt - jedenfalls würde ich es anders machen -, ist die doppelte Klammerung in den Bedingungsteilen. Hier reicht eigentlich eine einzige Klammer.

Kannst du auch ein list des DOIFs anhängen? Wenn nicht das Attribut do always gesetzt wurde, wird die Ausführung nur einmal durchgeführt. Vielleicht könnte das die Ursache sein, warum es dann später nicht mehr klappt.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

sash.sc

Ich würde sich die doppelte klammerung raus nehmen.

Do always brauche da nicht gesetzt zu werden, da das doif durch jede Aktualisierung des Wetter Berichtes getriggert wird.

Gesendet von meinem MI 9 mit Tapatalk

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

Otto123

#3
Zitat(([06:05-06:30]) and ([SensorRasen:moisture] < 22))(set Test on)
teste, dann wird ein cmd 1 auch nicht ausgeführt.

Wenn moisture derzeit 30 ist, ist das Verhalten doch ok?

BTW: Es ist zwar trocken derzeit, aber am morgen Luftfeuchte unter 22? Da gibt es auch keinen Rasen mehr. :o

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

Steffen

Vielen Dank für eure Hinweise, doch so wie der Code oben steht hat er letzten Sommer durchgehend funktioniert.
Dann über Winter auf disable gesetzt und dieses Jahr will der Code nicht mehr.
Ich hatte jede Version probiert, dann gemerkt das es am SensorRasen kein cmd gibt.
Das ist ein Boden Sensor der die Feuchtigkeit im Boden messen tut und bei unter 22% sollen die Regner angehen was auch letzten Sommer so geklappt hat. Irgendwas muss sich in Fhem oder DOIF verändert haben?!

Otto123

Aber so wie es aktuell steht ist die Bedingung: ([SensorRasen:moisture] < 22) -> (30 < 22) -> falsch -> keine Ausführung.

Um es zu testen solltest Du die Schwelle hochsetzen.
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

Frank_Huber



Zitat von: Gisbert am 25 April 2020, 07:06:18
Kannst du auch ein list des DOIFs anhängen?

Und bitte den list noch liefern. Im "Fehlerzustand" am besten.

Gesendet von meinem S68Pro mit Tapatalk


fast-eddy

#7
Hallo zusammen,

anscheinend bin ich nicht der einzige mit diesem Problem - Habe schon angefangen an meinem Verstand zu zweifeln ;-)

Auch bei mir wird ein DOIF, mit dem ich ebenfalls seit längerem meine Gartenbewässerung erfolgreich steuere, plötzlich
nicht mehr ausgeführt. Auch bei mir war das DOIF über den Winter deaktiviert, hat aber nach re-initialisierung vor zwei
Wochen zumindest mal kurz funktioniert, dann nach einem Update aber auch seinen Dienst eingestellt. :-|

Gab es da evtl. eine Syntaxänderung, die ich nicht mitbekommen habe und die jetzt ggf. Ärger macht?

Hier mal ein List meines DOIF

Internals:
   DEF        ([{sunrise("CIVIL")}] and ($month >= 5 and $month <=8) and [NIEDERSCHLAG:statWaterHour72] <= 0.008)
(set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 1 erfüllt. Nächster Start in 48 Sunden!' '' 0 '' )
(set garten_SWC_02 on-for-timer 600)
(set garten_SWC_03 on-for-timer 600)

DOELSEIF ([{sunrise("CIVIL")}] and ($month < 5 or $month > 8) and [NIEDERSCHLAG:statWaterHour72] <= 0.004)
(set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 2 erfüllt. Nächster Start in 48 Sunden!' '' 0 '' )
(set garten_SWC_02 on-for-timer 600)
(set garten_SWC_03 on-for-timer 600)

DOELSEIF ([{sunrise("CIVIL")}] and [NIEDERSCHLAG:statWaterHour24] <= 0.002 and ([GARTEN:statTemperatureDayAvg] >= 22.0 or [GARTEN:statTemperatureDayMax] >= 28))
(set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 3 erfüllt.' '' 0 '' )
(set garten_SWC_02 on-for-timer 600)
(set garten_SWC_03 on-for-timer 600)

DOELSEIF ([NIEDERSCHLAG:basicSet] == 99 and ([garten_SWC_02:state] eq "on" or [garten_SWC_03:state] eq "on"))
(set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Beendet wegen Regen!' '' 0 '' )
(set garten_SWC_02 off, set garten_SWC_03 off)

DOELSE

   FUUID      5d388d65-f33f-d5e6-45eb-952d6ef7b2b122b4
   MODEL      FHEM
   NAME       controller_BEWAESSERUNG_GARTEN
   NOTIFYDEV  global,garten_SWC_03,garten_SWC_02,NIEDERSCHLAG,GARTEN
   NR         493
   NTFY_ORDER 50-controller_BEWAESSERUNG_GARTEN
   STATE      cmd_5
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-04-25 23:08:08   Device          GARTEN
     2020-04-25 23:08:08   cmd             5
     2020-04-25 23:08:08   cmd_event       GARTEN
     2020-04-25 23:08:08   cmd_nr          5
     2020-04-25 23:08:08   e_GARTEN_statTemperatureDayAvg 19.0
     2020-04-25 23:08:08   e_GARTEN_statTemperatureDayMax 26.2
     2020-04-25 22:59:55   e_NIEDERSCHLAG_statWaterHour24 0.0000
     2020-04-25 22:59:55   e_NIEDERSCHLAG_statWaterHour72 0.0000
     2020-04-25 22:55:38   e_garten_SWC_02_state off
     2020-04-25 22:55:40   e_garten_SWC_03_state off
     2020-04-25 22:51:21   mode            enabled
     2020-04-25 23:08:08   state           cmd_5
     2020-04-25 22:51:21   timer_01_c01    26.04.2020 05:38:18
     2020-04-25 22:51:21   timer_02_c02    26.04.2020 05:38:18
     2020-04-25 22:51:21   timer_03_c03    26.04.2020 05:38:18
     2020-04-25 22:52:29   wait_timer      no timer
   Regex:
     accu:
     cond:
       GARTEN:
         0:
         1:
         2:
           statTemperatureDayAvg ^GARTEN$:^statTemperatureDayAvg:
           statTemperatureDayMax ^GARTEN$:^statTemperatureDayMax:
         3:
       NIEDERSCHLAG:
         0:
           statWaterHour72 ^NIEDERSCHLAG$:^statWaterHour72:
         1:
           statWaterHour72 ^NIEDERSCHLAG$:^statWaterHour72:
         2:
           statWaterHour24 ^NIEDERSCHLAG$:^statWaterHour24:
         3:
           basicSet   ^NIEDERSCHLAG$:^basicSet:
       garten_SWC_02:
         0:
         1:
         2:
         3:
           state      ^garten_SWC_02$:^state:
       garten_SWC_03:
         0:
         1:
         2:
         3:
           state      ^garten_SWC_03$:^state:
   attr:
     cmdState:
     cmdpause:
       86400
       86400
       0
       0
       0
     wait:
       0:
         0
         0
         300
       1:
         0
         0
         300
       2:
         0
         0
         300
       3:
         0
         0
       4:
         0
         0
       5:
         0
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) and ($month >= 5 and $month <=8) and ::ReadingValDoIf($hash,'NIEDERSCHLAG','statWaterHour72') <= 0.008
     1          ::DOIF_time_once($hash,1,$wday) and ($month < 5 or $month > 8) and ::ReadingValDoIf($hash,'NIEDERSCHLAG','statWaterHour72') <= 0.004
     2          ::DOIF_time_once($hash,2,$wday) and ::ReadingValDoIf($hash,'NIEDERSCHLAG','statWaterHour24') <= 0.002 and (::ReadingValDoIf($hash,'GARTEN','statTemperatureDayAvg') >= 22.0 or ::ReadingValDoIf($hash,'GARTEN','statTemperatureDayMax') >= 28)
     3          ::ReadingValDoIf($hash,'NIEDERSCHLAG','basicSet') == 99 and (::ReadingValDoIf($hash,'garten_SWC_02','state') eq "on" or ::ReadingValDoIf($hash,'garten_SWC_03','state') eq "on")
   days:
   do:
     0:
       0          set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 1 erfüllt. Nächster Start in 48 Sunden!' '' 0 ''
       1          set garten_SWC_02 on-for-timer 600
       2          set garten_SWC_03 on-for-timer 600
     1:
       0          set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 2 erfüllt. Nächster Start in 48 Sunden!' '' 0 ''
       1          set garten_SWC_02 on-for-timer 600
       2          set garten_SWC_03 on-for-timer 600
     2:
       0          set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Gestartet: Bedingung 3 erfüllt.' '' 0 ''
       1          set garten_SWC_02 on-for-timer 600
       2          set garten_SWC_03 on-for-timer 600
     3:
       0          set pushmsg msg 'BEWÄSSERUNG GARTEN' 'Beendet wegen Regen!' '' 0 ''
       1          set garten_SWC_02 off, set garten_SWC_03 off
     4:
       0         
   helper:
     DEVFILTER  ^global$|^garten_SWC_03$|^NIEDERSCHLAG$|^garten_SWC_02$|^GARTEN$
     NOTIFYDEV  global|garten_SWC_03|NIEDERSCHLAG|garten_SWC_02|GARTEN
     event      battery: ok,humidity: 43,T: 11.0 H: 43,temperature: 11.0,dewpoint: -1.1,D: -1.1,statTemperatureDayAvg: 19.0,statTemperatureDayMax: 26.2
     globalinit 1
     last_timer 3
     sleepdevice set_cmd_3
     sleepsubtimer 2
     sleeptimer -1
     timerdev   GARTEN
     timerevent battery: ok,humidity: 43,T: 11.0 H: 43,temperature: 11.0,dewpoint: -1.1,D: -1.1,statTemperatureDayAvg: 19.0,statTemperatureDayMax: 26.2
     triggerDev GARTEN
     DOIF_eventa:
       cmd_nr: 5
       cmd: 5
       cmd_event: GARTEN
       cmd_5
     DOIF_eventas:
       cmd_nr: 5
       cmd: 5
       cmd_event: GARTEN
       state: cmd_5
     timerevents:
       battery: ok
       humidity: 43
       T: 11.0 H: 43
       temperature: 11.0
       dewpoint: -1.1
       D: -1.1
       statTemperatureDayAvg: 19.0
       statTemperatureDayMax: 26.2
     timereventsState:
       battery: ok
       humidity: 43
       state: T: 11.0 H: 43
       temperature: 11.0
       dewpoint: -1.1
       D: -1.1
       statTemperatureDayAvg: 19.0
       statTemperatureDayMax: 26.2
     triggerEvents:
       battery: ok
       humidity: 43
       T: 11.0 H: 43
       temperature: 11.0
       dewpoint: -1.1
       D: -1.1
       statTemperatureDayAvg: 19.0
       statTemperatureDayMax: 26.2
     triggerEventsState:
       battery: ok
       humidity: 43
       state: T: 11.0 H: 43
       temperature: 11.0
       dewpoint: -1.1
       D: -1.1
       statTemperatureDayAvg: 19.0
       statTemperatureDayMax: 26.2
   internals:
   intervalfunc:
   localtime:
     0          1587872298
     1          1587872298
     2          1587872298
   readings:
     all         NIEDERSCHLAG:statWaterHour72 NIEDERSCHLAG:statWaterHour24 GARTEN:statTemperatureDayAvg GARTEN:statTemperatureDayMax NIEDERSCHLAG:basicSet garten_SWC_02:state garten_SWC_03:state
   realtime:
     0          05:38:18
     1          05:38:18
     2          05:38:18
   time:
     0          {sunrise("CIVIL")}
     1          {sunrise("CIVIL")}
     2          {sunrise("CIVIL")}
   timeCond:
     0          0
     1          1
     2          2
   timer:
     0          0
     1          0
     2          0
   timers:
     0           0
     1           1
     2           2
   trigger:
   triggertime:
     1587872298:
       localtime  1587872298
       hash:
   uiState:
   uiTable:
Attributes:
   alias      BEWÄSSERUNG GARTEN
   cmdpause   86400:86400:0:0:0
   do         always
   group      Gartensteuerung
   room       STEUERUNG
   timerWithWait 1
   wait       0,0,300:0,0,300:0,0,300:0,0:0,0:0


Habe übrigens ein weiteres DOIF, sehr ähnlich aufgebaut aber sonst völlig unabhängig vom ersten, und das zeigt exakt das gleiche Verhalten. Das sieht für mich schon nach einem systemischen Problem aus. Mit meinen - eingeschränkten - debugging Kenntnissen bin ich zwischenzeitlich am Ende!

P.S. Ein Sache ist mit noch aufgefallen. Villeicht hilft das ja das Problem einzugrenzen.

Ein set NameDOIF cmd_1 oder ein setNameDOIF cmd_2 zeigt KEINE Reaktion ein setNameDOIF cmd_3 aber schon!?

Soweit ich die commandref verstanden habe sollte ein set cmd_x doch alle commands ohne Prüfung der Bedingungen ausführen, oder?

Ich denke ich habe das gleiche oder zumindest sehr ähnliches Problem wie Steffen. Auch bei mir lief alles lange Zeit ohne Probleme
und ohne Änderung dann (nach dem Update) plötzlich nicht mehr.
Hat jemand noch eine Idee was die Ursache sein könnte?

Mein Garten und ich sind für jede Hilfe dankbar.
Grüße,
Ralf

EDIT: Auch das hier hört sich nach dem gleichen Problem an  ???
https://forum.fhem.de/index.php/topic,110455.0.html
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

Hallo Ralf,

ich durchschau es nicht, aber ich würde generell folgendes empfehlen:
Es gibt für jeden Zweig den eindeutigen Trigger Sonnenaufgang - deshalb würde ich jeden anderen Trigger vermeiden. D.h. alle Ausdrücke [device:reading] würde ich ändern und damit nur abfragen [?device:reading]

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

fast-eddy

Hallo Otto,

danke für Deinen Tipp! Wie immer schnell und direkt auf den Punkt :-)

Habe Deinen Vorschlag übernommen und so zumindest etwas mehr Ruhe in mein System bekommen, da nicht jeder neue Sensorwert die DOIF triggert.

Am eigentlichen Problem hat es aber leider nichts verändert - das DOIF startet nach wie vor nicht bei Sonnenaufgang, auch wenn alle anderen Bedingungen erfüllt sind.

Da im ersten und zweiten Zweig des DOIF auch set cmd_1 / cmd_2 nicht funktioniert hatte ich die Conditions and ($month >= 5 and $month <=8) bzw. ($month < 5 or $month > 8) im Verdacht, denn der Rest ist gleich zum dritten Zweig. Aber auch wenn ich die rausnehme ändert sich nix  :-\

Bis zum Update vor zwei Wochen hat das aber noch zuverlässig funktioniert - daher meine Vermutung, dass es zwischenzeitlich eine
Syntax Änderung im DOIF gegegen haben könnte. Ich muss zugeben, dass ich zuvor über sehr lange Zeit (mindestens 6 Monate) keine Updates mehr gefahren habe, da alles perfekt lief und ich aus WAF Überlegungen heraus dachte: "never touch a running system"  ;)

Hat sonst noch jemand eine Eingebung?

Grüße,
Ralf
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

... ich habe die Ursache entdeckt aber noch keine Lösung für das Problem gefunden.

Da ich die Bewässerung über die Niederschlagsmenge steuere, sollen die ersten beide Zweige meines DOIF nach Auslösung 24 Stunden pausieren und erst nach 48 Stunden neu getriggert werden.

Hierzu habe ich folgendes Attribut gesetzt
attr controller_BEWAESSERUNG_GARTEN cmdpause 86400:86400:0:0:0

Wie bereits erwähnt, hat dies über längere Zeit zuverlässig funktioniert. Setze ich das cmdpause Attribut jetzt auf "0" lässt sich das DOIF plötzlich auch wieder im ersten und zweiten Pfad manuell triggern. Soweit ich die commandref verstehe ist das syntaktisch korrekt - oder übersehe ich da was? Geändert habe ich daran aber definitiv nichts!


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|

baerm

Hi,
ich kann nur bestätigen, dass hier DOIFs in FHEM nicht gleich auslösen wie noch vor einiger Zeit. Anders kann ich mir nicht erklären, dass hier im Forum mittlerweile 3-4 Bewässerungs-DOIFs alle zeitgesteuert plötzlich nicht mehr funktionieren. Und das noch dazu bei diesem trockenen Frühling. Meine Variante geht auch nicht mehr. Ich setze die Startzeit über einen Dummy (Startzeit_BW1).

defmod di_Bewaesserung_BW1 DOIF ([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 )
attr di_Bewaesserung_BW1 room AUSSEN,KG->Maschinenraum

Frank_Huber

Zitat von: baerm am 26 April 2020, 21:23:17
Hi,
ich kann nur bestätigen, dass hier DOIFs in FHEM nicht gleich auslösen wie noch vor einiger Zeit. Anders kann ich mir nicht erklären, dass hier im Forum mittlerweile 3-4 Bewässerungs-DOIFs alle zeitgesteuert plötzlich nicht mehr funktionieren. Und das noch dazu bei diesem trockenen Frühling. Meine Variante geht auch nicht mehr. Ich setze die Startzeit über einen Dummy (Startzeit_BW1).

defmod di_Bewaesserung_BW1 DOIF ([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 )
attr di_Bewaesserung_BW1 room AUSSEN,KG->Maschinenraum

Bitte ein List des DOIF im "Fehlerzustand"

Anhand der RAW DEF kann man nut raten was der aktuelle Zustand ist.

Gesendet von meinem S68Pro mit Tapatalk


Otto123

#13
Was  mir auf Anhieb auffällt:
(set KNX_0503001 on ;; set KNX_0503002 off) ist falsch:
ZitatAngaben im Ausführungsteil (gilt nur für FHEM-Modus):   back

Der Ausführungsteil wird durch runde Klammern eingeleitet. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)

Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)

Edit: Das dürfte auch falsch sein: [Startzeit_BW1] siehe Doku.
Das könnte so funktionieren:[[Startzeit_BW1]]

falls das voriges Jahr noch lief: Es besteht kein Anspruch auf die Beibehaltung von Fehlern. ;)
Verschwörungen gegen Bewässerungs DOIFs in der trockenen Zeit würde ich ausschließen. ;)

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,
stimmt, das kann man optimieren. Warum ich mir das so angewöhnt habe mit zwei Semikolon statt einem Komma weiß ich nicht. Dies ist aber sicher nicht die Ursache für mein Problem. Ich habe ca. 50 DOIFs, die alle so aufgebaut sind und alle funktionieren prächtig. Nur das DOIF der Bewässerung sollte zu einen bestimmten Uhrzeit starten und das geht nicht mehr. Übrigens gibt es ein weiteres DOIF für den Mäher, das auch nicht läuft. Dieses sollte auch zu einer bestimmten Uhrzeit gestartet werden. Bei Betrachtung der anderen DOIFs im Forum, die angeblich auch gerade nicht mehr funktionieren, ist mir aufgefallen, dass alle zu einer fixen Uhrzeit eingeschaltet werden sollten. Hier die lists:

Internals:
   FUUID      5d83ec12-f33f-e2c0-b813-d376bc0b4b27cc0f
   FVERSION   98_dummy.pm:0.206650/2019-12-06
   NAME       Startzeit_BW1
   NR         505
   STATE      19:55
   TYPE       dummy
   READINGS:
     2020-04-26 19:49:39   state           19:55
Attributes:
   group      Bewässerung
   icon       time_timer
   room       AUSSEN



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  Bewaesserung1,KNX_0503011,global,Startzeit_BW1
   NR         906
   NTFY_ORDER 50-di_Bewaesserung_BW1
   STATE      cmd_3
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-04-26 19:59:53   Device          KNX_0503011
     2020-04-26 20:25:00   cmd             3
     2020-04-26 20:25:00   cmd_event       timer_2
     2020-04-26 20:25:00   cmd_nr          3
     2020-04-26 19:59:53   e_KNX_0503011_state on
     2020-04-26 19:49:39   e_Startzeit_BW1_STATE 19:55
     2020-04-21 21:08:49   mode            enabled
     2020-04-26 20:25:00   state           cmd_3
     2020-04-26 20:15:00   timer_01_c02    27.04.2020 20:15:00
     2020-04-26 20:25:00   timer_02_c03    27.04.2020 20:25:00
     2020-04-26 19:49:39   timer_03_c04    26.04.2020 20:55:00
     2020-04-26 19:49:39   timer_04_c05    26.04.2020 21:45:00
   Regex:
     accu:
     cond:
       Bewaesserung1:
         0:
           &STATE     ^Bewaesserung1$
         1:
           &STATE     ^Bewaesserung1$
         2:
           &STATE     ^Bewaesserung1$
         3:
           &STATE     ^Bewaesserung1$
         4:
           &STATE     ^Bewaesserung1$
       KNX_0503011:
         0:
         1:
           state      ^KNX_0503011$:^state:
         2:
           state      ^KNX_0503011$:^state:
         3:
           state      ^KNX_0503011$:^state:
         4:
           state      ^KNX_0503011$:^state:
       Startzeit_BW1:
         0:
           &STATE     ^Startzeit_BW1$
     itimer:
       Startzeit_BW1:
         itimer:
           &STATE     ^Startzeit_BW1$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Startzeit_BW1','STATE') and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an"
     1          ::DOIF_time_once($hash,0,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     2          ::DOIF_time_once($hash,1,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     3          ::DOIF_time_once($hash,2,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
     4          ::DOIF_time_once($hash,3,$wday) and ::InternalDoIf($hash,'Bewaesserung1','STATE') eq "an" and ::ReadingValDoIf($hash,'KNX_0503011','state') eq "on"
   days:
   devices:
   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$|^Startzeit_BW1$|^Bewaesserung1$
     NOTIFYDEV  global|KNX_0503011|Startzeit_BW1|Bewaesserung1
     event      timer_2
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent timer_2
     triggerDev
     timerevents:
       timer_2
     timereventsState:
       timer_2
     triggerEvents:
       timer_2
     triggerEventsState:
       timer_2
   internals:
     all         Startzeit_BW1:STATE Bewaesserung1:STATE
   interval:
   intervalfunc:
   intervaltimer:
   localtime:
     0          1588011300
     1          1588011900
     2          1587927300
     3          1587930300
   perlblock:
   readings:
     all         KNX_0503011:state
   realtime:
     0          20:15:00
     1          20:25:00
     2          20:55:00
     3          21:45:00
   time:
     0          ([Startzeit_BW1]+[0:20])
     1          ([Startzeit_BW1]+[0:30])
     2          ([Startzeit_BW1]+[01:00])
     3          ([Startzeit_BW1]+[01:50])
   timeCond:
     0          1
     1          2
     2          3
     3          4
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     1           0
     2           1
     3           2
     4           3
   trigger:
   triggertime:
     1587927300:
       localtime  1587927300
       hash:
     1587930300:
       localtime  1587930300
       hash:
     1588011300:
       localtime  1588011300
       hash:
     1588011900:
       localtime  1588011900
       hash:
   uiState:
   uiTable:
Attributes:
   room       AUSSEN,KG->Maschinenraum