[FHEM] verzögertes Ausschalten

2,711 views
Skip to first unread message

Christian

unread,
Dec 14, 2011, 5:57:48 PM12/14/11
to FHEM users
Servus,

ich versuche gerade eine Steckdose beim betätigen einer Taste, oder
eben per telnet diese nach einer gewissen Zeit, z.B. 15 min
ausschalten.


Hat sowas schon jemand realisiert? In der Reverenz bin ich mit dem
"at" allerdings nicht schlau geworden.

Danke schon mal!

Gruß
Christian

Zrrronggg!

unread,
Dec 14, 2011, 8:09:30 PM12/14/11
to FHEM users
define MeinSchalterName FS20 hauscode adresse (irgendeine)
attr MeinSchalterName dummy 1
attr MeinSchalterName room MeineWebschalter

define MeineSteckdose FS20 hauscode adresse (der SChaltsteckdose)

define act_on_MeinSchalterName notify MeinSchalterName { if ("%" ne
"off") { fhem("at +00:15:00 set MeineSteckdose on") } }

Der Test

if ("%" ne "off")

ist streng genommen nicht notwendig, er verhindert nur, das die
Steckdose auch dann nach 15 Minuten angeht, wenn man den Schalter
"MeinSchalterName" auf AUS schaltet.

Christian K.

unread,
Dec 15, 2011, 2:40:39 AM12/15/11
to fhem-...@googlegroups.com
Vielen vielen dank!

Müsste es aber dann am Ende nicht 

.... { fhem("at +00:15:00 set MeineSteckdose off") } }

heißen? Also das nach den 15 min ausgeschaltet wird. 


Kurz zum Szenario. An der Schaltsteckdose hängt mein ganzes PC Zeugs dran. Die würde ich über einen Tasten Druck auf der Steckdose einschalten. 
Beim herunterfahren des PCs lasse ich im shutdown Script den Befehl zum ausschalten der Steckdose in 15min starten. Denn ich möchte nicht wie derzeit warten bis er aus ist um dann von Hand die Steckdosenleiste aus zu schalten. Dauert ja manchmal länger wenn noch Updates beim shutdown gemacht werden.

Ich denke wenn's läuft würd ich das ins Wiki packen :)

Christian
--
To unsubscribe from this group, send email to
fhem-users+...@googlegroups.com

Rudolf Koenig

unread,
Dec 15, 2011, 3:24:48 AM12/15/11
to fhem-...@googlegroups.com
> .... { fhem("at +00:15:00 set MeineSteckdose *off*") } }

das ist aber fhem 1.x/2.x Syntax, wenn ich mich recht erinnere ab 3.0 muss es

define myAt at +00:15 set MeineSteckdose off

heissen.

Christian K.

unread,
Dec 15, 2011, 4:40:24 AM12/15/11
to fhem-...@googlegroups.com
Ahhh, danke!

Wie müsste das dann mit der passenden Syntax komplett lauten?


define MeinSchalterName FS20 hauscode adresse  (irgendeine)
attr MeinSchalterName dummy 1
attr MeinSchalterName room MeineWebschalter

define MeineSteckdose FS20 hauscode adresse  (der SChaltsteckdose)

define act_on_MeinSchalterName notify MeinSchalterName { if ("%" ne
"off") define myAt at +00:15 set MeineSteckdose off }

??

Sorry, bin seit gestern erst richtig in FHEM eingestiegen. Hab seit gestern meine ganzen Komponeten bekommen :)

Danke schon mal :)
 

Zrrronggg!

unread,
Dec 15, 2011, 9:33:33 AM12/15/11
to FHEM users
1. klar müsste es off heissen, ich habe die Anforderung
AUSzuschalten ...äh... überlesen, sorry

2. würde man dann den Test auf "Schalterstelltung" in deinem Scenarion
weglassen und damit braucht man auch paar Klammer weniger.

3. zu dem was Rudolf sagt: Ich bin mir nicht ganz sicher worauf er
abhebt, da ich mit FHEM4 irgendwas eingestiegen bin und daher gar
nicht weiss, wie das früher mal war.
Eventuell bezieht er sich auf den Teil *off*, die Sternchen müssen
natürlich weg und waren in meinem Beispiel auch nicht. Oder er bezieht
sich auf die etwas umständliche Lösung mit den Klammern, also der
Nutzung von PERL und Shell Elementen.

Das würde meines Erachtens aber gehen, auch unter aktuellen FHEM
(läuft bei mir so mit FHEM 4.9 zumindest). Denn letzlich bedeutet
{ fhem("at +00:15:00 set MeineSteckdose off") } }
nur, dass am Ende an FHEM das in der Klammer übergeben wird und das
ist doch genau das was Rudolf auch meint.

Allerdings: Der ganze Kram ist in deinem Scenario gar nicht nötig, da
du offenbar weder eine Darstellung eines Schalters im Webinterface
brauchst, noch auf dessen Schalterstellung testen musst. Wenn du nur
mittels eines Scripts auschalten willst, dann reicht auch

im fhem.cfg
define MeineSteckdose FS20 hauscode adresse (der Schaltsteckdose)

und das Script übergibt dann an FHEM z.b. per Telnet
define myAt at +00:15 set MeineSteckdose off (myAT steht natürlich
für irgendeinen Namen der Aktion)

On 15 Dez., 10:40, "Christian K." <christian.kohm...@googlemail.com>
wrote:

Rudolf Koenig

unread,
Dec 15, 2011, 10:00:19 AM12/15/11
to fhem-...@googlegroups.com
> Denn letzlich bedeutet
> { fhem("at +00:15:00 set MeineSteckdose off") } }
> nur, dass am Ende an FHEM das in der Klammer �bergeben wird und das

> ist doch genau das was Rudolf auch meint.

Rudolf meint nur, dass das was frueher in fhem als


at +00:15:00 set MeineSteckdose off

geschrieben wurde, seit ueber 4 Jahren (fhem 4.0, 2007-04-14) als
define myAt at +00:15:00 set MeineSteckdose off
zu schreiben ist.

Zrrronggg!

unread,
Dec 15, 2011, 4:59:56 PM12/15/11
to FHEM users
Oh weia.

Manchmal ist man echt ein bischen blind! Reiner Tipfehler von mir und
nicht bemerkt.

(ich wusste ja nicht mal, das es früher anders ging. Ich bin erst seit
2010 dabei)

Christian K.

unread,
Dec 18, 2011, 10:40:19 AM12/18/11
to fhem-...@googlegroups.com
Soo, ich habs nun mal Probiert mit:

define in_15min_Aus notify 4_Kanal_Handsender_02 {define myAt at +00:01:00 set sz_Einbaudimmer off}

jedoch hats nicht geklappt. Die Zeit Stimmt noch nicht, da ich nicht so lange warten wollte ;)

Wenn ich oben im Eingabefenster : "define myAt at +00:01:00 set sz_Einbaudimmer off" eingebe klappts!

Kann es daran liegen das der "4_Kanal_Handsender_02" toggelt und deshalb es nicht geht?

Der Handsender ist ein FS20 S4 im 4 Kanal Betrieb. somit ist die dritte Taste hat Code 02.

Gruß
Christian

Zrrronggg!

unread,
Dec 18, 2011, 5:46:44 PM12/18/11
to FHEM users
Okay, das kann aus mehreren Gründen so nicht klappen.
Ich verstehe nicht mal richtig, was du da überhaupt machen willst, mit
dem Handsender. Ausserdem: Was in geschweiften Klammern steht muss
PERL Code sein, ist bei dir aber nicht und ist auch hier nicht
erforderlich. Ich habe das ganz am Anfang ja nur so formuliert, weil
ich dachte du wolltest was ganz anderes machen (nämlich die Aktion
über einen Schalter im Webfrontend auslösen).

Und was meinst du mit "ich habs mal probiert..."? Wo trägst du das
ein?

Ich meine, was du machen musst, habe ich weiter oben ja eigentlich
gesagt:

>im fhem.cfg
>define MeineSteckdose FS20 hauscode adresse (der Schaltsteckdose)

>und das Script

damit meinte ich dein shutdown Script von dem du sprachst!

> übergibt dann an FHEM z.b. per Telnet
>define myAt at +00:15 set MeineSteckdose off (myAT steht natürlich
>für irgendeinen Namen der Aktion)

Und offenbar hast du das ja auch alles gemacht, denn


>"define myAt at +00:01:00 set
>sz_Einbaudimmer off"

ist ja das richtig und geht ja auch.

Warum machst du jetzt was ganz anderes?


> Kann es daran liegen das der "4_Kanal_Handsender_02" toggelt und deshalb es
> nicht geht?

