Autor Thema: RandomTimer - neues Modul  (Gelesen 113918 mal)

Offline MarcoK

  • New Member
  • *
  • Beiträge: 4
Antw:RandomTimer - neues Modul
« Antwort #495 am: 19 Juli 2018, 16:53:46 »
So, nun nochmal ein genauerer Auszug aus dem Logfile:

2018.07.19 00:47:01 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:01 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:01 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:01 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:20 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:20 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:20 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:20 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:20 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:45 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:47:45 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:55:18 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:55:18 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:55:18 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 00:55:18 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:04:10 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:04:10 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:04:10 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:04:10 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:10:06 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:10:06 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:10:06 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:10:06 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:10:06 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:16:37 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:16:37 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:28:38 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:28:38 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:28:38 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:28:38 1: isAbsent - disableCondition for RandomTimer: 0
2018.07.19 01:28:38 1: isAbsent - disableCondition for RandomTimer: 0

Ich habe insgesamt 4 RandomTimer (für 4 Räume) analog wie z.B. hier
*{h2hms_fmt(hms2h(sunset_abs())-(rand()*2/3)-1/3)} Livingroom_Lights *{h2hms_fmt(hms2h(sunset_abs(4*3600))-(rand()*2/3)-1/3)} 1500
definiert. Die TimetoSwitch ist jeweils auf eine unterschiedliche Länge gesetzt. Mittlerweile ist über das Attribut verbose 1 die Menge an Logmeldungen etwas reduziert. Die Meldungen wie im obigen Abschnitt zu sehen treten nun "nur noch" im Zeitraum zwischen "Beginn" und "Ende" der RandomTimer auf, jeweils in dem ungefähren Zeitintervall von einigen Minuten. Zuvor wurden die Meldungen alle 20 Sekunden generiert und ins Logfile geschrieben.

Besten Dank für die Unterstützung,
Marco

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2540
  • RTFM
    • commandref
Antw:RandomTimer - neues Modul
« Antwort #496 am: 19 Juli 2018, 17:11:13 »
Hi Marco,

ich habe das Modul ja nur geerbt, deswegen brauchte ich die ganze Zeile.
Im Code von Randomtimer kann ich keine Zeile ausfindig machen die so einen Logeintrag erzeugt.

Ist die Version aktuell? Nutzt du noch andere Module die sowas erzeugen könnten (z.B. Module die den Status von Devices überwachen)?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal am 12. Januar 2019.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: adb, FluxLED

Offline MarcoK

  • New Member
  • *
  • Beiträge: 4
Antw:RandomTimer - neues Modul
« Antwort #497 am: 19 Juli 2018, 20:10:45 »
Ah ja, okay, danke für den Hinweis! Schande über mich, aber die Meldungen stammen aus einer Funktion in meiner myUtils, oh man.

Danke für Deinen Support und insgesamt auch für Deine ganze Arbeit mit den Modulen :)


Grüße
Marco

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2540
  • RTFM
    • commandref
Antw:RandomTimer - neues Modul
« Antwort #498 am: 19 Juli 2018, 21:19:06 »
Ah ja, okay, danke für den Hinweis! Schande über mich, aber die Meldungen stammen aus einer Funktion in meiner myUtils, oh man.
Dann haben wir die Fehlerquelle ja schnell gefunden ;)

Danke für Deinen Support und insgesamt auch für Deine ganze Arbeit mit den Modulen :)
Vielen Dank :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal am 12. Januar 2019.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: adb, FluxLED

Offline willib

  • Full Member
  • ***
  • Beiträge: 129
Antw:RandomTimer - neues Modul
« Antwort #499 am: 23 November 2018, 11:28:36 »
Ich habe etwas den Faden verloren. Ich nutze das Modul zur Anwesenheitssimulation, wie viele Andere auch. Wenn ich zuhause bin wird die disableCond true. Das Funktioniert auch soweit. Wenn ich aber nach Hause komme und RandomTimer schon läuft schaltet er mir irgendwann das Licht aus. keepDeviceAlive wäre hier richtig. Wenn ich aber abwesend bin sollen die Lichter natürlich am Ende ausgehen.
Gibt es ein Attribut mit dem ich das Verhalten bei Abbruch vor timespec_stop steuern kann?
Raspberry P1 3B, Homematic, Hue, Intertechno, Jeelink, Harmony Hub, VU+ Uno 4K
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Bartimaus

  • Hero Member
  • *****
  • Beiträge: 1022
