RandomTimer - neues Modul

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

Vorheriges Thema - Nächstes Thema

OliS.

Zitat von: Dietmar63 am 14 Juli 2015, 14:41:10
es hat definitiv eine Änderung gegeben. Und zwar dann wenn während der aktiven Simulation die disable-Bedingung gesetzt wird, wird nicht geschaltet.
Hintergrund: Ich lasse die Simulation immer in der Dämmerung laufen. Wenn ich dann nach Hause komme, schalte ich den timer über  disable  1 ab. Dann soll das Licht so bleiben wie es ist (in der Regel an).

Schade! Na ja, ich habe jetzt erst mal eine alte Version des Moduls eingespielt und mit "exclude_from_update" geschützt. Ich fand die alte Funktionalität ganz gut. Ich möchte nämlich auch tagsüber nicht, dass bei mir eingebrochen wird...  ;)

Ich denke langfristig werde ich die Lampen bei Bedarf und in Abhängigkeit von der Dämmerung per notify ausschalten, wenn ich nach Hause komme.

Danke für die Aufklärung.

Oli
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

Dietmar63

Zitat von: FunkOdyssey am 14 Juli 2015, 13:23:52
Ja, ich hab es gesehen. Ich hatte mir gestern dein Commit angeschaut.


Und noch Fehlerfrei?

Man könnte dem Problem weiternachgehen, wenn man eine kleine Funktion in 99_myUtils.pm mit dem Fehlerhaften Codestück "eval 0" baut, und es regelmäßig per at aufruft. Vielleicht lässt sich daraus ein Muster ableiten.

Das müsstest du dann bei dir machen, weil nur du das Problem hast.
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

#272
Zitat von: OliS. am 14 Juli 2015, 15:23:52
Schade! Na ja, ich habe jetzt erst mal eine alte Version des Moduls eingespielt und mit "exclude_from_update" geschützt. Ich fand die alte Funktionalität ganz gut. Ich möchte nämlich auch tagsüber nicht, dass bei mir eingebrochen wird...  ;)

Ich denke langfristig werde ich die Lampen bei Bedarf und in Abhängigkeit von der Dämmerung per notify ausschalten, wenn ich nach Hause komme.

Danke für die Aufklärung.

Oli

Ich denke da mal weiter drüber nach, ob bzw. wie man das noch besser lösen 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

FunkOdyssey

Zitat von: Dietmar63 am 14 Juli 2015, 19:36:44

Und noch Fehlerfrei?

Man könnte dem Problem weiternachgehen, wenn man eine kleine Funktion in 99_myUtils.pm mit dem Fehlerhaften Codestück "eval 0" baut, und es regelmäßig per at aufruft. Vielleicht lässt sich daraus ein Muster ableiten.

Das müsstest du dann bei dir machen, weil nur du das Problem hast.

Ich kann keine Fehler feststellen. 

OliS.

Zitat von: Dietmar63 am 14 Juli 2015, 19:43:08
Ich denke da mal weiter drüber nach, ob bzw. wie man das noch besser lösen kann.

Das ist nett. Aber nur meinetwegen musst Du das nicht tun. Anscheinend bin ich ja der Einzige, der das Modul auf diese Weise nutzt. Ich kann mir auch damit helfen, die Lampen bei Anwesenheit per notify auszuschalten.

Oli
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

willybauss

Zitat von: Dietmar63 am 12 Januar 2014, 19:34:39
ich baue folgende  Funktion ein:

sub RandomTimer_Wakeup() {  # {RandomTimer_Wakeup()}

  foreach my $hc ( sort keys %{$modules{RandomTimer}{defptr}} ) {
     my $hash = $modules{RandomTimer}{defptr}{$hc};

     RandomTimer_ExecRepeater($hash);
     Log3 undef, 3, "RandomTimer_Wakeup() for $hash->{NAME} done!";
  }
  Log3 undef,  3, "RandomTimer_Wakeup() done!";
}

Dann musst du nur noch mit einem notify die dummy abhorchen und diese Fuktion aufrufen. Etwa so:
define RTautomatOn            notify dummy:.*                          {RandomTimer_Wakeup()}

Erst mal: tolles Modul, DANKE !!!

Ich habe alles hin bekommen wie oben beschrieben. Aktivieren/Deaktivieren geht perfekt, auch während der Laufzeit des RandomTimers. Aber im UI bleibt die Anzeige unverändert, egal ob ich isVerreist auf "ja" oder "nein" stelle. Es steht immer statisch "disabled" oder das Glühbirnensymbol. Nach einem Refresh im Browser wird der Status richtig angezeigt. Mit update-on-change-reading .* habe ich es schon erfolglos versucht. Wie bekomme ich ein automatisches Update des UI beim Verändern des Status?
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

FunkOdyssey

@Dietmar: Nichts wichtiges. Mir ist nur eine falsche Überschrift in der commandref aufgefallen. Vielleicht könntest du bei einer zukünftigen Änderung die zweite Überschrift "disableCond" in "keepDeviceAlive" ändern. Danke.

ZitatdisableCond
The default behavior of a RandomTimer is, that it works. To set the Randomtimer out of work, you can specify in the disableCond attibute a condition in perlcode that must evaluate to true. The Condition must be put into round brackets. The best way is to define a function in 99_utils.
Examples
        attr   ZufallsTimerZ         disableCond      (!isVerreist())
        attr   ZufallsTimerZ         disableCond      (Value("presenceDummy") ne "present"))       
       
disableCond
The default behavior of a RandomTimer is, that it shuts down the device after stoptime is reached. The keepDeviceAlive attribute changes the behavior. If set, the device status is not changed when the stoptime is reached.
Example
        attr   ZufallsTimerZ         keepDeviceAlive

Dietmar63

Zitat von: FunkOdyssey am 23 September 2015, 10:48:10
@Dietmar: Nichts wichtiges. Mir ist nur eine falsche Überschrift in der commandref aufgefallen. Vielleicht könntest du bei einer zukünftigen Änderung die zweite Überschrift "disableCond" in "keepDeviceAlive" ändern. Danke.

geändert - checke ich demnächst ein
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

FunkOdyssey

#278
Ich habe direkt noch einmal ne Frage.
Ich schalte je nach Anwesenheit der Personen (RESIDENTS-Modul) meine RandomTimer-Definition über das "disable"-Attribut ein und aus. Also nicht über das Attribut "disableCond".

Mir ist nun aufgefallen, dass das Datum in STARTTIME und STOPTIME nicht aktualisiert wird. Die dahinter liegenden Lampen sind heute (25.09.2015) noch kein einziges mal eingeschaltet worden. Ich vermute, weil in STARTTIME & Co. noch der 24.09.2015 steht.

Mache ich irgendetwas falsch? 

Internals:
   COMMAND    on
   DEF        08:00 struct_lampen 23:00 1000
   DEVICE     struct_lampen
   NAME       rand_lampen
   NR         485
   REL
   REP
   SIGMAOFF   800
   SIGMAON    200
   STARTTIME  24.09.2015  08:00:00
   STATE      off
   STOPTIME   24.09.2015  23:00:00
   SWITCHMODE 800/200
   S_REL
   S_REP
   TIMESPEC_START 08:00
   TIMESPEC_STOP 23:00
   TIMETOSWITCH 1000
   TYPE       RandomTimer
   active     0
   startTime  1443074400
   stopTime   1443128400
   Timer:
     rand_lampen_exec:
       HASH       rand_lampen
       MODIFIER   Exec
       NAME       rand_lampen_Exec
     rand_lampen_settimer:
       HASH       rand_lampen
       MODIFIER   SetTimer
       NAME       rand_lampen_SetTimer
Attributes:
   alias      Zufallsautomatik Tischlampen
   disable    0
   group      Innenbeleuchtung
   icon       light_toggle
   room       Programmierung
   sortby     80
   switchmode 800/200





Am Rande: Könnte das Modul evtl. auch ein wenig mehr loggen? Das FileLog ist bei mir vollständig leer und ich muss mir immer die Logs der Geräte anschauen. Bedankt.
Ich glaube gerade im Quellcode erkannt zu haben, dass ich noch das Verbose-Level erhöhen muss. Das probieren ich erst einmal aus. Sorry.

FunkOdyssey

Keiner ne Idee wegen der Nichtaktualisierung des Datums?

Dietmar63

was steht denn jetzt in STARTTIME und STOPTIME ?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

FunkOdyssey

Das Datum des letzten FHEM-Neustarts.
Und hätte ich FHEM nicht neu gestartet, so würde dort immer noch der 24.09. stehen.

Ehrlich gesagt habe ich meine RandomTimer-Defines mittlerweile gelöscht, da ich dringend eine zuverlässigere Lösung benötigte. Aber ich kann es gerne wieder ausprobieren.

Dietmar63

#282
Sende mir bitte die Definition. Bitte auch die Version des Moduls und was du damit machen willst.
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

#283
Ich glaube, ich habe deinen Fehler gefunden.

Meine Definition sieht so aus:
*{sunset_abs_rand(40)} StehlampeTisch +{zufallsTimerAbschaltzeit()} 480
das * vor dem timespec ist wichtig für eine wiederholte Ausführung(wie at)

Im Übrigen kann es auch immer an der Anwesenheits-/Abwesenheitserkennung liegen, wenn etwas nicht funktionert. Ich mag so etwas(IP Abfragen auf Handys ...) überhaupt nicht.

Also läuft zuverlässig, wenn man es richtig macht.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

FunkOdyssey

Oops. Das klingt logisch. Das hatte ich auch ursprünglich. Nur wusste ich nie wieso.
Danke für deine Hilfe.