Nee, das liegt daran, dass FHEM nicht weiss, was
"4_Kanal_Handsender_02" überhaupt sein soll, oder warum du den
Ansprechen oder nur erwähne willst, wenn du ein Dimmer ausschalten
willst. Dazu brauchst du doch gar keine Fernbedienung.

> Der Handsender ist ein FS20 S4 im 4 Kanal Betrieb. somit ist die dritte
> Taste hat Code 02.

Äh... ja und? Was hat das mit dem Auschalten einer Steckdose in 15
Minuten zu tun?

Mal ne andere Frage: Kann dein shutdown Script eine Telnet-Session
aufmachen und dort ein Commando absetzen? Das wäre ja mal
Voraussetzung für dein Vorhaben.

>
> Gruß
> Christian

Christian K.

unread,
Dec 21, 2011, 3:20:27 AM12/21/11
to fhem-...@googlegroups.com
Hi,

sorry das ich so spät das ganze Aufkläre.

Das mit dem Handsender war nur zum Test ob das "define at" auch wirklich gesetzt wird.

Nun hab ich das folgendermaßen umgesetzt:

Den "Webschalter" brauch ich, da über "automatisiertes" Telnet der lange CMD Befehl mit "... at +00: ..." nicht richtig klappt.

define PC_Ausschalten FS20 xxxx 00
attr PC_Ausschalten dummy 1

define sz_PC_Steckdose FS20 xxxx 54
attr  sz_PC_Steckdose model fs20st
attr  sz_PC_Steckdose room Schlafzimmer

define in_15min_Aus notify PC_Ausschalten define aus_in15min at +00:15:00 set sz_PC_Steckdose off

Nun hängt es nur noch an meinen Shutdown-Script, bzw. das Script an sich läuft, wird nur irgendwie nicht beim herunterfahren ausgeführt.

Gruß und Danke für euren Support!

Zrrronggg!

unread,
Dec 21, 2011, 7:45:53 PM12/21/11
to FHEM users

>
> Das mit dem Handsender war nur zum Test ob das "define at" auch wirklich
> gesetzt wird.

Okay.


> define PC_Ausschalten FS20 xxxx 00
> attr PC_Ausschalten dummy 1
>
> define sz_PC_Steckdose FS20 xxxx 54
> attr  sz_PC_Steckdose model fs20st

(attr model zu setzen das ist streng genommen nicht nötig.)

> attr  sz_PC_Steckdose room Schlafzimmer
>
> define in_15min_Aus notify PC_Ausschalten define aus_in15min at +00:15:00
> set sz_PC_Steckdose off

Hm.

sollte gehen.

Also d.h. wenn du den Schalter "PC_Ausschalten" am Webfrontend
betätigst, sollte
1. in der Gesammtübersicht des Webfrontendes in der Liste
"Zeitgesteuerte Kommandos (at)"
eine "aus_in15min" erscheinen, mit Status "next: UHRZEIT" erscheinen,
wobei
UHRZEIT die in 15 Minuten nach schaltung ist.
2. zu dieser Uhrzeit im Loggfile "FS20 set sz_PC_Steckdose off"
erscheinen
3. die Dose auschalten.

Kannst du mal nachsehen, ob wenigstens die Punkte 1. und 2. zutreffen?

Wen du im Webinterface direkt "set sz_PC_Steckdose off" eingibst, dann
schaltet die Dose?


> Nun hängt es nur noch an meinen Shutdown-Script, bzw. das Script an sich
> läuft, wird nur irgendwie nicht beim herunterfahren ausgeführt.

Und das Script bedient dann irgendwie das Webinterface? Oder wie?

Christian K.

unread,
Dec 22, 2011, 2:43:54 AM12/22/11
to fhem-...@googlegroups.com
1. in der Gesammtübersicht des Webfrontendes in der Liste
"Zeitgesteuerte Kommandos (at)"
eine "aus_in15min" erscheinen, mit Status "next: UHRZEIT" erscheinen,
wobei
UHRZEIT die in 15 Minuten nach schaltung ist.

Stimmt! Wenn ich "PC_Ausschalten" trigger dann erscheint nach einem Klick auf "everything" unter "at" aufgelistete "aus_in15min"


2. zu dieser Uhrzeit im Loggfile "FS20 set sz_PC_Steckdose off"
erscheinen
im Logfile habe ich noch nicht nachgesehen
 

3. die Dose auschalten.

Jupp, tut sie!!

Und das Script bedient dann irgendwie das Webinterface? Oder wie?

Das Script (vbs) macht folgendes:

Telnet-Verbindung zum FHEM aufbauen und anschließend  "set PC_Ausschalten off" gefolgt von "quit"

Wie gesagt, das VBS an sich läuft wenn man es von Hand ausführt, nur soll es ja beim Shutdown von Windows ausgeführt werden. Das klappt aber bei meinem Windows 7 irgendwie nicht. Habe alles (in meinen Augen) korrekt eingetragen und auch das Script an die richtige Stelle kopiert aber Windows führt es beim runterfahren einfach nicht aus. Aber ich scheine im Netz nicht der einzige mit diesem Problem zu sein.

 

Christian K.

unread,
Dec 22, 2011, 2:51:02 PM12/22/11
to fhem-...@googlegroups.com
Das hier ist nun das vbs. Nur zur vollständigkeit halber ;)

Ich werde nun über die Feiertage mal nen kleinen Wiki Eintrag dazu machen.


set sh=WScript.CreateObject("WScript.Shell")
sh.run "Telnet 192.168.200.23 7072"             
WScript.Sleep 500                           
sh.SendKeys "trigger PC_Ausschalten"&vbcrlf  
WScript.Sleep 500              
sh.SendKeys "quit"&vbcrlf          
WScript.Sleep 500                
sh.SendKeys "" 

Zrrronggg!

unread,
Dec 22, 2011, 4:54:18 PM12/22/11
to FHEM users

>
> > Jupp, tut sie!!
>
> > Und das Script bedient dann irgendwie das Webinterface? Oder wie?


Äh ja, das war ja meine Frage weiter oben. Ich habe keine Ahnung wie
du das mit deinem script machen willst.
Ich habe schon weiter oben gefragt, ob dein script Kommandos an Telnet
geben kann. Du hast dann gesagt, du willst das über Webinterface
machen. Ich kann zu deinem Script nichts sagen.


> > Telnet-Verbindung zum FHEM aufbauen und anschließend  "set PC_Ausschalten
> > off" gefolgt von "quit"


Seufz. Damit wären wir wieder am Anfang. Wenn du das so machen willst,
dann brauchst du nur

"define aus_in15min at +00:15:00 set sz_PC_Steckdose off"

per Telnet absetzen. Der Rest ist ja nur um einen Schalter auf der
Weboberfläche zu haben.
Den Umweg brauchst du ja nicht, wenn dein Script das per Telnet
absetzen kann.

Mehrere Posts weiter oben schrieb ich ja schon:
_________________________________________________________________________
Allerdings: Der ganze Kram ist in deinem Scenario gar nicht nötig, da
du offenbar weder eine Darstellung eines Schalters im Webinterface
brauchst, noch auf dessen Schalterstellung testen musst. Wenn du nur
mittels eines Scripts auschalten willst, dann reicht auch
im fhem.cfg
define MeineSteckdose FS20 hauscode adresse (der Schaltsteckdose)
und das Script übergibt dann an FHEM z.b. per Telnet
define myAt at +00:15 set MeineSteckdose off (myAT steht natürlich
für irgendeinen Namen der Aktion)
_________________________________________________________________________

Und da sind wir jetzt wieder.

> > Wie gesagt, das VBS an sich läuft wenn man es von Hand ausführt, nur soll
> > es ja beim Shutdown von Windows ausgeführt werden. Das klappt aber bei
> > meinem Windows 7 irgendwie nicht. Habe alles (in meinen Augen) korrekt
> > eingetragen und auch das Script an die richtige Stelle kopiert aber Windows
> > führt es beim runterfahren einfach nicht aus. Aber ich scheine im Netz
> > nicht der einzige mit diesem Problem zu sein.

Gut - dazu kann ich nichts sagen. Windows 7 und VBS Script Support und
so da bin ich der Falsche.
Zu AppleScript könnt ich was sagen.

Christian K.

unread,
Dec 23, 2011, 3:36:12 AM12/23/11
to fhem-...@googlegroups.com
Moin,

ich weiß das ich das ganze nicht bräuchte mit dem Webschalter usw. aber leider hat es eben nicht funktioniert mittels Script per telnet  "define aus_in15min at +00:15:00 set sz_PC_Steckdose off" zu schicken da ich glaube das es dabei ein Problem gibt bei den zeichen "+" ":"

Aber ist auch egal! Das mit dem umweg kann ich auch leben. Muss eben nur noch schauen warum das dumme Windows das Script eben nicht ausführt.

Gruß

Reply all
Reply to author
Forward
0 new messages