Anwesenheitssimulation - zufällig schalten

Begonnen von stobor, 18 März 2013, 18:06:46

Vorheriges Thema - Nächstes Thema

justme1968

hallo ditmar,

mir gefällt das modul sehr gut. besser als die anderen die ich bis jetzt überflogen habe. ich finde es einfacher und mit den neuen änderungen so flexibel das doch viel mehr damit tun kann.

wegen holliday: ja. es ging mir um satzart 4. ich verwende es zur zeit so:define RolladenSchlafzimmerHoch at *{sunrise("REAL",0,"08:00","10:00")} {fhem("set Rolladen up") if( Value("bw") =~ /Urlaub/)} bw ist mein holliday device.

eine möglichkeit wäre natürlich an der stelle wo du das dummy device angibst auch einen perl ausdruck zu erlauben und nur zu starten wenn ein true zurück kommt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dietmar63

@stobor

define ZufallsTimerFlurlicht2 RandomTimer *05:30 Flurlicht Verreist 07:45 999 800/100

Ist das wirklich deine Absicht, dass das Flurlicht morgens ab 5:30 zufällig an/ausschaltet?
Wären in diesem Fall nicht 2 at besser?

ZitatWenn das Modul jetzt gerade von Dir bearbeitet wird, könnte man dann auch die maximal mögliche Einschaltzeit verlängern (von derzeit 999sec.)?
In der neuen Version geändert auf 9999.

Die neuen Möglichkeiten kannst Du dann sinnvoll nutzen, wenn du eines der neu hinzugefügten Attribute onCmd, offCmd setzt. Bisher ließen sich Geräte nur an/abschalten - war fest verdrahtet.

Sinnvoll könnte folgendes sein, um einen Dimmer zu schalten:

attr ZufallsTimerFlurlicht2          onCmd   set @ dim50%
attr ZufallsTimerFlurlicht2          offCmd  set @ off


Andre wollte ganze Gerätegruppen (scenes) schalten. Die benötigen ein anderes Komando als on/off. Möglich sind so auch structures - beliebige Geräte halt.

Gebaut habe ich das Gerät RandomTimer als Ersatz eines FS20ZE Funktimers, der Anwesenheit simuliert, indem er im Abstand von n sekunden an/aus etwas schaltet. Natürlich kann man auch Zeitschlaltuhren verwenden. Leider habe ich am Anfang es Urlaubs immer das Problem sie zu finden und die Bedienungsanleitungen!! zu suchen. Nie kann ich mich dann darauf verlassen, dass sie schalten. Mit dieser Lösung kann ich sie aus der Ferne steuern.

Ich habe viele FS20st, die jetzt alle gleichzeitig Anwesenheit simulieren können - und ich muss sie nicht neu programmieren.
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

@Andre:

Zitateine möglichkeit wäre natürlich an der stelle wo du das dummy device angibst auch einen perl ausdruck zu erlauben und nur zu starten wenn ein true zurück kommt.

Ein Perl Ausdruck wäre mir die sympatischte Lösung:
Wenn dummy dann dummy-ja/nein Logik
Wenn Perl Ausdruck, dann true/false Logik des Perl-Ausdrucks.


Dann könntest Du darin dann Logiken auf Basis von holiday verwenden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ulbr2000

Hallo Dietmar,

meine Installation funktioniert nicht mit dem Zufallstimer.

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

define ZufallsTimerOG_WZ RandomTimer *{sunset_abs("HORIZON=3")} HM_Switch_1 Verreist 21:00 600 800/100
attr ZufallsTimerOG_WZ loglevel 3
attr ZufallsTimerOG_WZ room OG_WZ

define ZufallsTimerEG_WZ RandomTimer *{sunset_abs("HORIZON=3")} HM_Switch_2 Verreist 22:00 600 800/100
attr ZufallsTimerEG_WZ loglevel 3
attr ZufallsTimerEG_WZ room EG_WZ


Problem:
fhem stürzt nachvollziehbar ab und zwar beim Ausschalten des ersten Schalters gegen 21:00, Hier die betreffenden Logeintrage:

beim ersten Einschalt-Kommando wird folgendes geloggt:
2013.04.20 19:32:07 3: nextTimer 19:32:07 now: 19.32.07
2013.04.20 19:32:07 3: ZufallsTimerEG_WZtimeToExec------------>1366479132
2013.04.20 19:32:07 3: nextTimer 19:32:07 now: 19.32.07
2013.04.20 19:32:07 3: ZufallsTimerOG_WZtimeToExec------------>1366479132
2013.04.20 19:32:12 3: state--Verreist----------->ja
2013.04.20 19:32:12 3: off 800 446
2013.04.20 19:32:12 2: CUL_HM set HM_Switch_1 on rxt:1
2013.04.20 19:32:12 3: state--Verreist----------->ja
2013.04.20 19:32:12 3: off 800 341
2013.04.20 19:32:12 2: CUL_HM set HM_Switch_2 on rxt:1


Ein CUL-HM Kommando wird verwendet um einen Homematic Switch einzuschalten.

Die nächsten Logzeilen sehen aber dann so aus:
2013.04.20 19:42:08 3: state--Verreist----------->ja
2013.04.20 19:42:08 3: on 100 450
2013.04.20 19:42:08 3: FS20 set HM_Switch_1 on
2013.04.20 19:42:29 3: state--Verreist----------->ja
2013.04.20 19:42:29 3: on 100 675
2013.04.20 19:42:29 3: FS20 set HM_Switch_2 on

Hier wird auf einmal ein FS20 Kommando ausgeführt?
(ich habe aber keine FS20 Komponenten)

Letzter Logeintrag vor fhem-Absturz zeigt dann aber wieder ein CUL-HM Kommando:
2013.04.20 21:01:31 3: state--Verreist----------->ja
2013.04.20 21:01:31 3: ZufallsTimerOG_WZ/HM_Switch_1 going down ...
2013.04.20 21:01:31 2: CUL_HM set HM_Switch_1 off rxt:1
2013.04.20 21:01:31 3: nextTimer 19:32:07 now: 21.01.31


Danach ist fhem weg.

Irgendeine Idee, was hier falsch läuft?

Danke
Ulrich

Dietmar63

Das dürfte daran liegen, dass ich nur fs20 habe und den Unterschied zu Hm nicht im Detail kenne.

Eigentlich wird dem Device immer nur ein
Set blablabla on/off gesendet.

Warum das bei Hm diese Problem verursacht, sehe ich mir morgen an.
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

kleine zusätzliche Anmerkung:

es sieht für mich so aus als wenn FHEM irgendwie bei dir "vergißt", dass die Geräte HM_Switch_1 bzw. HM_Switch_2 vom typ HM sind und fhem zwischendurch den "Handler" für fs20  das Kommando schicken läßt. Wenn dem so ist, müßtest du auch durch normales an- ausschalten irgendwie Probleme haben.

RT sendet immer nur Kommandos der Art

set HM_Switch_1 on
set HM_Switch_1 on


Der Typ des Geräts wird in RT nicht berücksichtigt.
Fhem selbst "weiß" (in Tabellen), von welchem Typ ein Gerät ist und dispached das Kommando an den richtigen Handler.
Bei mit ist es immer FS20. Bei dir sollte es immer HM sein.

vielleicht ist deine Gesamtinstallation irgendwie durcheinandergeraten.
Hast du das System neu aufgesetzt?
Hast du ein update durchgeführt und es ist irgendwie nicht korrekt durchgelaufen?
Hast du Fehlermeldungen, die dir sonst noch aufgefallen sind?


Starte fhem mal in einer telnet-Sitzung!
Lass dann einen RT mal unter "Beobachtung" von Anfang bis Ende laufen.
In der telnet-Sitzung bekommst du vielleicht eine Fehlermeldung, die auf die Ursache schliessen läßt: Laufzeitfehler aus perl landen nur in der Ausgabe der telnetsitzung.

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

Dietmar63

noch ein Nachtrag:

die Meldung:
2013.04.20 19:42:08 3: FS20 set HM_Switch_1 on


kannst du ignorieren. Bei "FS20 ..."  handelt es sich um eine Textkonstante. Der Befehl wird nicht ausgeführt, nur der Text wird ins log geschrieben. Wenn du das log genau untersucht, erkennst du dass das Gerät schon on war - deshalb wurde nicht wirklich ein Schaltbefehl ausgeführt.

Ich glaube du hast eine ältere Version im Einsatz:
hast du diese geladen?
2013.04.2019:42:083:FS20setHM_Switch_1on

vielleicht klappt es damit ja schon.

Das Protokoll müßte so aussehen. FS20 ... müßte in deinem Fall durch CUL_HM ... ersetzt sein:

2013.04.21 18:49:04 3: state--Vereist----------->ja
2013.04.21 18:48:33 3: on 100 143
2013.04.21 18:48:33 3: state--Vereist----------->ja
2013.04.21 18:48:04 3: on 100 656
2013.04.21 18:48:04 3: state--Vereist----------->ja
2013.04.21 18:47:35 3: FS20 set Zirkulation on
2013.04.21 18:47:35 3: command------------>set Zirkulation on
2013.04.21 18:47:35 3: off 800 35
2013.04.21 18:47:35 3: state--Vereist----------->ja
2013.04.21 18:47:06 3: off 800 836
2013.04.21 18:47:06 3: state--Vereist----------->ja
2013.04.21 18:46:36 3: off 800 864
2013.04.21 18:46:36 3: state--Vereist----------->ja
2013.04.21 18:46:06 3: FS20 set Zirkulation off
2013.04.21 18:46:06 3: command------------>set Zirkulation off
2013.04.21 18:46:06 3: on 100 100
2013.04.21 18:46:06 3: state--Vereist----------->ja
2013.04.21 18:45:37 3: on 100 890
2013.04.21 18:45:37 3: state--Vereist----------->ja
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ulbr2000

