98-WOL-Modul - State nicht aktualisiert

Begonnen von jove01, 05 Januar 2014, 17:00:57

Vorheriges Thema - Nächstes Thema

jove01

Hallo
da ich kein neueres Thema fand, um mein Problem zuordnen zu können, beginne ich ein neues:

Ich habe das WOL-Modul auf einer 7390 eingerichtet für einen Windows 8.1-Rechner und einen WHS V1. Für den Shutdown nutze ich das kleine Tool  SleepOnLan.

Soweit läuft das eigentlich recht gut!

Jedoch habe ich das Problem, das "State" nicht aktualisiert wird, wenn der Rechner manuell gestartet oder ausgeschaltet wird.  Mit "refresh" wird "isRunning" aktualisiert, jedoch erst, wenn das Detailbild verlassen und neu aufgerufen wird.

Meine Frage:
a) läßt sich "state" auch über das Modul aktualisieren ?
b) können bei "refresh" im Detailbild sofort die Werte aktualisiert werden ?

c) ergänzend (nicht unbedingt ein Thema des Moduls): gibt es eine Möglichkeit, state und die readings zu aktualisieren, wenn man beispielsweise das Detailbild aufruft. Ich möchte nicht unbedingt in einer Zeitschleife immer pingen ?

Danke
Jürgen

Aktuelles FHEM auf Raspi 3 und dbLog
CUL 433
HMLan Rolladensteuerung

justme1968

wenn es nur um die readings geht: state wurde in der detail ansicht noch die automatisch aktualisiert. nur alle anderen readings. aber da scheint es seit ein paar tagen ein problem zugeben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dietmar63

ZitatJedoch habe ich das Problem, das "State" nicht aktualisiert wird, wenn der Rechner manuell gestartet oder ausgeschaltet wird.  Mit "refresh" wird "isRunning" aktualisiert, jedoch erst, wenn das Detailbild verlassen und neu aufgerufen wird.

Meine Frage:
a) läßt sich "state" auch über das Modul aktualisieren ?
b) können bei "refresh" im Detailbild sofort die Werte aktualisiert werden ?

STATE bezieht sich auf den Zustand des WOL und nicht auf den Zustand des zu weckenden Geräts.
a) ... dann müßte die gesamte Logik umgebaut werden - eher nicht.
b) ja geht - habe ich gemacht und es läuft. Werde es nachher einchecken.

Zitatc) ergänzend (nicht unbedingt ein Thema des Moduls): gibt es eine Möglichkeit, state und die readings zu aktualisieren, wenn man beispielsweise das Detailbild aufruft. Ich möchte nicht unbedingt in einer Zeitschleife immer pingen ?

Das verstehe ich nicht genau. kannst du es präzisieren.

@andre:
Zitatwenn es nur um die readings geht: state wurde in der detail ansicht noch die automatisch aktualisiert. nur alle anderen readings. aber da scheint es seit ein paar tagen ein problem zugeben.

wie meinst du das? bezieht sich die Aussage auf WOL?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

justme1968

Zitat von: Dietmar63 am 05 Januar 2014, 19:52:22
wie meinst du das? bezieht sich die Aussage auf WOL?

das bezieht sich auf alle fhem devices. in der detail ansicht wird state niemals per longpoll aktialisiert. auch wenn das device einen aktualisiert wert schreibt. alle anderen readings werden mit longpoll in fhemweb automatisch aktualisiert und der timestamp wird rot. aber scheinbar gibt es hier zur zeit einen bug der das verhindert.

ach ja: wegen state vs. STATE und ob man es auf das device beziehen kann: das geht natürlich. das modul selber sollte nur state verwenden und dem user per stateFormat die möglichkeit geben jedes beliebige reading als STATE zu verwenden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

jove01

Aktuell komme ich nicht dazu, mich mit diesem Thema weiter auseinander zu setzen.
Daher vorerst danke
Jürgen
Aktuelles FHEM auf Raspi 3 und dbLog
CUL 433
HMLan Rolladensteuerung

mircoby

Hallo Dietmar,

habe manuell das Modul 98_WOL.pm aus dem trunk installiert, dabei ist mir verglichen mit dem Releasestand 5.5 folgendes Aufgefallen:

