RandomTimer - neues Modul

Begonnen von Dietmar63, 28 Juli 2013, 15:52:40

Vorheriges Thema - Nächstes Thema

Fredi69

Bei mir scheint es nicht ganz so einfach zu sein.
Ich habe zwei identische RandomTimer laufen.
Eine FS20 Stekdose, eine HUE Lampe.
Beide werden gleichzeitig per disableCond beendet.
Die FS20 Steckdose wird ausgeschaltet, die HUE Lampe nicht.
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Dietmar63

ZitatDie FS20 Steckdose wird ausgeschaltet, die HUE Lampe nicht.
Genau so habe ich mir das gedacht.

Mit welchem Befehl schaltet man ein HUE denn so? Und was steht in state?

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Fredi69

Zitat von: Dietmar63 am 06 Februar 2017, 21:01:19
Genau so habe ich mir das gedacht.

Mit welchem Befehl schaltet man ein HUE denn so? Und was steht in state?
set HUEDevice on/off
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Dietmar63

ZitatLeider wird 1800 Sekunden (bzw. den exakten Wert aus TimeToSwitch) erst das ausgeführt, was vorher schon längst passieren sollte.

Das war sogar Absicht. Der Zufallsgedanke stand im Vordergrund. Der Timer endet absichtlich nicht exakt zum Zeitpunkt der Start- bzw. Ende-Zeit.

Bei mir läuft der Timer nur wenn ich wirklich nicht anwesend(Kurzurlaub) bin. 
Viele Leute hier im Forum haben aber teilweise die RT mit Anwesenheitsbedingungen verknüpft, so dass sie viel dynamischer und häufiger im laufenden Betrieb enabled/disabled werden. Da kann es natürlich sein, dass ein anderes Verhalten wünschenswert wäre.

Ich habe mir das Ganze mal angesehen und kann  vielleicht Abhilfe schaffen, ohne dass die Logik im Timer sich komplett veränern würde - ich melde mich.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Zitat von: Fredi69 am 06 Februar 2017, 21:11:03
set HUEDevice on/off

und wie sieht jeweils der state aus?
kannst du mich auch ggf. mit  logging aus verbose 5 versorgen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Fredi69

Zitat von: Dietmar63 am 06 Februar 2017, 21:15:02
und wie sieht jeweils der state aus?
kannst du mich auch ggf. mit  logging aus verbose 5 versorgen.
State vom Hue Device oder dem RT?
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Fredi69

fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Fredi69

Habe gefunden warum sich beide unterschiedlich verhalten. Das habe ich verursacht. Es ist leider auch so, dass bei beiden bei eintreten der disableCond, das Gerät nicht ausgeschalteter wird.
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Dietmar63

Ok,
Dann liegt es doch an der gleichen Ursache
Ich habe eine Version im Test, die beim Eintreten von disable, das Gerät abschaltet.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

#445
habe eine verbesserte Version eingecheckt - bitte mal probieren, ob sie so funktioniert wie ihr es erwartet.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

micha42

#446
Zitat von: Dietmar63 am 08 Februar 2017, 01:08:57
habe eine verbesserte Version eingecheckt - bitte mal probieren, ob sie so funktioniert wie ihr es erwartet.

Ich habe wohl ein damit zusammen hängendes Problemchen festgestellt (98_RandomTimer.pm 13356 2017-02-07 23:47:53Z orti-otto):

2017-02-16_00:35:30 Random_Licht_Esszimmer Startzeit: 2017-02-16 17:57:44
2017-02-16_00:35:30 Random_Licht_Esszimmer Stoppzeit: 2017-02-16 22:57:44

Kurz nach 18 Uhr - Licht ist noch keines angegangen - komme ich nach Hause, setze (automatisch durch Wert von "Anwesenheit" ) die disableCond-Bedingung auf true:

attr Random_Licht_Esszimmer_5h disableCond (Value("Anwesenheit") eq "anwesend")

Direkt (ca 18:02) Uhr schalte ich jenes Licht dann manuell ein und erwarte, dass RandomTimer nur auch nichts mehr mit diesem Licht macht.

Eine halbe Stunde später aber schlägt er zu und macht es aus, man sitzt im Dunkeln:

2017.02.16 18:33:32 3: [Random_Licht_Esszimmer] ending   RandomTimer on HM_xxxxxx_Licht_Esszimmer: 17:57:44(16) - 22:57:44(16)

Ist das vielleicht genau das angesprochene Verhalten, allerdings wird nicht direkt bei Änderung von "Anwesenheit", sondern erst beim nächsten Schaltzeitpunkt geprüft und ggf. abgeschaltet? Ich habe timeToSwitch mit 2500 Sekunden definiert, könnte also passen.

Update: Sehe gerade genau das ist auch ab #428 (03 Februar 2017, 12:58:27) beschrieben/behandelt.

cseuss

Guten Morgen,

ich leider habe auch ein Problem mit dem Modul.

Ich habe mehrere RT definiert um eine Anwesenheitssimulation mit mehreren Lampen zu simulieren. Dabei sollen die Lampen natürlich unabhängig von einander eingeschaltet werden.

Alle Lampen gehen aber zum Zeitpunkt der Startzeit exact gleichzeitig an. Hier die Definitionen:

defmod ZufallsTimerMorgensWz RandomTimer *{sunrise_abs(-3600)} du_Wz.Deckenlampe *{sunrise_abs(3600)} 600
attr ZufallsTimerMorgensWz switchmode 800/200
setstate ZufallsTimerMorgensWz 2017-02-27 00:10:30 Startzeit 2017-02-27 05:50:34
setstate ZufallsTimerMorgensWz 2017-02-27 00:10:30 Stoppzeit 2017-02-27 07:50:34

defmod ZufallsTimerMorgensSz RandomTimer *{sunrise_abs(-3600)} du_Sz.Deckenlampe *{sunrise_abs(3600)} 600
attr ZufallsTimerMorgensSz switchmode 800/200
setstate ZufallsTimerMorgensSz 2017-02-27 00:10:30 Startzeit 2017-02-27 05:50:34
setstate ZufallsTimerMorgensSz 2017-02-27 00:10:30 Stoppzeit 2017-02-27 07:50:34

defmod ZufallsTimerMorgensTr RandomTimer *{sunrise_abs(-3600)} du_Tr.Deckenlampe *{sunrise_abs(3600)} 600
attr ZufallsTimerMorgensTr switchmode 800/200
setstate ZufallsTimerMorgensTr 2017-02-27 00:10:30 Startzeit 2017-02-27 05:50:34
setstate ZufallsTimerMorgensTr 2017-02-27 00:10:30 Stoppzeit 2017-02-27 07:50:34


und die Logauszüge:

2017.02.27 05:50:34 3: [ZufallsTimerMorgensTr] starting RandomTimer on du_Tr.Deckenlampe: 05:50:34(27) - 07:50:34(27)
2017.02.27 05:50:34 3: CUL_HM set Tr.Deckenlampe on
2017.02.27 05:50:34 3: [ZufallsTimerMorgensWz] starting RandomTimer on du_Wz.Deckenlampe: 05:50:34(27) - 07:50:34(27)
2017.02.27 05:50:34 3: CUL_HM set Wz.Deckenlampe on
2017.02.27 05:50:34 3: [ZufallsTimerMorgensSz] starting RandomTimer on du_Sz.Deckenlampe: 05:50:34(27) - 07:50:34(27)
2017.02.27 05:50:34 3: CUL_HM set Sz.Deckenlampe on


Wie kann ich die Lampen untereinander variieren? Oder ist das ein Bug.

Vielen Dank für Eure Antwort.

Gruß

Christian



Dietmar63

#448

*{sunrise_abs(-3600)}


so bekommst du zufällige Anfangswerte +/- 10 Minuten: rand()/3 = 0,33333 h - 1/6  = +- 10 Minuten


*{h2hms_fmt(hms2h(sunrise_abs(-3600))-(rand()/3)-1/6))}


Bitte mit diesem String in der Oberfläche probieren, bis die Werte passen - ich kann gerade nicht testen:
{h2hms_fmt(hms2h(sunrise_abs(-3600))-(rand()/3)-1/6)}

so wären es +- 20 Minuten:

*{h2hms_fmt(hms2h(sunrise_abs(-3600))-(rand()*2/3)-1/3))}

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

cseuss

Hallo Dietmar,

vielen Dank für die Formeln. Das hat erst einmal geklappt.

Allerdings sind die Werte statisch für einen Tag inkl. Datum.

defmod ZufallsTimerMorgensSz RandomTimer {h2hms_fmt(hms2h(sunrise_abs(-3600))-(rand()*2/3)-1/3)} du_Sz.Deckenlampe {h2hms_fmt(hms2h(sunrise_abs(3600))-(rand()*2/3)-1/3)} 600
attr ZufallsTimerMorgensSz room Zutritt
attr ZufallsTimerMorgensSz switchmode 800/200

setstate ZufallsTimerMorgensSz off
setstate ZufallsTimerMorgensSz 2017-02-28 21:21:38 Startzeit 2017-02-28 05:27:11
setstate ZufallsTimerMorgensSz 2017-02-28 21:21:38 Stoppzeit 2017-02-28 07:08:08
setstate ZufallsTimerMorgensSz 2017-02-28 21:21:37 TimeToSwitch 600
setstate ZufallsTimerMorgensSz 2017-02-28 21:26:34 active 0
setstate ZufallsTimerMorgensSz 2017-02-28 21:26:34 state off


Wann werden denn die sunrise_abs Werte neu berechnet und wann über nimmt das RT-Modul diese?

Ich hätte jetzt erwartet, dass die Werte heute morgen neu für den heutigen Tag auftauchen.

Des weiteren funktioniert die DisableCond nicht.

Ich habe eine einfache Bedingung (Value("Homestatus") eq "Home")

Wann wir diese denn ausgewertet? Ich hätte erwartet, dass "eventgesteuert" der RT aktiviert oder deaktiviert wird.
Allerdings gibt es keine Verändung, wenn sich der Status meines Dummy Homestatus ändert.

Könnt Ihr noch einmal helfen?

Gruß und Dank

Christian