[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

Zitat von: holle75 am 10 Mai 2017, 13:13:37wieso fragst du auf STATE und nicht state ab?
Weil es in der CommandRef auch so steht ;). Und aus der habe ich das einfach kopiert.

Zitat von: holle75 am 10 Mai 2017, 13:13:37und die Beregner gehen aus, die Dummies sind aber noch an
Stimmt, die Abfrage, ob der Dummy auf "on" steht, fehlt  :-[. Also doch nicht so einfach.

holle75

#106
Oh neee, jetzt hab ich natürlich noch ein Kuriosum finden müssen.
Puh, hast du es im Testsystem, drinnen gerade? Falls ja, mach mal die Einstellungen wie im angehängten Bild.

Der Code gerade:

define myTwilight Twilight 43.5976 12.8648 0 712129
attr myTwilight group Beregnung
attr myTwilight room Beregnung
attr myTwilight sortby 20
attr myTwilight stateFormat Sonnenelevation aktuell: elevation

#--------------------------- FAKE DUMMIES ---------------------------------#

define BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 dummy
attr BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 room Beregnung
attr BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 webCmd on:off

define BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 dummy
attr BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 room Beregnung
attr BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 webCmd on:off

define BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 dummy
attr BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 room Beregnung
attr BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 webCmd on:off

define BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 dummy
attr BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 room Beregnung
attr BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 webCmd on:off

define BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 dummy
attr BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 room Beregnung
attr BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 webCmd on:off

define BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 dummy
attr BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 room Beregnung
attr BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 webCmd on:off

define PozzoHauptOben_PUMPE_Cisterna dummy
attr PozzoHauptOben_PUMPE_Cisterna room Beregnung
attr PozzoHauptOben_PUMPE_Cisterna webCmd on:off


#------------------------ Beregner Dummys ---------------------------#

define Beregner_01_Zitronen dummy
attr Beregner_01_Zitronen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_01_Zitronen group Beregnung
attr Beregner_01_Zitronen readingList talktext,switch,Kreis
attr Beregner_01_Zitronen room Beregnung
attr Beregner_01_Zitronen setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_01_Zitronen webCmd Kreis:auto:on:off
#set Beregner_01_Zitronen talktext Beregnung Zitronen
#set Beregner_01_Zitronen switch BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14

define Beregner_05_CampeggioOben dummy
attr Beregner_05_CampeggioOben devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_05_CampeggioOben group Beregnung
attr Beregner_05_CampeggioOben readingList talktext,switch,Kreis
attr Beregner_05_CampeggioOben room Beregnung
attr Beregner_05_CampeggioOben setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_05_CampeggioOben webCmd Kreis:auto:on:off
#set Beregner_05_CampeggioOben talktext Beregnung Camping oben
#set Beregner_05_CampeggioOben switch BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13

define Beregner_02_CampeggioUnten dummy
attr Beregner_02_CampeggioUnten devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_02_CampeggioUnten group Beregnung
attr Beregner_02_CampeggioUnten readingList talktext,switch,Kreis
attr Beregner_02_CampeggioUnten room Beregnung
attr Beregner_02_CampeggioUnten setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_02_CampeggioUnten webCmd Kreis:auto:on:off
#set Beregner_02_CampeggioUnten talktext Beregnung Camping unten
#set Beregner_02_CampeggioUnten switch BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18

define Beregner_03_Blauregen dummy
attr Beregner_03_Blauregen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_03_Blauregen group Beregnung
attr Beregner_03_Blauregen readingList talktext,switch,Kreis
attr Beregner_03_Blauregen room Beregnung
attr Beregner_03_Blauregen setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_03_Blauregen webCmd Kreis:auto:on:off
#set Beregner_03_Blauregen talktext Beregnung Blauregen
#set Beregner_03_Blauregen switch BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17

define Beregner_04_HinterKueche dummy
attr Beregner_04_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_04_HinterKueche group Beregnung
attr Beregner_04_HinterKueche readingList talktext,switch,Kreis
attr Beregner_04_HinterKueche room Beregnung
attr Beregner_04_HinterKueche setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_04_HinterKueche webCmd Kreis:auto:on:off
#set Beregner_04_HinterKueche talktext Beregnung Hinter Kueche
#set Beregner_04_HinterKueche switch BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15

define Beregner_06_Waschhaus dummy
attr Beregner_06_Waschhaus devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_06_Waschhaus group Beregnung
attr Beregner_06_Waschhaus readingList talktext,switch,Kreis
attr Beregner_06_Waschhaus room Beregnung
attr Beregner_06_Waschhaus setList Kreis:Kreis1,Kreis2,Kreis3,Kreis4,Kreis5,Kreis6
attr Beregner_06_Waschhaus webCmd Kreis:auto:on:off
#set Beregner_06_Waschhaus talktext Beregnung Waschhaus
#set Beregner_06_Waschhaus switch BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16



#------------------------ Beregnung Einstellung Dummys ----------------------------#

define BeregnungStartmonat dummy
attr BeregnungStartmonat eventMap Jan:1 Feb:2 Mar:3 Apr:4 Mai:5 Jun:6 Jul:7 Aug:8 Sep:9 Okt:10 Nov:11 Dez:12
attr BeregnungStartmonat group Beregnung
attr BeregnungStartmonat room Beregnung
attr BeregnungStartmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr BeregnungStartmonat sortby 5
attr BeregnungStartmonat webCmd state

define BeregnungEndmonat dummy
attr BeregnungEndmonat eventMap Jan:1 Feb:2 Mar:3 Apr:4 Mai:5 Jun:6 Jul:7 Aug:8 Sep:9 Okt:10 Nov:11 Dez:12
attr BeregnungEndmonat group Beregnung
attr BeregnungEndmonat room Beregnung
attr BeregnungEndmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr BeregnungEndmonat sortby 6
attr BeregnungEndmonat webCmd state

define BeregnungStandarddauer dummy
attr BeregnungStandarddauer group Beregnung
attr BeregnungStandarddauer room Beregnung
attr BeregnungStandarddauer setList state:slider,1,1,60
attr BeregnungStandarddauer sortby 4
attr BeregnungStandarddauer webCmd state

define BeregnungStartelevation dummy
attr BeregnungStartelevation group Beregnung
attr BeregnungStartelevation room Beregnung
attr BeregnungStartelevation setList state:slider,1,1,30
attr BeregnungStartelevation sortby 3
attr BeregnungStartelevation webCmd state

define BeregnungDurchlauf_AN_AUS_AUTO dummy
attr BeregnungDurchlauf_AN_AUS_AUTO devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr BeregnungDurchlauf_AN_AUS_AUTO group Beregnung
attr BeregnungDurchlauf_AN_AUS_AUTO room Beregnung
attr BeregnungDurchlauf_AN_AUS_AUTO sortby 2
attr BeregnungDurchlauf_AN_AUS_AUTO webCmd auto:on:off

#------------------------- Beregnung Logik -----------------------------#

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


define BeregnungDummy_Helper dummy
attr BeregnungDummy_Helper group Beregnung

define BeregnungDOIF_Mapping DOIF (["^Beregner_:^on$"]) \
(sleep 0.001;;set [$DEVICE:switch] on, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["^Beregner_:^off$"]) \
(sleep 0.001;;set [$DEVICE:switch] off, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["^Beregner_:^auto$"]) \
(sleep 0.001;;set [$DEVICE:switch] off) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto" and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto") \
(sleep 0.001;;set [$EVENT:switch] off) \
DOELSEIF ([BeregnungDummy_Helper])
attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|0|0
attr BeregnungDOIF_Mapping do always
attr BeregnungDOIF_Mapping group Beregnung



define BeregnungDOIF_Trigger DOIF (["BeregnungDurchlauf_AN_AUS_AUTO:on"] or ([?BeregnungDurchlauf_AN_AUS_AUTO] eq "auto" and [BeregnungDOIF_NachSonne] eq "cmd_1")) \
() \
() \
(set SqueezeBoxPlayer.* talk Automatik Beregnung gestartet, set $SELF cmd_2) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis1"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis1"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set $SELF cmd_3) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis2"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis2"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set $SELF cmd_4) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis3"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis3"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set $SELF cmd_5) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis4"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis4"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set $SELF cmd_6) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis5"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis5"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set $SELF cmd_7) \
DOELSEIF (0) \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis6"')) {fhem("set BeregnungDummy_Helper $_")}} \
{foreach (AggrDoIf('@','^Beregner_','Kreis','"Kreis6"')) {fhem("set BeregnungDummy_Helper $_")}} \
(set SqueezeBoxPlayer.* talk Automatik Beregnung beendet, IF ([BeregnungDurchlauf_AN_AUS_AUTO] eq "on") (set BeregnungDurchlauf_AN_AUS_AUTO off )) \
DOELSEIF ([BeregnungDurchlauf_AN_AUS_AUTO] eq "off") \
({foreach (AggrDoIf('@','^Beregner_')) {fhem("set BeregnungDummy_Helper $_")}}, set SqueezeBoxPlayer.* talk Automatik Beregnung beendet)
attr BeregnungDOIF_Trigger group Beregnung
attr BeregnungDOIF_Trigger wait 0,0,0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0,[BeregnungDOIF_Mapping],0:0


#------------------------- Beregnung Pumpe Cisterna bei Bedarf on -----------------------------#

define BeregnungDOIF_PumpeCisterna DOIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] ne "0" or [?$SELF:manu] eq "on") \
(set PozzoHauptOben_PUMPE_Cisterna on) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^off$"] and [?$SELF:cmd] ne "4") \
(set $SELF manu off) \
DOELSEIF  (["^PozzoHauptOben_PUMPE_Cisterna$:^on$"] and [?$SELF:cmd] ne "1") \
(set $SELF manu on) \
DOELSEIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] eq "0") \
(set PozzoHauptOben_PUMPE_Cisterna off)
attr BeregnungDOIF_PumpeCisterna devStateIcon disabled:general_aus@red:initialize initialize|initialized|cmd_2|cmd_4:general_an@yellow:disable cmd_1|cmd_3:general_an@green:disable
attr BeregnungDOIF_PumpeCisterna group Beregnung
attr BeregnungDOIF_PumpeCisterna readingList manu
attr BeregnungDOIF_PumpeCisterna room Beregnung
attr BeregnungDOIF_PumpeCisterna wait 0:0:0:10


bisher hat wirklich jede Konstellation funktioniert, nur in genau dieser hier wird Beregner_01_Zitronen einfach ignoriert. Mann, Mann wo ist denn da jetzt bitte die Logik???

EDIT: ok, Zitronen wird richtigerweise getriggert, aber sofort wieder ausgeschaltet. Hab ich irgendwas in den waits, resp deiner verrückten Übernahme des waits aus mappingDOIF verbaselt?

EDITEDIT: Der verbaselt sich im MappingDOIF. Das war ja auch schon früher der Fall, konnte man bis jetzt aber mit dem Pseudo-Sleep abfangen. Deutlich sieht man es, wenn man mal die waits auf zb 5 sekunden stellt. Zum Teil (eben bei der Zitronen Konstellation kommt das off vor dem on und sonstige Schönheiten ... die auch immer mal anders ausfallen können). Ich glaube, deswegen hat dann auch der Umbau auf Homematic soviele Probleme bereitet. Da kommen so viele Events auf einmal, dass Mapping DOIF "nicht nachkommt", "nicht weiß was nehmen soll"?! :)

attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|5|5

Mmh, Per, wie kann man das "entprellen"? Idee?

Per

Kurzer Schuss ins Blaue (oder sogar ins Schwarze?): Dadurch, dass "Beregner_02_CampeggioUnten" off und (wie "Zitronen" "Kreis2") ist, wird der Timer auf 0 gesetzt, damit aber leider auch "Zitronen" beendet. Bisher war jeder Regner nur für seine Zeit zuständig, jetzt der letzte für den ganzen Kreis. Vllt. "einfach" die Aggregatsfunktion erweitern auf "status" eq "auto" (weiss nicht, ob das geht). Aber wie ich Damian kenne, geht das (und sei es erst morgen ;)).

Oder BeregnungDOIF_Mapping dahingehend anpassen, dass ein Nicht-Auto nach Start und Ende unterschiedlich (state) behandelt wird:
define BeregnungDOIF_Mapping DOIF (["^Beregner_:^on$"]) \
(sleep 0.001;;set [$DEVICE:switch] on, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["^Beregner_:^off$"]) \
(sleep 0.001;;set [$DEVICE:switch] off, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["^Beregner_:^auto$"]) \
(sleep 0.001;;set [$DEVICE:switch] off) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto" and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto") \
(sleep 0.001;;set [$EVENT:switch] off) \
DOELSEIF ([BeregnungDummy_Helper])
attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|[$self]|0|0



Zitat von: holle75 am 10 Mai 2017, 18:05:07Puh, hast du es im Testsystem, drinnen gerade?
Welches Testsystem? Ich mach das am "offenen Herzen" ;D. Mit
include test.cfg
wird das reingenommen, nach Reboot ist das wieder spurlos (außer ein paar einmaligen Fehlermeldungen) verschwunden.

Zitat von: holle75 am 10 Mai 2017, 18:05:07EDITEDIT: Der verbaselt sich im MappingDOIF. Das war ja auch schon früher der Fall, konnte man bis jetzt aber mit dem Pseudo-Sleep abfangen. Deutlich sieht man es, wenn man mal die waits auf zb 5 sekunden stellt. Zum Teil (eben bei der Zitronen Konstellation kommt das off vor dem on und sonstige Schönheiten ... die auch immer mal anders ausfallen können). Ich glaube, deswegen hat dann auch der Umbau auf Homematic soviele Probleme bereitet. Da kommen so viele Events auf einmal, dass Mapping DOIF "nicht nachkommt", "nicht weiß was nehmen soll"?! :)

attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|5|5

Mmh, Per, wie kann man das "entprellen"? Idee?

Pflege erstmal oben das ein. Die 5|5 kannst du machen, ich glaube aber nicht, dass du damit was änderst. DOIF (wie auch notify) gehen in der Reihenfolge vor, wie es auch im EventLog zu finden ist.

holle75

#108
Zitat von: Per am 10 Mai 2017, 21:21:42
Kurzer Schuss ins Blaue (oder sogar ins Schwarze?): Dadurch, dass "Beregner_02_CampeggioUnten" off und (wie "Zitronen" "Kreis2") ist, wird der Timer auf 0 gesetzt, damit aber leider auch "Zitronen" beendet. Bisher war jeder Regner nur für seine Zeit zuständig, jetzt der letzte für den ganzen Kreis. Vllt. "einfach" die Aggregatsfunktion erweitern auf "status" eq "auto" (weiss nicht, ob das geht). Aber wie ich Damian kenne, geht das (und sei es erst morgen ;)).

Das macht irgendwie mehr Sinn als meine Erklärung dass das DOIF in den events rumstochert :D ... man fängt halt klein an  :P

und den state in die Aggregatsfunktion zu nehmen kam mir auch schon kurz .... und wegen fehlendem knowhow auch wieder ganz schnell vergessen.... und nicht weiterverfolgt weil ich ja ans Gestochere glaubte.... und das wäre der sauberste Weg.

Zitat von: Per am 10 Mai 2017, 21:21:42
Oder BeregnungDOIF_Mapping dahingehend anpassen, dass ein Nicht-Auto nach Start und Ende unterschiedlich (state) behandelt wird:
define BeregnungDOIF_Mapping DOIF (["^Beregner_:^on$"]) \
(sleep 0.001;;set [$DEVICE:switch] on, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["^Beregner_:^off$"]) \
(sleep 0.001;;set [$DEVICE:switch] off, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["^Beregner_:^auto$"]) \
(sleep 0.001;;set [$DEVICE:switch] off) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto" and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto") \
(sleep 0.001;;set [$EVENT:switch] off) \
DOELSEIF ([BeregnungDummy_Helper])
attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|[$self]|0|0


... aber machst du so nicht auch "an" wenn state nicht auto ist ? ... wenn auch nur für eine Millisekunde? Denke, das würden die echten Schalter nicht so gerne öfter mögen.

Zitat von: Per am 10 Mai 2017, 21:21:42
wird das reingenommen, nach Reboot ist das wieder spurlos (außer ein paar einmaligen Fehlermeldungen) verschwunden.

Mmh, gut zu wissen.

Zitat von: Per am 10 Mai 2017, 21:21:42
Pflege erstmal oben das ein. Die 5|5 kannst du machen, ich glaube aber nicht, dass du damit was änderst. DOIF (wie auch notify) gehen in der Reihenfolge vor, wie es auch im EventLog zu finden ist.

Die 5|5 war nur ein Vorschlag um zu sehen wie "komisch" sich Mapping DOIF verhält, nicht als Fix gedacht. Die Reihenfolgen Info ist top. Und auch sinnig. Und widerlegt meine Gestocher-Theorie um so deutlicher.

Per

Zitat von: holle75 am 10 Mai 2017, 23:55:25... aber machst du so nicht auch "an" wenn state nicht auto ist ? ... wenn auch nur für eine Millisekunde?
Ja, wollte nur sehen, ob du um diese Zeit noch aufpasst :D
Ist der übliche C&P-Fehler. dort kommt eine leere Klammer oder dein Sleep rein, mehr nicht.

Evtl. kann auch das letzte DOELSEIF gelöscht werden, außer einem EventLog-Eintrag macht das ja nix effektiv. Weiss auch nicht mehr, wofür das mal gedacht war.

holle75

#110
define BeregnungDOIF_Mapping DOIF (["^Beregner_:^on$"]) \
(sleep 0.001;;set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["^Beregner_:^off$"]) \
(sleep 0.001;;set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["^Beregner_:^auto$"]) \
(sleep 0.001;;set [$DEVICE:switch] off) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto" and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
() \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto") \
(sleep 0.001;;set [$EVENT:switch] off)

attr BeregnungDOIF_Mapping cmdState [$self]|[$self]|[$self]|60*[BeregnungStandarddauer]|[$self]|0
attr BeregnungDOIF_Mapping do always
attr BeregnungDOIF_Mapping group Beregnung


so lässt er Zitronen immer noch aus. Vielleicht lag ich ja mit meinem Gestochere doch nicht so falsch  :'(

so sieht ein Durchgang im eventlog aus mit Filter .*BEREGNUNG.*

2017-05-11 15:43:52 dummy BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 on
2017-05-11 15:44:52 DOIF BeregnungDOIF_PumpeCisterna wait_timer: 11.05.2017 15:45:02 cmd_4 BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16
2017-05-11 15:44:52 dummy BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 off
2017-05-11 15:44:52 dummy BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 on
2017-05-11 15:44:52 DOIF BeregnungDOIF_PumpeCisterna wait_timer: 11.05.2017 15:45:02 cmd_4 BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14
2017-05-11 15:44:52 dummy BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 off
2017-05-11 15:44:52 dummy BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 on
2017-05-11 15:45:52 DOIF BeregnungDOIF_PumpeCisterna wait_timer: 11.05.2017 15:46:02 cmd_4 BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15
2017-05-11 15:45:52 dummy BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 off
2017-05-11 15:46:02 DOIF BeregnungDOIF_PumpeCisterna cmd_event: BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15


immer noch Zitronen an und sofort wieder aus.

Per


holle75

#112
Das ist von dir ;) .... aber auch in Groß wird Zitronen übersprungen. Gerade probiert

NEIN, jetzt gehts doch! ... hab mich mit dem wait verbaselt. So gehts (gerade ;) )

define BeregnungDOIF_Mapping DOIF (["^Beregner_:^on$"]) \
(sleep 0.001;;set [$DEVICE:switch] on, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["^Beregner_:^off$"]) \
(sleep 0.001;;set [$DEVICE:switch] off, sleep 0.001;;set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["^Beregner_:^auto$"]) \
(sleep 0.001;;set [$DEVICE:switch] off) \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto" and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
(sleep 0.001;;set [$EVENT:switch] on) \
DOELSEIF ([BeregnungDummy_Helper] and [?BeregnungDOIF_Trigger:cmd_seqnr] eq "2") \
() \
DOELSEIF ([BeregnungDummy_Helper] and [?$EVENT] eq "auto") \
(sleep 0.001;;set [$EVENT:switch] off)

attr BeregnungDOIF_Mapping cmdState [$SELF]|[$SELF]|[$SELF]|60*[BeregnungStandarddauer]|[$SELF]|0

holle75

#113
Sieht gut aus. Yes .... Danke, Per.

jetzt würde ich das gerne die Tage am Anfang zusammenschreiben damit auch andere was davon haben.

Aber eine kleine Sache habe ich noch. Im Laufe der Tests habe ich ja, wie du auch, alle Schalter gegen Dummies getauscht.

Die PozzoPumpen Automatik funktioniert mit meinem Homematic Schalter im Betriebssetup prima. Mit einem Dummy nicht.

Die Laufzeit wird nicht berechnet. Die Pozzo Automatik habe ich noch ein wenig erweitert, so dass sie auch läuft, wenn die Beregnung an ist und dann Mittags nochmal schaut ob insgesamt 30 Minuten gelaufen wurde. Wenn nicht substituiert sie die Differenz.

Der Code ist gerade so:

define PozzoHauptOben_PUMPE_PozzoDOIF DOIF ([13:00-16:00] and [Xtender_AC_out] < 1200 and [?$SELF:Laufzeit] < 1800) \
(set PozzoHauptOben_PUMPE_Pozzo on) \
(set $SELF cmd_4) \
DOELSEIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] ne "0" and [Xtender_AC_out] < 1200) \
(set PozzoHauptOben_PUMPE_Pozzo on) \
DOELSEIF ([#"^BEREGNUNG_SCHALTER_":state:"^on$"] eq "0" and ([$SELF:cmd_seqnr] eq "1" or [$SELF:cmd] eq "2")) \
(set $SELF cmd_4) \
DOELSEIF ([Xtender_AC_out] > 2100 and ([$SELF:cmd_seqnr] eq "1" or [$SELF:cmd] eq "2")) \
(set $SELF Laufzeit {([$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec])},set PozzoHauptOben_PUMPE_Pozzo off) \
DOELSEIF ([04:00]) (set $SELF Laufzeit 0)
attr PozzoHauptOben_PUMPE_PozzoDOIF devStateIcon disabled:general_aus@red:initialize initialize|initialized|cmd_1|cmd_1_2|cmd_3|cmd_4|cmd_5:general_an@yellow:disable cmd_1_1|cmd_2:general_an@green:disable
attr PozzoHauptOben_PUMPE_PozzoDOIF group Beregnung
attr PozzoHauptOben_PUMPE_PozzoDOIF readingList Laufzeit
attr PozzoHauptOben_PUMPE_PozzoDOIF room Beregnung
attr PozzoHauptOben_PUMPE_PozzoDOIF sortby 7
attr PozzoHauptOben_PUMPE_PozzoDOIF wait 180,1800-[$SELF:Laufzeit]:60:0:0:0
#set PozzoHauptOben_PUMPE_PozzoDOIF Laufzeit 0


aber mit einem Dummy

define Xtender_AC_out dummy
attr Xtender_AC_out room Beregnung
attr Xtender_AC_out setList state:slider,0,200,2400
attr Xtender_AC_out webCmd state


wird die Laufzeit nicht mehr Berechnet. Mir könnte es ja wurscht sein, aber so ein fertig importierbarer Code zum spielen und testen für andere, der auch komplett funktioniert wär schon was ;)

Per

(set PozzoHauptOben_PUMPE_Pozzo off,set $SELF Laufzeit {([$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec])})
sec sollte immer 0 sein, weil du gerade die Pumpe geschaltet hast. Eine echte Pumpe hat da vllt. etwas "Reaktionszeit", beim Dummy solltest du wahrscheinlich die Reihenfolge umdrehen:
(set $SELF Laufzeit {([$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec])},set PozzoHauptOben_PUMPE_Pozzo off)

holle75

probier ich, oben im Code schon geändert, nicht wundern. Hab gepennt

holle75

Genau das wars.

Trotzdem gerade überlegt, dass ich die PozzoPumpe rauslass. Wer hat schon zwei Pumpen. Machts nur komplizierter

Per

Bennene sie doch Prozzo-Pumpe ;).

Mich würde schonmal das "Gesamtkunstwerk" in echt interessieren, die Namen der Devices machen neugierig...

holle75

Mußt du halt mal beim nächsten Italien-Urlaub vorbeikommen! Sehr nett hier. Hippie-See-Idylle meets Hardcoreautomation mit allen Bubenspielereien dies so braucht. Vom Trecker bis zur Solaranlage, Seecontainer, Motorsägen :D :D .... Da hättest du Freude bei .... aber nicht den Twilight Koordinaten folgen, die sind "abgeändert" :D

Per

Zitat von: holle75 am 11 Mai 2017, 22:17:29Mußt du halt mal beim nächsten Italien-Urlaub vorbeikommen!
Ist das ne Einladung? ;D. Wäre mein erster Italien-Aufenthalt.