Hallo und danke der Nachfrage,
folgende Erkenntnisse (nachdem ich in das WOL.pm Modul eingestiegen war):
1. ich verstehe zwar nicht viel von PERL, aber ich vermute mit der Zeile
if (`ping -c 1 $ip` =~ m/100/) {
im WOL.pm wird nach "100" in der Antwort des Pings gesucht, wie sie z.B. bei "100% packet loss" vorkommt und daraus geschlossen, dass das Gerät nicht online ist (isRunning = false).
Da mein NAS die IP 192.168.10.100 hat, enthält eine Ping-Antwort in meinem Fall immer die Zeichenfolge "100", auch wenn ich 0% packet loss habe, da die "100" ja in meiner IP vorkommt:
# ping -c 1 192.168.10.100
PING 192.168.10.100 (192.168.10.100): 56 data bytes
64 bytes from 192.168.10.100: seq=0 ttl=64 time=0.668 ms
--- 192.168.10.100 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.668/0.668/0.668 ms
Deswegen wurde mein Gerät immer als isRunning=false angezeigt, selbst wenn es angeschaltet war.
Ich habe daher in der WOL.pm die Zeile geändert in:
if (`ping -c 1 $ip` =~ m/100%/) {
Mit diesem zusätzlichen %-Zeichen funktioniert es bei mir.
Wenn von den PERL-Experten diese Änderung nicht aus anderen Gründen als kritisch erachtet wird, kannst du die vielleicht in das Modul noch übernehmen.
2. Für die Buffalo Linkstation funktioniert es allerdings nur, weil diese per IP-Adresse auch im Sleep-Mode per Ping erreichbar sind (es werden nur die Festplatten abgeschaltet und starten erst wieder durch die WOL Pakete). Vom Prinzip her sollte man mit WOL natürlich auch Geräte über ihre MAC Adresse aufwecken können, die nicht auf Ping's reagieren, z.B. auch Rechner, die erst vom DHCP Server eine zum Zeitpunkt des Weckens noch nicht vorhersehbare IP-Adresse erhalten. Dass ein Gerät auf Pings reagieren muss, um es wecken zu können, ist (außer bei Buffalo NAS) doch eher untypisch.
Daher ist mir unklar, warum mit
...
if (`ping -c 1 $ip` =~ m/100%/) {
readingsBulkUpdate ($hash, "isRunning", "false");
$hash->{STATE} = "off";
...
der Status des <wol> gleich wieder auf off zurückgesetzt wird, wenn ein Gerät nicht auf Ping antwortet.
Gibt es dafür einen triftigen Grund? Zumal beim Wecken später sowieso die Broadcast-Adresse (255.255.255.255) verwendet wird (UDP-mode), wenn ich die Zeilen in der WOL.pm richtig verstehe.
Wie auch immer, für meine Buffalo Linkstation funktioniert jetzt alles soweit.
Grüße,
Matthias
P.S.
Zum einfacheren Troubleshooten hätte ich es übrigens praktisch gefunden, wenn neben den Meldungen:
2013-02-07_11:11:49 Linkstation isRunning: false
auch die anderen Log Meldungen bzw. Statusänderungen noch ins gleiche Logfile geschrieben würden, z.B.
2013.02.07 10:41:25 3: WOL set Linkstation on
2013.02.07 10:41:25 3: WOL waking Linkstation with MAC 00:24:A5:7D:F6:B5 IP 192.168.10.100
2013.02.07 10:41:34 3: WOL set Linkstation off
Vielleicht sollte auch wie beim alten WOL Modul der STATE zusätzlich noch als Reading mitgeführt werden? Dann kämen doch die on und off Einträge automatisch mit in das <wol>-Logfile, oder?