Das Kommando "refresh" sendet neben der Aktualisierung auch einen "wake" an das zu aktualisierende Gerät, was in folgendem Fall zu einem ungewünschten verhalten führt:
- Gerät (NAS) wird per WOL geweckt und startet
- alle 5 Minuten wird "refresh" gesendet um den Status im Webinterface zu aktualisieren
- wird das Gerät (NAS) zwischenzeitlich manuell heruntergefahren (nicht über WOL "off" Kommando), wird das Gerät beim nächsten "refresh" wieder gestartet -> Endlosschleife.

Ich habe mir hierzu das Modul angeschaut und schlage folgende Ändeurng vor:

In der Funktion "WOL_GetUpdate($)" soll im Abschnitt der wake($hash) Befehl entfernt/auskommentiert werden:

if ($state eq "on") {
#     wake($hash);
     if ($hash->{REPEAT} > 0) {
        InternalTimer(gettimeofday()+$hash->{REPEAT}, "WOL_GetUpdate", $hash, 0);
     }

In der Funktion "WOL_Set($@)" soll im Abschnitt "on" der wake($hash) Befehl hinzugefügt werden:

if      ($v eq "on")  {
     readingsSingleUpdate($hash, "state", $v, 1);
     Log3 $hash, 3, "[$name] waking  $name with MAC $hash->{MAC} IP $hash->{IP} ";
     wake($hash);
}

Habe diese Änderungen umgesetzt und bin am testen, bislang erfolgreich.

Kannst Du den Vorschlag bitte prüfen, kommentieren und bei positivem Befund übernehmen?

Danke & Gruß
Mirko
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

Dietmar63

Wie sieht deine Definition aus?

Der regelmäßige refresh wird nur ausgeführt, wenn $hash->{REPEAT} > 0 ist.
Und es ist Absicht, dass das in Getupdate passiert, weil diese Funktion regelmäßig aufgerufen wird.

Du kannst ggf. den Repeatparameter fortlassen. Er ist von mir eingeführt worden um Buffalo-NAS zu wecken und wach zu halten(NAS-Control). Wenn Buffalo-NAS  nämlich nicht regelmäßig ein Magicpaket geschickt bekommen, fahren sie herrunter.

Wenn jemand das zu wolende Gerät ausschaltet, kann man das nicht wirklich in fhem erkennen.




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

justme1968

@mircoby: wol ist 'nur' dazu da ein device einzuschalten (bzw. am ausschalten zu hindern). du kannst damit nicht feststellten ob etwas an oder aus ist. das geht mit dem PRESENCE modul.

du kannst beides über das powerCmd attribut des PRESENCE devices verknüpfen:

  • du legst ein WOL device an zum aufwecken an und lässt es im raum unsorted
  • du legst ein PRESENCE device an um den aktuellen status zu zeigen und steckst es dahin wo du es sehen kannst
  • du definierst dir im PRESENCE device devStateIcon und powerCmd so das beim klick auf das ausgeschaltete device per set power das WOL device zum einschalten aufgerufen wird
  • je nach system kannst du über ein passendes powerCmd das gerät auch wieder ausschalten

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

mircoby

Hallo Dietmar, hallo Andre,

danke für Eure Rückmeldungen. Ich verwende das WOL wie folgt:

- Es gibt eine Gruppe von IPs, die sofern sie online sind die NAS aufwecken sollen. Dies ist mit PRESENCE und structure gemacht:

define 8510W_WLAN PRESENCE lan-ping 192.168.10.54 60
    attr 8510W_WLAN NASRequest_structure NASRequest_total
    attr 8510W_WLAN event-on-change-reading state
define 8510W_LAN PRESENCE lan-ping 192.168.10.56 10
    attr 8510W_LAN NASRequest_structure NASRequest_total
    attr 8510W_LAN event-on-change-reading state
define FritzVPN_M PRESENCE lan-ping 192.168.10.201 10
    attr FritzVPN_M NASRequest_structure NASRequest_total
    attr FritzVPN_M event-on-change-reading state

define NASRequest_total structure NASRequest_structure 8510W_WLAN 8510W_LAN FritzVPN_M
    attr NASRequest_total clientstate_behavior relative
    attr NASRequest_total clientstate_priority present absent
    attr NASRequest_total event-on-change-reading state

define NASon notify NASRequest_total:present {if (ReadingsVal("SynologyDS710","isRunning","") eq "false") {fhem("set SynologyDS710 on")}}

-> Sofern eine der IPs aktiv wird und die NAS ausgeschaltet ist, wird ein notify mit einem WOL Paket geschickt und die NAS hochgefahren.

Hier die Definition des WOL:

define SynologyDS710 WOL 00:11:22:33:44:55 192.168.10.3
    attr SynologyDS710 stateFormat {sprintf("%s",ReadingsVal("SynologyDS710","isRunning","") eq "true" ? "on":"off")}
    attr SynologyDS710 sysCmd /usr/bin/etherwake
    attr SynologyDS710 verbose 3
    attr SynologyDS710 webCmd on:refresh

Auf der NAS wiederum läuft ein Script, welches diverse Dienste und IPs auf Aktivität überwacht. Nach 30 Minuten inaktivität, fährt diese sich selbständig wieder herunter.

Um dies im FHEM mitzubekommen, verwende ich zyklisch das "refresh" Kommando:

define NASstatusRefresh at +*00:05:00 {if ((ReadingsVal("SynologyDS710","state","") eq "on")  || ((ReadingsVal("SynologyDS710","state","") eq "refresh") && (ReadingsVal("SynologyDS710","isRunning","") eq "true"))) {fhem("set SynologyDS710 refresh")}}

Ohne Änderung des 98_WOL.pm Moduls führt das "refreshen" zu einem ungewollten Neustart der NAS. Die im vorigen Thread beschriebene Ändeurng verhindert das.

Möglicherweise verwende ich jedoch das Modul anders als gedacht!? Wozu ist der refresh sonst gedacht?

@Andre: Der Änderungsvorschlag wäre nicht über "refresh" sondern über PRESCENCE den Zustand der NAS zu überwachen um darauf zu reagieren, damit würde die Problematik des ungewollten Neustarts nicht auftreten.

Gibt es evtl. noch eine elegantere Lösung das Vorhaben umzusetzen?

Gruß Mirko




FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

justme1968

#9
das ist die 'elegante' lösung. PRESENCE ist zum überwachen da. WOL nur zum aufwecken.

das refresh ist ist wie oben schon geschrieben nicht zum überwachen sondern um immer wieder wol zu senden damit die buffalo-nas auch eingeschaltet bleiben. die gehen sonst scheinbar aus.

du musst doch nur das refresh im WOL device weg lassen (dein nas überwacht sich ja selber) und deine struktur die du schon hast (oder ein zusätzliches eigenes PRESENCE device nur fürs nas) zur anzeige des aktuellen ein/aus zustandes verwenden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

mircoby

Alles klar, Danke für die Hilfe!
Gruß Mirko
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

Dietmar63

define NASstatusRefresh at +*00:05:00 {if ((ReadingsVal("SynologyDS710","state","") eq "on")  || ((ReadingsVal("SynologyDS710","state","") eq "refresh") && (ReadingsVal("SynologyDS710","isRunning","") eq "true"))) {fhem("set SynologyDS710 refresh")}}

ist nicht notwendig, weil die Aktualisierung des NAS device automatisch alle 900 Sekunden per ping stattfindet.
Mit dem Attribut interval kannst du den Wert verändern.

Probier es aus.

Abgesehen davon steckt in refresh tatsächlich ein kleiner Fehler.
Ich meine, dass refresh das Gerät nicht wecken darf. Refresh darf nur die Attribute aktualisieren.

Wie hast du den notify gebaut?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

mircoby

Hallo Dietmar,

Das intervall muss ich noch testen.

Das notify ist wie folgt (siehe auch voriger post):
define NASon notify NASRequest_total:present {if (ReadingsVal("SynologyDS710","isRunning","") eq "false") {fhem("set SynologyDS710 on")}}

Gruß Mirko
FHEM 6.2 auf Intel NUC mit Ubuntu 20.04 LTS
BUSWARE CUL, HM-RC-12, HM-SEC-RHS, HM-WDS30-OT2-SM, HM-ES-PMSw1-DR, CCU3, Sourceforge/hausbus (Beleuchtung + Rolläden + Audio), YAMAHA_AVR

Tommy82

Hi, ich muss hier auch mal nachfragen, das Wol zeigt mir an das der Server off ist
Zitatstate
off
2014-11-16 17:42:53

Allerdings läuft er, wieso aktualisiert sich der State nicht, bzw. wie bekomme ich ihn zum aktualisieren?
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Risiko

Hallo Tommy82,

ich hatte das gleiche Problem. Im aktuellen Stand leistet das WOL-Modul das meiner Meinung nach nicht. Der State wird nicht aktualisiert.
Ich hatte deshalb ein Patch gemacht (siehe http://forum.fhem.de/index.php/topic,28904.0.html).
Leider hat Dietmar63 aktuell wenig Zeit um sich das anzusehen. Mal abwarten.

Risiko.