FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: siggi85 am 03 Februar 2014, 15:48:47

Titel: WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 03 Februar 2014, 15:48:47
Hallo,

ich nutze ein WOL Device um meinem MediaPC zu starten. Über ein XBMC Device kann ich diesen auch herunterfahren. Diesen "Shutdown" Befehl würde ich gerne hinter dem WOL-off Befehl mittels "shutdownCmd" parken. Da dieses Attribut jedoch nur Shellkommandos akzeptiert, musste ich den Befehl in einem SKript auslagern.
Meine Bitte: Kann man dem Attribut "shutdownCmd" für ein WOL "erlauben" auch FHEM-Kommandos zu hinterlegen?

Anbei mein Code mit ausgelagertem Skript um das bisher zu umgehen.


define mediapc XBMC 192.168.1.2:8080 http user pass

define wol_mediapc WOL 11:22:33:44:55:66 192.168.1.2
attr wol_mediapc shutdownCmd sh /home/test.sh
attr wol_mediapc webCmd on:off


test.sh
#!/bin/bash
wget -bq --tries=1 --timeout=1 --spider http://127.0.0.1:8083/fhem?cmd=set%20mediapc%20shutdown
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Dietmar63 am 03 Februar 2014, 19:45:36
Das kann man machen, aber man muss dann eindeutig shell Kommandos von fhem Befehlen unterscheiden können.
Welcher Befehl schwebt dir vor?

Ich könnte versuchen, anstelle von 

<string>  in attr   <name> shutdownCmd <string>
in etwas analoges wie
<command> in define <name> at <timespec> <command>

zu implementieren. Dann müßten alle, die dieses Attribut nutzen, beim update auf die nächste Version ein wenig anpassen.

Dann hättest du alle Möglichkeiten, die eine at-Kommando mit <command> liefert(siehe CommandRef).
Würde das ausreichen?
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: ChrisD am 03 Februar 2014, 22:05:27
Hallo,

Ich habe das bei mir schon vor einiger Zeit so eingebaut: In der Funktion WOL_Set habe ich die Zeile
qx ($cmd);
durch
if ($cmd =~ /^\{.+\}$/) {
    eval $cmd;
} else {
    qx ($cmd);
}

ersetzt.

Damit kann ich über shutdownCmd Perl-Code und damit auch FHEM-Funktionen aufrufen, z.B.
attr wol_mediapc shutdownCmd {fhem "set mediapc shutdown"}

Der Aufruf eines externes Skriptes bleibt dabei unverändert möglich.

Grüße,

ChrisD

Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 04 Februar 2014, 08:24:22
Hallo,

danke für die schnellen Antworten!

Zitat von: ChrisD am 03 Februar 2014, 22:05:27
Damit kann ich über shutdownCmd Perl-Code und damit auch FHEM-Funktionen aufrufen, z.B.
attr wol_mediapc shutdownCmd {fhem "set mediapc shutdown"}
Der Aufruf eines externes Skriptes bleibt dabei unverändert möglich.

Das hört sich genau nach dem an, was ich brauche und anscheinend auch andere schon benötigt haben. :) Gerade der Vorteil, dass andere keine Anpassungen vornehmen müssen finde ich gut!
Kann man an diese Änderung in die offizielle Version aufnehmen?

Gruß
Siggi
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 05 Februar 2014, 14:45:24
Was muss gemacht werden, damit die Funktion ins offizielle SVN aufgenommen wird?
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Dietmar63 am 05 Februar 2014, 18:37:36
Ich werde es einbauen und einchecken. Were aber die große Lösung implementieren.
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 06 Februar 2014, 07:56:36
Danke für die Hilfe diese Funktion einzubauen! :)

Um das Thema vor der Veröffentlichung noch mal aufzugreifen: Die Heransgehensweise wie sie im Notify und im Watchdog verwendet wird, sollte alles abdecken. Hierdurch würde auch eine einheitliche Verwendung der Befehle in FHEM genutzt werden.
Hier noch mal der Auszug aus der Reference den ich meine:

define <name> notify <pattern> <command>

Execute a command when received an event for the definition <pattern>. If <command> is enclosed in {}, then it is a perl expression, if it is enclosed in "", then it is a shell command, else it is a "plain" fhem.pl command (chain). See the trigger command for testing it. Examples:

    define b3lampV1 notify btn3 set lamp $EVENT
    define b3lampV2 notify btn3 { fhem "set lamp $EVENT" }
    define b3lampV3 notify btn3 "/usr/local/bin/setlamp "$EVENT""
    define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2 $EVENT
    define wzMessLg notify wz:measured.* "/usr/local/bin/logfht $NAME "$EVENT""
    define LogUndef notify global:UNDEFINED.* "send-me-mail.sh "$EVENT""
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Dietmar63 am 06 Februar 2014, 11:24:47
Ich hatte mich zwar auf das at-Kommando bezogen, aber stimmt trotzdem.
ZitatDie Heransgehensweise wie sie im Notify und im Watchdog verwendet wird, sollte alles abdecken
Das war Absicht.
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 06 Februar 2014, 12:43:06
Zitat von: Dietmar63 am 06 Februar 2014, 11:24:47
Ich hatte mich zwar auf das at-Kommando bezogen, aber stimmt trotzdem.Das war Absicht.

Klasse. Ich freu mich schon auf die neue Version! :)
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Dietmar63 am 06 Februar 2014, 19:56:23
geändert und eingeckeckt!

Beispiele:

   
attr wol shutdownCmd    set lamp on                            # fhem command
attr wol shutdownCmd    { Log 1, "Teatime" }                   # Perl command
attr wol shutdownCmd    "/bin/echo "Teatime" > /dev/console"   # shell command
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: siggi85 am 07 Februar 2014, 19:03:55
Habs gerade getestet, funktioniert super! Schankedön! :)
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Tueftler1983 am 12 April 2016, 21:26:35
Hallo ich wollte meinen MediaPC Uber das WOL Modul ein und aus schalten.
Einschalten geht ohne Probleme aber aus nicht.

Zum ausschalten brauche ich eigentlich nur das in die adresszeile eines Browsers eingeben:
http://192.168.2.20:7762/suspend
Auf dem Win7 MediaPC läuft dafür das Tool SleepOnLan
Kann ich den Befehl über das WOL Modul über shutdownCmd absetzen?
Titel: Antw:WOL shutdownCmd --> FHEM Kommando
Beitrag von: Tueftler1983 am 12 April 2016, 22:02:31
Hallo
Es funktioniert mit dem befehl:
"wget http://192.168.2.20:7762/suspend"
Titel: Aw: WOL shutdownCmd --> FHEM Kommando
Beitrag von: zx80 am 09 Mai 2025, 22:21:36
Danke siggi85 dass du mein Problem schon vor Jahren hattest und im Wiki gefragt hast und danke Dietmar63 für die Umsetzung der tollen Lösung!