Hauptmenü

RandomTimer nur ausschalten

Begonnen von SkodaSascha, 23 April 2014, 12:24:39

Vorheriges Thema - Nächstes Thema

SkodaSascha

Hallo, leider bin ich über die Suche nur teilweise fündig geworden. Mein Ziel ist es,
eine Lampe die über das Twilight Modul eingeschaltet wird, z.B. zwischen 23.00
und 0.00 auszuschalten.

Das hier habe ich gefunden http://forum.fhem.de/index.php/topic,10173.msg57205/topicseen.html#msg57205

Zitatdefine timer     RandomTimer  +*{sunset_rel("REAL",-30*60)}    StehlampeTisch   21:30   4800


Nur möchte ich nicht an/aus schalten sondern nur aus. Kann das jemand umstricken?
FHEM auf Raspberry Pi, HMLAN + CUL

marvin78

Dafür sind die Attribute onCmd, offCmd zuständig.

Commandref beachten!

SkodaSascha

Komme damit absolut nicht klar. Auch eine Suche mit "offCmd" bringt micht nicht dahin, dass
ich weiterkomme (Kopieren und leicht ändern).
Am liebsten wäre mir eine Zeile in der .cfg um das ganze zu blicken.

FHEM auf Raspberry Pi, HMLAN + CUL

marvin78

Die Frage ist, on das RandomTimer Modul hier überhaupt das richtige Modul ist. Will du nur einmal ausschalten oder in der angegebenen Zeit mehrfach ein und wieder ausschalten? Was genau willst du machen?

mi.ke

Was er machen will, steht da.
Die Lampe wird über sunset eingeschaltet und später willer sie ausschalten lassen. Zufällig innerhalb eines Stundenfensters.

Ob das das richtige Modul ist, möchte ich nicht entscheiden,.....
...aber wie kommt man zu einer Lösung, auch mit diesem Modul, das find ich spannend.

so wie ich die commandref verstanden habe, schaltet der Timer um (toggle)


wir gehen also davon aus, das die Lampe an ist z.B. über "sunset"!
was haben wir an Werten?

define <name> RandomTimer  <timespec_start> <device> <timespec_stop> [<timeToSwitch>]

define  RandomTimerName RandomTimer  22:00:00 Stehlampe 23:00:00 2000

Ich gehe davon aus, dass innerhalb der einen Std. zwischen 22:00 und 23:00 alle 2000 Sekunden ein toggle gesendet wird. Das heisst , einmal.


Also, versuch macht klug.

PS.
nein, ich habs nicht getestet  8)
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

justme1968

es wird normalerweise jeweils on oder off gesendete.

mit onCmd und offCmd kann man angeben was statt on bzw. off verwendet werden soll. wenn man her bei on etwas verwendet das nichts tut wird zwischen nichts und off gewechselt. also nur zufällig irgendwann ein mal ausgeschaltet. alle folgenden nichts und weiteren off ändern dann nichts mehr.

das geht z. b. auch um einem rollladen morgens zufällig irgendwann zwischen zwei grenzen hoch zu fahren.

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

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

Dietmar63

#6
Zum Anschalten der Lampe hast du  ja wahrscheinlich schon TW verwendet.
Zum Abschalten bietet sich ein  at an, bei dem die Schaltzeit über eine Perlfunktion beigesteuert wird.

RT ist nicht so gut geeignet, weil es gedacht ist über einen bestimmten Zeitraum hinweg ein Gerät(Lampe) zufällig ein- und auszuschalten.

Das normale at sieht so aus:
define atOff               at  *23:22:00     set lampe off
deins muss dann so aussehen:
define atOff               at  *{schalteZufaelligNach("23:00:00", 3600) }     set lampe off

Die Funktion schalteZufaelligNach(...) musst du dir dann noch in Perl bauen.
Im Forum gibt es dafür 1000 Beispiele, insbesondere im Zusammenhang mit Rolladenschaltungen ...
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

homeum

#7
Das Thema ist zwar alt, aber trotzdem möchte ich meine simple Lösung zum täglich einmaligen zufälligen Ausschalten in einem bestimmten Zeitraum zeigen.

Aufgabe war, ohne viel Aufwand ein Device, das über Twilight aktiviert wurde, täglich zwischen 21:00 und 22:00 zu einer
zufälligen Zeit auszuschalten, wenn nicht Wochenende ist.


define RandomOff at *{"21:".int(rand(5)).int(rand(9)).":00"} {fhem "set Lampe off" if(!$we)}


Die Wochenende-Abfrage kann natürlich leicht umgekehrt oder auch weggelassen werden.
Damit bekommt man einfach ohne weiteren eigenen Code oder zusätzliche RandomTimer-Devices eine sich täglich
wiederholende zufällige Aktion zwischen 21:00 und 21:59 Uhr.






Damian

Zitat von: homeum am 19 November 2017, 10:18:49
... zum täglich einmaligen zufälligen Ausschalten in einem bestimmten Zeitraum zeigen.

Wenn der "Zufall" in der Zukunft liegt, wird mehrfach ausgeschaltet.

z. B. 21:02 21:15 21:30 usw.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

homeum



Zitat von: Damian am 19 November 2017, 10:23:54
Wenn der "Zufall" in der Zukunft liegt, wird mehrfach ausgeschaltet.

z. B. 21:02 21:15 21:30 usw.

Hmm, ist mir noch nicht aufgefallen, aber du hast recht, sehen kann man das ja nicht.
Ich werde mal ein Log mitschreiben lassen, in wie weit das auftritt.

Ich denke aber, dass es beim Ausschalten unwichtig wäre, wenn nochmal off gesendet wird. Es bringt den gewünschten Effekt nicht zum stolpern.
Ist nicht sauber umgesetzt, aber Probleme sind wohl nicht zu erwarten.



homeum

Habe nun im extra angelegten Log nachgesehen, und @Damian hat recht.
Es kommt häufiger vor, daß am Abend nach dem eigentlichen ersten Ausschalt-Timer noch 1-2 weitere Ausschalt-Signale gesendet werden, bis das nächste at dann auf den kommenden Abend rutscht.

Ich denke, für mich ist das trotzdem akzeptabel.



Damian

Wenn die Funktion nur einmal am Tag schalten soll, dann kann man das relativ einfach mit DOIF lösen:

DOIF ([{"21:".int(rand(5)).int(rand(9)).":00"}]) (set bla ...) DOELSEIF [00:00]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF