FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: maci am 18 November 2017, 15:01:41

Titel: Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 18 November 2017, 15:01:41
Hallo,

Ich bin am herumsuchen wie ich ein paar meiner Schalter (Dummy), die ich per Hand schalte, die nach Ablauf einer gewissen Zeit wieder selbsttätig ausschalten.
Die Ablaufzeit würde ich dann gerne auch per Dummy mit Auswahl vorgeben können.

Genau gesagt: Ich schalte auf der Weboberfläche einen Schalter ein, der seinen Schaltbefehl über ein notify durchführt.
Dieser Schalter soll sich aber zB. nach Ablauf von einer Stunde wieder selbst ausschalten.

Wie kann ich das am besten lösen?
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: andies am 18 November 2017, 16:38:59
"Eigentlich" sollte das mit on-for-timer gehen. Aber ein dummy kann das nicht. Man kann das aber umgehen (habe ich gestern hier im Forum gefunden) und damit mache ich das. Ich habe konkret folgenden Dummy, der sich nach 180 Sekunden ausschaltet.

Zuerst definierst du folgendes Gerät
defmod OnForTimer_n notify .*:on-for-timer.* {\
my $NAME_off = "x";;\
my @args= split(" ", "$EVENT");; \
if($defs{$NAME_off}) { \
my $mod_cmd= sprintf ( \
"modify $NAME_off +%02d:%02d:%02d", \
$args[1] / 3600, ($args[1] / 60) % 60, $args[1] %60);; \
fhem $mod_cmd;; \
} else { my $room = AttrVal("$NAME", "room", "Unsorted");; \
my $def_cmd= sprintf ( \
"define $NAME_off at +%02d:%02d:%02d set $NAME off", \
$args[1] / 3600, ($args[1] / 60) % 60, $args[1] %60);; \
fhem $def_cmd;; \
fhem "attr $NAME_off room $room" \
} \
}

Dann kannst Du einen Dummy wie folgt ansteuern
defmod irgendein_name_fuer_das_notify notify ausloesendes_Geraet:Raeding set Lampe on-for-timer 180

Das Geraet Lampe sieht dann so aus:
defmod Lampe dummy


Meintest Du das?
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Otto123 am 18 November 2017, 18:48:47
Hallo maci,

mit dem attr useSetExtensions geht das auch (https://fhem.de/commandref_DE.html#dummy) :)

Gruß Otto
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Byte09 am 18 November 2017, 19:18:33
Zitat von: maci am 18 November 2017, 15:01:41
Hallo,

Ich bin am herumsuchen wie ich ein paar meiner Schalter (Dummy), die ich per Hand schalte, die nach Ablauf einer gewissen Zeit wieder selbsttätig ausschalten.
Die Ablaufzeit würde ich dann gerne auch per Dummy mit Auswahl vorgeben können.

Genau gesagt: Ich schalte auf der Weboberfläche einen Schalter ein, der seinen Schaltbefehl über ein notify durchführt.
Dieser Schalter soll sich aber zB. nach Ablauf von einer Stunde wieder selbst ausschalten.

Wie kann ich das am besten lösen?

Hi, wenn du interesse hast es zu testen, kann ich dir morgen ein modul zukommen lassen, welches u.A. genau das kann . es befindet sich aber noch in einer recht frühen entwicklungsphase und ich würde dich dann bitten mir fehler etc. zukommen zu lassen.

gruss Byte09

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 18 November 2017, 19:36:55
Zitat von: Otto123 am 18 November 2017, 18:48:47
Hallo maci,

mit dem attr useSetExtensions geht das auch (https://fhem.de/commandref_DE.html#dummy) :)

Gruß Otto

Danke Otto!

Das funktioniert super :)
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 18 November 2017, 20:56:04
Zitat von: Byte09 am 18 November 2017, 19:18:33
Hi, wenn du interesse hast es zu testen, kann ich dir morgen ein modul zukommen lassen, welches u.A. genau das kann . es befindet sich aber noch in einer recht frühen entwicklungsphase und ich würde dich dann bitten mir fehler etc. zukommen zu lassen.

gruss Byte09

Das wäre sicher von Interesse.

@Otto: ich habe das zwar jetzt mit einem Testschalter mal umgesetzt. Aber folgendes Problem habe ich da.
Da diese Erweiterung beim Dummy nicht funktioniert, wenn ich direkt den Dummy betätige, brauche ich einen zusätzlichen Dummy mit einem notify um den Zeitschalt Dummy zu aktivieren.
Wenn ich versuche diesen Dummy mit gesetzten Attribut: useSetExtensions on-for-timer
direkt zu schalten, schaltet dieser nicht mehr aus.
Es funktioniert nur wenn ich das mit einem set Schalter on-for-timer 60 mache bzw. ein webcmd on-for-timer 60
Dann habe ich aber in der Zeile dann stehen on-for-timer 60.
Ich will hier eher nur ein on oder ein stehen haben.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: amenomade am 18 November 2017, 21:36:30
define didu DOIF ([du] eq "on") (set du off)
attr didu wait [didu:waittime]


Mit setreading didu waittime 60
Kannst auch ein anderes Dummy dafür nutzen.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: enno am 18 November 2017, 22:13:41
Moin maci,

ich habe mir einen FS20 Dummy angelegt. Der kann on-for-timer...

define Licht_an FS20 11114444 1a
attr Licht_an dummy 1
attr Licht_an room HAUS


Gruss
  Enno

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: amenomade am 18 November 2017, 22:16:36
Aber der will kein "on-for-timer". Er will ein "on", der automatisch danach auf "off" geht... anders gesagt: er will immer noch sein Schalter mit "set Schalter on" schalten und nicht mit "set Schalter on-for-timer 60".
Zumindest habe ich es so verstanden.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: enno am 18 November 2017, 23:01:33
ZitatGenau gesagt: Ich schalte auf der Weboberfläche einen Schalter ein, der seinen Schaltbefehl über ein notify durchführt.
Dieser Schalter soll sich aber zB. nach Ablauf von einer Stunde wieder selbst ausschalten.

Ich hatte das so verstanden:

set Licht_an on-for-timer 3600

notify auf "on-for-timer 3600"  und nach einer Stunde schaltet sich der FS20 dummy selbst wieder aus.

Gruss
  Enno
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 18 November 2017, 23:05:22
Zitat von: amenomade am 18 November 2017, 22:16:36
Aber der will kein "on-for-timer". Er will ein "on", der automatisch danach auf "off" geht... anders gesagt: er will immer noch sein Schalter mit "set Schalter on" schalten und nicht mit "set Schalter on-for-timer 60".
Zumindest habe ich es so verstanden.

Ja genau so soll es sein.

Ich will den Schalter einschalten, dieser soll dann nach einer festgelegten Zeitspanne automatisch auf off gehen.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Wuppi68 am 18 November 2017, 23:06:18
ein notify auf den Dummy für On und darin ein on-for-timer setzen
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Frank_Huber am 18 November 2017, 23:10:03
Doif
(trigger) (set XXx on) (set XXx off)

Attribut wait 0,3600
Attribut do always

So würde ich es lösen.

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Otto123 am 18 November 2017, 23:14:23
Da es eh nicht um Betrieb ohne FHEM geht, kann man es auch so machendefine nty_Schalter notify Schalter:on sleep xx;; set $NAME off

Da ist es völlig egal wie das on kommt. Dann braucht man auch nicht attr useSetExtenions

Gruß Otto
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Frank_Huber am 18 November 2017, 23:22:26
Zitat von: Otto123 am 18 November 2017, 23:14:23
Da es eh nicht um Betrieb ohne FHEM geht, kann man es auch so machendefine nty_Schalter notify Schalter:on sleep xx;; set $NAME off

Da ist es völlig egal wie das on kommt. Dann braucht man auch nicht attr useSetExtenions

Gruß Otto
Ist sleep nicht blockierend?

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Otto123 am 18 November 2017, 23:53:06
Nein, nicht FHEM sleep wenn ein Befehl folgt.  ;D

https://fhem.de/commandref_DE.html#sleep

Perl sleep ist blockierend.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Frank_Huber am 18 November 2017, 23:55:11
Zitat von: Otto123 am 18 November 2017, 23:53:06
Nein, nicht FHEM sleep wenn ein Befehl folgt.  ;D

https://fhem.de/commandref_DE.html#sleep

Perl sleep ist blockierend.
Aaahhhhh, wieder was gelernt. [emoji106] danke!

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Byte09 am 19 November 2017, 07:22:32
Zitat von: maci am 18 November 2017, 20:56:04
Das wäre sicher von Interesse.



hi maci,

gib mir doch bitte deine mailadresse per pm , dann schicke ich dir das modul.

gruss Byte09
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 19 November 2017, 08:59:35
Zitat von: Otto123 am 18 November 2017, 23:14:23
Da es eh nicht um Betrieb ohne FHEM geht, kann man es auch so machendefine nty_Schalter notify Schalter:on sleep xx;; set $NAME off

Da ist es völlig egal wie das on kommt. Dann braucht man auch nicht attr useSetExtenions

Gruß Otto

Ich habe diese Lösung mal kurz getestet.
Funktioniert mal soweit.
Werde die Lösung in nächster Zeit in einem echten Schalter testen.
Danke vorerst mal.
Bericht folgt.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Byte09 am 19 November 2017, 16:24:24
Zitat von: maci am 18 November 2017, 15:01:41
Hallo,

Ich bin am herumsuchen wie ich ein paar meiner Schalter (Dummy), die ich per Hand schalte, die nach Ablauf einer gewissen Zeit wieder selbsttätig ausschalten.
Die Ablaufzeit würde ich dann gerne auch per Dummy mit Auswahl vorgeben können.

Genau gesagt: Ich schalte auf der Weboberfläche einen Schalter ein, der seinen Schaltbefehl über ein notify durchführt.
Dieser Schalter soll sich aber zB. nach Ablauf von einer Stunde wieder selbst ausschalten.

Wie kann ich das am besten lösen?

... habe dir eben eine mail geschickt.
( felder im frontend des moduls, die du nicht ändern kannst, sind in dieser version noch nicht freigeschaltet.
  definition: define [NAME] Absent  )


nachtrag : wenn von meinem modul ein dummy erkannt werden soll, so muss dieser als anforderung ein on:off im attr webcmd stehen haben, sonst wird er nicht erkannt
gruss Byte09
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: cs-online am 19 November 2017, 18:28:48
Also man könnte auch einfach einen Dummy nehmen, useSetExtensions 1 , setList mit on off, webCMD on:off , in dem eventMap sowas wie /on-for-timer 1:on/

Dann müßte eigentlich beim Drücken auf on nach einer Sekunde wieder ausgeschaltet werden. Dann hast Du in der Setlist nur on und off. Ob die useSetExtensions auch nur mit setList on gehen, müßtest Du mal ausprobieren...

Grüße

Christian
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Frank_Huber am 19 November 2017, 18:59:10
Zitat von: cs-online am 19 November 2017, 18:28:48
Also man könnte auch einfach einen Dummy nehmen, useSetExtensions 1 , setList mit on off, webCMD on:off , in dem eventMap sowas wie /on-for-timer 1:on/

Dann müßte eigentlich beim Drücken auf on nach einer Sekunde wieder ausgeschaltet werden. Dann hast Du in der Setlist nur on und off. Ob die useSetExtensions auch nur mit setList on gehen, müßtest Du mal ausprobieren...

Grüße

Christian
Da klingt mir die doif Variante aber  deutlich einfacher. ;-)

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: cs-online am 19 November 2017, 19:01:57
??? Das ist einfach ein konfigurierter Dummy, ohne weitere Notify oder DOIF. warum sollte ein Dummy mit nachgeschalteter DOIF einfacher sein ?
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 19 November 2017, 20:30:30
Habe testweise einen weiteren Dummy konfiguriert.

