FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Superposchi am 02 April 2022, 19:06:52

Titel: PC mit WOL aufwecken
Beitrag von: Superposchi am 02 April 2022, 19:06:52
Hallo, habe vor kurzem eine Anleitung zum Aufwecken von Netzwerkgeräten per WOL aus Fhem heraus gefunden.

Leider klappt es nicht und das erstellte Device wird immer als on angezeigt und es lässt sich weder starten noch herunter fahren.
Wer hat Erfahrungen mit dem Modul oder der materie und kann mir etwas helfen?

Hier das List des Device:
Internals:
   DEF        D8:BB:C1:3D:XX:XX 192.168.XX.XX UDP
   FUUID      623cc113-f33f-6c14-9985-08d3a50f9427b14f
   FVERSION   98_WOL.pm:v1.5.0-s24102/2021-03-27
   IP         192.168.XX.XX
   MAC        D8:BB:C1:3D:XX:XX
   MODE       UDP
   NAME       Workstation
   NR         307
   REPEAT     000
   STATE      on
   TYPE       WOL
   VERSION    1.05
   READINGS:
     2022-04-02 18:55:22   active          off
     2022-04-02 19:02:22   isRunning       true
     2022-04-02 18:55:22   packet_via_EW   none
     2022-04-02 18:55:22   packet_via_UDP  none
     2022-04-02 19:02:22   state           on
   helper:
Attributes:
   alias      Workstation
   devStateIcon on:it_pc@green:off off:it_pc@grey:on
   group      Geräte
   icon       it_pc
   interval   60
   room       Wohnung->Schlafzimmer
   shutdownCmd "net rpc shutdown -I Workstation -U UserShutdown%fhem"
   useUdpBroadcast 192.168.178.255


IP und MAC-Adresse habe ich unkenntlich gemacht.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 02 April 2022, 19:44:12
Wenn er immer on anzeigt, ist die IP Adresse immer pingbar.

Läuft FHEM bei Dir im Docker? da geht die UDP Methode uU nicht.

Fürs shutdown hast Du alles vorbereitet? https://heinz-otto.blogspot.com/2015/04/computer-mit-fhem-und-ausschalten.html

Ist das Gerät prinzipiell mit anderen Methoden per WOL zu wecken? Fritzbox, WOL Scripts, APPs auf dem Smartphone.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 02 April 2022, 22:28:10
Ja, Fhem läuft bei mir im Docker auf dem NAS.

Den speziellen Blogeintrag kenne ich noch nicht, hab nur alle Schritte durchgeführt, die in der gefundenen Anleitung standen. Werde mir den Blog morgen Abend mal anschauen.

Hab nicht alles durchprobiert, aber WOL klappt auf jedenfall über die Fritte und ne Android-App.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 02 April 2022, 22:47:31
Ok dann funktioniert WOL prinzipiell, aber eben nicht aus docker - kann wie gesagt so nicht.
Du kannst relativ einfach die Fritzbox verwenden, wenn Du das Fritzbox Modul im Einsatz hast:
https://forum.fhem.de/index.php/topic,87714.msg968701.html#msg968701
Du kannst den Docker Host oder einen anderen verwenden - wenn Du ssh mit public Key eingerichtet hast, mehrere Varianten:
https://forum.fhem.de/index.php/topic,115793.msg1101835.html#msg1101835

Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 02 April 2022, 23:15:05
Mir geht es eigentlich weniger ums Ein-/Ausschalten, sondern vielmehr um die Feststellung ob der PC läuft oder nicht.
Das Ein-/Ausschalten ist nur ein nettes Gimmick zusätzlich.

Hatte auch mal eine andere Variante mit einem Tool auf dem PC (WinConnect), doch das wahr nicht wirklich 100%ig korrekt am arbeiten.

Werde mir trotzdem mal deine Links morgen in Ruhe ansehen.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 02 April 2022, 23:37:06
Zitatum die Feststellung ob der PC läuft oder nicht
Naja, dass er als immer "on" angezeigt wird, ist komisch. Das WOL Modul ermittelt das mittels ping.

Ansonsten kannst Du das auch mit einem Presence Device machen. Dort könntest Du anstatt Ping auch eine Funktion verwenden und ein bestimmtes Port ermitteln. Ich will oft nicht wissen ob der PC pingbar ist, sondern ob er einen bestimmten Dienst aktiviert hat. Beispiel: Fileserver "oben": Port 445.
Dazu habe ich ne simple function in der 99_myUtils
sub ServiceMonitor {
    my ($host, $port)    = @_;
    return qx( if nc -z -w 1 $host $port 2>/dev/null;then printf 1; else printf 0; fi; );
}

defmod SMBomv1 PRESENCE function {ServiceMonitor("omv1","445")}


WOL Device mit Modus CMD
So gehts mit der Fritzbox. Das devspec für die Fritzbox kannst Du natürlich anpassen (falls Du mehrere hast).
defmod Workstation WOL D8:BB:C1:3D:XX:XX 192.168.XX.XX CMD
attr Workstation wolCmd get TYPE=FRITZBOX tr064Command Hosts:1 hosts X_AVM-DE_WakeOnLANByMACAddress NewMACAddress $MAC
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 04 April 2022, 08:09:11
Das er immer "on" ist irritiert mich genauso. Immer "off" könnte ich eher verstehen wenn die Verbindung nicht existiert.

Hatte es zwischendurch auch mal mit einem Presence mit lan-ping probiert, aber da wurde das device dauerhaft als absend angezeigt. Dazu gibt es aber ja jede Menge Meldungen im Forum.

Das mit dem Dienst klingt interessant. Funktioniert das denn dann? Ist ja das gleiche Modul wie bei lan-ping, oder nicht?

Heißt der Dienst dann bei Windows omv1 oder wie muss ich mir das vorstellen?
Komme mit Perl noch gar nicht wirklich klar.
Theoretisch könnte man das mit mehreren Diensten parallel machen, oder?

Muss ich bei dem TR064 Befehl das $Mac noch durch die Mac-Adresse ersetzen oder holt er sich die selbsttätig aus dem Device?

Deine Links habe ich mir angesehen aber nicht wirklich verstanden. Das TR064-Ding kannte ich zumindest von der Einrichtung der Fritzbox her. Kann also nachvollziehen wie es funktionieren sollte.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 04 April 2022, 09:44:24
Zitat von: Superposchi am 04 April 2022, 08:09:11
Funktioniert das denn dann? Ist ja das gleiche Modul wie bei lan-ping, oder nicht?
Ja. bei mir schon.
Die sub ServiceMonitor kennt zwei Übergabeparameter $host und $port - das ist doch sprechend, oder? host ist entweder ein Hostname oder eine IP Adresse, muss vom System per DNS aufgelöst werden können. port ist die Portnummer, die man abfragen will ob sie "offen" ist, also per TCP Verbindungen zulässt. Mann könnte auch offene UDP Ports mit leichten Änderungen im Code abfragen.
ZitatHeißt der Dienst dann bei Windows omv1 oder wie muss ich mir das vorstellen?
omv1 ist mein Host den ich abfragen.
ZitatTheoretisch könnte man das mit mehreren Diensten parallel machen, oder?
Die Frage versteh ich nicht. Also parallel wird nicht funktionieren, seriell schon. Also mehrere Hosts von mir aus mehrere Ports pro Host.
Ich verwende das auch in WOL Devices um nicht nur zu wissen, dass es per Ping erreichbar (on) ist, sondern um zu wissen das ein Service "oben" ist.
attr OpenMediaVault userReadings smbRunning  {ServiceMonitor('omv1','445')}
oder auch so
attr LPKW11 userReadings rdpRunning {ServiceMonitor(InternalVal($name,'IP',''),'3389')}

In meinem Codeschnipsel für TR064 musst Du Deine MAC Adresse und IP Adresse in der ersten Zeile richtig eintragen, der Rest sollte so laufen wie er ist. $MAC wird vom Modul ersetzt. Auch zu finden in der Doku (https://fhem.de/commandref_DE.html#WOL).
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 04 April 2022, 10:09:17
Die Übergabeparameter sind sicher klar. Allerdings der Zusammenhang nicht.
Ich kenne Dienste auf dem PC lediglich als laufende Prozesse und Ports als Kanäle durch die Informationen rein/raus gehen, die aber an der Fritzbox geöffnet werden, nicht am PC selbst.

Was ist der Host? Der PC, der Router oder ein Dienst auf dem PC? Da liegt das Verständnisproblem.

Mit parallel meine ich mehrere verschiedene gleichzeitig, so wie du schreibst, mehrere Ports an einem Host (vorausgesetzt Host meint den Dienst auf einem PC). Mir ist aber die Vocabel "oben" in dem Zusammenhang nicht ganz klar, da Dienste (Prozesse) auf dem PC ja entweder laufen oder gestoppt sind, also an oder aus. Ich kann nur vermuten das du mit "oben" an meinst, richtig?
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 04 April 2022, 10:45:12
Zitat von: Superposchi am 04 April 2022, 10:09:17
und Ports als Kanäle durch die Informationen rein/raus gehen, die aber an der Fritzbox geöffnet werden, nicht am PC selbst.
Da liegst Du völlig daneben. Du meinst Ports die Du am Router ins Internet öffnest, darum geht es nicht. Es geht um Ports auf einem Device, wo im Hintergrund ein Dienst lauscht und bereit ist Daten zu empfangen. Beispiel:
Ein smb (Windows File) Server lauscht u.a. auf Port 445
Ein ssh Server lauscht auf Port 22 usw.

Zitat von: Superposchi am 04 April 2022, 10:09:17
Was ist der Host? Der PC, der Router oder ein Dienst auf dem PC? Da liegt das Verständnisproblem.
Der Host ist die Netzwerkadresse an der Du ein offenes Port abfragen willst. Wenn Du wissen willst, ob Deine Windows PC den File und Druck Dienst aktiviert hat, ist es der Name Deines Windows PC. Wenn Du wissen willst ob Dein Router per HTTP seine Weboberfläche aktiv hat ist es der Name Deines Routers.
Zitat von: Superposchi am 04 April 2022, 10:09:17
Mit parallel meine ich mehrere verschiedene gleichzeitig, so wie du schreibst, mehrere Ports an einem Host (vorausgesetzt Host meint den Dienst auf einem PC). Mir ist aber die Vocabel "oben" in dem Zusammenhang nicht ganz klar, da Dienste (Prozesse) auf dem PC ja entweder laufen oder gestoppt sind, also an oder aus. Ich kann nur vermuten das du mit "oben" an meinst, richtig?
FHEM ist ein single Thread, eine Perl Sub wie hier gezeigt wird gestartet und nach deren Ende geht es weiter im System. Deswegen geht parallel, mit der Sub über die wir reden, nicht.
Ein Dienst kennt mehrere, stabile und transiente Zustände: stopped, starting, running, shutdown/stopping. Die kann ich von außen nicht erkennen. Von außen erkenne ich, ob er das Port geöffnet hat oder nicht. Er sollte fertig mit starten sein, wenn er das Port öffnet um Daten zu empfangen. Ich meine es so:
stopped ist unten
running ist oben
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 06 April 2022, 08:17:29
Danke für die Ausführungen und ja du hast Recht, ich bin von Ports am Router ins Internet ausgegangen. Ist halt etwas schwierig wenn verschiedene Dinge gleiche Begrifflichkeiten nutzen.

Ich werde mich mal mit den Dingen auseinander setzen und versuchen es zu analysieren.
Soweit ich es verstehe, müsste ich dein "omv1" bei mir durch "Workstation" (Bios-Name des Rechners) ersetzen, oder? Warum wird hier nicht besser eine IP oder Mac-Adresse genutzt, wäre doch eindeutiger, oder nicht?
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 06 April 2022, 09:33:47
Zitat von: Otto123 am 04 April 2022, 09:44:24
host ist entweder ein Hostname oder eine IP Adresse
Der übliche Weg um auf Geräte im IP Netzwerk zuzugreifen sind IP Adressen. Für den Menschen hat man DNS (Nameserver) geschaffen, die setzen Namen zu IP Adressen um. Ein Nameserver für MAC Adressen ist mir nicht bekannt.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 06 April 2022, 11:09:26
Das ist mir klar.
Ich meinte nur weil theoretisch ja mehrere Rechner im Netzwerk gleich heißen könnten.
Namen müssen ja nicht eindeutig sein.

Nur darum die Rückfrage.
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 06 April 2022, 11:29:10
im DNS  (https://de.wikipedia.org/wiki/Domain_Name_System)müssen Namen eindeutig sein! Ansonsten wird's lustig  ;D
ZitatBios-Name des Rechners
Mir ist nicht bekannt, dass Rechner übers BIOS einen Netzwerknamen bekommen. Bestenfalls eine SystemID?
Viele Geräte gehen dazu über automatische, eindeutige Namen zu vergeben indem sie die / oder Teile der / MAC Adresse in den Namen einbauen, da MAC Adressen auch eindeutig sind.

Du kannst zwar selbst jeden Rechner mit Willi anreden, aber in einem Netzwerk muss zumindest der FQDN eindeutig sein!
Im Windows Netzwerk muss auch der maximal 15 stellige Windows (NetBIOS (https://de.wikipedia.org/wiki/NetBIOS)) Name eindeutig sein. Du meintest den? Da heisst mein Beispiel eben omv1 und deines Workstation - richtig  ;D
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 06 April 2022, 15:41:38
Zitat von: Otto123 am 02 April 2022, 23:37:06
Naja, dass er als immer "on" angezeigt wird, ist komisch. Das WOL Modul ermittelt das mittels ping.
Dazu sind mir gerade zwei Sachen aufgefallen:
Ich habe ein selbst gebautes Docker Image, da fehlt wirklich ping. Da zeigt er immer on - egal was ich tue. Sieht man aber im Log oder mit {qx(which ping)}
Im "normalen" FHEM Image ist ping enthalten, aber einmal auf on wird nicht wieder gelöscht...
Das attr interval ist offenbar nicht vorbelegt und man muss es selbst setzen!
ein attr Workstation interval 30 fragt bei Dir dann alle 30 sec den Status ab. Oder Du machst machst manuell set Workstation refresh - Achtung, das braucht eine Weile bis die Rückmeldung  da ist! und die erste Abfrage geht auch mal schief -> BlockingCall for .... was aborted
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Superposchi am 09 April 2022, 16:24:19
Ja ich meinte NetBios-Name. In den meisten IP-Searchern steht immer nur BIOS-Name, deshalb hab ich das wohl irgendwann übernommen.
Und genau, mein Rechner ist sowohl im NetBios als auch in der Windowsoberfläche mit Workstation benannt.

Ich habe eine Fhem-Instanz von den Docker-Hub-Seiten runtergeladen, keine Ahnung ob da ping mit dabei ist oder nicht. Wo kann man den "{qx(which ping)}" denn zum Test eingeben? In der Fhem-Oberfläche?
Wenn du aber schreibst, dass er immer auf on bleibt, wenn er einmal gesetzt ist, spielt es ja eigentlich keine Rolle, oder?
Intervall habe ich auf 60 stehen, also alle 60 Sekunden. Manueller Refresh ändert nichts, egal wie oft ausgeführt.

Hier noch mal das aktuelle List:
Internals:
   DEF        D8:BB:C1:3D:XX:XX 192.168.XXX.XXX UDP 60
   FUUID      623cc113-f33f-6c14-9985-08d3a50f9427b14f
   FVERSION   98_WOL.pm:v1.5.0-s24102/2021-03-27
   IP         192.168.XXX.XXX
   MAC        D8:BB:C1:3D:XX:XX
   MODE       UDP
   NAME       Workstation
   NR         307
   REPEAT     60
   STATE      on
   TYPE       WOL
   VERSION    1.05
   READINGS:
     2022-04-07 18:57:35   active          off
     2022-04-09 16:17:57   isRunning       true
     2022-04-07 18:57:35   packet_via_EW   none
     2022-04-07 18:57:35   packet_via_UDP  none
     2022-04-09 16:17:57   state           on
   helper:
Attributes:
   alias      Workstation
   devStateIcon on:it_pc@green:off off:it_pc@grey:on
   group      Geräte
   icon       it_pc
   interval   60
   room       Wohnung->Schlafzimmer
   shutdownCmd "net rpc shutdown -I Workstation -U UserShutdown%fhem"
   useUdpBroadcast 192.168.178.255
Titel: Antw:PC mit WOL aufwecken
Beitrag von: Otto123 am 09 April 2022, 18:11:51
{qx(which ping)}Ist ein Perl Ausdruck der so wie er ist in der FHEM Kommandozeile ausgeführt werden kann.
Wenn Du Dein WOL Gerät mal auf verbose 4 stellst, siehst Du die Ausführung vom Ping im Log. Vielleicht fällt Dir dabei was auf.