Weekday-Timer mit DOIF: neue Funktion set_Timer

Begonnen von Damian, 11 April 2019, 22:36:06

Vorheriges Thema - Nächstes Thema

Damian

Ich plane die Funktion set_Timer für wiederholende Timer in den Perlmodus einzubauen, sie würde wie set_Exec funktionieren, statt Sekundenangabe würde aber die komplette Timer-Syntax von DOIF funktionieren.

Bsp,

Schalte die Lampe um 10:00 Uhr:

set_Timer ("timer1","[10:00]",'fhem_set("lamp off")')

Damit könnte man sich elegant seinen eigenen Weekday-Timer mit eigener Syntax wie hier bauen: https://forum.fhem.de/index.php/topic,84969.msg848315.html#msg848315

z. B.

init {$_temps="
Raum,         Befehl,         05:00,08:00,12:00,17:00,20:00,23:00
TH_Keller_HM, desired-temp,   20,   19.5, ,     ,     ,     19.5
TH_Kueche,    desired,        21,   17,   19.5, ,     17,
TH_Bad_HM,    desired-temp,   21,   17,   ,     17,   17,
TH_DG_HM,     desired-temp,   21,   20,   21,   ,     20,
TH_WZ_HM,     desired-temp,   21,   17,   21,   ,     20,
TH_Kz_w_HM,   desired-temp,   20,   17,   21,   ,     20,"
}
...


Das Setzen der Timer mit den angegebenen Zeiten und den jeweiligen Befehl ließe sich dann universell in einer Perlfunktion (wie im Link) realisieren.

Der Aufbau kann natürlich sehr individuell gestaltet werden:
z. B.
init {$_temps="
TH_Keller_HM, desired-temp,   05:00,20, 08:00,19.5, 23:00,19.5
TH_Kueche,    desired,        05:00,21, 08:30,17, 13:00,19.5, 23:00,17,
...


oder

init {$_temps="
TH_Keller_HM, 06:00|WE,05:00|AT,20, 22:00|WE,21:00|AT,18
...


usw.

Man muss dann nur noch die entsprechende Perlfunktion zum Setzen der Timer anpassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Hallo Damian,
das ist zwar schon sehr alt, aber jetzt würde ich sowas für die E-Auto Klimatisierung brauchen können.
Das Grundgerippe ist bereits DOIF mit uiTable.

Hast Du hieran weiter gearbeitet, oder könntest Du mir sogar ein Beispiel schicken?

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

set_Timer wurde in der Form nicht realisiert. Es gibt die Perlfunktion set_Exec https://fhem.de/commandref_DE.html#DOIF_set_Exec, mit der kann man einen Timer  für eine Zeitspanne in Sekunden stellen. Einen Timer-Zeitpunkt kann man in uiTable über ein Reading setzen, welches als indirekte Zeit definiert wurde.

defmod di_timer_input DOIF {[[$SELF:time]];;fhem_set("Lampe on")}
attr di_timer_input uiTable {package ui_Table}\
\
"Zeitpunkt"|widget([$SELF:time],"time")

setstate di_timer_input initialized
setstate di_timer_input 2021-11-04 17:19:17 mode enabled
setstate di_timer_input 2021-11-04 17:19:17 state initialized
setstate di_timer_input 2021-11-04 17:19:25 time 03:00
setstate di_timer_input 2021-11-04 17:19:25 timer_01_c01 05.11.2021 03:00:00
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 04 November 2021, 17:22:59
set_Timer wurde in der Form nicht realisiert. Es gibt die Perlfunktion set_Exec https://fhem.de/commandref_DE.html#DOIF_set_Exec, mit der kann man einen Timer  für eine Zeitspanne in Sekunden stellen. Einen Timer-Zeitpunkt kann man in uiTable über ein Reading setzen, welches als indirekte Zeit definiert wurde.

Danke für die schnelle Rückmeldung. Ich habe da schon eine Idee in kombination mit einem Kalender.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick