Funksteckdose X-Minuten angeschaltet lassen

Begonnen von Jeriously, 08 Juli 2017, 09:45:22

Vorheriges Thema - Nächstes Thema

Jeriously

Servus Community,

Ich habe ein kleines Problem. Ich habe eine Funksteckdose, welche ich per FHEM App steuern kann. An diese Funksteckdose angebunden ist ein Ventilator, welchen ich anschalten will und welcher nach einer bestimmten Zeit automatisch abschalten soll.
Meinen Ventilator schalte ich wie folgt:

define Ventilator dummy
attr Ventilator setList on off
attr Ventilator room CPU-Zimmer
define off_Ventilator notify Ventilator:off {system("/usr/bin/send 00101 1 0 &")}
define on_Ventilator notify Ventilator:on {system("/usr/bin/send 00101 1 1 &")}

Die Funktion, dass ich den Ventilator mit FHEM steuern kann, will ich beibehalten und die ,,TimerFunktion" würde ich gerne noch hinzufügen.

Danke schonmal im Voraus
Jeriously

justme1968

schau dir die commandref an. dort steht wie du off-for-timer aktivieren kannst.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Otto123

Moin,

wenn Du egal von wo geschaltet eine Art Kurzzeitfunktion haben willst dann kannst Du auch ein notify definieren.define nty_Ventilator notify Ventilator:on sleep 300;; set $NAME off

Schaltet, wenn der Ventilator irgendwie nach "on" geschaltet wird, nach 5 min wieder off.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Jeriously

Danke für die Tipps, hat eins A funktioniert

Lg Jeriously

rudolfkoenig

Zitatschau dir die commandref an. dort steht wie du off-for-timer aktivieren kannst.
Damit der naechste, der hier sucht, es bequemer hat: da "attr Ventilator setList on off" definiert ist, reicht ein zusaetzlicher "attr Ventilator useSetExtensions", damit "set Ventilator on-for-timer 300" funktioniert.

Eine etwas abgefahrene Alternative, um on-for-timer fuer Ventilator zu implementieren:
defmod ca_Ventilator cmdalias set Ventilator on-for-timer .* AS set Ventilator on;; sleep $EVTPART2;; set Ventilator off

CoolTux

Zitat von: Jeriously am 08 Juli 2017, 10:41:05
Danke für die Tipps, hat eins A funktioniert

Lg Jeriously

Eigentlich weiß ich ja die Antwort schon, frage aber dennoch mal. Lasse mich auch gerne überraschen. Welche Version genau hat denn funktioniert? Das für Dich vorgefertigte von Otto, oder der Tip mit der Commandref lesen was Zukunftssicherer wäre?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

justme1968

wobei die version mit dem sleep den nachteil hat das der timer nicht zurückgesetzt wird wenn zwischendurch ein normales on oder off kommt und es dann am ende zu einem unbeabsichtigten zustand kommen kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mickey Mouse

#7
ich klinke mich hier mal einfach ein, weil ich quasi das gleiche Problem hier hatte
nachdem der Bewegungsmelder angesprochen hat, möchte ich das Licht noch 5 Minuten laufen lassen.
spricht etwas "ernsthaft" dagegen das "einfach" mit einem "at" Kommando zu machen?
Mein Code (ich schreibe das immer noch lieber als "echten" Perl Code ihn die 99_myutils) sieht z.Z. so aus:
sub BewBad() {
  fhem("set SB_BAD play;set BAD_Licht on");
  fhem("delete a_ChkBad" );
  fhem("define a_ChkBad at +00:05:00 set BAD_Licht off");
};

oder macht das irgendwie Ärger?
für mich ist das so herrlich einfach und logisch und bei jeder Bewegung wird der Timer neu gesetzt.

allerdings hatte ich auch mal eine Version, bei der ich dem at als Namen noch die aktuelle Zeit mitgegeben habe ("a_ChkBad_" . time()) und per delete ChkBad_.* wieder gelöscht habe.
dabei ist mir aufgefallen, dass alle diese "at's" auch im Notify Change Wizzard auch in der Auswahlliste für den RegExp Part auftauchen, das irritiert mich schon etwas...

justme1968

das delete kann einen fehler im log erzeugen wenn es das device nicht mehr gibt. das kann man verhindern in dem man statt delete und define defmod verwendet.

das sleep hat gegenüber dem define den vorteil das kein neues device angelegt wird. sleep kann auch mit namen versehen werden um es zu löschen.

sleep und at haben den oben genannten nachteil das die timer weiter laufen wenn man sie nicht bei allen anderen schaltvorängen löscht.

on-for-timer und off-for-timer kümmern sich darum wenn sie aus den SetExtensions kommen. dann wird intern auch noch der start zeitpunkt gespeichert und man kann sich für das frontend countdown timer bauen.

wenn alles geht sei glücklich damit. warum eine sub und drei fhem aufrufe einfacher sind als ein sleep bzw. on-for-timer verstehe ich nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mickey Mouse

deswegen frage ich ja...
wenn man sich nicht auskennt, dann ist es sehr schwer eine vernünftige Übersicht der "echten Kommandos" zu bekommen.
für mich war "on-for-timer" bisher ein "spezielles Attribut" von FS20 Geräten.
ich hatte das auch anfangs benutzt, aber wie du vielleicht erkannt hast, schalte ich die Squeezebox nicht mit dem at Kommando aus. Es gibt noch ein "notify" das beim Ausschalten des Lichts auch die Squeezebox ausschaltet. Nur greift das nicht, wenn ich das Licht per "on-for-timer" einschalte, dann geht zwar das Licht nach x Minuten aus, aber die Musik läuft weiter.
das ganze ganz einfach weil es auch noch einen "ganz normalen" Schalter gibt, mit dem man unabhängig vom Bewegungsmelder das "Bad" ein/ausschalten (hauptsächlich aus) kann,.

Otto123

#10
Hat dein SB_BAD Device kein Problem mit einem wiederholtem play?

Als Alternative wo nicht unnötig geschaltet wird:
define di_Badlicht DOIF ([<Dein BM Event>]) (set SB_BAD play,set BAD_Licht on)(set BAD_Licht off)
attr di_Badlicht do resetwait
attr di_Badlicht wait 0,300


Was der Vorteil von "richtigem" Perlcode sein soll, der ausschließlich 3 FHEM Befehle ausführt und dazu in die Perl Ebene und drei mal wieder zurück nach FHEM wechselt, erschließt sich mir allerdings auch nicht. Effizient kann das eigentlich  nicht sein.  :-X
Aber wie schon gesagt: Wenn Du glücklich damit bist, viele Wege führen zum Ziel.  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz