Hallo in die Runde,
ich hoffe ihr könnt mir mit meinem Problem weiterhelfen.
Der Dummy Sonnenaufgang_abends ist mit einer Uhrzeit gefüllt, das ist aber klar.
Zu dieser Uhrzeit soll das Aquarium (Aquarium_LED ist ein FIBARO System FGRGBWM441 RGBW Controller) minütlich um einen Dim-Wert erhöht werden. Mangels dimwithduration muss ich wohl oder übel den Weg über einen dummy gehen.
Bei "dim 99" ist maximal hell, und das soll erst mal so bleiben.
Wie schaffe ich es, dass der Dimvalue_Sonnenaufgang_abends jetzt minütlich hochgezählt wird?
Für eine Anregung oder konkreten Lösungsvorschlag bin ich sehr dankbar !!!
Viele Grüße aus Mittelhessen,
Wilhelm
define Sonnenaufgang_abends dummy
define Dimvalue_Sonnenaufgang_abends dummy
define DOIF_Sonnenaufgang_abends_start DOIF ([Sonnenaufgang_abends]) (set Aquarium_LED dim 1,set Dimvalue_Sonnenaufgang_abends 1)
define DOIF_AT_definieren DOIF ([Sonnenaufgang_abends]) (define AT_Erhoehung at +*00:01 set Dimvalue_Sonnenaufgang_abends {([Dimvalue_Sonnenaufgang_abends]+1)})
define notify_AT_beenden DOIF ([Aquarium_LED:state] eq "dim 99") (delete AT_Erhoehung)
define Aquarium_Sonnenaufgang_abends notify Dimvalue_Sonnenaufgang_abends.* set Aquarium_LED dim $EVTPART0
Wie wäre es, mit dem Einschalten auf einen Anfangswert ein weiteres at zu definieren, das z.B. 24 mal wiederholt wird und jedesmal den aktuellen Dimmwert in kleinen Schritten (a 4%) erhöht?
Morgen,
das wäre die andere Möglichkeit gewesen. Die Sonnenaufgang_abends ist jedoch zu sehr unterschiedlichen Uhrzeiten (je nach meinem Nachtdienst / frei etc), so dass die Fischis immer wach bin wenn ich auch was davon habe und daheim bin. Da kann ich die Uhrzeit ziemlich bequem verstellen.
Mein Problem ist, dass das at-device nicht nochzählt.
define DOIF_AT_definieren DOIF ([Sonnenaufgang_abends]) (define AT_Erhoehung at +*00:01 set Dimvalue_Sonnenaufgang_abends {([Dimvalue_Sonnenaufgang_abends]+1)})
Das List zeigt an
Internals:
CFGFN
NAME Dimvalue_Sonnenaufgang_abends
NR 8152
STATE Bareword "Dimvalue_Sonnenaufgang_abends" not allowed while "strict subs" in use at (eval 32890) line 1.
TYPE dummy
Helper:
DBLOG:
state:
DBLogging:
TIME 1510468993.99161
VALUE Bareword "Dimvalue_Sonnenaufgang_abends" not allowed while "strict subs" in use at (eval 32890) line 1.
READINGS:
2017-11-12 07:43:13 state Bareword "Dimvalue_Sonnenaufgang_abends" not allowed while "strict subs" in use at (eval 32890) line 1.
Attributes:
room test
Der Define des at ist falsch
die timespec muss so lauten: 00:01:00
Und ich würde defmod statt define nehmen...
Zu prüfen, ob das at angelegt wird geht per list, z.B. list TYPE=at
Wenn dort dann das at angezeigt wird, dann sollte es auch zählen...
Allerdings wird die Definition des at zu einer "save config Anzeige" führen...
Handy daher kurz...
Gruß, Joachim
Na ja, zum einen ist jedenfalls mir nicht klar, warum es unbedingt ein DOIF sein muß, um ein at zu definieren, das kann ein simples at genauso, aber mal ab davon:
Das defmod muß ein wiederholendes at definieren, und im Auführungsteil muß eher ReadingsNum() verwendet werden als die DOIF-Schreibweise mit den eckigen Klammern.
defmod at +*{24}00:01 set Dimvalue_Sonnenaufgang_abends {ReadingsNum("Dimvalue_Sonnenaufgang_abends","percentage","")+1}
Und das Reading sollte m.E. auch nicht aus einem Dummy kommen, sondern von zu schaltenden device, und das sollte man erst mal "initialisieren", also erst das Zieldevice z.B. auf 5% stellen, dann ein wait 1, dann das defmod.
So in der Art eben.
Meine Variante:
define SA_start dummy
attr SA_start readingList time
attr SA_start setList time:time
attr SA_start stateFormat time
attr SA_start webCmd time
define SA_sched at *23:00 set Aquarium_LED dim 10;; defmod SA_set at +*{9}00:01 set Aquarium_LED dim {( Each("Aquarium_LED","20,30,40,50,60,70,80,90,99") )}
define SA_ntfy notify SA_start { fhem "defmod SA_sched at *".ReadingsVal("SA_start","time","23:00") }
Eigentlich reicht auch die SA_sched Zeile, wenn es reicht die Zeit in der FHEMWEB Detailansicht aendern zu koennen.
Alternativ:
define SA_sched DOIF ([Sonnenaufgang_abends]) (set Aquarium_LED dim {( Each("Aquarium_LED","10,20,30,40,50,60,70,80,90,99") )})
attr SA_sched do always
attr SA_sched repeatcmd 60
attr SA_sched repeatsame 10
Super, ihr seid die besten, bin gerade noch im Dienst, ich werde morgen berichten, wenn ich ausgeschlafen bin.
Vielen Dank schon einmal vorab!