Mit einem notify steuere ich beide Dummys beim Ausschalten.
Es funktioniert.

An eine DOIF habe ich auch schon gedacht, ich belasse aber derzeit mal das notify.


Zitat von: Byte09 am 19 November 2017, 16:24:24
... habe dir eben eine mail geschickt.
( felder im frontend des moduls, die du nicht ändern kannst, sind in dieser version noch nicht freigeschaltet.
  definition: define [NAME] Absent  )


nachtrag : wenn von meinem modul ein dummy erkannt werden soll, so muss dieser als anforderung ein on:off im attr webcmd stehen haben, sonst wird er nicht erkannt
gruss Byte09

Danke habe ich gesehen.
Habe das Modul derzeit auf mein Testsystem gespielt.
Dort teste ich es mal durch. Muss mich aber zuerst mal etwas einlesen.
Gibt es schon einen Forumsbeitrag dazu?
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: amenomade am 19 November 2017, 20:33:49
Zitat von: cs-online am 19 November 2017, 18:28:48Also man könnte auch einfach einen Dummy nehmen, useSetExtensions 1 , setList mit on off, webCMD on:off , in dem eventMap sowas wie /on-for-timer 1:on/

@cs-online: Hast Du das schon mal getestet? Mach mal! (lieber auf einer Testinstallation ;) ) Das kann eigentlich nicht gehen.
Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: Byte09 am 19 November 2017, 20:35:58
Zitat von: maci am 19 November 2017, 20:30:30
Habe testweise einen weiteren Dummy konfiguriert.

Mit einem notify steuere ich beide Dummys beim Ausschalten.
Es funktioniert.

An eine DOIF habe ich auch schon gedacht, ich belasse aber derzeit mal das notify.


Danke habe ich gesehen.
Habe das Modul derzeit auf mein Testsystem gespielt.
Dort teste ich es mal durch. Muss mich aber zuerst mal etwas einlesen.
Gibt es schon einen Forumsbeitrag dazu?
Nein , gibt es noch nicht . Es testen derzeit nur eine Handvoll User.  Ist auch alles noch chaotisch vom code, perl Warnungen etc.... noch keine logs ausser verbose 5 , dann aber heftig ... und noch lange nicht alle Funktionen fertig . Dieser thread schrie nur geradezu danach , es damit zu versuchen . Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk

Titel: Antw:Schalter der nach Zeit selbsttätig ausschaltet
Beitrag von: maci am 21 November 2017, 16:20:29
Ich will euch teilhaben lassen an meinem derzeitigen Lösungsstand:

Ein Dummy mit dem Namen Boilernachheizung.
Dieses Dummy hat zuvor einfach das Relais per notify geschaltet.
Dieses notify habe ich nun wie folgt erweitert: Boilernachheizung { if (Value("E_Patrone_Boiler") eq "off") {fhem("set relays0 PortA2 $EVENT ")} else {fhem("set Boilernachheizung off")}};
sleep 3600;{ if (Value("E_Patrone_Boiler") eq "on") {fhem("set relays0 PortA2 $EVENT ")}}; set $NAME off


Zur Erklärung: Warum die Abfrage nach dem Status des Relais, weil es auch ein DOIF gibt, das automatisch schaltet.
Ich will somit verhindern, dass ich per Hand schalte, wenn es schon automatisch on ist.
E_Patrone_Boiler ist ein RPI_GPIO.

Ich habe jetzt mal alle Möglichkeiten getestet. Das hat alles funktioniert.
Evtl erweitere ich es noch um eine Temperaturabfrage, damit die E-Patrone nicht eingeschaltet, wird, wenn die Temperatur sowieso passt.