Hallo,
ich frage mit dem PRESENCE-Modul mein NAS (QNAP) ab. Das funktioniert.
Zusätzlich habe ich 2 Perl-Funktionen geschrieben um das NAS zu starten und zu stoppen:
sub QNAP_PowerOn
{
my $qnap_mac = "00:18:9B:D4:52:00";
my $ret = "";
$ret .= qx(/usr/bin/wakeonlan $qnap_mac);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 3, "QNAP_PowerOn: $ret";
}
sub QNAP_PowerOff
{
my $ret = "";
$ret .= qx(/usr/bin/ssh admin\@qnap /sbin/poweroff);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 3, "QNAP_PowerOff: $ret";
}
Diese funktionen auch (kann sie mit einem Notify ausführen).
Was ich jetzt gerne noch hätte, wäre dass ich sie auch durch einen Klick auf das Symbol in dem PRESENCE-Modul starten / bzw. stoppen kann.
Dazu habe ich:
define presence_QNAP PRESENCE lan-ping qnap 60 60
attr presence_QNAP devStateIcon present:general_an@00FF00:{QNAP_PowerOff()} absent:general_aus@FF0000:{QNAP_PowerOn()}
attr presence_QNAP room hidden
Ein Klick bringt mir aber:
Unknown argument {(QNAP_PowerOn())}, choose one of statusRequest
Kann man die Perl-Funktionen bei devStateIcon nicht aufrufen?
Hi,
Ich kenne das PRESENCE-Modul nicht (steht auf der "muss ich mir mal ansehen"-Liste), aber das DevStateIcon an sich kann keine Aktionen ausführen, du kannst nur angeben, welche Aktion (Statusänderung) bei Click ausgeführt werden soll.
Bin mir nicht sicher, ob PRESENCE das richtige Modul ist, um Rechner ein- und auszuschalten. Ich mache das mit WOL. Wenn du bei PRESENCE bleiben willst, brauchst du wahrscheinlich noch einen Dummy, auf den du dann mit einem NOTIFY (alternativ DOIF) reagieren kannst.
Grüße,
Oli
So etwas hatte ich "befürchtet".
Das PRESENCE-Modul will ich ja auch nicht unbedingt als Ein-/Aus-Schalter nutzen. Dafür habe ich ja die Perl-Funktionen die auf WOL zurückgreifen.
Ich wollte nur alles zusammen haben (Ein-/Aus-Schalter und Status-Abfrage, ob das NAS läuft). Ein DUMMY bekommt ja nicht mit, wenn ich das NAS "von Hand" starte.
Oder kann ich bei einem DUMMY-Schalter eine Status-Abfrage (wie ein Ping) mit einbauen?
Hab es nach etwas stöbern und Hirnschmalz noch hinbekommen.
Es gibt nur noch eine Perlfunktion:
sub QNAP_Power
{
my $state = shift;
my $qnap_mac = "00:08:9B:C3:5D:00";
my $ret = "";
if (lc $state eq "on") {
$ret .= qx(/usr/bin/wakeonlan $qnap_mac);
$ret =~ s,[\r\n]*,,g; # remove CR
} elsif (lc $state eq "off") {
$ret .= qx(/usr/bin/ssh admin\@qnap /sbin/poweroff);
$ret =~ s,[\r\n]*,,g; # remove CR
} else {
$ret .= "Unknown state $state";
}
Log 3, "QNAP_Power: ($state): $ret";
}
Und in FHEM habe ich jetzt:
define presence_QNAP PRESENCE lan-ping qnap 60 60
attr presence_QNAP devStateIcon present:general_an@00FF00:off absent:general_aus@FF0000:on
attr presence_QNAP eventMap /power on:on/ /power off:off/
attr presence_QNAP group Verfügbarkeit
attr presence_QNAP powerCmd {QNAP_Power("%ARGUMENT")}
attr presence_QNAP room hidden
attr presence_QNAP webCmd :
Damit funktioniert es so, wie ich will ;D