Dummy hochzählen in AT-device

Begonnen von TrickShot, 11 November 2017, 23:39:14

Vorheriges Thema - Nächstes Thema

TrickShot



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

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TrickShot

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


MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

#4
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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

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") }




rudolfkoenig

Eigentlich reicht auch die SA_sched Zeile, wenn es reicht die Zeit in der FHEMWEB Detailansicht aendern zu koennen.

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TrickShot

Super, ihr seid die besten, bin gerade noch im Dienst, ich werde morgen berichten, wenn ich ausgeschlafen bin.
Vielen Dank schon einmal vorab!