RandomTimer - neues Modul

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

Vorheriges Thema - Nächstes Thema

Dietmar63

#165
Ja, danke für den Tipp - habe ich mich wohl vertan.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

wingfighter

Hallo Dietmar

Ich habe mir an drei Lampen die Zufallsfunktion wie in Deinem erste Post beschrieben "gebaut".
Grundsätzlich funktioniert das auch. Allerdings habe ich Probleme mit der dummy-Variable "Verreist".
Wenn ich sie über das Web-Interface auf "nein" setze, wird die Zufallsfunktion für alle drei Lampen disabled; so wie es sein soll.
Allerdings bekomme ich die Funktion über das Umschalten auf "ja" nicht wieder aktiviert. Erst ein "Anfassen" des Attributs "disableCond" führt dazu, dass das "ja" übernommen wird - die ZufallsFunktion als aktiv ist.
Beim Deaktivieren - also Verreist auf "nein" - wird ja u.a. STATE auf "disable" und activ auf "0" gesetzt. In der Zeit werden auch keinerlei Einträge in die Logdatei geschrieben.
Ich habe den Eindruck, dass die Funktion RandomTimer dann gar nicht aufgerufen wird.
Kannst Du mir einen Tipp geben, wie ich die Funktion in beide Richtungen so zum Laufen bekomme, dass ich nur über "Verreist" ja:nein die Funktion ein- bzw. ausschalten kann- so wie es ja sicher von Dir auch gedacht war. ;-)

Viele Grüße
Ralph






Dietmar63

Ich sehe mir das an.
Es wird aber ein wenig dauern, weil ich im Moment nicht so viel Zeit habe.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

moonsorrox

#168
ich habe mir ein Dummy "Zeitsteuerung" erstellt welches 3 Möglichkeiten des "state" hat Aus, Dämmerung und Zufall
Ich bekomme es aber nicht hin das bei "Zufall" der RandomTimer aktiviert wird und auch wieder abgeschaltet wird wenn der "state" sich ändert.
Diese habe ich probiert: funktioniert mit keinem, wo ist mein Fehler?
attr ZufallsTimerAussenlicht disableCond (!isZufall())
bei obigen Eintrag zusätzlicher Eintrag in der 99_myUtils
sub isZufall           () { return(YesNo("Zufall"));}

Diese beiden probiert aber es geht nicht

attr ZufallsTimerAussenlicht disableCond (!Value("TestZeitsteuerung" eq "Zufall"))
attr ZufallsTimerAussenlicht disableCond (ReadingsVal("TestZeitsteuerung", "state", "Zufall") eq "on" )


EDITH:// ich habe heute noch mal etwas getestet und ein Dummy erstellt.
Dummy Code:
#### Zeitsteuerung Dummy ###
define TestZeitsteuerung dummy
attr TestZeitsteuerung alias TestZeitsteuerung aktivieren
attr TestZeitsteuerung devStateIcon Aus:general_aus@lightgreen Zufall:general_an_fuer_zeit@Crimson
attr TestZeitsteuerung eventMap Aus Zufall
attr TestZeitsteuerung group TestSteuerung
attr TestZeitsteuerung icon time_clock
attr TestZeitsteuerung room Automation
attr TestZeitsteuerung setList state:Aus,Zufall
attr TestZeitsteuerung sortby 01
attr TestZeitsteuerung webCmd state


Sollte ich nicht durch das Dummy den RT aktivieren/deaktivieren können..
gefunden das dies mit disable geht.

Aber was ich nicht hin bekomme das der RT nur dann aktiv ist wenn mein Dummy auf "Zufall" steht, der RT geht auch so auf aktiv.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

Zitat von: wingfighter am 12 November 2014, 20:48:54
Allerdings bekomme ich die Funktion über das Umschalten auf "ja" nicht wieder aktiviert. Erst ein "Anfassen" des Attributs "disableCond" führt dazu, dass das "ja" übernommen wird - die ZufallsFunktion als aktiv ist.
das ist genau das selbe wie ich geschrieben habe, mittlerweile habe ich mich mit dem RT beschäftigt, aktivieren/deaktivieren nur mit disable 1/0
Der RT reagiert nur einmalig auf disableCond, aktivieren damit geht nicht weil er das in dem Zeitrahmen STARTTIME und STOPTIME allein macht.
Soll heißen soweit ich das verstanden habe nur wenn du ihn ganz ausschalten möchtest mußt du ihn mit disable 1 auf "off" schalten, ansonsten startet er den nächsten Tag wieder mit deiner STARTTIME

Wie gesagt die Funktion Verreist ist nicht zum Ein/Aus schalten gedacht
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

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

Dietmar63

Ich bin nicht ganz sicher, ob folgendes stimmt. Aber seinerzeit als ich den RT erfunden habe, ging ich von folgender Situation aus:

Der RT beginnt seine Arbeit so in der Dämmerung und schaltet die Lampe nach Zufall an/aus.
Zu Beginn des RT-Zeitraums wird geprüft, ob er disabled ist. Wenn ja, wird erst wieder am Anfang des nächsten Zykluses geprüft, ob der RT geschaltet werden muss.

Diese Annahme könnte dafür verantwortlich sein, dass während des eigentlichen Zyklusses kein einfaches Einschalten möglich ist. Es sei denn man setzt das Attribut "disable" oder "disableCond". Dann sollte der Timer auf die Funktion "RandomTimer_SetTimer" neu gestartet werden.

Ich überlege mal, wie ich das ändern kann.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

moonsorrox

nach einem Hinweis dies mit notify zu machen, habe das jetzt mit zwei notify und mit disable 0/1 gelöst, somit brauche ich den Code in der 99_myUtils nicht und das Attribut disableCond nicht  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

oelidoc

Hallo,

ich habe hier mehrere RTs, die ich mittels eines DOIF auf disabled 0 oder 1 setze. Das funktioniert auch prima. Nur leider schalten die Lampen sich nicht an, wenn ich den RT innerhalb der START- STOPTIME  auf disabled 0 stelle. Die RTs zeigen zwar STATE on und active 1 an - die Lampen bleiben aber aus  :-\
Ich möchte halt, dass das Licht angeht, wenn ich innerhalb er START-STOPTIME das Haus verlasse. Ich meine auch, dass das schon mal funktioniert hat - in letzter Zeit aber nicht mehr...
Ist da irgendwas geändert worden oder mache ich etwas falsch?

Gruß

oelidoc

Dietmar63

Es gab vor längerer Zeit eine größere Änderung. Seit dem kann es natürlich sein, dass nicht jede Funktion ist wie vorher.

Euern Wunsch kann ich verstehen,und werde es überarbeiten. Dazu muss aber einiges nochmals verändert werden.

Meines Erachtens kannst du dir helfen indem du explicit bei Eintritt der Abwesenheit per notify das Attribut disable setzt. Dann werden die Zeiten neu berechnet und der RT neu gestartet. Probier es mal aus und wenn es nicht Funzt, dann veröffentliche hier deine Definitionen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

moonsorrox

Zitat von: oelidoc am 19 Dezember 2014, 19:48:05
ich habe hier mehrere RTs, die ich mittels eines DOIF auf disabled 0 oder 1 setze. Das funktioniert auch prima. Nur leider schalten die Lampen sich nicht an, wenn ich den RT innerhalb der START- STOPTIME  auf disabled 0 stelle. Die RTs zeigen zwar STATE on und active 1 an - die Lampen bleiben aber aus  :-\
stell doch mal den vollständigen Code ein, ich hatte damit auch experimentiert und habe es nicht hinbekommen den RT zu starten
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

oelidoc

Hallo,
Zitat von: moonsorrox am 20 Dezember 2014, 13:58:34
stell doch mal den vollständigen Code ein, ich hatte damit auch experimentiert und habe es nicht hinbekommen den RT zu starten
mach ich gerne, wenn ich wieder zuhause bin.

Gruß

oelidoc

Dietmar63

So, ich habe jetzt eine Version von RT erstellt, die so hoffe ich genau euren Wünschen entspricht.

Bei ihr ist es möglich während des aktiven Zeitraums des RT beliebig zu enablen/disablen.
Wenn der Disablestatus aufgehoben wird, startet der Timer wieder - vollautomatisch. Dabei werden auch Ereignisse von Presence oder so berücksichtigt. 

Ich werde die Änderung noch ein wenig testen und dann einchecken.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Benni

Hallo Dietmar,

sehe ich das richtig, dass damit auch die explizite Verwendung von RandomTimer_Wakeup() überflüssig geworden ist?

Gruß Benni.

oelidoc

Hallo,

hier wie gewünscht meine Schnipsel:

ich habe einen Dummy "Anwesenheit", der über lan-ping per Presence Modul auf die Anwesenheit zweier Smartphones prüft.

Dann folgendes DOIF:
define licht_abwesenheit DOIF ([Anwesenheit] eq "Anwesend") (attr zufall_.* disable 1) DOELSEIF ([Anwesenheit] eq "Abwesend" and !$we) (attr zufall_.* disable 0) DOELSEIF ([Anwesenheit] eq "Abwesend") (attr zufall_.*_abends disable 0)
attr licht_abwesenheit disable 0


Und hier ein RT als Beispiel:
define zufall_wohnzimmer_abends RandomTimer *{sunset_abs(-1400)} Dimmer_Wohnzimmer *{sunset_abs(+3720,"21:32","23:32")} 700
attr zufall_wohnzimmer_abends disable 0
attr zufall_wohnzimmer_abends onCmd set Dimmer_Wohnzimmer pct 60
attr zufall_wohnzimmer_abends room Wohnzimmer
attr zufall_wohnzimmer_abends switchmode 900/100


Der RT sollte halt beim Verlassen der Wohnung innerhalb der start-stoptime die Lampen bis 2Minuten nach Runterfahren der Jalousien an (und aus) schalten, um Anwesenheit zu simulieren.

Gruß

oelidoc