RandomTimer - neues Modul

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

Vorheriges Thema - Nächstes Thema

Dietmar63

RandomTimer module added - a module to simulate the random functionality of a timer clock like  FS20ZSU.

Bei mir ist alles so definiert:
fhem.cfg

define Verreist               dummy
attr   Verreist               webCmd ja:nein
...
define ZufallsTimerTisch      RandomTimer  *{sunset_abs()} StehlampeTisch  20:30:00 480
attr   ZufallsTimerTisch      disableCond  (!isVerreist())


99_Utils

#
sub isUrlaub         () { return(YesNo("Urlaub"));  }
sub isVerreist       () { return(YesNo("Verreist"));}
sub isUebergangszeit () { return(YesNo("Uebergangszeit"));}
#
#
#
sub YesNo ($) {

  my ($dummy) = @_;
  my $state = ReadingsVal($dummy, "state", "nein");
  if ($state eq "nein") {
    return 0;
  }
  return 1;
}


Mit diesem Modul läßt sich sehr einfach eine Anwesenheitssimulation erstellen.
Ich weiß, es es gibt schon einige Lösungen hier, aber diese ist aus meiner Sicht die Einfachste.
Sie läßt sich ohne shell-scripts betreiben, ist hoffentlich auf für Linux-Laien einzurichten.

Bitte mal probieren und feedback hier einstellen.
Das Modul und eine Dokumentation ist angehängt. Es wird aber auch per update bereitgestellt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Luigi

Ich habs wie oben beschrieben ausprobiert und bekomm folgende Fehlermeldungen:

2013.07.29 15:42:19 1: configfile: Wrong timespec Verreist: either HH:MM:SS or {perlcode}
Please define ZufallsTimerEG_GZ first
Please define ZufallsTimerEG_GZ first
Please define ZufallsTimerEG_GZ first
Please define ZufallsTimerEG_GZ first
Please define ZufallsTimerEG_GZ first

Hier meine Konfiguration:

define Verreist dummy
attr Verreist group Commands
attr Verreist room 99_System
attr Verreist webCmd ja:nein

define ZufallsTimerEG_GZ RandomTimer *{sunset_abs("HORIZON=5")} EG_GZ_Deckenlich
attr ZufallsTimerEG_GZ loglevel 3
attr ZufallsTimerEG_GZ offCmd set @ off
attr ZufallsTimerEG_GZ onCmd set @ pct 50
attr ZufallsTimerEG_GZ room EG_GZ
attr ZufallsTimerEG_GZ disableCond (!isVerreist())

Gruß
Luigi

Dietmar63


define ZufallsTimerTisch RandomTimer *{sunset_abs()}            StehlampeTisch    20:30:00 480
define ZufallsTimerEG_GZ RandomTimer *{sunset_abs("HORIZON=5")} EG_GZ_Deckenlich  xxxxxxxx xxx


Es fehlt aus meiner Sicht der  timespec_stop und der Parameter timeToSwitch.

Die Fehlermeldung Wrong timespec Verreist: either HH:MM:SS or {perlcode} deutet darauf hin, dass die aktuellste Version von RT nicht aktiv ist. Bitte die Datei einspielen und mit reload 98_RandomTimer nachladen.

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

betateilchen

Hallo Dietmar,

in Deinem Modul passt die Doku noch nicht richtig, wird immer wieder beim commandref_join angemeckert.

- am Ende muss es "end html" anstatt "end html_DE" heissen
- das letzte /ul ist zuviel
- nach dem cut kann ein Zeilenumbruch nicht schaden :)

Viele Grüße
Udo



Index: 98_RandomTimer.pm
===================================================================
--- 98_RandomTimer.pm (Revision 3542)
+++ 98_RandomTimer.pm (Arbeitskopie)
@@ -478,7 +478,6 @@
         </pre>
     </li>
   </ul>
-</ul>
 
-=end html_DE
-=cut
\ No newline at end of file
+=end html
+=cut
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

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

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

betateilchen

jepp, die Fehlermeldung ist verschwunden :)

Danke & Grüße
Udo
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Fhem_Neuling

Hallo Dietmar,

bei Einschaltzeiten zwischen 00 und 5:59 Uhr funktioniert das Modul bei mir nicht.
Die Anfangszeit wird dann immer auf 00:05:00 gesetzt.
Mache ich was falsch oder ist da noch ein Fehler drin?

Gruß

Dietmar63

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

Fhem_Neuling

Hallo Dietmar,

das geht ja fix.
Die Definition ist:

define ZufallsTimer1 RandomTimer *06:30:00 wz_sd_re Verreist 06:30 720 800/100

Ich habe auch noch einen Screenshot angehangen, dort kannst Du sehen das State auf 00:05:00 gesetzt wird.
Bei späteren Zeiten wird die richtige Zeit dort eingetraen.

Herzlichen Dank
Dieter

Dietmar63

Deine Definition und vielleicht auch die Version des Moduls RT stimmen möglicherweise nicht:

Bitte RT von hier verwenden und so definieren wie hier beschrieben.
Link

Die Definition enthält neuerdings kein dummy mehr.
Man muss, wenn man den RT über dummy an-/abschalten will, eine disableCondition per attr setzen.
attr   ZufallsTimerTisch      disableCond  (!isVerreist())

Hier wird der Wert der Funktion isVerreist() ausgewertet.
In isVerreist() kannst du dann alles Mögliche abfragen. Sie muss nur true/false zurückliefern.

Für die Definition siehe obigen Link. Neu ist, dass auch die stoptime im Format HH:MM:SS angegeben werden muss. Diese ist eine Folge des Wunsches von ??? auch dort Perlfunktionen angeben zu wollen.  

Die Anzeige 00:05:00 im state kommt dadurch zustande, dass alle RT um 5 Minuten nach Mitternacht eine kleine Neuberechnung der Startzeit für den soeben angebrochenen Tag durchführen, und erst dann den richtigen Schaltzeitpunkt anzeigen - habe ich deshalb gemacht, weil Funktionen wie sunrise/sunset sonst den Wert vom Vortag verwenden würden.

Ich denke darüber nach, die Anzeige 00:05:00 verschwinden zu lassen - irritiert zu sehr.

Prüf mal nach, ob du mit den Hinweisen weiterkommst!
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Fhem_Neuling

Herzlichen Dank!
Ich hatte noch eine ältere Version im Einsatz
und werden jetzt die neue mal testen.


wing350

Zitat von: Dietmar63 schrieb am Sa, 03 August 2013 15:43Neu ist, dass auch die stoptime im Format HH:MM:SS angegeben werden muss. Diese ist eine Folge des Wunsches von ??? auch dort Perlfunktionen angeben zu wollen.  


Hallo Dietmar.
vielen Dank für die Arbeit. Ich war ja der mit den 3 Fragezeichen und habe das neue Modul eingearbeitet. Nun muss es erst einmal morgen früh zeigen, was es hergibt. Ich melde mich wieder.
Gruß
Reimer
FHEM auf Ubuntu VM/QNAP, FHEM-Native, CUL868, RFTRX433 und Jeelink auf RPi über ser2net an VM angebunden, PCA301/LaCrosse-Gateway (WLAN), FHTs, FS20-Aktoren, FBDECT, div. HM- und HMIP-Komponenten, Raspberrymatic VM auf QNAP, Signalduino für Somfy, optolink-WLAN für Viessmann, div. Shelly

wing350

Es scheint alles reibungslos zu klappen:
Perlfunktion als Stoppzeit und Aktivierung/Deaktivierung über die Variable in 99_Utils.pm.

Eine Merkwürdigkeit ist mir aufgefallen:
Bei aktivem RandomTimer wurde bei der Stoppzeit nicht das Datum in der Form YYYY:MM:DD, sondern der Tag des Jahres angezeigt: "2013:215 .....  "

Gruß
Reimer
FHEM auf Ubuntu VM/QNAP, FHEM-Native, CUL868, RFTRX433 und Jeelink auf RPi über ser2net an VM angebunden, PCA301/LaCrosse-Gateway (WLAN), FHTs, FS20-Aktoren, FBDECT, div. HM- und HMIP-Komponenten, Raspberrymatic VM auf QNAP, Signalduino für Somfy, optolink-WLAN für Viessmann, div. Shelly

Dietmar63

ZitatEine Merkwürdigkeit ist mir aufgefallen:
 Bei aktivem RandomTimer wurde bei der Stoppzeit nicht das Datum in der Form YYYY:MM:DD, sondern der Tag des Jahres angezeigt: "2013:215 ..... "

Das ist Absicht. Als ich die Einzelteile des Moduls erstellt habe, mußte ich mir eine Darstellung der Abschaltzeit einfallen lassen, die es mir ermöglichte einfach den Wechsel des Tages während der Aktivzeit einzubeziehen.

Die Darstellung mit dem Tag im lfd. Jahr war am Einfachsten.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm