[gelöst] Bewässerung DOIF löst nicht aus

Begonnen von Nighthawk, 02 September 2018, 08:41:33

Vorheriges Thema - Nächstes Thema

Nighthawk

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))))})

CoolTux

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.
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

Nighthawk

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

Damian

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.


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

Ellert

DOELSE mit einer Bedingung ist, denke ich, noch nicht implementiert. ;)

CoolTux

Ich merke schon, ich verwende zu wenig DOIF und komme da langsam raus. Sorry  :-[
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

Nighthawk


Per

Die ganzen "Gleichteile" solltest du auslagern. Vllt. als DOIF_Reading?