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

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

Vorheriges Thema - Nächstes Thema

holle75

Hallo, ich habe mal eine Beregnung gebastelt die in der Dauer einstellbar und in Abhängigkeit des Sonnenstandes schaltet. Da immer nur bestimmte Kreise gleichzeitig von der Pumpe bedient werden können, aktivieren sich diese zT nacheinander oder gleichzeitig. Jeder Kreis ist in die Automatik integrierbar oder auch nicht. Jeder Kreis ist einzeln an- und auszuschalten. Der Start- und Endmonat ist auswählbar. Die Beregnung spricht über Squeezebox mit mir. Kombiniert ist die Beregnung (die über eine Zisterne versorgt wird) mit einer Tiefenpumpe um den Nachschub zu sichern. Siehe https://forum.fhem.de/index.php/topic,69466.0.html (danke an Per)

Der Code ist meines Erachtens ausgesprochen häßlich (und laaaang .... aber funktioniert) und ich würde mich über eure Inputs freuen. Wie kann man die selbe (oder ausgeweitete Funktionalität) in schöner hinbekommen?

Schlecht gelöst ist im Moment auch noch das Verhindern des direkten Loslaufens der Automatik bei Aktivierung und nicht erst am nächsten Tag (BeregnungHystereseDOIF).

das kommt direkt aus der fhem.cfg:

######################################## BEREGNUNG ############################################

define myTwilight Twilight 42.xxxx 11.xxxx x yyyyyy
attr myTwilight group Beregnung
attr myTwilight room Beregnung
attr myTwilight sortby 20
attr myTwilight stateFormat Sonnenelevation aktuell: elevation

#----------------------------------------------------------------#

define Beregnung_Zitronen dummy
attr Beregnung_Zitronen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Zitronen group Beregnung
attr Beregnung_Zitronen room Beregnung
attr Beregnung_Zitronen webCmd auto:on:off
#attr Beregnung_Zitronen devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Zitronen setList auto on off

define Beregnung_CampeggioOben dummy
attr Beregnung_CampeggioOben devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioOben group Beregnung
attr Beregnung_CampeggioOben room Beregnung
attr Beregnung_CampeggioOben webCmd auto:on:off
#attr Beregnung_CampeggioOben devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_CampeggioOben setList auto on off

define Beregnung_CampeggioUnten dummy
attr Beregnung_CampeggioUnten devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioUnten group Beregnung
attr Beregnung_CampeggioUnten room Beregnung
attr Beregnung_CampeggioUnten webCmd auto:on:off
#attr Beregnung_CampeggioUnten devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_CampeggioUnten setList auto on off

define Beregnung_Blauregen dummy
attr Beregnung_Blauregen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Blauregen group Beregnung
attr Beregnung_Blauregen room Beregnung
attr Beregnung_Blauregen webCmd auto:on:off
#attr Beregnung_Blauregen devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Blauregen setList auto on off

define Beregnung_HinterKueche dummy
attr Beregnung_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_HinterKueche group Beregnung
attr Beregnung_HinterKueche room Beregnung
attr Beregnung_HinterKueche webCmd auto:on:off
#attr Beregnung_HinterKueche devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_HinterKueche setList auto on off

define Beregnung_Waschhaus dummy
attr Beregnung_Waschhaus devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Waschhaus group Beregnung
attr Beregnung_Waschhaus room Beregnung
attr Beregnung_Waschhaus webCmd auto:on:off
#attr Beregnung_Waschhaus devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Waschhaus setList auto on off

define Beregnung_Startmonat dummy
attr Beregnung_Startmonat 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 Beregnung_Startmonat group Beregnung
attr Beregnung_Startmonat room Beregnung
attr Beregnung_Startmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Startmonat sortby 5
attr Beregnung_Startmonat webCmd state

define Beregnung_Endmonat dummy
attr Beregnung_Endmonat 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 Beregnung_Endmonat group Beregnung
attr Beregnung_Endmonat room Beregnung
attr Beregnung_Endmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Endmonat sortby 6
attr Beregnung_Endmonat webCmd state

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

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

#-----------------------------------------------------------------------#

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

define BeregnungNachSonneDOIF DOIF ([myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [Beregnung_Startmonat] and $month <= [Beregnung_Endmonat])) (set Beregnung_TRIGGER_Ablauf on)
attr BeregnungNachSonneDOIF group Beregnung
attr BeregnungNachSonneDOIF room Beregnung

define BeregnungHystereseDOIF DOIF ([Beregnung_Durchlauf_AN_AUS_AUTO] eq "on") (set Beregnung_TRIGGER_Ablauf on,set BeregnungNachSonneDOIF disable) \
DOELSEIF ([Beregnung_Durchlauf_AN_AUS_AUTO] eq "off") (set Beregnung_TRIGGER_Ablauf off,set BeregnungNachSonneDOIF disable) \
DOELSEIF ([01:00] and [Beregnung_Durchlauf_AN_AUS_AUTO] eq "auto")(set BeregnungNachSonneDOIF initialize)
attr BeregnungHystereseDOIF do always
attr BeregnungHystereseDOIF group Beregnung
attr BeregnungHystereseDOIF room Beregnung

#---------------------------------------------------------------------#

define Beregnung_TRIGGER_Ablauf dummy
attr Beregnung_TRIGGER_Ablauf group Beregnung

define Beregnung_TRIGGER_Blauregen dummy
attr Beregnung_TRIGGER_Blauregen group Beregnung

define Beregnung_TRIGGER_HinterKueche dummy
attr Beregnung_TRIGGER_HinterKueche group Beregnung

define Beregnung_TRIGGER_CampeggioOben dummy
attr Beregnung_TRIGGER_CampeggioOben group Beregnung

define Beregnung_TRIGGER_Waschhaus dummy
attr Beregnung_TRIGGER_Waschhaus group Beregnung

define Beregnung_TRIGGER_CampeggioUnten dummy
attr Beregnung_TRIGGER_CampeggioUnten group Beregnung

#-----------------------------------------------------------------------#

define BeregnungZitronenDOIF DOIF ([Beregnung_TRIGGER_Ablauf] eq "on" and [?Beregnung_Zitronen] eq "auto") (set BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 on, set Beregnung_TRIGGER_Blauregen on,set Beregnung_TRIGGER_CampeggioUnten on,set SqueezeBoxPlayer.* talk Beregnung Zitronen gestartet) (set BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 off) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "on" and [?Beregnung_Zitronen] eq "off") (set Beregnung_TRIGGER_Blauregen on) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 off) \
DOELSEIF ([Beregnung_Zitronen] eq "on") (set BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 on,set SqueezeBoxPlayer.* talk Beregnung Zitronen gestartet) \
DOELSEIF ([Beregnung_Zitronen] eq "off") (set BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14 off)
attr BeregnungZitronenDOIF do always
attr BeregnungZitronenDOIF group Beregnung
attr BeregnungZitronenDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0

define BeregnungCampeggioUntenDOIF DOIF ([Beregnung_TRIGGER_CampeggioUnten] eq "on" and [?Beregnung_CampeggioUnten] eq "auto") (set BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 on,set SqueezeBoxPlayer.* talk Beregnung Campingplatz Unten gestartet) (set BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 off) \
DOELSEIF ([Beregnung_TRIGGER_CampeggioUnten] eq "on" and [?Beregnung_CampeggioUnten] eq "off") (set SqueezeBoxPlayer.* talk test) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 off) \
DOELSEIF ([Beregnung_CampeggioUnten] eq "on") (set BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 on,set SqueezeBoxPlayer.* talk Beregnung Campingplatz Unten gestartet) \
DOELSEIF ([Beregnung_CampeggioUnten] eq "off") (set BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18 off)
attr BeregnungCampeggioUntenDOIF do always
attr BeregnungCampeggioUntenDOIF group Beregnung
attr BeregnungCampeggioUntenDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0

define BeregnungBlauregenDOIF DOIF ([Beregnung_TRIGGER_Blauregen] eq "on" and [?Beregnung_Blauregen] eq "auto") (set BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 on,set SqueezeBoxPlayer.* talk Beregnung Blauregen gestartet) (set BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 off,set Beregnung_TRIGGER_HinterKueche on) \
DOELSEIF ([Beregnung_TRIGGER_Blauregen] eq "on" and [?Beregnung_Blauregen] eq "off") (set Beregnung_TRIGGER_HinterKueche on) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 off) \
DOELSEIF ([Beregnung_Blauregen] eq "on") (set BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 on,set SqueezeBoxPlayer.* talk Beregnung Blauregen gestartet) \
DOELSEIF ([Beregnung_Blauregen] eq "off") (set BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17 off)
attr BeregnungBlauregenDOIF do always
attr BeregnungBlauregenDOIF group Beregnung
attr BeregnungBlauregenDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0

define BeregnungHinterKuecheDOIF DOIF ([Beregnung_TRIGGER_HinterKueche] eq "on" and [?Beregnung_HinterKueche] eq "auto") (set BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 on,set SqueezeBoxPlayer.* talk Beregnung Kueche gestartet) (set BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 off,set Beregnung_TRIGGER_CampeggioOben on) \
DOELSEIF ([Beregnung_TRIGGER_HinterKueche] eq "on" and [?Beregnung_HinterKueche] eq "off") (set Beregnung_TRIGGER_CampeggioOben on) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 off) \
DOELSEIF ([Beregnung_HinterKueche] eq "on") (set BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 on,set SqueezeBoxPlayer.* talk Beregnung Kueche gestartet) \
DOELSEIF ([Beregnung_HinterKueche] eq "off") (set BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15 off)
attr BeregnungHinterKuecheDOIF do always
attr BeregnungHinterKuecheDOIF group Beregnung
attr BeregnungHinterKuecheDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0

define BeregnungCampeggioObenDOIF DOIF ([Beregnung_TRIGGER_CampeggioOben] eq "on" and [?Beregnung_CampeggioOben] eq "auto") (set BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 on,set SqueezeBoxPlayer.* talk Beregnung Campingplatz Oben gestartet) (set BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 off,set Beregnung_TRIGGER_Waschhaus on) \
DOELSEIF ([Beregnung_TRIGGER_CampeggioOben] eq "on" and [?Beregnung_CampeggioOben] eq "off") (set Beregnung_TRIGGER_Waschhaus on) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 off) \
DOELSEIF ([Beregnung_CampeggioOben] eq "on") (set BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 on,set SqueezeBoxPlayer.* talk Beregnung Campingplatz Oben gestartet) \
DOELSEIF ([Beregnung_CampeggioOben] eq "off") (set BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13 off)
attr BeregnungCampeggioObenDOIF do always
attr BeregnungCampeggioObenDOIF group Beregnung
attr BeregnungCampeggioObenDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0

define BeregnungWaschhausDOIF DOIF ([Beregnung_TRIGGER_Waschhaus] eq "on" and [?Beregnung_Waschhaus] eq "auto") (set BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 on,set SqueezeBoxPlayer.* talk Beregnung Waschhaus gestartet) (set BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 off,set SqueezeBoxPlayer.* talk Beregnung beendet) \
DOELSEIF ([Beregnung_TRIGGER_Waschhaus] eq "on" and [?Beregnung_Waschhaus] eq "off") (set SqueezeBoxPlayer.* talk Beregnung beendet) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off") (set BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 off) \
DOELSEIF ([Beregnung_Waschhaus] eq "on") (set BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 on,set SqueezeBoxPlayer.* talk Beregnung Waschhaus gestartet) \
DOELSEIF ([Beregnung_Waschhaus] eq "off") (set BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16 off)
attr BeregnungWaschhausDOIF do always
attr BeregnungWaschhausDOIF group Beregnung
attr BeregnungWaschhausDOIF wait 0,[Beregnung_Standarddauer:state]*60:0:0:0:0



#---------------------------------------------------------------------------#

define FileLog_Beregnung FileLog ./log/Beregnung-%Y-%m.log BEREGNUNG.*:(on|off)|PozzoHauptOben_PUMPE_Pozzo:(on|off)
attr FileLog_Beregnung group Beregnung
attr FileLog_Beregnung logtype text

define SVG_FileLog_Beregnung_1 SVG FileLog_Beregnung:SVG_FileLog_Beregnung_1:CURRENT
attr SVG_FileLog_Beregnung_1 group Beregnung
attr SVG_FileLog_Beregnung_1 room Beregnung
attr SVG_FileLog_Beregnung_1 sortby 1








########################################################################
########################### Neue Beregnung #################################
########################################################################


Das ist jetzt der Erguss aus diesem Thread. Der Code entstammt primär Pers Hirn und Fingern und ich habe als Ideengeber und Tester fungiert. ;) ... nochmal Danke dafür, Per!

Die Funktionalität entspricht der ursprünglichen, plus einer Zisternenpumpe die sich bei Beginn der Automatik anschaltet (nur wenn sie vorher aus war) und nach Beendigung der Beregnung wieder ausschaltet. Zusätzlich wird noch eine Brunnenpumpe entsprechend der Laufzeit der Beregnung aktiviert. Insgesamt soll diese 30 Minuten am Tag laufen und da in meinem Falle Solarstrom Mittags am meisten vorhanden ist, die fehlende Zeit dann substituieren.

Weiterhin schaltet die Brunnenpumpe bei sonstigem übermäßigen Strombezug ab und macht weiter (bis 30 min) wenn der Strombedarf wieder gesunken ist.

Ach so, und jetzt kann man Beregner per Dropdown in Kreisen kombinieren (zeitgleich laufen lassen) und dadurch auch die Reihenfolge der einzelnen Beregner frei wählen.

Habt Spaß. Ich hoffe es ist ausreichend kommentiert, dass man sich zurechtfindet. (Sowohl die Ansagen, das Filelog, der Plot, als auch die Pumpen können einfach bei Nichtbedarf eliminiert werden, der Rest sollte trotzdem funktionieren)

H.

PS: viele recht verschwurbelt und komplex anmutende Bedingungen in den DOIF´s resultieren aus den von Homematic generierten Zwischenstands-Events beim Schalten und der dadurch nötigen Eingrenzung der zu triggernden Events. Das ist aber kein Nachteil, egal welche Schalter ihr für eure Ventile habt .... liest sich nur anstrengender.


######################################## BEREGNUNG ############################################

define myTwilight Twilight 43.5976 12.8648 0 712129
attr myTwilight group Beregnung
attr myTwilight room Beregnung
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

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

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

#------------------------ 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_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_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_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 [?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



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

#----------------------------- Pozzo Pumpe ------------------------------#

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] 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 wait 180,1800-[$SELF:Laufzeit]:0:10:0:0
#set PozzoHauptOben_PUMPE_PozzoDOIF Laufzeit 0
#------------------------- Beregnung Filelog und plot -----------------------------#

define FileLog_Beregnung FileLog ./log/Beregnung-%Y-%m.log BEREGNUNG_SCHALTER_.*:(on|off)|PozzoHauptOben_PUMPE_Pozzo:(on|off)|PozzoHauptOben_PUMPE_Cisterna:(on|off)
attr FileLog_Beregnung group Beregnung
attr FileLog_Beregnung logtype text

define SVG_FileLog_Beregnung_1 SVG FileLog_Beregnung:SVG_FileLog_Beregnung_1:CURRENT
attr SVG_FileLog_Beregnung_1 group Beregnung
attr SVG_FileLog_Beregnung_1 room Beregnung
attr SVG_FileLog_Beregnung_1 sortby 1

Per

Erste Frage zur Vereinfachung: könnte man BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14, Beregnung_TRIGGER_Blauregen und Beregnung_TRIGGER_CampeggioUnten auch nacheinander schalten (evtl. mit geänderten Zeiten)?

Vorab ein kleiner Codeschnipsel zur kleinen Vereinfachung:

Dazu ein jeweils ins DOIF
define BeregnungHinterKuecheDOIF DOIF ([Beregnung_TRIGGER_HinterKueche] eq "on" and [?Beregnung_HinterKueche] eq "auto") (set [$SELF:switch] on,set SqueezeBoxPlayer.* talk [$SELF:talktext]) (set [$SELF:switch] off,set [$SELF:next] on) \
DOELSEIF ([Beregnung_TRIGGER_HinterKueche] eq "on" and [?Beregnung_HinterKueche] eq "off") (set [$SELF:next] on) \
DOELSEIF ([Beregnung_HinterKueche] eq "on") (set [$SELF:switch] on,set SqueezeBoxPlayer.* talk [$SELF:talktext]) \
DOELSEIF ([Beregnung_TRIGGER_Ablauf] eq "off" or [Beregnung_HinterKueche] eq "off") (set [$SELF:switch] off)

attr BeregnungHinterKuecheDOIF userReadings talktext, switch, next
set BeregnungHinterKuecheDOIF talktext Beregnung Kueche gestartet
set BeregnungHinterKuecheDOIF switch BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15
set BeregnungHinterKuecheDOIF next Beregnung_TRIGGER_CampeggioOben


Per

Ne Idee gehabt, deshalb nicht einschlafen können, also gleich aufgeschrieben:

Pro Beregner ein DOIF, ich habe sie mal mit _A bis _F bezeichnet, kannst aber deine Bezeichnungen beibehalten.
define Beregner_DOIF_F DOIF (0)
DOELSEIF (0) ({Beregner_Auswahl F on})
DOELSEIF (0) ({Beregner_Auswahl F off})
attr Beregner_DOIF_F userReadings talktext, switch
attr Beregner_DOIF_F cmdState auto|on|off
attr Beregner_DOIF_F devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_DOIF_F group Beregnung
attr Beregner_DOIF_F room Beregnung
set Beregner_DOIF_F talktext Beregnung Kueche gestartet
set Beregner_DOIF_F switch BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15

Diese DOIF werden direkt im Frontend angezeigt und geschaltet.


Dazu die "Automatik", welche täglich um 8 Uhr startet:
define BeregnerTrigger DOIF ([08:00]) (
IF ([Beregner_DOIF_A] != "auto" and [Beregner_DOIF_B] != "auto" and [Beregner_DOIF_F] != "auto")(set $SELF cmd_2),
IF ([Beregner_DOIF_A] == "auto") ({Beregner_Auswahl A on}),
IF ([Beregner_DOIF_B] == "auto") ({Beregner_Auswahl B on}),
IF ([Beregner_DOIF_F] == "auto") ({Beregner_Auswahl F on})
)(
IF ([Beregner_DOIF_A] == "auto") ({Beregner_Auswahl A off}),
IF ([Beregner_DOIF_B] == "auto") ({Beregner_Auswahl B off}),
IF ([Beregner_F_DOIF] == "auto") ({Beregner_Auswahl F off}),
set $SELF cmd_2
)
DOELSEIF (0) (
IF ([Beregner_DOIF_B] != "auto") (set $SELF cmd_3),{Beregner_Auswahl B on}
)(
IF ([Beregner_DOIF_F] == "auto") ({Beregner_Auswahl B off}),
set $SELF cmd_3
)
DOELSEIF (0) (
IF ([Beregner_DOIF_C] != "auto") (set $SELF cmd_4), {Beregner_Auswahl C on}
)(
IF ([Beregner_DOIF_C] == "auto") ({Beregner_Auswahl C off}),
set $SELF cmd_4
)
... usw...
attr BeregnerTrigger wait 0,[Beregnung_Standarddauer:state]*60:0,[Beregnung_Standarddauer:state]*60:0,[Beregnung_Standarddauer:state]*60:0,[Beregnung_Standarddauer:state]*60....


dazu ein Mini-Script in die 99_myUtils
sub Beregner_Auswahl ($$)
{
my ($myDev,$myEvent);
fhem ("set " . readingsVal("Beregner_DOIF_".$myDev,"switch","") ." ". $myEvent);
if ($MyEvent eq "on")
{fhem ("set SqueezeBoxPlayer.* talk " . readingsVal("Beregner_DOIF_".$myDev,"talktext",""));
}


Das lässt sich bestimmt auch mittels DOIF abbilden, dafür ist es mir aber jetzt eindeutig zu spät.

Und wie immer gilt: Syntax nochmal prüfen, alles nur Theorie!

Und: einen Fehler (?) in BeregnungZitronenDOIF habe ich von dir übernommen: je nachdem, welche Regner auf Automatik stehen, gibt es für Blauregen und CampeggioUnten doppelte Zeiten oder einfache.

Noch eine Idee wären at mit automatisch erzeugten Namen statt der wait-Attribute, diese müssten halt beim manuellen Ausschalten gelöscht werden. Ist halt ein anderer Weg.

Per

Sch... war die Nacht kurz.
Also die ersten DOIF können natürlich Dummies bleiben. Ist zwar etwas aufwendiger, die Befehle zu mappen, aber auch kein Teufelswerk.
Oder man lässt das mappen und macht ein DOIF dafür:

define Beregner_Mapping DOIF (["Beregner_DOIF_:on"]) (set [$DEVICE:switch] on,set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
DOELSEIF (["Beregner_DOIF_:off"]) (set [$DEVICE:switch] off)


und weil wir gerade dabei sind, ergänzen wir das DOIF "etwas":
DOELSEIF (["Beregner_Dummy"])
(IF ([Beregner_DOIF_[$EVENT] eq "auto"])
(IF ([BeregnerTrigger] eq "on")
(set [$EVENT:switch] on,
set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
ELSE
(set $EVENT:switch] off)
)
)

Die IF kann man bestimmt mit in den DOELSE-Bedingungen unterbringen, aber ich kann wie gesagt nicht wirklich testen.

Und können damit a: das Scriptchen in 99_myUtils weglassen und b: den BeregnerTrigger vereinfachen:
define BeregnerTrigger DOIF (["Beregnung_Durchlauf_AN_AUS_AUTO:on"] or
[BeregnungNachSonneDOIF] eq "cmd_1")
(IF ([Beregner_DOIF_A] != "auto" and [Beregner_DOIF_B] != "auto" and [Beregner_DOIF_F] != "auto")(set $SELF cmd_2))
(set Beregner_Dummy Beregner_DOIF_A,set Beregner_Dummy Beregner_DOIF_B,set Beregner_Dummy Beregner_DOIF_F)
(set Beregner_Dummy Beregner_DOIF_A,set Beregner_Dummy Beregner_DOIF_B,set Beregner_Dummy Beregner_DOIF_F,set $SELF cmd_2)
DOELSEIF (0)
(IF ([Beregner_DOIF_B] != "auto") (set $SELF cmd_3))
(set Beregner_Dummy Beregner_DOIF_B)
(set Beregner_Dummy Beregner_DOIF_B,set $SELF cmd_3)
DOELSEIF (0)
(IF ([Beregner_DOIF_C] != "auto") (set $SELF cmd_4))
(set Beregner_Dummy Beregner_DOIF_C)
(set Beregner_Dummy Beregner_DOIF_C,set $SELF cmd_4)
)
... usw...
DOELSEIF ([Beregnung_Durchlauf_AN_AUS_AUTO] eq "off")
()
(set Beregner_Dummy Beregner_DOIF_A,set Beregner_Dummy Beregner_DOIF_B,set Beregner_Dummy Beregner_DOIF_C,...)
attr BeregnerTrigger wait 0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60....:0,0

Dazu kommen aber folgende Zeilen:
attr BeregnerTrigger cmdState on,off,off|on,off,off|on,off,off|...|off,off
und
define Beregner_Dummy Dummy

Ob ich das mit dem Sonnenstand jetzt richtig verstanden habe, weiss ich aber nicht. Evtl. könnte man das alte BeregnungNachSonneDOIF beibehalten und nur um einen ELSE-Zweig ergängen. Dann meldet es sich nur, wenn die Werte unter-/überschritten oder passend geändert werden und nicht alle x min.
define BeregnungNachSonneDOIF DOIF ([?Beregnung_Durchlauf_AN_AUS_AUTO] eq "auto" and [?myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [?Beregnung_Startmonat] and $month <= [?Beregnung_Endmonat]))
DOELSE

Da kann man auch noch mit den Fragezeichen etwas spielen. Wenn du nur einmal am Tag "Nach Sonne" starten willst, könntest du noch ein Dummy/Userreading mit dem letztem Laufdatum vorsehen. Die Initialisierung nach einer Änderung fest auf 1 Uhr zu stellen, halte ich zwar für machbar, aber kontraproduktiv.

holle75

Uiuiui Per, da muß ich mir heute Abend mal ein bißchen Zeit nehmen deinen Wahnsinn zu verstehen. Schonmal Danke fürs denken!

bis gleich

H.

Per

Zitat von: holle75 am 04 April 2017, 11:52:39Schonmal Danke fürs denken!
Und ich hoffe, dass ich diese Nacht den Kopf wieder frei zum Schlafen habe  ;D ;D ;D

holle75

Hallo Per, entschuldige die Verzögerung, aber meine Solaranlage hat mir die letzten zwei Tage einige Herausforderungen gestellt :(

Aaaaalso, ich sitz jetzt seit ner Stunde vor deinen Beiträgen und versuche zu verstehen was du dir da ausgedacht hast. Ich erfasse nicht, was aus welchem Beitrag wie zusammengehört ?!

Und wenn ich mir das nicht "einmal in Ganz" in einen Editor packe kann ich deine Gedankengänge nicht nachvollziehen. Was nicht automatisch heißt, dass ich ich es dann auch wirklich kann ;)

Könntest du mir vielleicht nochmal deine "finale Version" aus den Beiträgen zusammenkopieren?

sorry und Grüße

H.

Per

######################################## BEREGNUNG ############################################

define myTwilight Twilight 42.xxxx 11.xxxx x yyyyyy
attr myTwilight group Beregnung
attr myTwilight room Beregnung
attr myTwilight sortby 20
attr myTwilight stateFormat Sonnenelevation aktuell: elevation

#----------------------------------------------------------------#

define Beregnung_Zitronen dummy
attr Beregnung_Zitronen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Zitronen group Beregnung
attr Beregnung_Zitronen room Beregnung
attr Beregnung_Zitronen webCmd auto:on:off
#attr Beregnung_Zitronen devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Zitronen setList auto on off

define Beregnung_CampeggioOben dummy
attr Beregnung_CampeggioOben devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioOben group Beregnung
attr Beregnung_CampeggioOben room Beregnung
attr Beregnung_CampeggioOben webCmd auto:on:off
#attr Beregnung_CampeggioOben devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_CampeggioOben setList auto on off

define Beregnung_CampeggioUnten dummy
attr Beregnung_CampeggioUnten devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioUnten group Beregnung
attr Beregnung_CampeggioUnten room Beregnung
attr Beregnung_CampeggioUnten webCmd auto:on:off
#attr Beregnung_CampeggioUnten devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_CampeggioUnten setList auto on off

define Beregnung_Blauregen dummy
attr Beregnung_Blauregen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Blauregen group Beregnung
attr Beregnung_Blauregen room Beregnung
attr Beregnung_Blauregen webCmd auto:on:off
#attr Beregnung_Blauregen devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Blauregen setList auto on off

define Beregnung_HinterKueche dummy
attr Beregnung_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_HinterKueche group Beregnung
attr Beregnung_HinterKueche room Beregnung
attr Beregnung_HinterKueche webCmd auto:on:off
#attr Beregnung_HinterKueche devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_HinterKueche setList auto on off

define Beregnung_Waschhaus dummy
attr Beregnung_Waschhaus devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Waschhaus group Beregnung
attr Beregnung_Waschhaus room Beregnung
attr Beregnung_Waschhaus webCmd auto:on:off
#attr Beregnung_Waschhaus devStateIcon on:rc_GREEN:off off:rc_RED:auto auto:rc_BLUE:on
#attr Beregnung_Waschhaus setList auto on off

define Beregnung_Startmonat dummy
attr Beregnung_Startmonat 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 Beregnung_Startmonat group Beregnung
attr Beregnung_Startmonat room Beregnung
attr Beregnung_Startmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Startmonat sortby 5
attr Beregnung_Startmonat webCmd state

define Beregnung_Endmonat dummy
attr Beregnung_Endmonat 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 Beregnung_Endmonat group Beregnung
attr Beregnung_Endmonat room Beregnung
attr Beregnung_Endmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Endmonat sortby 6
attr Beregnung_Endmonat webCmd state

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

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

#-----------------------------------------------------------------------#

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

#---------------------------------------------------------------------------#

define FileLog_Beregnung FileLog ./log/Beregnung-%Y-%m.log BEREGNUNG.*:(on|off)|PozzoHauptOben_PUMPE_Pozzo:(on|off)
attr FileLog_Beregnung group Beregnung
attr FileLog_Beregnung logtype text

define SVG_FileLog_Beregnung_1 SVG FileLog_Beregnung:SVG_FileLog_Beregnung_1:CURRENT
attr SVG_FileLog_Beregnung_1 group Beregnung
attr SVG_FileLog_Beregnung_1 room Beregnung
attr SVG_FileLog_Beregnung_1 sortby 1

define Beregner_Mapping DOIF (["Beregner_DOIF_:on"]) (set [$DEVICE:switch] on,set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
DOELSEIF (["Beregner_DOIF_:off"]) (set [$DEVICE:switch] off)
DOELSEIF (["Beregner_Dummy"])
(IF ([Beregner_DOIF_[$EVENT] eq "auto"])
(IF ([BeregnerTrigger] eq "on")
(set [$EVENT:switch] on,
set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
ELSE
(set $EVENT:switch] off)
)
)

define BeregnerTrigger DOIF (["Beregnung_Durchlauf_AN_AUS_AUTO:on"] or
[BeregnungNachSonneDOIF] eq "cmd_1")
(IF ([Beregnung_Zitronen] != "auto" and [Beregnung_CampeggioOben] != "auto" and [Beregner_DOIF_F] != "auto")(set $SELF cmd_2))
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_Waschhaus)
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_Waschhaus,set $SELF cmd_2)
DOELSEIF (0)
(IF ([Beregnung_CampeggioOben] != "auto") (set $SELF cmd_3))
(set Beregner_Dummy Beregnung_CampeggioOben)
(set Beregner_Dummy Beregnung_CampeggioOben,set $SELF cmd_3)
DOELSEIF (0)
(IF ([Beregner_DOIF_C] != "auto") (set $SELF cmd_4))
(set Beregner_Dummy Beregnung_CampeggioUnten)
(set Beregner_Dummy Beregnung_CampeggioUnten,set $SELF cmd_4)
)
... usw...
DOELSEIF ([Beregnung_Durchlauf_AN_AUS_AUTO] eq "off")
()
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_CampeggioUnten,...)
attr BeregnerTrigger wait 0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60....:0,0
attr BeregnerTrigger cmdState on,off,off|on,off,off|on,off,off|...|off,off

define Beregner_Dummy Dummy

define BeregnungNachSonneDOIF DOIF ([?Beregnung_Durchlauf_AN_AUS_AUTO] eq "auto" and [?myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [?Beregnung_Startmonat] and $month <= [?Beregnung_Endmonat]))
DOELSE
attr BeregnungNachSonneDOIF group Beregnung
attr BeregnungNachSonneDOIF room Beregnung

So, hoffentlich ist mir beim Kopieren kein Fehler unterlaufen...

holle75

Danke Per. Ich denk mich da jetzt mal ein "paar Stunden" rein.

holle75

#9
... Mein lieber Scholli ....

erstmal Danke nochmals für deine Mühen!

Ich muß das erstmal auseinanderklabüstern:

Wenn die Kopierung so passt, hat sich ja vom Vorbau (die ganzen Dummys mit der Möglichkeit auto,on,off zu wählen, plus Startelevation, Standardzeit) erstmal nichts geändert.

define Beregnung_Zitronen dummy
attr Beregnung_Zitronen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Zitronen group Beregnung
attr Beregnung_Zitronen room Beregnung
attr Beregnung_Zitronen webCmd auto:on:off

define Beregnung_CampeggioOben dummy
attr Beregnung_CampeggioOben devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioOben group Beregnung
attr Beregnung_CampeggioOben room Beregnung
attr Beregnung_CampeggioOben webCmd auto:on:off

define Beregnung_CampeggioUnten dummy
attr Beregnung_CampeggioUnten devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_CampeggioUnten group Beregnung
attr Beregnung_CampeggioUnten room Beregnung
attr Beregnung_CampeggioUnten webCmd auto:on:off

define Beregnung_Blauregen dummy
attr Beregnung_Blauregen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Blauregen group Beregnung
attr Beregnung_Blauregen room Beregnung
attr Beregnung_Blauregen webCmd auto:on:off

define Beregnung_HinterKueche dummy
attr Beregnung_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_HinterKueche group Beregnung
attr Beregnung_HinterKueche room Beregnung
attr Beregnung_HinterKueche webCmd auto:on:off

define Beregnung_Waschhaus dummy
attr Beregnung_Waschhaus devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_Waschhaus group Beregnung
attr Beregnung_Waschhaus room Beregnung
attr Beregnung_Waschhaus webCmd auto:on:off

define Beregnung_Startmonat dummy
attr Beregnung_Startmonat 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 Beregnung_Startmonat group Beregnung
attr Beregnung_Startmonat room Beregnung
attr Beregnung_Startmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Startmonat sortby 5
attr Beregnung_Startmonat webCmd state

define Beregnung_Endmonat dummy
attr Beregnung_Endmonat 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 Beregnung_Endmonat group Beregnung
attr Beregnung_Endmonat room Beregnung
attr Beregnung_Endmonat setList state:Jan,Feb,Mar,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
attr Beregnung_Endmonat sortby 6
attr Beregnung_Endmonat webCmd state

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

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

#-----------------------------------------------------------------------#

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


"Nur" die Automatik. Also dieser Teil

define Beregner_Mapping DOIF (["Beregner_DOIF_:on"]) (set [$DEVICE:switch] on,set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
DOELSEIF (["Beregner_DOIF_:off"]) (set [$DEVICE:switch] off)
DOELSEIF (["Beregner_Dummy"])
(IF ([Beregner_DOIF_[$EVENT] eq "auto"])
(IF ([BeregnerTrigger] eq "on")
(set [$EVENT:switch] on,
set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
ELSE
(set $EVENT:switch] off)
)
)

define BeregnerTrigger DOIF (["Beregnung_Durchlauf_AN_AUS_AUTO:on"] or [BeregnungNachSonneDOIF] eq "cmd_1")
(IF ([Beregnung_Zitronen] != "auto" and [Beregnung_CampeggioOben] != "auto" and [Beregner_DOIF_F] != "auto")(set $SELF cmd_2))
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_Waschhaus)
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_Waschhaus,set $SELF cmd_2)
DOELSEIF (0)
(IF ([Beregnung_CampeggioOben] != "auto") (set $SELF cmd_3))
(set Beregner_Dummy Beregnung_CampeggioOben)
(set Beregner_Dummy Beregnung_CampeggioOben,set $SELF cmd_3)
DOELSEIF (0)
(IF ([Beregner_DOIF_C] != "auto") (set $SELF cmd_4))
(set Beregner_Dummy Beregnung_CampeggioUnten)
(set Beregner_Dummy Beregnung_CampeggioUnten,set $SELF cmd_4)
)
... usw...
DOELSEIF ([Beregnung_Durchlauf_AN_AUS_AUTO] eq "off")
()
(set Beregner_Dummy Beregnung_Zitronen,set Beregner_Dummy Beregnung_CampeggioOben,set Beregner_Dummy Beregnung_CampeggioUnten,...)
attr BeregnerTrigger wait 0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60:0,0,[Beregnung_Standarddauer:state]*60....:0,0
attr BeregnerTrigger cmdState on,off,off|on,off,off|on,off,off|...|off,off

define Beregner_Dummy Dummy

define BeregnungNachSonneDOIF DOIF ([?Beregnung_Durchlauf_AN_AUS_AUTO] eq "auto" and [?myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [?Beregnung_Startmonat] and $month <= [?Beregnung_Endmonat]))
DOELSE
attr BeregnungNachSonneDOIF group Beregnung
attr BeregnungNachSonneDOIF room Beregnung


... um mich langsam ranzutasten:

define Beregner_Mapping DOIF (["Beregner_DOIF_:on"]) (set [$DEVICE:switch] on,set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
DOELSEIF (["Beregner_DOIF_:off"]) (set [$DEVICE:switch] off)
DOELSEIF (["Beregner_Dummy"])
   (IF ([Beregner_DOIF_[$EVENT] eq "auto"])
      (IF ([BeregnerTrigger] eq "on")
         (set [$EVENT:switch] on,
         set SqueezeBoxPlayer.* talk [$DEVICE:talktext])
      ELSE
         (set $EVENT:switch] off)
      )
   )

["Beregner_DOIF_:on"] muss, wenn ich meine alten Bezeichnungen beibehalten möchte (Beregnung_Zitronen, Beregnung_Blauregen, etc.) ["Beregnung_:on"] heißen, richtig?

talktext und switch müßte zu den entsprechenden dummys eigentlich dazu, richtig? zB

define Beregnung_HinterKueche dummy
attr Beregnung_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregnung_HinterKueche group Beregnung
attr Beregnung_HinterKueche room Beregnung
attr Beregnung_HinterKueche userReadings talktext, switch
attr Beregnung_HinterKueche webCmd auto:on:off
set Beregnung_HinterKueche talktext Beregnung Kueche gestartet
set Beregnung_HinterKueche switch BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15


falls das stimmt, kann ich weiterdenken ;) .... wenn nicht, führen deine Gedankenergüsse für mich zweifelsfrei zu weit :D

Per

Zitat von: holle75 am 09 April 2017, 20:45:36richtig?
ja
Zitat von: holle75 am 09 April 2017, 20:45:36richtig?
ja

Durch das mehrfache Hinundherkopieren und die fortgeschrittene Stunde gab es doch einige "Altlasten".

holle75

Hallo Per, ich habs jetzt mal "ins Reine" geschrieben.
Wenn das so von dir gemeint war ..... kann ich weiterdenken. Denn noch blick ich nur die Hälfte und es macht keine Freude falls der Code einfach falsch ist. Da denkts sich lange ....

könntest du nochmal drüberschauen, bitte ?

######################################## BEREGNUNG ############################################

define myTwilight Twilight xxxxx yyyyy
attr myTwilight group Beregnung
attr myTwilight room Beregnung
attr myTwilight sortby 20
attr myTwilight stateFormat Sonnenelevation aktuell: elevation

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

define Beregner_Zitronen dummy
attr Beregner_Zitronen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_Zitronen group Beregnung
attr Beregner_Zitronen room Beregnung
attr Beregner_Zitronen webCmd auto:on:off
attr Beregner_Zitronen userReadings talktext, switch
set Beregner_Zitronen talktext Beregnung Zitronen
set Beregner_Zitronen switch BEREGNUNG_SCHALTER_Zitronen_12_7_MEQ0064131_14

define Beregner_CampeggioOben dummy
attr Beregner_CampeggioOben devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_CampeggioOben group Beregnung
attr Beregner_CampeggioOben room Beregnung
attr Beregner_CampeggioOben webCmd auto:on:off
attr Beregner_CampeggioOben userReadings talktext, switch
set Beregner_CampeggioOben talktext Beregnung Camping oben
set Beregner_CampeggioOben switch BEREGNUNG_SCHALTER_CampeggioOben_12_7_MEQ0064131_13

define Beregner_CampeggioUnten dummy
attr Beregner_CampeggioUnten devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_CampeggioUnten group Beregnung
attr Beregner_CampeggioUnten room Beregnung
attr Beregner_CampeggioUnten webCmd auto:on:off
attr Beregner_CampeggioUnten userReadings talktext, switch
set Beregner_CampeggioUnten talktext Beregnung Camping unten
set Beregner_CampeggioUnten switch BEREGNUNG_SCHALTER_CampeggioUnten_12_7_MEQ0064131_18

define Beregner_Blauregen dummy
attr Beregner_Blauregen devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_Blauregen group Beregnung
attr Beregner_Blauregen room Beregnung
attr Beregner_Blauregen webCmd auto:on:off
attr Beregner_Blauregen userReadings talktext, switch
set Beregner_Blauregen talktext Beregnung Blauregen
set Beregner_Blauregen switch BEREGNUNG_SCHALTER_Blauregen_12_7_MEQ0064131_17

define Beregner_HinterKueche dummy
attr Beregner_HinterKueche devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_HinterKueche group Beregnung
attr Beregner_HinterKueche room Beregnung
attr Beregner_HinterKueche webCmd auto:on:off
attr Beregner_HinterKueche userReadings talktext, switch
set Beregner_HinterKueche talktext Beregnung Hinter Kueche
set Beregner_HinterKueche switch BEREGNUNG_SCHALTER_HinterKueche_12_7_MEQ0064131_15

define Beregner_Waschhaus dummy
attr Beregner_Waschhaus devStateIcon on:rc_GREEN off:rc_RED auto:rc_BLUE
attr Beregner_Waschhaus group Beregnung
attr Beregner_Waschhaus room Beregnung
attr Beregner_Waschhaus webCmd auto:on:off
attr Beregner_Waschhaus userReadings talktext, switch
set Beregner_Waschhaus talktext Beregnung Waschhaus
set Beregner_Waschhaus switch BEREGNUNG_SCHALTER_Waschhaus_12_7_MEQ0064131_16

#------------------------ Einstellungs 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 BeregnungHelperDummy dummy
attr BeregnungHelperDummy group Beregnung
attr BeregnungHelperDummy room Beregnung

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

#------------------------- Beregnungs Logik -----------------------------#

define BeregnungNachSonneDOIF DOIF ([?Wetter_wunderground:statRegenDayMax] < 1.0 and [myTwilight:elevation] > [BeregnungStartelevation] and ($month >= [BeregnungStartmonat] and $month <= [BeregnungEndmonat])) DOELSE
attr BeregnungNachSonneDOIF group Beregnung
attr BeregnungNachSonneDOIF room Beregnung

define BeregnungMappingDOIF DOIF (["Beregner_:on"]) (set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["Beregner_:off"]) (set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["BeregnungHelperDummy"]) \
(IF ([Beregner_[$EVENT] eq "auto"]) \
(IF ([BeregnungTriggerDOIF] eq "on") \
(set [$EVENT:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
ELSE \
(set [$EVENT:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
) \
)

define BeregnungTriggerDOIF DOIF (["BeregnungDurchlauf_AN_AUS_AUTO:on"] or [BeregnungNachSonneDOIF] eq "cmd_1") \
(IF ([Beregner_Zitronen] != "auto") (set $SELF cmd_2)) (set BeregnungHelperDummy Beregner_Zitronen) (set BeregnungHelperDummy Beregner_Zitronen, set $SELF cmd_2) \
DOELSEIF (0) \
(IF ([Beregner_CampeggioUnten] != "auto") (set $SELF cmd_3)) (set BeregnungHelperDummy Beregner_CampeggioUnten) (set BeregnungHelperDummy Beregner_CampeggioUnten, set $SELF cmd_3) \
DOELSEIF (0) \
(IF ([Beregner_Blauregen] != "auto") (set $SELF cmd_4)) (set BeregnungHelperDummy Beregner_Blauregen) (set BeregnungHelperDummy Beregner_Blauregen, set $SELF cmd_4) \
DOELSEIF (0) \
(IF ([Beregner_HinterKueche] != "auto") (set $SELF cmd_5)) (set BeregnungHelperDummy Beregner_HinterKueche) (set BeregnungHelperDummy Beregner_HinterKueche, set $SELF cmd_5) \
DOELSEIF (0) \
(IF ([Beregner_CampeggioOben] != "auto") (set $SELF cmd_6)) (set BeregnungHelperDummy Beregner_CampeggioOben) (set BeregnungHelperDummy Beregner_CampeggioOben, set $SELF cmd_6) \
DOELSEIF (0) \
(IF ([Beregner_Waschhaus] != "auto") (set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet)) (set BeregnungHelperDummy Beregner_Waschhaus) (set BeregnungHelperDummy Beregner_Waschhaus, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF ([BeregnungDurchlauf_AN_AUS_AUTO] eq "off") \
() (set BeregnungHelperDummy Beregner_Zitronen, set BeregnungHelperDummy Beregner_CampeggioUnten, set BeregnungHelperDummy Beregner_Blauregen, set BeregnungHelperDummy Beregner_HinterKueche, set BeregnungHelperDummy Beregner_CampeggioOben, set BeregnungHelperDummy Beregner_Waschhaus, set SqueezeBoxPlayer.* talk Durchlauf Beregnung beendet)
attr BeregnungTriggerDOIF wait \
0,0,[BeregnungStandarddauer:state]*60: \
0,0,[BeregnungStandarddauer:state]*60: \
0,0,[BeregnungStandarddauer:state]*60: \
0,0,[BeregnungStandarddauer:state]*60: \
0,0,[BeregnungStandarddauer:state]*60: \
0,0,[BeregnungStandarddauer:state]*60: \
0,0
attr BeregnungTriggerDOIF cmdState \
on,off,off| \
on,off,off| \
on,off,off| \
on,off,off| \
on,off,off| \
on,off,off| \
off,off

Per

Passt so, wobei ich jetzt nicht auf Syntax, Klammern usw. geachtet habe.

Zitat von: holle75 am 11 April 2017, 21:06:57Denn noch blick ich nur die Hälfte und es macht keine Freude falls der Code einfach falsch ist. Da denkts sich lange ....
Wo klemmts denn? Ich kann ja auch den Erklärbär (oder Erklär-Per :D) machen.

holle75

#13
@Erklär-Per ;)

nur ganz kurz ....

In der BeregnungMappingDOIF ...

define BeregnungMappingDOIF DOIF (["Beregner_:on"]) (set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["Beregner_:off"]) (set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["BeregnungHelperDummy"]) \
(IF ([Beregner_[$EVENT] eq "auto"]) \
(IF ([BeregnungTriggerDOIF] eq "on") \
(set [$EVENT:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
ELSE \
(set [$EVENT:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
) \
)


....  macht mir das Verständnis wo das jeweilige on/off herkommt

define BeregnungMappingDOIF DOIF (["Beregner_:on"]) (set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["Beregner_:off"]) (set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \


Probleme, weil das BeregnungTriggerDOIF ....

(IF ([Beregner_Zitronen] != "auto") (set $SELF cmd_2)) (set BeregnungHelperDummy Beregner_Zitronen) (set BeregnungHelperDummy Beregner_Zitronen, set $SELF cmd_2) \


ja nirgendwo on/off hat.

Und die Verschachtelung Beregner_/BeregnungTriggerDOIF macht mich noch wuschig.
Also diese Schleife:

DOELSEIF (["BeregnungHelperDummy"]) \
(IF ([Beregner_[$EVENT] eq "auto"]) \
(IF ([BeregnungTriggerDOIF] eq "on") \
(set [$EVENT:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
ELSE \
(set [$EVENT:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
) \
)


wobei auch $EVENT und $DEVICE für mich im DOIF ein bißchen neu sind.... und auch in der commandref zwar für mich die Ahnung von Verstehen da ist, aber im Detail ....

Danke Per


Per

Zitat von: holle75 am 12 April 2017, 10:19:41
In der BeregnungMappingDOIF ...

define BeregnungMappingDOIF DOIF (["Beregner_:on"]) (set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["Beregner_:off"]) (set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
DOELSEIF (["BeregnungHelperDummy"]) \
(IF ([Beregner_[$EVENT] eq "auto"]) \
(IF ([BeregnungTriggerDOIF] eq "on") \
(set [$EVENT:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
ELSE \
(set [$EVENT:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
) \
)


....  macht mir das Verständnis wo das jeweilige on/off herkommt

define BeregnungMappingDOIF DOIF (["Beregner_:on"]) (set [$DEVICE:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
DOELSEIF (["Beregner_:off"]) (set [$DEVICE:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \


Probleme, weil das BeregnungTriggerDOIF ....

(IF ([Beregner_Zitronen] != "auto") (set $SELF cmd_2)) (set BeregnungHelperDummy Beregner_Zitronen) (set BeregnungHelperDummy Beregner_Zitronen, set $SELF cmd_2) \


ja nirgendwo on/off hat.
Das kommt aus den extra dafür gesetzten Status (attr cmdState)


Zitat von: holle75 am 12 April 2017, 10:19:41
Und die Verschachtelung Beregner_/BeregnungTriggerDOIF macht mich noch wuschig.
Also diese Schleife:

DOELSEIF (["BeregnungHelperDummy"]) \
(IF ([Beregner_[$EVENT] eq "auto"]) \
(IF ([BeregnungTriggerDOIF] eq "on") \
(set [$EVENT:switch] on, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] gestartet) \
ELSE \
(set [$EVENT:switch] off, set SqueezeBoxPlayer.* talk [$DEVICE:talktext] beendet) \
) \
)

Dient nur dazu, innerhalb der DOIF-Zweige nicht jedesmal das gleiche mit anderem Namen zu schreiben. Also sowas wie ein Sub. $EVENT und $DEVICE sind die Parameter, wobei ich glaube, dass hier ein Fehler drin ist. Statt [$DEVICE:talktext] muss [$EVENT:talktext], weil $DEVICE hier immer "BeregnungHelperDummy" wäre. Im oberen Zweig passt das aber so.

Zitat von: holle75 am 12 April 2017, 10:19:41
wobei auch $EVENT und $DEVICE für mich im DOIF ein bißchen neu sind.... und auch in der commandref zwar für mich die Ahnung von Verstehen da ist, aber im Detail ....
Das musst du dir leider selbst erarbeiten. Ist aber, zumindest bei den Variablen, nicht schwer.