[gelöst] Beregnung/mehrere Kreise schaltbar/Sonnenstandabhängig/Pumpen gesteuert

Begonnen von holle75, 03 April 2017, 17:43:09

Vorheriges Thema - Nächstes Thema

Per

Ok, das ist eine Frage für den Chef (Damian), ob und wie # das abfangen kann.

Damian

Zitat von: Per am 04 Mai 2017, 17:22:03
Ok, das ist eine Frage für den Chef (Damian), ob und wie # das abfangen kann.

[#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"]

hier wird nur auf "on" getriggert und gezählt wird nur state = "on"
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75


holle75

#78
Mmh, jetzt bin ich irritiert. Ein List ergibt:

Internals:
   DEF        ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  ([PozzoHauptOben_PUMPE_Cisterna] eq "off" and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  ([PozzoHauptOben_PUMPE_Cisterna] eq "on" and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSE
(set PozzoHauptOben_PUMPE_Cisterna off)
   NAME       BeregnungDOIF_PumpeCisterna
   NR         608
   NTFY_ORDER 50-BeregnungDOIF_PumpeCisterna
   STATE      cmd_4
   TYPE       DOIF
   Readings:
     2017-05-05 09:17:26   Device          PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 09:17:26   cmd             4
     2017-05-05 09:17:26   cmd_event       PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 09:17:26   cmd_nr          4
     2017-05-05 09:17:26   e_PozzoHauptOben_PUMPE_Cisterna_STATE off
     2017-05-05 09:17:09   manu            off
     2017-05-05 09:17:16   matched_event_c1_1 on
     2017-05-05 09:17:26   state           cmd_4
     2017-05-05 09:17:26   wait_timer      no timer
   Condition:
     0          AggregateDoIf($hash,'#','^BEREGNUNG_SCHALTER_','state','"^on$"') != 0 or ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','manu') eq "on"
     1          InternalDoIf($hash,'PozzoHauptOben_PUMPE_Cisterna','STATE') eq "off" and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 4
     2          InternalDoIf($hash,'PozzoHauptOben_PUMPE_Cisterna','STATE') eq "on" and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 1
   Devices:
     1           PozzoHauptOben_PUMPE_Cisterna
     2           PozzoHauptOben_PUMPE_Cisterna
     all         PozzoHauptOben_PUMPE_Cisterna
   Do:
     0:
       0          set PozzoHauptOben_PUMPE_Cisterna on
     1:
       0          set BeregnungDOIF_PumpeCisterna manu off
     2:
       0          set BeregnungDOIF_PumpeCisterna manu on
     3:
       0          set PozzoHauptOben_PUMPE_Cisterna off
   Helper:
     event      working: off,off
     globalinit 1
     last_timer 0
     sleepdevice PozzoHauptOben_PUMPE_Cisterna
     sleepsubtimer -1
     sleeptimer -1
     timerdev   PozzoHauptOben_PUMPE_Cisterna
     timerevent working: off,off
     triggerDev PozzoHauptOben_PUMPE_Cisterna
     timerevents:
       working: off
       off
     timereventsState:
       working: off
       state: off
     triggerEvents:
       working: off
       off
     triggerEventsState:
       working: off
       state: off
   Internals:
     1           PozzoHauptOben_PUMPE_Cisterna:STATE
     2           PozzoHauptOben_PUMPE_Cisterna:STATE
     all         PozzoHauptOben_PUMPE_Cisterna:STATE
   Itimer:
   Readings:
   Regexp:
     0:
       0          ^BEREGNUNG_SCHALTER_:^on$
     1:
     2:
     All:
       0          ^BEREGNUNG_SCHALTER_:^on$
   State:
     State:
   Trigger:
Attributes:
   group      Beregnung
   readingList manu
   wait       0:0:0:10


in den Readings wird das "working off" nicht mehr gefangen (war vorher so), aber im helper event.

Funktionieren tut es immer noch nicht. Per, da ich deinen BeregnungDOIF_PumpeCisterna DOIF Code noch immer nicht wirklich verstehe.... könntest du nochmal über den statusQuo im Zusammenhang mit dem working off schauen? Bin hier gerade ein wenig lost.
Vielleicht hats ja auch damit gar nichts zu tun und ich habe einfach mit den Dummies nur nicht ordentlich getestet :D

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on") \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  ([PozzoHauptOben_PUMPE_Cisterna] eq "off" and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  ([PozzoHauptOben_PUMPE_Cisterna] eq "on" and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSE \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10



Per

#79
Aktuell reagieren die DOELSEIF auf jedes Event, bei "Nichtpassen" startet DOELSE. Also muss jetzt die Änderung von oben wieder rein:

([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:off"] and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:on"] and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSE
(set PozzoHauptOben_PUMPE_Cisterna off)


Wenn das auch nicht hilft, muss statt DOELSE ein weiteres DOELSEIF mit
([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] == 0)
rein. Evtl. geht sogar nur
([#] == 0)
als Bedingung, wäre einen Test wert.

holle75

#80
mit hin und herschalten der Pumpe und:

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")  \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:off"] and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:on"] and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSE \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10


fängt er sogar jetzt die set_on + die alten workings :D

und manu wird nicht richtig gesetzt

List (Teil) ... hier ist die Pumpe an, manu steht aber auf off

Readings:
     2017-05-05 10:46:09   Device          PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 10:46:09   cmd             2
     2017-05-05 10:46:09   cmd_event       PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 10:46:09   cmd_nr          2
     2017-05-05 10:46:09   manu            off
     2017-05-05 10:46:09   matched_event_c2_1 working: off
     2017-05-05 10:46:09   matched_event_c3_1 set_on
     2017-05-05 10:46:09   state           cmd_2


irgendwie müssen doch diese Homematic Extras rauszufiltern sein?!

EDIT: Hoppala, jetzt aktuelles List. Sorry

Per

OK, gg. "set_on" hilft "^on".
Vllt. hilft gg. "working" "event-on-change-reading state" oder "event-on-change-reading state,battery" auf HM-Seite. Ist zwar nicht die feine Englische, aber dann kann man in Ruhe weiter suchen.

holle75

Code mit ^off$" löst das Problem von manu. Das schaltet jetzt entsprechend Pumpe an/aus. Aber sobald ich einen Beregner anschalte läuft der waittimer los und schaltet nach 10 sek aus. Wie bisher.

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")  \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^off$"] and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^on$"] and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSE \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10


Event Monitor

2017-05-05 11:14:38 DOIF BeregnungDOIF_PumpeCisterna cmd_nr: 1
2017-05-05 11:14:38 DOIF BeregnungDOIF_PumpeCisterna cmd: 1
2017-05-05 11:14:38 DOIF BeregnungDOIF_PumpeCisterna cmd_event: BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17
2017-05-05 11:14:38 DOIF BeregnungDOIF_PumpeCisterna cmd_1
2017-05-05 11:14:38 HM485 PozzoHauptOben_PUMPE_Cisterna set_on
2017-05-05 11:14:38 DOIF BeregnungDOIF_PumpeCisterna wait_timer: 05.05.2017 11:14:48 cmd_4 PozzoHauptOben_PUMPE_Cisterna
2017-05-05 11:14:38 HM485 PozzoHauptOben_PUMPE_Cisterna on
2017-05-05 11:14:38 HM485 PozzoHauptOben_PUMPE_Cisterna working: off
2017-05-05 11:14:48 DOIF BeregnungDOIF_PumpeCisterna wait_timer: no timer
2017-05-05 11:14:49 DOIF BeregnungDOIF_PumpeCisterna cmd_nr: 4
2017-05-05 11:14:49 DOIF BeregnungDOIF_PumpeCisterna cmd: 4
2017-05-05 11:14:49 DOIF BeregnungDOIF_PumpeCisterna cmd_event: PozzoHauptOben_PUMPE_Cisterna
2017-05-05 11:14:49 DOIF BeregnungDOIF_PumpeCisterna cmd_4
2017-05-05 11:14:49 HM485 PozzoHauptOben_PUMPE_Cisterna set_off
2017-05-05 11:14:49 HM485 PozzoHauptOben_PUMPE_Cisterna working: off
2017-05-05 11:14:49 HM485 PozzoHauptOben_PUMPE_Cisterna off


List. DOIF fängt weiterhin die workings als timer und trigger events.

Internals:
   DEF        ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^off$"] and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^on$"] and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSE
(set PozzoHauptOben_PUMPE_Cisterna off)
   NAME       BeregnungDOIF_PumpeCisterna
   NR         608
   NTFY_ORDER 50-BeregnungDOIF_PumpeCisterna
   STATE      cmd_4
   TYPE       DOIF
   Readings:
     2017-05-05 11:14:49   Device          PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 11:14:49   cmd             4
     2017-05-05 11:14:49   cmd_event       PozzoHauptOben_PUMPE_Cisterna
     2017-05-05 11:14:49   cmd_nr          4
     2017-05-05 11:13:48   manu            on
     2017-05-05 11:14:38   matched_event_c1_1 on
     2017-05-05 11:14:49   matched_event_c2_1 off
     2017-05-05 11:14:38   matched_event_c3_1 on
     2017-05-05 11:14:49   state           cmd_4
     2017-05-05 11:14:48   wait_timer      no timer
   Condition:
     0          AggregateDoIf($hash,'#','^BEREGNUNG_SCHALTER_','state','"^on$"') != 0 or ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','manu') eq "on"
     1          EventDoIf('PozzoHauptOben_PUMPE_Cisterna',$hash,'^off$',0) and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 4
     2          EventDoIf('PozzoHauptOben_PUMPE_Cisterna',$hash,'^on$',0) and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 1
   Devices:
   Do:
     0:
       0          set PozzoHauptOben_PUMPE_Cisterna on
     1:
       0          set BeregnungDOIF_PumpeCisterna manu off
     2:
       0          set BeregnungDOIF_PumpeCisterna manu on
     3:
       0          set PozzoHauptOben_PUMPE_Cisterna off
   Helper:
     event      off
     globalinit 1
     last_timer 0
     sleepdevice PozzoHauptOben_PUMPE_Cisterna
     sleepsubtimer -1
     sleeptimer -1
     timerdev   PozzoHauptOben_PUMPE_Cisterna
     timerevent off
     triggerDev PozzoHauptOben_PUMPE_Cisterna
     timerevents:
       working: off
       off
     timereventsState:
       working: off
       state: off
     triggerEvents:
       working: off
       off
     triggerEventsState:
       working: off
       state: off
   Internals:
   Itimer:
   Readings:
   Regexp:
     0:
       0          ^BEREGNUNG_SCHALTER_:^on$
     1:
       0          PozzoHauptOben_PUMPE_Cisterna:^off$
     2:
       0          PozzoHauptOben_PUMPE_Cisterna:^on$
     All:
       0          ^BEREGNUNG_SCHALTER_:^on$
       1          PozzoHauptOben_PUMPE_Cisterna:^off$
       2          PozzoHauptOben_PUMPE_Cisterna:^on$
   State:
     State:
   Trigger:
Attributes:
   group      Beregnung
   readingList manu
   wait       0:0:0:10


Mal davon ausgehend, dass es an den working: liegt wäre doch die Aufgabe das working rauszufiltern. Aber mit event-on-change am Device möchte ich nicht unbedingt ran. Ich seh mich in einem Jahr Fehler suchen :D

Es muß doch eine Syntax (im DOIF) geben, die working rausfiltert ?!

Oder generell eine andere Herangehensweise ans DOIF? Aber da bist du der Maestro. Mir kam anfänglich ja auch keine Idee.

Per

Zitat von: Per am 05 Mai 2017, 10:01:32
Wenn das auch nicht hilft, muss statt DOELSE ein weiteres DOELSEIF mit
([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] == 0)
rein. Evtl. geht sogar nur
([#] == 0)
als Bedingung, wäre einen Test wert.

holle75

so

([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on") 
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^off$"] and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^on$"] and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSEIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] == 0)
(set PozzoHauptOben_PUMPE_Cisterna off)


macht er immerhin die Pumpe nicht immer aus :D

allerdings macht er, wenn vorher aus, die Pumpe an, aber lässt sie an :(

Per

([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on") 
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^off$"] and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^on$"] and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSEIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] == 0 and [?$SELF:manu] eq "off")
(set PozzoHauptOben_PUMPE_Cisterna off)

holle75

zum Haare raufen. Genau wie zuvor. Stellt an, aber nicht ab

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] != 0 or [?$SELF:manu] eq "on")    \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^off$"] and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  (["PozzoHauptOben_PUMPE_Cisterna:^on$"] and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSEIF ([#"^BEREGNUNG_SCHALTER_:^on$":state:"^on$"] == 0 and [?$SELF:manu] eq "off") \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10

holle75

Guten Morgen! ... habe jetzt die halbe Nacht die commandref durchgeackert und alle erdenklichen Möglichkeiten durchprobiert (die Beregner rauchten heute Morgen :D)

habe auch Pers Vorschlag bzgl event-on-change-reading state bei den Beregnern und der Pumpe beherzigt und es kommt somit nur noch

set_on
set_off
on
off

durch.

die jetzige

cfg:

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] != 0 or [?$SELF:manu] eq "on") \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^off$"] and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^on$"] and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSE \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10


sollte sowohl bei der Pumpe als auch bei den Beregnern alles was nicht on oder off ist herausfiltern. Trotzdem läuft die Geschichte nicht.

Auszug event-monitor

2017-05-06 09:05:15 DOIF BeregnungDOIF_PumpeCisterna cmd_nr: 1
2017-05-06 09:05:15 DOIF BeregnungDOIF_PumpeCisterna cmd: 1
2017-05-06 09:05:15 DOIF BeregnungDOIF_PumpeCisterna cmd_event: BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14
2017-05-06 09:05:15 DOIF BeregnungDOIF_PumpeCisterna cmd_1
2017-05-06 09:05:15 HM485 BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 set_on
2017-05-06 09:05:15 HM485 PozzoHauptOben_PUMPE_Cisterna set_on
2017-05-06 09:05:15 HM485 BEREGNUNG_12_7_MEQ0064131 ACK
2017-05-06 09:05:15 HM485 BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 on
2017-05-06 09:05:15 DOIF BeregnungDOIF_PumpeCisterna wait_timer: 06.05.2017 09:05:25 cmd_4 PozzoHauptOben_PUMPE_Cisterna
2017-05-06 09:05:15 HM485 PozzoHauptOben_PUMPE_Cisterna on
2017-05-06 09:05:25 DOIF BeregnungDOIF_PumpeCisterna wait_timer: no timer
2017-05-06 09:05:25 DOIF BeregnungDOIF_PumpeCisterna cmd_nr: 4
2017-05-06 09:05:25 DOIF BeregnungDOIF_PumpeCisterna cmd: 4
2017-05-06 09:05:25 DOIF BeregnungDOIF_PumpeCisterna cmd_event: PozzoHauptOben_PUMPE_Cisterna
2017-05-06 09:05:25 DOIF BeregnungDOIF_PumpeCisterna cmd_4
2017-05-06 09:05:25 HM485 PozzoHauptOben_PUMPE_Cisterna set_off
2017-05-06 09:05:25 HM485 PozzoHauptOben_PUMPE_Cisterna off


egal wie (ob Pumpe vorher an oder aus), die Pumpe wird nach Betätigung eines Beregners nach 10 sek ausgeschaltet.

Irgendwas triggert bei cmd_1 zu cmd_4 und ich finds nicht heraus. Wenn es kein Bug im DOIF ist, gebe ich mit dem Schalten der Pumpe hiermit auf.

Ich beruhige mich jetzt erstmal ein paar Tage und teste den Rest der Beregnung ausgiebig und dann mach ich noch die Zusammenfassung.

Vielen Dank Per! für deine Mühen und Damian für ein vorzügliches Modul.

PS. Per, durch das ganze hin und her habe ich jetzt sogar dein DOIF Cisterna verstanden :D .... Hirnakrobatik ;)

holle75

#88
DAS GIBTS DOCH NICHT! Jetzt dachte ich im Restore "Ach komm, einen probierst du noch"


.... und es geht. Alle event-on-change-reading Geschichten sind raus.

und das hier funktioniert:

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] != 0 or [?$SELF:manu] eq "on") \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^off$"] and [?$SELF:cmd] != 4) \
(set $SELF manu off) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^on$"] and [?$SELF:cmd] != 1) \
(set $SELF manu on) \
DOELSEIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] == 0) \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10



testen, testen, testen ......

edit: und trotzdem verwunderlich, warum es funktioniert. Das DOIF fängt alle events. Oder lese ich das List einfach falsch?

Internals:
   DEF        ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] != 0 or [?$SELF:manu] eq "on")
(set PozzoHauptOben_PUMPE_Cisterna on)
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^off$"] and [?$SELF:cmd] != 4)
(set $SELF manu off)
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^on$"] and [?$SELF:cmd] != 1)
(set $SELF manu on)
DOELSEIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] == 0)
(set PozzoHauptOben_PUMPE_Cisterna off)
   NAME       BeregnungDOIF_PumpeCisterna
   NR         609
   NTFY_ORDER 50-BeregnungDOIF_PumpeCisterna
   STATE      cmd_4
   TYPE       DOIF
   Readings:
     2017-05-06 10:00:01   Device          PozzoHauptOben_PUMPE_Cisterna
     2017-05-06 10:00:01   cmd             4
     2017-05-06 10:00:01   cmd_event       BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17
     2017-05-06 10:00:01   cmd_nr          4
     2017-05-06 09:56:19   manu            off
     2017-05-06 09:59:51   matched_event_c1_1 working: off,off
     2017-05-06 10:00:01   matched_event_c2_1 off
     2017-05-06 09:56:50   matched_event_c3_1 on
     2017-05-06 09:59:51   matched_event_c4_1 working: off,off
     2017-05-06 10:00:01   state           cmd_4
     2017-05-06 10:00:01   wait_timer      no timer
   Condition:
     0          AggregateDoIf($hash,'#','^BEREGNUNG_SCHALTER_','state','"^on$"') != 0 or ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','manu') eq "on"
     1          EventDoIf('^PozzoHauptOben_PUMPE_Cisterna$',$hash,'^off$',0) and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 4
     2          EventDoIf('^PozzoHauptOben_PUMPE_Cisterna$',$hash,'^on$',0) and ReadingValDoIf($hash,'BeregnungDOIF_PumpeCisterna','cmd') != 1
     3          AggregateDoIf($hash,'#','^BEREGNUNG_SCHALTER_','state','"^on$"') == 0
   Devices:
   Do:
     0:
       0          set PozzoHauptOben_PUMPE_Cisterna on
     1:
       0          set BeregnungDOIF_PumpeCisterna manu off
     2:
       0          set BeregnungDOIF_PumpeCisterna manu on
     3:
       0          set PozzoHauptOben_PUMPE_Cisterna off
     4:
   Helper:
     event      off
     globalinit 1
     last_timer 0
     sleepdevice BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17
     sleepsubtimer -1
     sleeptimer -1
     timerdev   BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17
     timerevent working: off,off
     triggerDev PozzoHauptOben_PUMPE_Cisterna
     timerevents:
       working: off
       off
     timereventsState:
       working: off
       state: off
     triggerEvents:
       working: off
       off
     triggerEventsState:
       working: off
       state: off
   Internals:
   Itimer:
   Readings:
   Regexp:
     0:
       0          ^BEREGNUNG_SCHALTER_
     1:
       0          ^PozzoHauptOben_PUMPE_Cisterna$:^off$
     2:
       0          ^PozzoHauptOben_PUMPE_Cisterna$:^on$
     3:
       0          ^BEREGNUNG_SCHALTER_
     All:
       0          ^BEREGNUNG_SCHALTER_
       1          ^PozzoHauptOben_PUMPE_Cisterna$:^off$
       2          ^PozzoHauptOben_PUMPE_Cisterna$:^on$
   State:
     State:
   Trigger:
Attributes:
   group      Beregnung
   readingList manu
   wait       0:0:0:10

holle75

Habe jetzt noch BeregnungDOIF_Mapping angepasst. Funktioniert auch das wieder.

Jetzt gibts aber neue Herausforderungen ;)

Das

define BeregnungDOIF_NachSonne DOIF ([?Wetterstation:statRain_dayHour24:d] < 1.0 and [myTwilight:elevation] > [BeregnungStartelevation] and ($month >= [BeregnungStartmonat] and $month <= [BeregnungEndmonat])) DOELSE
attr BeregnungDOIF_NachSonne group Beregnung
attr BeregnungDOIF_NachSonne room Beregnung


triggert ja das

define BeregnungDOIF_Trigger DOIF ([BeregnungDurchlauf_AN_AUS_AUTO] eq "on" or ([?BeregnungDurchlauf_AN_AUS_AUTO] eq "auto" and [BeregnungDOIF_NachSonne] eq "cmd_1"))

Warum läuft das DOIF trotz dem Fragezeichen vor ?BeregnungDurchlauf_AN_AUS_AUTO sofort los (wenn BeregnungDOIF_NachSonne auf cmd_1 steht), wenn ich den Dummy BeregnungDurchlauf_AN_AUS_AUTO auf auto setze? Das Fragezeichen sollte doch diesen Event ignorieren. ??

Internals:
   DEF        ([BeregnungDurchlauf_AN_AUS_AUTO] eq "on" or ([?BeregnungDurchlauf_AN_AUS_AUTO] eq "auto" and [BeregnungDOIF_NachSonne] eq "cmd_1"))
()
()
(set SqueezeBoxPlayer.* talk Durchlauf Beregnung gestartet, set $SELF cmd_2)
DOELSEIF (0)
(set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen)
(set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen)
(set $SELF cmd_3)
DOELSEIF (0)
(set BeregnungDummy_Helper Beregner_04_HinterKueche)
(set BeregnungDummy_Helper Beregner_04_HinterKueche)
(set $SELF cmd_4)
DOELSEIF (0)
(set BeregnungDummy_Helper Beregner_05_CampeggioOben)
(set BeregnungDummy_Helper Beregner_05_CampeggioOben)
(set $SELF cmd_5)
DOELSEIF (0)
(set BeregnungDummy_Helper Beregner_06_Waschhaus)
(set BeregnungDummy_Helper Beregner_06_Waschhaus)
(set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet)
DOELSEIF ([BeregnungDurchlauf_AN_AUS_AUTO] eq "off")
(set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen, set BeregnungDummy_Helper Beregner_04_HinterKueche, set BeregnungDummy_Helper Beregner_05_CampeggioOben, set BeregnungDummy_Helper Beregner_06_Waschhaus, set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet)
   NAME       BeregnungDOIF_Trigger
   NR         605
   NTFY_ORDER 50-BeregnungDOIF_Trigger
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-05-06 11:15:24   Device          BeregnungDurchlauf_AN_AUS_AUTO
     2017-05-06 11:16:24   cmd             2.3
     2017-05-06 11:16:24   cmd_event       set_cmd_2
     2017-05-06 11:16:24   cmd_nr          2
     2017-05-06 11:16:24   cmd_seqnr       3
     2017-05-06 08:51:47   e_BeregnungDOIF_NachSonne_STATE cmd_1
     2017-05-06 11:15:24   e_BeregnungDurchlauf_AN_AUS_AUTO_STATE auto
     2017-05-06 11:16:24   state           cmd_2
     2017-05-06 11:16:24   wait_timer      06.05.2017 11:17:24 cmd_3_2 set_cmd_3
   Condition:
     0          InternalDoIf($hash,'BeregnungDurchlauf_AN_AUS_AUTO','STATE') eq "on" or (InternalDoIf($hash,'BeregnungDurchlauf_AN_AUS_AUTO','STATE') eq "auto" and InternalDoIf($hash,'BeregnungDOIF_NachSonne','STATE') eq "cmd_1")
     1          0
     2          0
     3          0
     4          0
     5          InternalDoIf($hash,'BeregnungDurchlauf_AN_AUS_AUTO','STATE') eq "off"
   Devices:
     0           BeregnungDurchlauf_AN_AUS_AUTO BeregnungDOIF_NachSonne
     5           BeregnungDurchlauf_AN_AUS_AUTO
     all         BeregnungDurchlauf_AN_AUS_AUTO BeregnungDOIF_NachSonne
   Do:
     0:
       0
       1
       2          set SqueezeBoxPlayer.* talk Durchlauf Beregnung gestartet, set BeregnungDOIF_Trigger cmd_2
     1:
       0          set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen
       1          set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen
       2          set BeregnungDOIF_Trigger cmd_3
     2:
       0          set BeregnungDummy_Helper Beregner_04_HinterKueche
       1          set BeregnungDummy_Helper Beregner_04_HinterKueche
       2          set BeregnungDOIF_Trigger cmd_4
     3:
       0          set BeregnungDummy_Helper Beregner_05_CampeggioOben
       1          set BeregnungDummy_Helper Beregner_05_CampeggioOben
       2          set BeregnungDOIF_Trigger cmd_5
     4:
       0          set BeregnungDummy_Helper Beregner_06_Waschhaus
       1          set BeregnungDummy_Helper Beregner_06_Waschhaus
       2          set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet
     5:
       0          set BeregnungDummy_Helper Beregner_01_Zitronen, set BeregnungDummy_Helper Beregner_02_CampeggioUnten, set BeregnungDummy_Helper Beregner_03_Blauregen, set BeregnungDummy_Helper Beregner_04_HinterKueche, set BeregnungDummy_Helper Beregner_05_CampeggioOben, set BeregnungDummy_Helper Beregner_06_Waschhaus, set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet
     6:
   Helper:
     event      auto
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_3
     sleepsubtimer 1
     sleeptimer 2
     timerdev   BeregnungDurchlauf_AN_AUS_AUTO
     timerevent auto
     triggerDev BeregnungDurchlauf_AN_AUS_AUTO
     timerevents:
       auto
     timereventsState:
       state: auto
     triggerEvents:
       auto
     triggerEventsState:
       state: auto
   Internals:
     0           BeregnungDurchlauf_AN_AUS_AUTO:STATE BeregnungDOIF_NachSonne:STATE
     5           BeregnungDurchlauf_AN_AUS_AUTO:STATE
     all         BeregnungDurchlauf_AN_AUS_AUTO:STATE BeregnungDOIF_NachSonne:STATE
   Itimer:
   Readings:
   Regexp:
     0:
     1:
     2:
     3:
     4:
     5:
     All:
   State:
     State:
   Trigger:
Attributes:
   group      Beregnung
   wait       0,0,0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0