FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Nighthawk am 02 September 2018, 08:41:33

Titel: [gelöst] Bewässerung DOIF löst nicht aus
Beitrag von: Nighthawk am 02 September 2018, 08:41:33
Hallo zusammen,

für meine Gartenbewässerung habe ich ein DOIF erstellt, dieses hat auch bis vor Kurzem perfekt funktioniert.
Seit einigen Tagen habe ich aber Aussetzer und ich finde das Problem nicht.
Es wird nicht automatisch ausgelöst, wenn ich es bemerke, passe ich die Urzeit an und es wird ausgelöst.
Die einzige Änderung die ich in den letzten Tagen gemacht habe, war das hinzufügen von den Statusmeldungen über Telegramm bei allen Zuständen, vorher hatte ich es nur bei "keine Bewaesserung".

Das Doif sieht folgendermaßen aus:
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 5 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 20 and
[?Proplanta:fc0_tempMax] < 25 and
[?Proplanta:fc0_sun] > 49) 
(set teleBot message Bewaesserung kurz aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n
{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 10)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] >= 25 and
[?Proplanta:fc0_tempMax] <= 29 and
[?Proplanta:fc0_sun] > 49) 
(set teleBot message Bewaesserung mittel aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n
{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 29) 
(set teleBot message Bewaesserung lang aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n
{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 20)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 17 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 17 and
[?Proplanta:fc0_tempMax] < 25 and
[?Proplanta:fc0_sun] < 49 and
[?Proplanta:fc0_sun] > 25 and
[?Bewaesserung:state:sec] > 169000)
(set teleBot message Bewaesserung *2 Tage aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n
{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15)
DOELSE
([06:10])
(set teleBot message keine Bewaesserung!!\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n
{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))})
Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: CoolTux am 02 September 2018, 09:10:40
Sieht gut aus der Code vom DOIF, so geht das.


Na Merkstein was? Wer soll Dir bitte schön damit helfen.
Mach bitte ein list vom DOIF Device.
Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: Nighthawk am 02 September 2018, 09:31:33
Hier der list:

Internals:
   DEF        ([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 5 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 20 and
[?Proplanta:fc0_tempMax] < 25 and
[?Proplanta:fc0_sun] > 49) 
(set teleBot message Bewaesserung kurz aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 10)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] >= 25 and
[?Proplanta:fc0_tempMax] <= 29 and
[?Proplanta:fc0_sun] > 49) 
(set teleBot message Bewaesserung mittel aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 20 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 29) 
(set teleBot message Bewaesserung lang aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 20)
DOELSEIF
([06:10] and
[?SommerWinterzeit:state] =~ "Sommer" and
[?WH1080:statTemperatureDayMaxLast] > 17 and
[?WH1080:statRainDay] < 1 and
[?WH1080:statRainDayLast] < 3 and
[?Proplanta:fc0_rain] < 2 and
[?Proplanta:fc0_tempMax] > 17 and
[?Proplanta:fc0_tempMax] < 25 and
[?Proplanta:fc0_sun] < 49 and
[?Proplanta:fc0_sun] > 25 and
[?Bewaesserung:state:sec] > 169000)
(set teleBot message Bewaesserung *2 Tage aktiv\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15)
DOELSE
([06:10])
(set teleBot message keine Bewaesserung!!\n
Jahreszeit: [SommerWinterzeit:state]\n
Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n
Regenmenge heute: [WH1080:statRainDay] l/m²\n
Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n
Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n
Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n
Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n
Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))})
   MODEL      FHEM
   NAME       di.Bewaesserungsautomat
   NR         1262
   NTFY_ORDER 50-di.Bewaesserungsautomat
   STATE      initialize
   TYPE       DOIF
   Helper:
     DBLOG:
       cmd:
         logdb:
           TIME       1535866123.85783
           VALUE      0
       cmd_event:
         logdb:
           TIME       1535865060.18276
           VALUE      timer_1
       cmd_nr:
         logdb:
           TIME       1535865060.18276
           VALUE      1
       cmd_seqnr:
         logdb:
           TIME       1535692200.05826
           VALUE      2
       error:
         logdb:
           TIME       1535692200.02083
           VALUE      [07:10]
       mode:
         logdb:
           TIME       1535866129.48159
           VALUE      enabled
       state:
         logdb:
           TIME       1535866129.49242
           VALUE      initialize
   READINGS:
     2018-09-02 07:28:49   mode            enabled
     2018-09-02 07:28:49   state           initialize
     2018-09-02 07:28:43   timer_01_c01    03.09.2018 06:10:00
     2018-09-02 07:28:43   timer_02_c02    03.09.2018 06:10:00
     2018-09-02 07:28:43   timer_03_c03    03.09.2018 06:10:00
     2018-09-02 07:28:43   timer_04_c04    03.09.2018 06:10:00
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          DOIF_time_once($hash,0,$wday) and  ReadingValDoIf($hash,'SommerWinterzeit','state') =~ "Sommer" and ReadingValDoIf($hash,'WH1080','statTemperatureDayMaxLast') > 20 and  ReadingValDoIf($hash,'WH1080','statRainDay') < 1 and  ReadingValDoIf($hash,'WH1080','statRainDayLast') < 5 and  ReadingValDoIf($hash,'Proplanta','fc0_rain') < 2 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') > 20 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') < 25 and ReadingValDoIf($hash,'Proplanta','fc0_sun') > 49
     1          DOIF_time_once($hash,1,$wday) and  ReadingValDoIf($hash,'SommerWinterzeit','state') =~ "Sommer" and ReadingValDoIf($hash,'WH1080','statTemperatureDayMaxLast') > 20 and  ReadingValDoIf($hash,'WH1080','statRainDay') < 1 and  ReadingValDoIf($hash,'WH1080','statRainDayLast') < 3 and  ReadingValDoIf($hash,'Proplanta','fc0_rain') < 2 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') >= 25 and ReadingValDoIf($hash,'Proplanta','fc0_tempMax') <= 29 and ReadingValDoIf($hash,'Proplanta','fc0_sun') > 49
     2          DOIF_time_once($hash,2,$wday) and  ReadingValDoIf($hash,'SommerWinterzeit','state') =~ "Sommer" and ReadingValDoIf($hash,'WH1080','statTemperatureDayMaxLast') > 20 and  ReadingValDoIf($hash,'WH1080','statRainDay') < 1 and  ReadingValDoIf($hash,'WH1080','statRainDayLast') < 3 and  ReadingValDoIf($hash,'Proplanta','fc0_rain') < 2 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') > 29
     3          DOIF_time_once($hash,3,$wday) and  ReadingValDoIf($hash,'SommerWinterzeit','state') =~ "Sommer" and ReadingValDoIf($hash,'WH1080','statTemperatureDayMaxLast') > 17 and  ReadingValDoIf($hash,'WH1080','statRainDay') < 1 and  ReadingValDoIf($hash,'WH1080','statRainDayLast') < 3 and  ReadingValDoIf($hash,'Proplanta','fc0_rain') < 2 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') > 17 and  ReadingValDoIf($hash,'Proplanta','fc0_tempMax') < 25 and ReadingValDoIf($hash,'Proplanta','fc0_sun') < 49 and ReadingValDoIf($hash,'Proplanta','fc0_sun') > 25 and ReadingSecDoIf('Bewaesserung','state') > 169000
   days:
   devices:
   do:
     0:
       0          set teleBot message Bewaesserung kurz aktiv\n Jahreszeit: [SommerWinterzeit:state]\n Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n Regenmenge heute: [WH1080:statRainDay] l/m²\n Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 10
     1:
       0          set teleBot message Bewaesserung mittel aktiv\n  Jahreszeit: [SommerWinterzeit:state]\n Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n Regenmenge heute: [WH1080:statRainDay] l/m²\n Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15
     2:
       0          set teleBot message Bewaesserung lang aktiv\n Jahreszeit: [SommerWinterzeit:state]\n Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n Regenmenge heute: [WH1080:statRainDay] l/m²\n Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 20
     3:
       0          set teleBot message Bewaesserung *2 Tage aktiv\n Jahreszeit: [SommerWinterzeit:state]\n Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n Regenmenge heute: [WH1080:statRainDay] l/m²\n Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}, set Bewaesserung 15
     4:
       0          [06:10]
       1          set teleBot message keine Bewaesserung!!\n Jahreszeit: [SommerWinterzeit:state]\n Hoechsttemperatur gestern: [WH1080:statTemperatureDayMaxLast]°C\n Regenmenge heute: [WH1080:statRainDay] l/m²\n Regenmenge gestern: [WH1080:statRainDayLast] l/m²\n Prognose Regen heute: [Proplanta:fc0_rain] l/m²\n Prognose MaxTemp heute: [Proplanta:fc0_tempMax]°C\n Prognose Sonnenschein heute: [Proplanta:fc0_sun]%\n Zeit seit letzter Bewaesserung: \n{(sprintf("%d Tage %02d:%02d:%02d",SYSMON_decode_time_diff(ReadingsAge("Bewaesserung", "state", 0))))}
   helper:
     globalinit 1
     last_timer 4
     sleeptimer -1
   intervalfunc:
   itimer:
   localtime:
     0          1535947800
     1          1535947800
     2          1535947800
     3          1535947800
   realtime:
     0          06:10:00
     1          06:10:00
     2          06:10:00
     3          06:10:00
   time:
     0          06:10:00
     1          06:10:00
     2          06:10:00
     3          06:10:00
   timeCond:
     0          0
     1          1
     2          2
     3          3
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0
     1           1
     2           2
     3           3
   triggertime:
     1535947800:
       localtime  1535947800
       hash:
   uiState:
   uiTable:
Attributes:
   group      Bewaesserung
   room       Garten
   sortby     5
   verbose    5
Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: Damian am 02 September 2018, 10:02:33
ZitatDOELSE
([06:10])

Geht schon mal nicht.

Es handelt sich hier um punktuelle Zeittrigger (einmal pro Tag), da könnte do always nicht schaden, sonst gibt es keine Wiederholung des selben Zweiges am nächsten Tag.


Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: Ellert am 02 September 2018, 10:40:19
DOELSE mit einer Bedingung ist, denke ich, noch nicht implementiert. ;)
Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: CoolTux am 02 September 2018, 11:03:56
Ich merke schon, ich verwende zu wenig DOIF und komme da langsam raus. Sorry  :-[
Titel: Antw:Bewässerung DOIF löst nicht aus
Beitrag von: Nighthawk am 02 September 2018, 11:22:51
Ahh, logisch, danke!
Titel: Antw:[gelöst] Bewässerung DOIF löst nicht aus
Beitrag von: Per am 03 September 2018, 12:49:42
Die ganzen "Gleichteile" solltest du auslagern. Vllt. als DOIF_Reading (https://forum.fhem.de/index.php/topic,90561.0.html)?