Antw:RandomTimer - neues Modul
« Antwort #500 am: 26 November 2018, 08:50:13 »
Ich habe etwas den Faden verloren. Ich nutze das Modul zur Anwesenheitssimulation, wie viele Andere auch. Wenn ich zuhause bin wird die disableCond true. Das Funktioniert auch soweit. Wenn ich aber nach Hause komme und RandomTimer schon läuft schaltet er mir irgendwann das Licht aus. keepDeviceAlive wäre hier richtig. Wenn ich aber abwesend bin sollen die Lichter natürlich am Ende ausgehen.
Gibt es ein Attribut mit dem ich das Verhalten bei Abbruch vor timespec_stop steuern kann?

Moin,

das kann ich bestätigen, und wollte deswegen auch schon fragen.
Es dauert gewühlt "Stunden" bis der RandonTimer erkennt, das die "disableCond = true" ist. Reagiert der RT nicht auf "Events" ?
Weil ich sehe, das der RT immer noch aktiv ist.
LG
B.


BananaPiPro - Bananian16.04Jessie, RootFS@SSD, FHEM 5.8, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs

Offline FunkOdyssey

  • Hero Member
  • *****
  • Beiträge: 1415
Antw:RandomTimer - neues Modul
« Antwort #501 am: 26 November 2018, 09:06:41 »
Soweit ich das in Erinnerung habe und das war auch der Grund wieso ich mich nach einer anderen Lösung (DOIFs) umgesehen habe, läuft der Timer im Hintergrund (einmalig) weiter. Betritt man also das Haus, so weiß es das Modul auch. Aber der bereits gestartete Timer wird zu Ende gelaufen. So kann es sein, dass erst nach 15-30min eine Ein-oder Ausschaltung durchgeführt wird. Und das obwohl man die Leuchte gerade wieder so eingestellt hat, wie man es denn gerne hätte.

AFAIK konnte man das ziemlich leicht fixen - hatte aber auch irgendwelche Nachteile: siehe https://forum.fhem.de/index.php/topic,14010.msg522558.html#msg522558



Nachtrag: "disableCond" und mein Vorgehen mit "disable" verhalten sich hier identisch.
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/98_RandomTimer.pm#L308
« Letzte Änderung: 26 November 2018, 09:08:52 von FunkOdyssey »

Offline willib

  • Full Member
  • ***
  • Beiträge: 129
Antw:RandomTimer - neues Modul
« Antwort #502 am: 26 November 2018, 13:39:48 »
Danke für den Hinweis auf deine Alternative per DOIF. Gibt es da eventuell einen aktuellen codeschnipsel?
Wird denn das RT Modul noch weiter entwickelt?
Wenn ja, darf ich dann als Feature request vorschlagen, dass eine Unterscheidung zwischen Ende des RT Zeitintervalls und Abbruch des RT eingeführt wird? Sodass man per Attribut einstellen kann was bei Abbruch des Timers passiert. Oder zumindest dass ein Abbruch keine weiteren Schaltvorgänge auslöst.

Raspberry P1 3B, Homematic, Hue, Intertechno, Jeelink, Harmony Hub, VU+ Uno 4K
Zustimmung Zustimmung x 1 Liste anzeigen

Offline FunkOdyssey

  • Hero Member
  • *****
  • Beiträge: 1415
Antw:RandomTimer - neues Modul
« Antwort #503 am: 26 November 2018, 14:52:03 »
Der ursprüngliche Entwickler ist verstorben.
igami betreut das Modul nun als Maintainer.
Mal schauen, was er sagt. Mir wäre eine ordentliche Lösung im RT-Modul auch lieber.

Offline swenp

  • New Member
  • *
  • Beiträge: 3
Antw:RandomTimer - neues Modul
« Antwort #504 am: 13 Dezember 2018, 21:12:03 »
Danke für den Hinweis auf deine Alternative per DOIF. Gibt es da eventuell einen aktuellen codeschnipsel?
Wird denn das RT Modul noch weiter entwickelt?
Wenn ja, darf ich dann als Feature request vorschlagen, dass eine Unterscheidung zwischen Ende des RT Zeitintervalls und Abbruch des RT eingeführt wird? Sodass man per Attribut einstellen kann was bei Abbruch des Timers passiert. Oder zumindest dass ein Abbruch keine weiteren Schaltvorgänge auslöst.

Hätte gerne auch eine Fallunterscheidung zwischen Timer-Ablauf und Heimkehr bei aktivem Timer, habe daher mal selbst Hand angelegt. Sind meine ersten Schritte in Perl und fhem, bitte nicht schlagen wenn ich gegen irgendeine Etikette verstoße...

Im aktuellen Modul wird in beiden Fällen die gleiche Funktion durchlaufen, die abhängig vom Attribut "keepDeviceAlive" den Endzustand schaltet:
sub RandomTimer_down($) {
   my ($hash) = @_;

   $hash->{COMMAND} = AttrVal($hash->{NAME}, "keepDeviceAlive", 0) ? "on" : "off";
   RandomTimer_device_switch($hash);
}

Ich habe daher ein neues Attribut und eine neue Funktion hinzugefügt:
sub RandomTimer_disableDown($) {
   my ($hash) = @_;
   my $disableState = AttrVal($hash->{NAME}, "disableState", 0);
   
   if ($disableState != -1) {
Log3 $hash, 4, "[".$hash->{NAME}."]"." setting requested disableState on $hash->{DEVICE}: ";
    $hash->{COMMAND} = AttrVal($hash->{NAME}, "disableState", 0) ? "on" : "off";
RandomTimer_device_switch($hash);
   } else {
Log3 $hash, 4, "[".$hash->{NAME}."]"." no action requested on $hash->{DEVICE}: ";
   }
}
Das Attribut heißt "disableState". Die Funktion wird nur in dem Fall durchlaufen, wenn bei aktivem Timer die DisableCondition eintritt. Ansonsten wird wie gehabt die alte Funktion ausgeführt, die das "keepDeviceActive" Attribut auswertet. So können beide Fälle unabhängig konfiguriert werden.

Logik ist wie derzeit bei "keepDeviceActive": 0 setzt das Device auf "off", 1 setzt das Device auf "on". Neu ist "-1", damit wird am Ende keine Aktion durchgeführt und das Device bleibt wie es gerade ist.

Funktioniert bei mir wie beschrieben und erfüllt meine Anforderung, vielleicht mag es ja noch jemand testen.

« Letzte Änderung: 13 Dezember 2018, 21:55:39 von swenp »

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2540
  • RTFM
    • commandref
Antw:RandomTimer - neues Modul
« Antwort #505 am: 14 Dezember 2018, 06:10:35 »
Huch, hier habe ich wohl ein paar Beiträge nicht mitbekommene, schaue ich mir nachher an.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal am 12. Januar 2019.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: adb, FluxLED

Offline willib

  • Full Member
  • ***
  • Beiträge: 129
Antw:RandomTimer - neues Modul
« Antwort #506 am: 14 Dezember 2018, 08:45:44 »
Super! Das hat mir immer gefehlt. Wenn es keine Probleme damit gibt würde ich mich sehr freuen wenn das so eingecheckt wird. Ich habe es noch nicht getestet.
Raspberry P1 3B, Homematic, Hue, Intertechno, Jeelink, Harmony Hub, VU+ Uno 4K

Offline swenp

  • New Member
  • *
  • Beiträge: 3
Antw:RandomTimer - neues Modul
« Antwort #507 am: 14 Dezember 2018, 09:31:05 »
Mir ist bei der Gelegenheit noch aufgefallen, dass die Doku vom "keepDeviceAlive" Attribut nicht ganz passt.

Zitat
The keepDeviceAlive attribute changes the behavior. If set, the device status is not changed when the stoptime is reached.

Tatsächlich wird aber das Device immer aktiv auf den Zustand gesetzt, der per "keepDeviceAlive" vorgegeben ist wenn Stop-Time erreicht wird.

213 sub RandomTimer_down($) {
214    my ($hash) = @_;
215
216    $hash->{COMMAND} = AttrVal($hash->{NAME}, "keepDeviceAlive", 0) ? "on" : "off";
217    RandomTimer_device_switch($hash);
218 }

Könnte man in der Dokumentation anpassen oder wie bei meinem Vorschlag oben die "-1" neu einführen und entsprechend dokumentieren.

Offline Otto

  • Full Member
  • ***
  • Beiträge: 250
Antw:RandomTimer - neues Modul
« Antwort #508 am: 14 Dezember 2018, 19:08:56 »
Timer schaltet nicht aus, versteht nicht warum

List:
Internals:
   COMMAND    on
   DEF        *{sunset_abs()} Shelly2_OG_FL 22:30:00 300
   DEVICE     Shelly2_OG_FL
   NAME       ZufallsTimerFlur_OG
   NR         1630
   STATE      on
   TYPE       RandomTimer
   READINGS:
     2018-12-14 00:05:30   Startzeit       2018-12-14 16:49:53
     2018-12-14 00:05:30   Stoppzeit       2018-12-14 22:30:00
     2018-12-11 06:41:30   TimeToSwitch    300
     2018-12-14 19:05:35   active          1
     2018-12-14 19:05:35   state           on
   TIMER:
     ZufallsTimerFlur_OG_Exec:
       HASH       ZufallsTimerFlur_OG
       MODIFIER   Exec
       NAME       ZufallsTimerFlur_OG_Exec
     ZufallsTimerFlur_OG_SetTimer:
       HASH       ZufallsTimerFlur_OG
       MODIFIER   SetTimer
       NAME       ZufallsTimerFlur_OG_SetTimer
   helper:
     REL       
     REP        *
     SIGMAWHENOFF 800
     SIGMAWHENON 200
     STARTTIME  14.12.2018  16:49:53
     STOPTIME   14.12.2018  22:30:00
     SWITCHMODE 800/200
     S_REL     
     S_REP     
     TIMESPEC_START *{sunset_abs()}
     TIMESPEC_STOP 22:30:00
     TIMETOSWITCH 300
     active     1
     startTime  1544802593
     stopTime   1544823000
Attributes:
   offCmd     set @ off 0
   onCmd      set @ on 0
   room       10_Licht,60_Timer
   switchmode 800/200
   verbose    5

LOG:
2018.12.14 18:45:25.304 3: [ZufallsTimerFlur_OG] result of function Value(Shelly2_OG_FL) must be 'on' or 'off'
2018.12.14 18:45:25.304 4: [ZufallsTimerFlur_OG] IstZustand:OK sigmaWhen-OK:800 random:872<800=>false
2018.12.14 18:45:25.304 5: [ZufallsTimerFlur_OG] removing Timer: ZufallsTimerFlur_OG_Exec
2018.12.14 18:45:25.305 5: [ZufallsTimerFlur_OG] setting  Timer: ZufallsTimerFlur_OG_Exec 2018-12-14 18:50:22
2018.12.14 18:50:22.310 3: [ZufallsTimerFlur_OG] result of function Value(Shelly2_OG_FL) must be 'on' or 'off'
2018.12.14 18:50:22.310 4: [ZufallsTimerFlur_OG] IstZustand:OK sigmaWhen-OK:800 random:469<800=>true
2018.12.14 18:50:22.310 4: [ZufallsTimerFlur_OG] command: set Shelly2_OG_FL on 0
2018.12.14 18:50:22.312 5: [ZufallsTimerFlur_OG] removing Timer: ZufallsTimerFlur_OG_Exec
2018.12.14 18:50:22.313 5: [ZufallsTimerFlur_OG] setting  Timer: ZufallsTimerFlur_OG_Exec 2018-12-14 18:55:20
2018.12.14 18:55:20.316 3: [ZufallsTimerFlur_OG] result of function Value(Shelly2_OG_FL) must be 'on' or 'off'
2018.12.14 18:55:20.316 4: [ZufallsTimerFlur_OG] IstZustand:OK sigmaWhen-OK:800 random:632<800=>true
2018.12.14 18:55:20.316 4: [ZufallsTimerFlur_OG] command: set Shelly2_OG_FL on 0
2018.12.14 18:55:20.319 5: [ZufallsTimerFlur_OG] removing Timer: ZufallsTimerFlur_OG_Exec
2018.12.14 18:55:20.319 5: [ZufallsTimerFlur_OG] setting  Timer: ZufallsTimerFlur_OG_Exec 2018-12-14 19:00:21
2018.12.14 19:00:21.322 3: [ZufallsTimerFlur_OG] result of function Value(Shelly2_OG_FL) must be 'on' or 'off'
2018.12.14 19:00:21.323 4: [ZufallsTimerFlur_OG] IstZustand:OK sigmaWhen-OK:800 random:367<800=>true
2018.12.14 19:00:21.323 4: [ZufallsTimerFlur_OG] command: set Shelly2_OG_FL on 0
2018.12.14 19:00:21.325 5: [ZufallsTimerFlur_OG] removing Timer: ZufallsTimerFlur_OG_Exec
2018.12.14 19:00:21.325 5: [ZufallsTimerFlur_OG] setting  Timer: ZufallsTimerFlur_OG_Exec 2018-12-14 19:05:10

Was mache ich falsch
Gruss Otto

---------------------------
raspberry pi - homematic

Offline swenp

  • New Member
  • *
  • Beiträge: 3
Antw:RandomTimer - neues Modul
« Antwort #509 am: 14 Dezember 2018, 19:42:23 »
Schau mal in dein Log
2018.12.14 19:00:21.322 3: [ZufallsTimerFlur_OG] result of function Value(Shelly2_OG_FL) must be 'on' or 'off'
Dazu die commandref:
Zitat
Value() must evaluate one of the values "on" or "off". The behavior of devices that do not evaluate one of those values can be corrected by defining a stateFormat:
attr stateFormat EDIPlug_01 {(ReadingsVal("EDIPlug_01","state","nF") =~ m/(ON|on)/i) ? "on" : "off" }
if a devices Value() funktion does not evalute to on or off(like WLAN-Steckdose von Edimax) you get the message:
[EDIPlug] result of function Value(EDIPlug_01) must be 'on' or 'off'

Poste doch mal ein
list Shelly2_OG_FL
« Letzte Änderung: 14 Dezember 2018, 19:49:48 von swenp »

 

decade-submarginal