Aktualisierung 98_WOL.pm

Begonnen von UliM, 21 März 2013, 10:44:09

Vorheriges Thema - Nächstes Thema

Matthias

Hi,

sorry, ich komme nicht dazu ständig das ganze Forum zu lesen. Danke Rudolf für den Hinweis auf den Thread hier! Wenn dietmar64 das Modul übernehmen will, habe ich nichts dagegen. Vermutlich kennt er die FHEM Interna sowieso (wesentlich) besser als ich. Also: Feel free!

Matthias

Dietmar63

Hallo,

bin wieder aus dem Kurzurlaub zurück - werde mich der Sache demnächst annehmen.
Wird ein wenig dauern, weil auch die Doku angepasst werden muss.

Wenn ich soweit bin, werde ich über das Forum einen zweiwöchigen Test anstoßen.
Für 5.5 wird es wohl noch nicht reichen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

volschin

Hallo zusammen,
ich bin auch gerade dabei das Modul zu testen. Dabei ist mir aufgefallen, dass der Status anscheinend nicht korrekt aktualisiert wird.

Wie im Screenshot erkennbar steht in den Readings im status korrekt on in STATUS aber ???.

Das ist doch sicher ein Bug, oder?
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Dietmar63

Und hier der von mir angekündigte zweiwöchige Testphase für die Neuerung NAS_Control implementiert in 98_WOL.

Das Modul ist nebenbei komplett überarbeitet worden und bietet jetzt die Möglichkeit das Magicpaket regelmäßig an ein Gerät zu senden. Dies ist notwendig um bestimmte NAS(von Buffalo) wach zu halten. Auf mancher Hardware funtioniert WOL nicht richtig. Das dürfte an der speziellen hardware bzw. firewalls liegen. Ich habe nur eine FB 7270 zur Verfügung und kann nur dort Tests durchführen. Bei anderer Hardware bin ich darauf angewiesen, dass ihr testen helft.

Die Ursprünge und die Entwicklung der Funktion nas_control kann hier nachgelesen werden:
http://forum.fhem.de/index.php?t=msg&goto=80341&rid=405&srch=nas_control#msg_80341
Wir haben uns entschlossen kein eigenes Modul zu erstellen, sondern die Funktionalität in 98_wol.pm einzubauen.

Die alten Definitionen sollten so wie vorher funktionieren(Aufwärtskompatibilität)!
Wer also Zeit und Interesse hat - bitte testen, Doku ansehen und Feedback senden.

Eine komplette Definition könnte also so aussehen:

define NAS                    WOL 00:24:A5:A6:10:E0 192.168.2.196 UDP 240
attr   NAS                    interval 3600
attr   NAS                    event-on-change-reading isRunning, STATE


Das Gerät NAS wird also alle 240 Sekunden per UDP-Methode mit einem Magicpaket versorgt.
Die alten Definitionen
define NAS                    WOL 00:24:A5:A6:10:E0 192.168.2.196
sollten wie vorher funktionieren.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

StefanP

Hallo,
ich benutze das Wol-Modul eigentlich nur um Geräte auf ihren Betriebszustand zu überwachen, nicht um sie einzuschalten. Geht das weiterhin?
Übersetzt Du den commandref-Teil noch? Ansonsten könnte ich Dir wenigstens da Unterstützung anbieten.

Gruß StefanP

Dietmar63

Ja - es sollte weiterhin funktionieren.

Man kann aber jetzt mit

attr   NAS                    interval 3600

das Abfrageintervall verändern.
Bisher war es auf 15 Minuten fest eingestellt.

Eigentlich ist für deinen Zweck Presence gedacht. Es ist viel flexibler einsetzbar.

ZitatÜbersetzt Du den commandref-Teil noch?
Wenn die Test ok sind, werde ich es eventuell übersetzen. Es ist bis dahin vielleicht noch Verbesserung an der Doku notwendig.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

StefanP

Hallo Dietmar,

ZitatEigentlich ist für deinen Zweck Presence gedacht. Es ist viel flexibler einsetzbar.
stimmt, aber als ich auf die Idee kam den Fernseher zu überwachen, um das Grundlicht zu schalten, gab's Presence noch nicht; da hab' ich eben Wol "mißbraucht". Die Manipulation des Abfrageintervalls ist cool, da hatte ich direkt im Code 180 Sekunden gesetzt.

ZitatJa - es sollte weiterhin funktionieren.
Aber während das Device an ist, schickst Du doch regelmäßig MagicPackets (So ich deinen Code richtig verstehe). Wäre es nicht eine Idee noch den Mode "none" oder so einzuführen?

Ich werd' dein Modul auf jeden Fall bei mir (Fhem auf FB7390, WOL überwacht zwei Mediengeräte) testen und berichten.

Gruß StefanP

Dietmar63

ZitatAber während das Device an ist, schickst Du doch regelmäßig MagicPackets (So ich deinen Code richtig verstehe). Wäre es nicht eine Idee noch den Mode "none" oder so einzuführen?

ja - aber nur dann wenn die Angabe repeat (Zeile 164) gesetzt ist:


(siehe Anhang / see attachement)


Also:
Die Überwachung(per ping) findet immer statt.
Das Gerät wird nur dann ge'wol't, wenn einmalig der Befehl "set xxx on" gesendet wird. Und dies wird nur dann wiederholt durchgeführt, wenn bei der Definition des wol der Parameter repeat mitgegeben wird. Die Wiederholung wird durch den Aufruf der Funktion InternalTimer(...+$hash->{REPEAT}...) erreicht.
 
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

StefanP

Hallo Dietmar,
jetzt hab' ich's auch kapiert ;-)
Mein Perl ist nicht ganz so fließend.

Gruß StefanP

Dietmar63

kein Problem.

Ich habe versucht die Erweiterung einzubauen, ohne die alte Funktionalität zu verändern.

Intern gibt es aber starke Veränderungen:
Ich habe festgestellt, dass in den Funktionen Parameter genutzt werden, die nicht übergeben wurden. Wie es möglich war, dass 98_wol trotzdem funktioniert hat, bleibt für mich im Dunkeln. Das Modul funktionierte auf meiner Fritte erst nachdem ich die Parameter mitgegeben hatte.

Aktuelle Version von 98_wol in 5.4:


(siehe Anhang / see attachement)


In Zeile 149 wird $host verwendet, eine Variable, die in Zeile 134 nicht übergeben wird: ???

Die Versorung von $host mit 255.255.255.255 in Zeile 143 funktionierte bei mir nicht.
 
Viel Lesen und Testen brachte bei mir die Erkenntnis, dass es möglich war mein NAS dann zu wecken, wenn ich als IP die Originaladresse des NAS 192.168.2.196 oder die Broardcastadresse 192.168.2.255 weitergegeben hatte.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

StefanP

Hallo Dietmar,
ZitatDie Versorung von $host mit 255.255.255.255 in Zeile 143 funktionierte bei mir nicht.
Hast Du dir $host mal nach Zeile 143 ausgeben lassen? Vielleicht ist es ja doch schon gesetzt.

Ich habe deine Version bei mir eingesetzt. Meine bisherigen Aufrufe wie "define DerBreite WOL 5C:33:8E:83:91:26 192.168.23.184 180" funktionieren bei deiner Version natürlich nicht. Ob die refresh-zeit aber jemals funktioniert hat oder nur ignoriert wurde, muß ich nochmal nachvollziehen. Leider ist der STATE immer noch nicht gleich isRunning, d.h. man sieht in der normalen Anzeige nicht den aktuellen Zustand des überwachten Devices (das hatte ich bei mir immer "weggepatcht"). Wahrscheinlich hast Du recht und ich werde für meinen Nutzen wirklich auf Presence umsteigen. Ich suche jetzt aber mal meine WOL-fähigen Geräte zusammen um Dir ein paar Tests zu liefern.

Gruß StefanP

Dietmar63

Zitatdefine DerBreite WOL 5C:33:8E:83:91:26 192.168.23.184 180
kann auch nicht funktionieren. Zwischen der IP und 180 ist noch die Methode notwendig mit der geweckt werden soll: EW oder UPD oder BOTH.
etwa so:
define NAS                    WOL 00:24:A5:A6:10:E0 192.168.2.196 UDP 240


ZitatLeider ist der STATE immer noch nicht gleich isRunning, d.h. man sieht in der normalen Anzeige nicht den aktuellen Zustand des überwachten Devices (das hatte ich bei mir immer "weggepatcht").

Das ist auch nicht beabsichtigt.
Der state sagt etwas über den Zustand des WOL aus, ob derzeit der Weckmodus eingeschaltet ist oder nicht. Und das Reading isRunning sagt etwas darüber aus, ob das abhängige Gerät eingeschaltet ist(auf ping reagiert). Diese beiden Zustände können natürlich auseinanderlaufen, wenn auch nur für kurze Zeit.

Mit "set NAS on" wird das wol angeschaltet und die Magicpakete versandt(eins oder mehrere). Wenn das abhängige Gerät dann eingschaltet ist und auf ping reagiert, ist das Reading isRunning true.

Ich sehe keinen Bedarf etwas zu ändern. Vielleicht mußt die die Logik "Gerät ist an" auf das Reading isRunning umbauen. Dann hast du was du willst. Auf isRunning könnte man sogar ein notify einrichten.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

ZitatHast Du dir $host mal nach Zeile 143 ausgeben lassen? Vielleicht ist es ja doch schon gesetzt.

ja - habe ich und es ist in der alten Version von 98_wol nicht gesetzt bzw. es ist auf 255.255.255.255 gesetzt und damit wird das Magicpaket an 255.255.255.255 gesendet und kommt bei mir nirgends an.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

StefanP

Zitat von: Dietmar63 schrieb am So, 29 September 2013 15:31Vielleicht mußt die die Logik "Gerät ist an" auf das Reading isRunning umbauen. Dann hast du was du willst. Auf isRunning könnte man sogar ein notify einrichten.
Die Logik basiert auch auf dem isRunning-Reading. Ich hatte STATE = isRunning gepatcht, weil dadurch einfach der Betriebs-Status des Geräts als Icon dargestellt wurde. Wie gesagt, hatte ich WOL benuzt und verbogen weil's sonst nix gab.

Gruß Stefan

maeb3

Hallo zusammen,

ich habe das neue Modul bei mir mal eingespielt und für das Wecken und "kontinuierliche am Laufen halten" meiner Buffalo Linkstation Mini konfiguriert (UDP-Methode; repeat alle 180 Sekunden; Ping-Check alle 3600 Sekunden).

Bisher funktioniert alles so, wie ich es erwarte.

Ein Fehler ist mir noch aufgefallen:

In "sub WOL_Initialize" steht
$hash->{AttrList}  = "interval shutdownCmd".
                        $readingFnAttributes;

Es muss aber ein Leerzeichen hinter shutdownCmd und vor das 2. Anführungszeichen, also
$hash->{AttrList}  = "interval shutdownCmd ".
                        $readingFnAttributes;

denn ohne das Leerzeichen gibt es im FHEM Frontend als auswählbares Attribut in der DropDown-Liste nicht "shutdownCmd" und "event-on-change-reading", sondern nur den ungültigen Wert "shutdownCmdevenet-on-change-reading". Das Leerzeichen muss also da noch rein.

Grüße,
 Matthias