WeekDaytimer und SetParam???

Begonnen von NoMercy, 13 Januar 2017, 10:24:41

Vorheriges Thema - Nächstes Thema

NoMercy

Hallo Zusammen,

ich habe eine Frage zum Weekdaytimer und dem Einsatz von SetParam gem. CommandRef.

Ich nutzte einige Weekday-Timer für die Steuerung von Lampen für eine Anwesenheitssimulation. Hierbei "enable" ich die entsprechenden Weekday-Timer wenn ich den Homestatus auf "Abwesend" setze und "disable" die WeekdayTimer, wenn ich den Homestatus auf "Anwesend" setze. Das funktioniert soweit auch ganz gut.

Mein Problem ist eigentlich recht einfach, aber schwer zu beschreiben.... Aber ich versuche es mal mit einem Beispiel:
- Wenn ich nicht zu Hause wäre würde ein WeekDayTimer ein Deckenlicht im Büro um 06:30 morgens anschalten und um 08:30 wieder ausschalten. Das funzt auch
- Wenn ich zu Hause bin (WeekDayTimer disabled) schaltet die Lampe um 6:30 nicht an (gut so). Wenn ich das Haus jetzt um 7:30 verlasse (WeekDayTimer wird enabled) bleibt die Lampe aus, da der Einschaltvorgang ja stattgefunden hat, als der Timer disabled war
- Ich möchte aber, dass beim enablen des Timers die Lampe den Schaltzustand hat, die sie gehabt hätte, wenn der Timer gelaufen wäre....

Wenn ich die CommandRef richtig verstanden habe, müsste ich dies genau mit {WeekdayTimer_SetParam("WD-Device")} erreichen können, oder?

Ich habe mir also folgenden Code gebastelt der nicht funzt:

define DI_WDT_OG_Buero_LichtDecke_Schalter DOIF ([WDT_OG_Buero_LichtDecke_Schalter:disabled] eq "0") \
({WeekdayTimer_SetParam("WDT_OG_Buero_LichtDecke_Schalter")})
attr DI_WDT_OG_Buero_LichtDecke_Schalter do always
attr DI_WDT_OG_Buero_LichtDecke_Schalter room Buero,Zeitprogramme

wobei hier "WDT_OG_Buero_LichtDecke_Schalter" der definierte WeekDayTimer mit den Steuerzeiten für die Lampe ist.

Fehlermeldung des DOIF ist: {WeekdayTimer_SetParam("WDT_OG_Buero_LichtDecke_Schalter")}: Undefined subroutine &main::WeekdayTimer_SetParam called at (eval 327516) line 1.

Irgendwas habe ich noch nicht verstanden...  :'(

Hat jemand eine Idee, wie ich mein Problem gelöst bekomme bzw. was ich falsch mache?

Danke und Gruß

Dietmar63

WeekdayTimer_SetParm("WD-Device")}[/
Ich hoffe, ich habe mich in der Doku nicht verschreiben.-

Eventuell benlötigst du noch  switchInThePast
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

NoMercy

Nein. Du hast Dich nicht verschrieben... Ich kann nur nicht richtig lesen  :-[

Mit "Parm" statt "Param" gibt es keine Fehlermeldung mehr. Und danke für den Tip mit switchInThePast. Jetzt funzt es  :) 

Homalix99

Hallo,
ich nutze den WDT seit langem zur Steuerung meiner Rolladen über die Sunset()/suntrise() Funktionen. Nun habe ich Lichtsensoren installiert und möchte die Rollos u. a. auch lichtabhängig steuern.
Zum Beispiel Rolloschließung: Dazu setze ich morgens die WDT mit der spätest möglichen Schließzeit (hier Zivile Dämmerung). Ab Sonnenuntergang überwacht nun eine SUB die Helligkeit und wenn diese einen bestimmten Wert unterschritten hat, wird in einem Dummy diese Zeit + 1 Minute hinzuaddiert, gesetzt. Die WDT sollen nun eine Funktion aufrufen um diese Zeit für die Schließung zu erhalten.
Mit WeekdayTimer_SetParm, so dachte ich, wird der WDT aktualisiert. Diese geschieht aber nur, wenn ich bei den WDT z. B. ein Attibut ändere. Die WDT sollen aber mit WeekdayTimer_SetParm die neuen Werte einlesen und verwenden. Ich habe auch mit dem Attribut SwitchInThePast = 1 gesetzt, versucht, aber es funktioniert so leider nicht.
WDT-Def.
Rollo_1.OG_Ost_l {Rollo_down()}|down !$we|{Rollo_up_WT()}|up $we|{Rollo_up_WE()}|up {
fhem("set Rollo_AZ_l %");
fhem("set Rollo_AZ_m %");
fhem("set Rollo_AZ_r %");
}

SUB: Rollo Down:
sub Rollo_down(){ # wird von den WDT fuer die Auto-Rollosteuerung aufgerufen
my $closetime = Value("Schliesszeit");
return($closetime);
}

DUMMY Schliesszeit
# enthält die Uhrzeit im Format hh:mm:ss

notify zum setzen des WeekdayTimer_SetParm:
(Oeffnungszeit_.*|Schliesszeit):state:.* {
WeekdayTimer_SetParm("AutoJalousie_AZ");
}

Soll das Update der WDT so funktionieren, oder besser gesagt, wie bekomme ich das hin?
Danke im voraus.
VG
Alex
- RPI 4 fhem in Docker, 2 x Arduino Uno, HM-GW, HM-Dev. (Fensterkontakte, HK-Thermostate, div. Aktoren), JeeLink,
- GPIOs, HM-LAN, ESPs (MQTT2)
-Überwachung Fenster/Türen/Licht, HK-Thermostatregelung, Rollosteuerung, Überw. Betriebstemperaturen Heizung, Erfassung Gas/Wasser, PV-Anl., Wetter (WS1600)