Konstantlichtregelung mit HM-HM-LC-DW-WM [Gelöst]

Begonnen von fast-eddy, 17 September 2018, 14:48:44

Vorheriges Thema - Nächstes Thema

fast-eddy

Hallo zusammen,

seit kurzen nenne ich einen HM-HM-LC-DW-WM DualWhite LED Dimmer mein eigen,
der sich Dank martinp876 auch problemlos in meine HM-Welt integrieren lies.

Jetzt möchte ich den LED-Controller verwenden um eine Konstantlichtregelung zu bauen,
bei der sich analog zum Sonnenstand Helligkeit und Lichtfarbe ändern (zumindest in grober
Näherung)

Das klappt soweit auch ganz gut - um es komplett dynamisch abbilden zu können müsste
man aber die ramptime aus dem pct Befehl auch als Variable
oder Perl Code setzen können. So In der Art:
DEF        ([{sunrise("CIVIL")}])
(set eg_garderobe_HELLIGKEIT press)
(set eg_garderobe_HELLIGKEIT pct 40 0 {hms2secs(sunset_rel("CIVIL"))/2})
(set eg_gardedobe_FARBE pct 100 0 {hms2secs(sunset_rel("CIVIL"))/2}) 
(set eg_garderobe_HELLIGKEIT pct 5 {hms2secs(sunset_rel("NAUTIC"))})
DOELSEIF ([23:00])
(set eg_garderobe_HELLIGKEIT press)


Wobei das command (set eg_garderobe_HELLIGKEIT pct 5 {hms2secs(sunset_rel("NAUTIC"))}) über die Attribute wait und timerWithWait verzögert wird.

Attributes:
   group      Haussteuerung
   room       STEUERUNG
   timerWithWait 1
   wait       0,5,0,{hms2secs(sunset_rel("CIVIL"))/2}:0


Wie gesagt es funktioniert alles bis auf das setzen der ramptime.
Das Perl snipped für sich alleine liefert sauber die Sekunden zurück - nur als ramptime wird´s halt nicht ausgewertet.
Ist da nur die manuelle Angabe von Werten in Sekunde möglich oder gibt es einen Trick, so dass auch Perl Code
akzeptiert wird?

Bin gespannt auch Euer Feedback...
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

fast-eddy

...wie jetzt ?
Hat wirklich niemand eine Idee wie ich die ramptime als Variable oder Perlcode setzen kann ?
Das kenne ich so gar nicht von diesem Forum  ;)
Sonst hat man eher das Problem, sich für einen der vielen Vorschläge von Euch entscheiden zu müssen  :)
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

TomLee

Versuch's mal so:

DEF        ([{sunrise("CIVIL")}])
(set eg_garderobe_HELLIGKEIT press)
((set eg_garderobe_HELLIGKEIT pct 40 0 {hms2secs(sunset_rel("CIVIL"))/2}))
((set eg_gardedobe_FARBE pct 100 0 {hms2secs(sunset_rel("CIVIL"))/2}))  
((set eg_garderobe_HELLIGKEIT pct 5 {hms2secs(sunset_rel("NAUTIC"))})) 
DOELSEIF ([23:00])
(set eg_garderobe_HELLIGKEIT press)


Wenn das auch nicht klappt, dann verschiebe die Frage in den richtigen Forums-Bereich (DOIF) da gibts dann vielleicht auch schneller eine richtige Antwort.

fast-eddy

Hi TomLee,

danke für Dein Feedback.
Irgendwie stehe ich auf dem Schlauch und erkenne Deinen Änderungsvorschlag nicht.
Kannst Du mir dabei bitte etwas auf die Sprünge helfen?

ZitatWenn das auch nicht klappt, dann verschiebe die Frage in den richtigen Forums-Bereich (DOIF) da gibts dann vielleicht auch schneller eine richtige Antwort.

Ja - war mir nicht sicher wo das Thema hingehört. Das DOIF funktioniert ja.
Nur der Paramater für die ramptime wird halt nicht interpertiert und statt dessen der Default Value gesetzt.
Und das ist imho ja eine Frage des HM Devices - oder liege ich damit falsch?
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

TomLee

Keine Ahnung obs heute immer noch so klappt, habs nicht getestet, meine Suche nach deinem Problem hatte mich hierhin geführt.

fast-eddy

...ahhh jetzt ja!
Jetzt sehe auch ich Deinen Änderungsvorschlag mit den zusätzlichen Klammern.
Aber wie im zitierten Thread schon geschrieben: Da sieht mal das Command vor lauter Klammern nicht mehr  ;)
Unter dem Gesichtspunkt ist meineFrage im DOIF Forum wohl doch besser aufgehoben.
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Damian

#6
Hier mit Perlvariablen ohne jegliche Attribute im DOIF-Perl-Modus:

DOIF {if ([{sunrise("CIVIL")}]) {
        my $ramptime1=hms2secs(sunset_rel("CIVIL"))/2;
        my $ramptime2=hms2secs(sunset_rel("NAUTIC"));
        fhem"set eg_garderobe_HELLIGKEIT press";
        set_Exec("hell",5,"fhem\"set eg_garderobe_HELLIGKEIT pct 40 0 $reamptime1;set eg_gardedobe_FARBE pct 100 $ramptime1\""); # um 5 Sekunden verzögert
        set_Exec("dunkel",5+$ramptime1,"fhem\"set eg_garderobe_HELLIGKEIT pct 5 $ramptime2\"") # verzögert um 5+$ramptime1
      }
    }
{if ([23:00]) {fhem"set eg_garderobe_HELLIGKEIT press"}}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TomLee

Was hab ich gesagt

Zitat... vielleicht auch schneller eine richtige Antwort.

bei der Umsetzung auf die Schreibfehler in $ramptime1 achten 😉

fast-eddy

 :)

...werd´s morgen gleich mal testen und berichten.

@Damian: Danke auch für Deine prompte Unterstützung.
Auch wenn es jetzt halt ohne DOIF laufen muss  ;)
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Damian

Zitat von: TomLee am 18 September 2018, 16:35:25
Was hab ich gesagt

bei der Umsetzung auf die Schreibfehler in $ramptime1 achten 😉

Hab´s korrigiert :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TomLee

ZitatAuch wenn es jetzt halt ohne DOIF laufen muss  ;)

Für Morgen:

Es ist weiterhin ein DOIF.

Damian

Zitat von: fast-eddy am 18 September 2018, 16:38:22
:)

...werd´s morgen gleich mal testen und berichten.

@Damian: Danke auch für Deine prompte Unterstützung.
Auch wenn es jetzt halt ohne DOIF laufen muss  ;)

Warum ohne DOIF? Beides ist DOIF.

Der Vollständigkeit halber im DOIF-FHEM-Modus:

DEF        ([{sunrise("CIVIL")}])
(set eg_garderobe_HELLIGKEIT press)
(set eg_garderobe_HELLIGKEIT pct 40 0 {(hms2secs(sunset_rel("CIVIL"))/2)} , set eg_gardedobe_FARBE pct 100 0 {(hms2secs(sunset_rel("CIVIL"))/2)}) 
(set eg_garderobe_HELLIGKEIT pct 5 {(hms2secs(sunset_rel("NAUTIC")))})
DOELSEIF ([23:00])
(set eg_garderobe_HELLIGKEIT press)
   
timerWithWait 1
wait       0,5,{hms2secs(sunset_rel("CIVIL"))/2}

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

Ich habe eine Userreading, welches die Dauer des Sonnenunterganges enthält.

Im DOIF habe ich als Befehl
Zitat(set AquariumLicht 0 0 [ThailandSonne:ss_dauer])
Auch funktionierende Lösungen kann man hinterfragen.

fast-eddy

...so hier mal das erste Feedback.
Das mit Eurer Hilfe gebaute DOIF scheint zumindest mal grundsätzlich zu tun was es soll - Siehe Logfile:

LOGFILE:
2018.09.19 08:30:00 3: CUL_HM set eg_garderobe_HELLIGKEIT pct 5
2018.09.19 08:30:05 3: CUL_HM set eg_garderobe_HELLIGKEIT pct 40 0 20817.5
2018.09.19 08:30:05 3: CUL_HM set eg_garderobe_FARBE pct 100 0 20817.5


Die Timestamps für die ramptime werden sauber in Sekunden umgerechnet und das Command für den LED Dimmer scheint OK.

Allerdings wird das ganze auf seiten des Devices nur initial getriggert und dann passiert erstmal nix oder nur merkwürdige Dinge.
Siehe EventLog:

EVENTLOG
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT level: set_5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT set_5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT trigLast: fhem:02
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT trigLast: fhem:02
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT deviceMsg: 99.5 (to vccu)
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT dim: down:99.5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT level: 99.5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT pct: 99.5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT 99.5
2018-09-19 08:30:00 CUL_HM eg_garderobe_HELLIGKEIT timedOn: AUS
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT level: set_40
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT set_40
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT trigLast: fhem:02
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE level: set_100
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE set_100
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT trigLast: fhem:02
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE trigLast: fhem:02
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT deviceMsg: 5.5 (to vccu)
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT dim: up:5.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT level: 5.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT pct: 5.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT 5.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_HELLIGKEIT timedOn: AUS
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE trigLast: fhem:02
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE color: 0.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE deviceMsg: 0.5 (to vccu)
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE dim: up:0.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE level: 0.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE pct: 0.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE rgb: FF0700
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE 0.5
2018-09-19 08:30:05 CUL_HM eg_garderobe_FARBE timedOn: WARM


Auch aus dem List des DOIF kann ich nicht erkennen warum der Dimmer die Helligkeit auf 5.5 (!) setzt und dann erstmal nichts weiter passiert :

Internals:
   DEF        ([08:30])
(set eg_garderobe_HELLIGKEIT pct 5)
(set eg_garderobe_HELLIGKEIT pct 40 0 {(hms2secs(sunset_rel("CIVIL"))/2)})
(set eg_garderobe_FARBE pct 100 0 {(hms2secs(sunset_rel("CIVIL"))/2)})
(set eg_garderobe_HELLIGKEIT pct 5 {(hms2secs(sunset_rel("NAUTIC")))})
DOELSEIF ([23:00])
(set eg_garderobe_HELLIGKEIT off)
   MODEL      FHEM
   NAME       timer_LED_GARDEROBE
   NR         503
   NTFY_ORDER 50-timer_LED_GARDEROBE
   STATE      cmd_1_3
   TYPE       DOIF
   READINGS:
     2018-09-19 08:30:05   cmd             1.3
     2018-09-19 08:30:05   cmd_event       timer_1
     2018-09-19 08:30:05   cmd_nr          1
     2018-09-19 08:30:05   cmd_seqnr       3
     2018-09-19 08:27:52   mode            enabled
     2018-09-19 08:30:05   state           cmd_1_3
     2018-09-19 08:30:00   timer_01_c01    20.09.2018 08:30:00
     2018-09-19 08:27:52   timer_02_c02    19.09.2018 23:00:00
     2018-09-19 08:30:05   wait_timer      19.09.2018 14:17:02 cmd_1_4 timer_1
   Regex:
   attr:
     cmdState:
     wait:
       0:
         0
         5
         5
         {hms2secs(sunset_rel("CIVIL"))/2}
       1:
         0
     waitdel:
   condition:
     0          DOIF_time_once($hash,0,$wday)
     1          DOIF_time_once($hash,1,$wday)
   days:
   devices:
   do:
     0:
       0          set eg_garderobe_HELLIGKEIT pct 5
       1          set eg_garderobe_HELLIGKEIT pct 40 0 {(hms2secs(sunset_rel("CIVIL"))/2)}
       2          set eg_garderobe_FARBE pct 100 0 {(hms2secs(sunset_rel("CIVIL"))/2)}
       3          set eg_garderobe_HELLIGKEIT pct 5 {(hms2secs(sunset_rel("NAUTIC")))}
     1:
       0          set eg_garderobe_HELLIGKEIT off
     2:
   helper:
     event      timer_1
     globalinit 1
     last_timer 2
     sleepdevice timer_1
     sleepsubtimer 3
     sleeptimer 0
     timerdev   
     timerevent timer_1
     timereventsState
     triggerDev
     triggerEventsState
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 3
       cmd_event: timer_1
       state: cmd_1_3
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1537425000
     1          1537390800
   readings:
   realtime:
     0          08:30:00
     1          23:00:00
   time:
     0          08:30:00
     1          23:00:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1537390800:
       localtime  1537390800
       hash:
     1537425000:
       localtime  1537425000
       hash:
   uiState:
   uiTable:
Attributes:
   group      Haussteuerung
   room       STEUERUNG
   timerWithWait 1
   wait       0,5,5,{hms2secs(sunset_rel("CIVIL"))/2}:0


Hat einer von Euch noch ne zündende Idee?
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Damian

Wenn man eine ganze Zahl durch 2 teilt, dann braucht man sich nicht zu wundern, wenn hinter dem Komma eine 5 steht :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF