[gelöst] Pumpensteuerung abhängig Monat/Sonne/Stromverbr. mit Laufzeitberechnung

Begonnen von holle75, 22 März 2017, 14:38:32

Vorheriges Thema - Nächstes Thema

Per

In meinem Link ist ein Anker, vllt. nach dem Laden nochmal in der URL direkt mit Enter anspringen (die CommandRef ist recht groß, das dauert eine Weile zu laden).


holle75

Uiuiui, ok, danke euch beiden.

Liest sich (trotz und wegen der vielen Stellen und Möglichkeiten) kompliziert.

Verstehe ich das richtig, dass ich mit

attr PozzoHauptOben_PUMPE_PozzoDOIF readingList Laufzeit

Laufzeit noch im DOIF definieren muß und gut?

Per

Zitat von: holle75 am 29 März 2017, 19:07:18
Verstehe ich das richtig, dass ich mit

attr PozzoHauptOben_PUMPE_PozzoDOIF readingList Laufzeit

Laufzeit noch im DOIF definieren muß und gut?
Mal ausprobiert?

holle75

Hallo Per, hast ja recht. Aber um es sauber auszuprobieren muß ich ja bis zum nächsten Tag um 13:00 warten. Dachte, da frag ich mal um nicht komplett daneben zu liegen. ;)

holle75

nach einem DOIF-Update und

attr PozzoHauptOben_PUMPE_PozzoDOIF readingList Laufzeit
attr PozzoHauptOben_PUMPE_PozzoDOIF setList Laufzeit:0


beschwert fhem sich nicht mehr. Schauen wir mal was morgen um 13:00 passiert.

holle75

Der nach 13:00-Test:

List

Internals:
   DEF        ([myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [Beregnung_Startmonat] and $month <= [Beregnung_Endmonat]) and [Xtender_AC_out:Power__W:d] < 1200 and [?$SELF:Laufzeit] < 8400)
(set PozzoHauptOben_PUMPE_Pozzo on)
(set $SELF cmd_3)
DOELSEIF ([13:00-16:00] and ($month < [Beregnung_Startmonat] or $month > [Beregnung_Endmonat]) and [Xtender_AC_out:Power__W:d] < 1200 and [?$SELF:Laufzeit] < 1200)
(set PozzoHauptOben_PUMPE_Pozzo on)
(set $SELF cmd_3)
DOELSEIF ([Xtender_AC_out:Power__W:d] > 2100 and [$SELF:cmd_seqnr] == "1")
(set PozzoHauptOben_PUMPE_Pozzo off,set $SELF Laufzeit {[$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec]})
DOELSEIF ([04:00]) (set $SELF Laufzeit 0)
   NAME       PozzoHauptOben_PUMPE_PozzoDOIF
   NR         705
   NTFY_ORDER 50-PozzoHauptOben_PUMPE_PozzoDOIF
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-03-31 13:18:35   Device          Xtender_AC_out
     2017-03-31 13:16:03   Laufzeit        {{0 + 621} + 341}
     2017-03-31 13:16:03   cmd             2.2
     2017-03-31 13:16:03   cmd_event       Xtender_AC_out
     2017-03-31 13:16:03   cmd_nr          2
     2017-03-31 13:16:03   cmd_seqnr       2
     2017-03-30 16:31:58   e_PozzoHauptOben_PUMPE_PozzoDOIF_Laufzeit 0
     2017-03-30 16:31:58   e_PozzoHauptOben_PUMPE_PozzoDOIF_cmd_seqnr 2
     2017-03-31 13:18:35   e_Xtender_AC_out_Power__W 262 W
     2017-03-31 13:15:38   e_myTwilight_elevation 53.25
     2017-03-30 16:31:43   last_cmd        cmd_2
     2017-03-31 13:16:03   state           cmd_2
     2017-03-30 16:35:22   timer_01_c02    31.03.2017 13:00:00
     2017-03-30 16:35:22   timer_02_c02    31.03.2017 16:00:00
     2017-03-31 04:00:00   timer_03_c04    01.04.2017 04:00:00
     2017-03-31 13:16:03   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'myTwilight','elevation') > InternalDoIf($hash,'Beregnung_Startelevation','STATE') and ($month >= InternalDoIf($hash,'Beregnung_Startmonat','STATE') and $month <= InternalDoIf($hash,'Beregnung_Endmonat','STATE')) and ReadingValDoIf($hash,'Xtender_AC_out','Power__W','','(-?\d+(\.\d+)?)') < 1200 and ReadingValDoIf($hash,'PozzoHauptOben_PUMPE_PozzoDOIF','Laufzeit') < 8400
     1          DOIF_time($hash,0,1,$wday,$hms) and ($month < InternalDoIf($hash,'Beregnung_Startmonat','STATE') or $month > InternalDoIf($hash,'Beregnung_Endmonat','STATE')) and ReadingValDoIf($hash,'Xtender_AC_out','Power__W','','(-?\d+(\.\d+)?)') < 1200 and ReadingValDoIf($hash,'PozzoHauptOben_PUMPE_PozzoDOIF','Laufzeit') < 1200
     2          ReadingValDoIf($hash,'Xtender_AC_out','Power__W','','(-?\d+(\.\d+)?)') > 2100 and ReadingValDoIf($hash,'PozzoHauptOben_PUMPE_PozzoDOIF','cmd_seqnr') == "1"
     3          DOIF_time_once($hash,2,$wday)
   Days:
   Devices:
     0           myTwilight Beregnung_Startelevation Beregnung_Startmonat Beregnung_Endmonat Xtender_AC_out
     1           Beregnung_Startmonat Beregnung_Endmonat Xtender_AC_out
     2           Xtender_AC_out PozzoHauptOben_PUMPE_PozzoDOIF
     all         myTwilight Beregnung_Startelevation Beregnung_Startmonat Beregnung_Endmonat Xtender_AC_out PozzoHauptOben_PUMPE_PozzoDOIF
   Do:
     0:
       0          set PozzoHauptOben_PUMPE_Pozzo on
       1          set PozzoHauptOben_PUMPE_PozzoDOIF cmd_3
     1:
       0          set PozzoHauptOben_PUMPE_Pozzo on
       1          set PozzoHauptOben_PUMPE_PozzoDOIF cmd_3
     2:
       0          set PozzoHauptOben_PUMPE_Pozzo off,set PozzoHauptOben_PUMPE_PozzoDOIF Laufzeit {[PozzoHauptOben_PUMPE_PozzoDOIF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec]}
     3:
       0          set PozzoHauptOben_PUMPE_PozzoDOIF Laufzeit 0
     4:
   Helper:
     event      Energy_total__kWh: 2589.541 kWh,statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276,statEnergy_total__kWhDay: 3.470
     globalinit 1
     last_timer 3
     sleepdevice Xtender_AC_out
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Xtender_AC_out
     timerevent Energy_total__kWh: 2589.541 kWh,statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276,statEnergy_total__kWhDay: 3.470
     triggerDev Xtender_AC_out
     timerevents:
       Energy_total__kWh: 2589.541 kWh
       statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276
       statEnergy_total__kWhDay: 3.470
     timereventsState:
       Energy_total__kWh: 2589.541 kWh
       statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276
       statEnergy_total__kWhDay: 3.470
     triggerEvents:
       Energy_total__kWh: 2589.541 kWh
       statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276
       statEnergy_total__kWhDay: 3.470
     triggerEventsState:
       Energy_total__kWh: 2589.541 kWh
       statEnergy_total__kWh: Hour: 0.307 Day: 3.470 Month: 168.964 Year: 368.276
       statEnergy_total__kWhDay: 3.470
   Internals:
     0           Beregnung_Startelevation:STATE Beregnung_Startmonat:STATE Beregnung_Endmonat:STATE
     1           Beregnung_Startmonat:STATE Beregnung_Endmonat:STATE
     all         Beregnung_Startelevation:STATE Beregnung_Startmonat:STATE Beregnung_Endmonat:STATE
   Interval:
     0          -1
     1          0
   Itimer:
   Localtime:
     0          1490958000
     1          1490968800
     2          1491012000
   Readings:
     0           myTwilight:elevation Xtender_AC_out:Power__W PozzoHauptOben_PUMPE_PozzoDOIF:Laufzeit
     1           Xtender_AC_out:Power__W PozzoHauptOben_PUMPE_PozzoDOIF:Laufzeit
     2           Xtender_AC_out:Power__W PozzoHauptOben_PUMPE_PozzoDOIF:cmd_seqnr
     all         myTwilight:elevation Xtender_AC_out:Power__W PozzoHauptOben_PUMPE_PozzoDOIF:Laufzeit PozzoHauptOben_PUMPE_PozzoDOIF:cmd_seqnr
   Realtime:
     0          13:00:00
     1          16:00:00
     2          04:00:00
   Regexp:
     0:
     1:
     2:
     3:
     All:
   State:
   Time:
     0          13:00:00
     1          16:00:00
     2          04:00:00
   Timecond:
     0          1
     1          1
     2          3
   Timer:
     0          0
     1          0
     2          0
   Timers:
     1           0  1
     3           2
   Trigger:
   Triggertime:
     1490968800:
       localtime  1490968800
       Hash:
     1491012000:
       localtime  1491012000
       Hash:
Attributes:
   devStateIcon disabled:general_aus@red:initialize initialized:general_an@yellow:disable cmd_1:general_an@yellow:disable cmd_1_1:general_an@green:disable cmd_2:general_an@yellow:disable cmd_2_1:general_an@green:disable cmd_3:general_an@yellow:disable cmd_4:general_an@yellow:disable initialize:general_an@yellow:disable
   group      System
   readingList Laufzeit
   room       System
   sortby     7
   wait       300,9000-[$SELF:Laufzeit]:300,1800-[$SELF:Laufzeit]:0:0



Laufzeit hat Klammerberechnung (text) und die Pumpe läuft nicht mehr an (weil Klammerwerte nicht als Zahl gesehen und somit nicht kleiner als 1200 ist?). Hat jemand einen Klammer-Tip?

Edit: So sollte es gehen. Man beachte "()" um der Berechnung:

(set PozzoHauptOben_PUMPE_Pozzo off,set $SELF Laufzeit {([$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec])})

Per


holle75

Jup, und wie "oben" im Edit geschrieben funktioniert es so. Danke für deine Hilfe Per.

Per

Im Edit steht noch "sollte" ;). Aber schön, dass es geht. Konnte es ja nicht am eigenen System nachbasteln, also "graue" Theorie.

holle75

Wo du Recht hast ....

final (hoffentlich jetzt wirklich), falls es jemand gebrauchen kann, hier der Code.

define PozzoHauptOben_PUMPE_PozzoDOIF DOIF ([myTwilight:elevation] > [Beregnung_Startelevation] and ($month >= [Beregnung_Startmonat] and $month <= [Beregnung_Endmonat]) and [Xtender_AC_out:Power__W:d] < 1200 and [?$SELF:Laufzeit] < 8400) \
(set PozzoHauptOben_PUMPE_Pozzo on) \
(set $SELF cmd_3) \
DOELSEIF ([13:00-16:00] and ($month < [Beregnung_Startmonat] or $month > [Beregnung_Endmonat]) and [Xtender_AC_out:Power__W:d] < 1200 and [?$SELF:Laufzeit] < 1200) \
(set PozzoHauptOben_PUMPE_Pozzo on) \
(set $SELF cmd_3) \
DOELSEIF ([Xtender_AC_out:Power__W:d] > 2100 and [$SELF:cmd_seqnr] eq  1 ) \
(set PozzoHauptOben_PUMPE_Pozzo off,set $SELF Laufzeit {([$SELF:Laufzeit] + [PozzoHauptOben_PUMPE_Pozzo:state:sec])}) \
DOELSEIF ([04:00]) (set $SELF Laufzeit 0)
attr PozzoHauptOben_PUMPE_PozzoDOIF devStateIcon disabled:general_aus@red:initialize initialized:general_an@yellow:disable cmd_1:general_an@yellow:disable cmd_1_1:general_an@green:disable cmd_2:general_an@yellow:disable cmd_2_1:general_an@green:disable cmd_3:general_an@yellow:disable cmd_4:general_an@yellow:disable initialize:general_an@yellow:disable
attr PozzoHauptOben_PUMPE_PozzoDOIF group System
attr PozzoHauptOben_PUMPE_PozzoDOIF readingList Laufzeit
attr PozzoHauptOben_PUMPE_PozzoDOIF room System
attr PozzoHauptOben_PUMPE_PozzoDOIF sortby 7
attr PozzoHauptOben_PUMPE_PozzoDOIF wait 300,9000-[$SELF:Laufzeit]:300,1800-[$SELF:Laufzeit]:0:0


PS @Per: hätte da noch eine sehr wilde Beregnungssteuerung. Falls du noch mehr Muse für Denksportaufgaben hättest (es funktioniert großartig, aber ist so unhübsch, dass selbst mir schlecht wird), würde ich noch einen weiteren Thread aufmachen?

Nochmal Danke und Gruß

Per

Zitat von: holle75 am 03 April 2017, 13:31:35hätte da noch eine sehr wilde Beregnungssteuerung. Falls du noch mehr Muse für Denksportaufgaben hättest (es funktioniert großartig, aber ist so unhübsch, dass selbst mir schlecht wird), würde ich noch einen weiteren Thread aufmachen?
Mach mal. Im schlimmsten Fall behälst du deine alte Lösung und dümmer werden wir davon bestimmt auch nicht.