WakeOnLan: Unterschied zwischen den Versionen

Aus FHEMWiki
(+ FHEM läuft nicht als root-User.)
K (leichte Überarbeitung; WOL-Modul verlinkt)
Zeile 1: Zeile 1:
Mittels Wake On Lan (WOL) können Computer, NAS usw. von einem anderen Netzwerk-Gerät eingeschaltet werden. Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (bei PCs z.B. im BIOS oder im Treiber der Netzwerkkarte) eingeschaltet werden. Bei einigen Systemen steigt die Energieaufnahme im Standby bei aktiviertem WOL von unter einem Watt auf mehrere Watt.


 
Wake On Lan ist auch über das Fhem-Hilfsmodul [[WOL]] unterstützt.
Mittels Wake On Lan (WOL) können Computer, NAS usw. von einem anderen Netzwerk-Gerät eingeschaltet werden. Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (bei PCs z.B. im BIOS oder im Treiber der Netzwerkkarte) eingeschaltet werden. Bei einigen Systemen steigt die Energieaufnahme im Standby bei aktiviertem WOL von unter 1 W auf mehrere W pro Stunde.


== Ermitteln der MAC-Adresse ==
== Ermitteln der MAC-Adresse ==
Zunächst muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden.  
Zunächst muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden.  
Auf dem Gerät selber:
Auf dem Gerät selber:
Zeile 14: Zeile 13:


== OpenWRT ==
== OpenWRT ==
Das Wake on Lan Paket kann mit dem Programm ''etherwake'' erzeugt werden.
Das Wake on Lan Paket kann mit dem Programm ''etherwake'' erzeugt werden.
:<code>opkg update</code>
:<code>opkg install etherwake</code>


<nowiki>opkg update
Test: In der Shell folgenden Befehl eingeben (die MAC-Adresse muss natürlich angepasst werden, das Interface (hier br-lan) eventuell auch):
opkg install etherwake</nowiki>
:<code>etherwake  -i br-lan 00:06:55:5a:53:f3</code>
 
Test: In der Shell folgenden Befehl eingeben (die MAC-Adresse muss natürlich angepasst werden das Interface (hier br-lan) eventuell auch):
<nowiki>etherwake  -i br-lan 00:06:55:5a:53:f3</nowiki>
Das Gerät sollte jetzt einschalten.
Das Gerät sollte jetzt einschalten.


Funktion in der Datei ''[[99_myUtils_anlegen|99-myUtils.pm]]'' erstellen.
Funktion in der Datei ''[[99_myUtils_anlegen|99-myUtils.pm]]'' erstellen.
 
<pre><nowiki>
<nowiki>######## WakeOnLan von OpenWRT ############  
######## WakeOnLan von OpenWRT ############  
sub  
sub  
WakeOnLan
WakeOnLan
Zeile 35: Zeile 32:
  $ret =~ s,[\r\n]*,,g;    # remove CR from return-string  
  $ret =~ s,[\r\n]*,,g;    # remove CR from return-string  
  Log 1, "sendEmail to $mac: $ret";  
  Log 1, "sendEmail to $mac: $ret";  
}</nowiki>
}
</nowiki></pre>


Test: Im FHEM-Webinterface ''{ WakeOnLan('00:06:55:5a:53:f3');; }'' eingeben.
Test: Im Fhem-Webinterface <code>{ WakeOnLan('00:06:55:5a:53:f3');; }</code> eingeben.


Um auf einen Tasterdruck reagieren zu können, muss die Datei fhem.cfg ergänzt werden:
Um auf einen Tasterdruck reagieren zu können, muss die [[Konfiguration]] ergänzt werden:
<nowiki>define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan('00:17:31:fa:9b:51')}</nowiki>
:<code>define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan('00:17:31:fa:9b:51')}</code>


'''Achtung:''' Wenn FHEM nicht als root-Benutzer sondern als normaler Benutzer gestartet wird, wird etherwake nicht direkt funktionieren:
'''Achtung:''' Wenn Fhem nicht als root-Benutzer, sondern als normaler Benutzer gestartet wird, wird etherwake nicht direkt funktionieren:
<nowiki>
<pre>
fhem@XXX:/opt/fhem$ etherwake C8:CD:72:01:FF:FF
fhem@XXX:/opt/fhem$ etherwake C8:CD:72:01:FF:FF
etherwake: This program must be run as root.</nowiki>
etherwake: This program must be run as root.
</pre>
 
Fhem muss nun also etherwake irgendwie mit root-Rechten starten können. Sehr einfach kann man das erreichen, indem man das SETUID-Flag auf /usr/sbin/etherwake setzt. Das führt dazu, dass das Programm immer mit dem Benutzer ausgeführt wird dem es gehört. Da das Programm nach der Installation normalerweise root gehört, haben wir mit einem einfachen chmod +s /usr/sbin/etherwake also schon unser Ziel erreicht.
 
== Links ==
* {{Link2Forum|Topic=24777|LinkText=Forenthread}} zum Thema WOL


FHEM muss nun also etherwake irgendwie mit root-Rechten starten können. Sehr einfach kann man das erreichen, indem man das SETUID-Flag auf /usr/sbin/etherwake setzt. Das führt dazu, dass das Programm immer mit dem Benutzer ausgeführt wird dem es gehört. Da das Programm nach der Installation normalerweise root gehört, haben wir mit einem einfachen chmod +s /usr/sbin/etherwake also schon unser Ziel erreicht.
[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]

Version vom 1. Juli 2015, 13:35 Uhr

Mittels Wake On Lan (WOL) können Computer, NAS usw. von einem anderen Netzwerk-Gerät eingeschaltet werden. Wake on LAN läuft auf der ISO/OSI-Schicht 2. Diese Pakete werden i.d.R. nicht geroutet. Ein Wake on Lan Paket kann entsprechend nur innerhalb eines Netzwerksegments versendet werden. Das zu weckende Gerät muss Wake on Lan unterstützen und es muss (bei PCs z.B. im BIOS oder im Treiber der Netzwerkkarte) eingeschaltet werden. Bei einigen Systemen steigt die Energieaufnahme im Standby bei aktiviertem WOL von unter einem Watt auf mehrere Watt.

Wake On Lan ist auch über das Fhem-Hilfsmodul WOL unterstützt.

Ermitteln der MAC-Adresse

Zunächst muss die MAC-Adresse des zu weckenden Gerätes ermittelt werden. Auf dem Gerät selber:

  • Auf einem Windows-PC in einer Shell den Befehl „ipconfig /all“ eingeben
  • Auf einem Linux-PC in einer Shell den Befehl „ifconfig“ eingeben

Von einem anderen Gerät

  • Auf einem Windows-PC in einer Shell den Befehl „arp -a“ eingeben
  • Auf einem Linux-PC in einer Shell den Befehl „arp -a“ eingeben

OpenWRT

Das Wake on Lan Paket kann mit dem Programm etherwake erzeugt werden.

opkg update
opkg install etherwake

Test: In der Shell folgenden Befehl eingeben (die MAC-Adresse muss natürlich angepasst werden, das Interface (hier br-lan) eventuell auch):

etherwake -i br-lan 00:06:55:5a:53:f3

Das Gerät sollte jetzt einschalten.

Funktion in der Datei 99-myUtils.pm erstellen.

######## WakeOnLan von OpenWRT ############ 
sub 
WakeOnLan
{ 
 my $mac = shift;
 my $ret = "";
 $ret .= qx(etherwake -i br-lan $mac);
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string 
 Log 1, "sendEmail to $mac: $ret"; 
}

Test: Im Fhem-Webinterface { WakeOnLan('00:06:55:5a:53:f3');; } eingeben.

Um auf einen Tasterdruck reagieren zu können, muss die Konfiguration ergänzt werden:

define HM_Taster_01.ntfy notify HM_Taster_01.* {WakeOnLan('00:17:31:fa:9b:51')}

Achtung: Wenn Fhem nicht als root-Benutzer, sondern als normaler Benutzer gestartet wird, wird etherwake nicht direkt funktionieren:

fhem@XXX:/opt/fhem$ etherwake C8:CD:72:01:FF:FF
etherwake: This program must be run as root.

Fhem muss nun also etherwake irgendwie mit root-Rechten starten können. Sehr einfach kann man das erreichen, indem man das SETUID-Flag auf /usr/sbin/etherwake setzt. Das führt dazu, dass das Programm immer mit dem Benutzer ausgeführt wird dem es gehört. Da das Programm nach der Installation normalerweise root gehört, haben wir mit einem einfachen chmod +s /usr/sbin/etherwake also schon unser Ziel erreicht.

Links