DOIF triggert falsch??? (immer nur CMD_1 trotz anderen Anwensenheitstrigger

Begonnen von kotaro, 09 Mai 2019, 22:32:01

Vorheriges Thema - Nächstes Thema

kotaro

Hallo,

ich habe das problem, das mein DOIF leider immer nur CMD_1 triggert....

eigentlich soll wie die Logik schon vermuten lässt, eine Erinnerung losschicken, wenn ich oder meine Frau losgeht/Nachhause kommt (insbesondere ab 20 uhr bis morgens früh, das der entsprechende Müll ruas muss...
jetzt dachte ich, ich ab schon einiges verstanden.. aber leider wohl noch nicht so gut, wie gedacht....

anbei mein DOIF:
(([?WEB_Abfall:next_days] == 1 and [?10:30-24:00]) or ([?WEB_Abfall:now_text] ne "" and [?00:00-07:00]) and [Zerbster:lastActivity] eq "absent")
(IF ([WEB_Abfall:next_days] == 1)
((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Morgen ist Abholung von [WEB_Abfall:next_text]))
ELSE ((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Heute/Morgen früh ist Abholung von [WEB_Abfall:next_text]))
)
DOELSEIF(([?WEB_Abfall:next_days] == 1 and [?10:30-24:00]) or ([?WEB_Abfall:now_text] ne "" and [?00:00-07:00]) and [Zerbster:lastActivity] eq "home")
((msg push @[Zerbster:lastActivityByDev] |Abfall| Stell [WEB_Abfall:next_text][WEB_Abfall:now_text] raus, wenn er noch nicht draußen ist))


leider klappt das nicht.. hier das List wo normalerweise der CMD_2 getriggert werden müsste..
Internals:
   DEF        (([?WEB_Abfall:next_days] == 1 and [?10:30-24:00]) or ([?WEB_Abfall:now_text] ne "" and [?00:00-07:00]) and [Zerbster:lastActivity] eq "absent")
(IF ([WEB_Abfall:next_days] == 1)
((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Morgen ist Abholung von [WEB_Abfall:next_text]))
ELSE ((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Heute/Morgen früh ist Abholung von [WEB_Abfall:next_text]))
)
DOELSEIF(([?WEB_Abfall:next_days] == 1 and [?10:30-24:00]) or ([?WEB_Abfall:now_text] ne "" and [?00:00-07:00]) and [Zerbster:lastActivity] eq "home")
((msg push @[Zerbster:lastActivityByDev] |Abfall| Stell [WEB_Abfall:next_text][WEB_Abfall:now_text] raus, wenn er noch nicht draußen ist))
   FUUID      5cc377a4-f33f-787c-031d-7e6404c508613aba
   MODEL      FHEM
   NAME       di_Muelltonne
   NR         228
   NTFY_ORDER 50-di_Muelltonne
   STATE      cmd_1
   TYPE       DOIF
   VERSION    19303 2019-05-01 08:47:16
   READINGS:
     2019-05-09 22:24:27   Device          Zerbster
     2019-05-09 22:24:27   cmd             1
     2019-05-09 22:24:27   cmd_event       Zerbster
     2019-05-09 22:24:27   cmd_nr          1
     2019-05-09 22:24:27   e_Zerbster_lastActivity home
     2019-05-09 22:23:17   mode            enabled
     2019-05-09 22:24:27   state           cmd_1
     2019-05-09 22:23:17   timer_01_c01    10.05.2019 10:30:00
     2019-05-09 22:23:17   timer_02_c01    10.05.2019 00:00:00
     2019-05-09 22:23:17   timer_03_c01    10.05.2019 00:00:00
     2019-05-09 22:23:17   timer_04_c01    10.05.2019 07:00:00
     2019-05-09 22:23:17   timer_05_c02    10.05.2019 10:30:00
     2019-05-09 22:23:17   timer_06_c02    10.05.2019 00:00:00
     2019-05-09 22:23:17   timer_07_c02    10.05.2019 00:00:00
     2019-05-09 22:23:17   timer_08_c02    10.05.2019 07:00:00
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'WEB_Abfall','next_days') == 1 and ::DOIF_time($hash,0,1,$wday,$hms)) or (::ReadingValDoIf($hash,'WEB_Abfall','now_text') ne "" and ::DOIF_time($hash,2,3,$wday,$hms)) and ::ReadingValDoIf($hash,'Zerbster','lastActivity') eq "absent"
     1          (::ReadingValDoIf($hash,'WEB_Abfall','next_days') == 1 and ::DOIF_time($hash,4,5,$wday,$hms)) or (::ReadingValDoIf($hash,'WEB_Abfall','now_text') ne "" and ::DOIF_time($hash,6,7,$wday,$hms)) and ::ReadingValDoIf($hash,'Zerbster','lastActivity') eq "home"
   days:
   devices:
     0           Zerbster
     1           Zerbster
     all         Zerbster
   do:
     0:
       0          IF ([WEB_Abfall:next_days] == 1) ((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Morgen ist Abholung von [WEB_Abfall:next_text])) ELSE ((msg push @[Zerbster:lastActivityByDev] |Abfall| Denk daran, Heute/Morgen früh ist Abholung von [WEB_Abfall:next_text]))
     1:
       0          (msg push @[Zerbster:lastActivityByDev] |Abfall| Stell [WEB_Abfall:next_text][WEB_Abfall:now_text] raus, wenn er noch nicht draußen ist)
     2:
   helper:
     event      residentsTotalRoommatesPresent: 2,residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel,residentsTotalRoommatesPresentNames: Himi, Miepel,residentsTotalRoommatesAbsent: 0,residentsTotalRoommatesAbsentDevs: -,residentsTotalRoommatesAbsentNames: -,residentsTotalPeoplePresent: 2,residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel,residentsTotalPeoplePresentNames: Himi, Miepel,residentsTotalPeopleAbsent: 0,residentsTotalPeopleAbsentDevs: -,residentsTotalPeopleAbsentNames: -,residentsTotalPresent: 2,residentsTotalPresentDevs: rr_Himi,rr_Miepel,residentsTotalPresentNames: Himi, Miepel,residentsTotalAbsent: 0,residentsTotalAbsentDevs: -,residentsTotalAbsentNames: -,residentsHome: 2,residentsHomeDevs: rr_Himi,rr_Miepel,residentsHomeNames: Himi, Miepel,residentsAbsent: 0,residentsAbsentDevs: -,residentsAbsentNames: -,durTimerPresence_cr: 285,durTimerPresence: 04:44:58,lastActivity: zuhause,lastActivityBy: Himi,lastActivityByDev: rr_Himi
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   Zerbster
     timerevent residentsTotalRoommatesPresent: 2,residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel,residentsTotalRoommatesPresentNames: Himi, Miepel,residentsTotalRoommatesAbsent: 0,residentsTotalRoommatesAbsentDevs: -,residentsTotalRoommatesAbsentNames: -,residentsTotalPeoplePresent: 2,residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel,residentsTotalPeoplePresentNames: Himi, Miepel,residentsTotalPeopleAbsent: 0,residentsTotalPeopleAbsentDevs: -,residentsTotalPeopleAbsentNames: -,residentsTotalPresent: 2,residentsTotalPresentDevs: rr_Himi,rr_Miepel,residentsTotalPresentNames: Himi, Miepel,residentsTotalAbsent: 0,residentsTotalAbsentDevs: -,residentsTotalAbsentNames: -,residentsHome: 2,residentsHomeDevs: rr_Himi,rr_Miepel,residentsHomeNames: Himi, Miepel,residentsAbsent: 0,residentsAbsentDevs: -,residentsAbsentNames: -,durTimerPresence_cr: 285,durTimerPresence: 04:44:58,lastActivity: zuhause,lastActivityBy: Himi,lastActivityByDev: rr_Himi
     triggerDev Zerbster
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: Zerbster
       state: cmd_1
     timerevents:
       residentsTotalRoommatesPresent: 2
       residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel
       residentsTotalRoommatesPresentNames: Himi, Miepel
       residentsTotalRoommatesAbsent: 0
       residentsTotalRoommatesAbsentDevs: -
       residentsTotalRoommatesAbsentNames: -
       residentsTotalPeoplePresent: 2
       residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel
       residentsTotalPeoplePresentNames: Himi, Miepel
       residentsTotalPeopleAbsent: 0
       residentsTotalPeopleAbsentDevs: -
       residentsTotalPeopleAbsentNames: -
       residentsTotalPresent: 2
       residentsTotalPresentDevs: rr_Himi,rr_Miepel
       residentsTotalPresentNames: Himi, Miepel
       residentsTotalAbsent: 0
       residentsTotalAbsentDevs: -
       residentsTotalAbsentNames: -
       residentsHome: 2
       residentsHomeDevs: rr_Himi,rr_Miepel
       residentsHomeNames: Himi, Miepel
       residentsAbsent: 0
       residentsAbsentDevs: -
       residentsAbsentNames: -
       durTimerPresence_cr: 285
       durTimerPresence: 04:44:58
       lastActivity: zuhause
       lastActivityBy: Himi
       lastActivityByDev: rr_Himi
     timereventsState:
       residentsTotalRoommatesPresent: 2
       residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel
       residentsTotalRoommatesPresentNames: Himi, Miepel
       residentsTotalRoommatesAbsent: 0
       residentsTotalRoommatesAbsentDevs: -
       residentsTotalRoommatesAbsentNames: -
       residentsTotalPeoplePresent: 2
       residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel
       residentsTotalPeoplePresentNames: Himi, Miepel
       residentsTotalPeopleAbsent: 0
       residentsTotalPeopleAbsentDevs: -
       residentsTotalPeopleAbsentNames: -
       residentsTotalPresent: 2
       residentsTotalPresentDevs: rr_Himi,rr_Miepel
       residentsTotalPresentNames: Himi, Miepel
       residentsTotalAbsent: 0
       residentsTotalAbsentDevs: -
       residentsTotalAbsentNames: -
       residentsHome: 2
       residentsHomeDevs: rr_Himi,rr_Miepel
       residentsHomeNames: Himi, Miepel
       residentsAbsent: 0
       residentsAbsentDevs: -
       residentsAbsentNames: -
       durTimerPresence_cr: 285
       durTimerPresence: 04:44:58
       lastActivity: zuhause
       lastActivityBy: Himi
       lastActivityByDev: rr_Himi
     triggerEvents:
       residentsTotalRoommatesPresent: 2
       residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel
       residentsTotalRoommatesPresentNames: Himi, Miepel
       residentsTotalRoommatesAbsent: 0
       residentsTotalRoommatesAbsentDevs: -
       residentsTotalRoommatesAbsentNames: -
       residentsTotalPeoplePresent: 2
       residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel
       residentsTotalPeoplePresentNames: Himi, Miepel
       residentsTotalPeopleAbsent: 0
       residentsTotalPeopleAbsentDevs: -
       residentsTotalPeopleAbsentNames: -
       residentsTotalPresent: 2
       residentsTotalPresentDevs: rr_Himi,rr_Miepel
       residentsTotalPresentNames: Himi, Miepel
       residentsTotalAbsent: 0
       residentsTotalAbsentDevs: -
       residentsTotalAbsentNames: -
       residentsHome: 2
       residentsHomeDevs: rr_Himi,rr_Miepel
       residentsHomeNames: Himi, Miepel
       residentsAbsent: 0
       residentsAbsentDevs: -
       residentsAbsentNames: -
       durTimerPresence_cr: 285
       durTimerPresence: 04:44:58
       lastActivity: zuhause
       lastActivityBy: Himi
       lastActivityByDev: rr_Himi
     triggerEventsState:
       residentsTotalRoommatesPresent: 2
       residentsTotalRoommatesPresentDevs: rr_Himi,rr_Miepel
       residentsTotalRoommatesPresentNames: Himi, Miepel
       residentsTotalRoommatesAbsent: 0
       residentsTotalRoommatesAbsentDevs: -
       residentsTotalRoommatesAbsentNames: -
       residentsTotalPeoplePresent: 2
       residentsTotalPeoplePresentDevs: rr_Himi,rr_Miepel
       residentsTotalPeoplePresentNames: Himi, Miepel
       residentsTotalPeopleAbsent: 0
       residentsTotalPeopleAbsentDevs: -
       residentsTotalPeopleAbsentNames: -
       residentsTotalPresent: 2
       residentsTotalPresentDevs: rr_Himi,rr_Miepel
       residentsTotalPresentNames: Himi, Miepel
       residentsTotalAbsent: 0
       residentsTotalAbsentDevs: -
       residentsTotalAbsentNames: -
       residentsHome: 2
       residentsHomeDevs: rr_Himi,rr_Miepel
       residentsHomeNames: Himi, Miepel
       residentsAbsent: 0
       residentsAbsentDevs: -
       residentsAbsentNames: -
       durTimerPresence_cr: 285
       durTimerPresence: 04:44:58
       lastActivity: zuhause
       lastActivityBy: Himi
       lastActivityByDev: rr_Himi
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   itimer:
   localtime:
     0          1557477000
     1          1557439200
     2          1557439200
     3          1557464400
     4          1557477000
     5          1557439200
     6          1557439200
     7          1557464400
   readings:
     0           Zerbster:lastActivity
     1           Zerbster:lastActivity
     all         Zerbster:lastActivity
   realtime:
     0          10:30:00
     1          00:00:00
     2          00:00:00
     3          07:00:00
     4          10:30:00
     5          00:00:00
     6          00:00:00
     7          07:00:00
   time:
     0          10:30:00
     1          24:00:00
     2          00:00:00
     3          07:00:00
     4          10:30:00
     5          24:00:00
     6          00:00:00
     7          07:00:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
     5          1
     6          1
     7          1
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   trigger:
   triggertime:
     1557439200:
       localtime  1557439200
       hash:
     1557464400:
       localtime  1557464400
       hash:
     1557477000:
       localtime  1557477000
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   room       Logik

Ellert

Die Bedingungen werden nur geprüft, wenn Zerbster:lastActivity ein Event liefert. Bau einen Log-Befehl in die Bedingung ein, um zu prüfen, ob die nicht triggernden Operatoren wahr sind, wenn die Bedingung geprüft wird.

Otto123

Hi,

zusätzlich zu dem was Ellert gesagt hat: sind die Klammern richtig gesetzt?
Du musst bedenken dass erst and und dann or aufgelöst/abgearbeitet wird.
Du hast sowas gemacht: ((eins and zwei) or (drei and vier) and fünf)
Die Klammern werden aufgelöst (einzwei or dreivier and fünf)
Dann ist der gesamte Ausdruck wahr wenn dreivier und fünf wahr sind oder bloß einszwei wahr ist.
Wenn einszwei wahr ist spielt fünf keine Rolle.

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

kotaro

Also wäre
((Eins and zwei or drei and vier) and fünf sinnvoller wenn ich
Eins zwei and fünf oder dreivier and fünf  als Bedingung haben möchte?

Genau das würde ja zum Verhalten passen das am Abend davor immer nur cmd-1 kam, wenn er fünf dann nicht prüfen muss. Da sind sie sich ja veide gleich.. und CMD_1 vor CMD_2

Otto123

Ich denke ja. ((Eins and zwei or drei and vier) and fünf)Jetzt dominiert fünf.
Der Ausdruck kann nur wahr werden wenn fünf wahr ist.
Wenn fünf war ist, dann muss zusätzlich entweder eins und zwei wahr sein oder drei und vier wahr sein.
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

kotaro

Zitat von: Ellert am 10 Mai 2019, 08:40:05
Die Bedingungen werden nur geprüft, wenn Zerbster:lastActivity ein Event liefert. Bau einen Log-Befehl in die Bedingung ein, um zu prüfen, ob die nicht triggernden Operatoren wahr sind, wenn die Bedingung geprüft wird.

wie soll ich ein Logbefehl einbauen, um das zu testen? das wäre ja auch für zukünftige Projekte interessant?

@Otto123 --> Genau das was das Problem... das ich das nicht gesehen habe... oh man..
Danke dir dafür