Hallo Dietmar,

danke erstmal für deinen Check.

hier meine Antworten:
1.) Konfiguration meiner Switches:

define HM_Switch_1 CUL_HM xxxxxx
attr HM_Switch_1 .devInfo 010100
attr HM_Switch_1 expert 2_full
attr HM_Switch_1 firmware 1.9
attr HM_Switch_1 model unknown
attr HM_Switch_1 peerIDs
attr HM_Switch_1 room Schalter
attr HM_Switch_1 serialNr xxxxxxxxxx
attr HM_Switch_1 subType switch
attr HM_Switch_1 webCmd toggle:on:off:statusRequest
define FileLog_HM_Switch_1 FileLog /var/fhem/log/Switch-%Y.log HM_Switch_1
attr FileLog_HM_Switch_1 logtype text
attr FileLog_HM_Switch_1 room Schalter

Switch_2 gleichlautend

FS20 kommt in meiner Konfiguration nicht vor! Ich verwende ausschliesslich HM Komponenten

2.) mit meinen beiden Switches habe ich sonst keine Probleme.
Togglen, Ein- und Ausschalten geht beliebig oft ohne irgendwelche Probleme oder fhem-Crash

3.) ältere Version
ich hab folgende Version:
$Id: 98_RandomTimer.pm 1116 2013-01-21 15:01:34Z Dietmar Ortmann $

Beim Versuch, deinen Link
http://forum.fhem.de/2013.04.2019:42:083:FS20setHM_Switch_1on
zu benutzen, kommt ein 403-Forbidden

4.) Telnet Session
muss ich erst mal laufen lassen, melde mich wenns durch ist

Ulrich

Dietmar63

@ Ulrich,

ist durch ein Versehen der falsche Link hineingeraten:
Link

wie gesagt "f20 ..." war in der alten Version des RT nur Text, den ich ausgegeben habe. Hat nichts mit dem zu tun was wirklich geschieht.

wo hast du den Text her:
$Id: 98_RandomTimer.pm 1116 2013-01-21 15:01:34Z Dietmar Ortmann $

die Letze Änderung stammt von Anfang April.
Probier mal die neue Version.

Lies mal die Beiträge nach dem Link - dann wirst du Neues entdecken.


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

ulbr2000

Hallo Dietmar,

die Zeile
$Id: 98_RandomTimer.pm 1116 2013-01-21 15:01:34Z Dietmar Ortmann $
ist aus deiner 98_RandomTimer.pm....

Ich lad mir mal die letzte Version aus dem Link

Ulrich

Nachtrag:auch die Version aus dem Link hat den selben Eintrag wie oben....

Wie erkenn ich jetzt alte und neue Version??

Dietmar63

Ich habe verglichen - du hast recht. Die Version aus dem Link hat diesen Eintrag und unterscheidet sich praktisch nicht von meiner.

Bei den Details des RT kann man Attribute setzen.
Gibt es bei Dir das Attribut onCmd?

(siehe Anhang / see attachement)

wenn ja - hast du wirklich eine sehr neue Version.

Du hast vermutlich diese Version:
Link
Das Protokoll passt dazu.

Die Änderungen sind allerdings nicht so gewaltig, dass ich glaube, dass der Fehler dadurch behoben werden könnte.
Meine Hoffnung ist der output der telnet-Sitzung.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ulbr2000

Hallo Dietmar,

kurzes Feedback:

es läuft jetzt, allerdings für mich nicht ganz erklärbar:
die Version habe ich nicht getauscht, allerdings hast du anscheinend eine neuere, das Attribut "onCmd" gibt es bei meiner nicht.

Was habe ich sonst noch getan:
ich hab das "fhem.save"-File gelöscht
die Einrichtung des Zufallstimers geändert:
*{sunset_abs("HORIZON=3")} HM_Switch_2 Verreist 22:00 480
also die Default Setting für den Switchmode hab ich entfernt
und beobachte jetzt seit 3 Tagen - alles ok

servus
Ulrich

wing350

Hallo,
ich habe den RandomTimer mit verschiedenen Parametern getestet. Alles läuft gut.

Leider kommen bei uns die Einbrecher auch in den frühen Morgenstunden, so dass ich gerne einiges auch morgens um 5 Uhr bis 1 Stunde nach Sonnenaufgang damit schalten möchte.

Leider nimmt das Modul als Stopzeit nur absolute Zeiten. Wäre es nicht möglich, als Stopzeit auch eine Perlfunktion wie {sunrise()...} zu implementieren wie bei der Startzeit? Das wäre super!

Vielen Dank übrigens für die Entwicklung des Moduls. Das hat mir jetzt eine große Sorge beim Umstieg von FHZ-Studio auf fhem abgenommen.

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