Modul WOL weckt ein Gerät bei FHEM Neustart

Begonnen von magenbrot, 25 Oktober 2014, 10:38:18

Vorheriges Thema - Nächstes Thema

magenbrot

Täglich um 6 Uhr wird FHEM bei mir durch Cron einmal neu gestartet. Nach dem Neustart oder bei der Initialisierung des WOL-Moduls wird ein WOL-Paket an den konfigurierten PC geschickt.
Das Problem hatte ich vor ein paar Monaten schonmal, nach einem Update war der Fehler dann behoben. Jetzt habe ich kürzlich nach längerer Zeit wieder ein Update gemacht und das Problem ist leider wieder aufgetaucht.

Im Log sieht das so aus:

2014.10.25 10:34:47 4: [wol_htpc] keeping wol_htpc with MAC bc:5f:f4:e6:ab:4c IP 192.168.1.31 busy
2014.10.25 10:34:47 5: [wol_htpc] standard wol command: /usr/bin/wakeonlan
2014.10.25 10:34:47 5: [wol_htpc] user wol command(sysCmd): '/usr/bin/wakeonlan'
2014.10.25 10:34:47 5: [wol_htpc] executing /usr/bin/wakeonlan bc:5f:f4:e6:ab:4c
2014.10.25 10:34:47 5: Triggering wol_htpc (2 changes)
2014.10.25 10:34:47 5: Notify loop for wol_htpc packet_via_EW: bc:5f:f4:e6:ab:4c

==> wol_htpc.log <==
2014-10-25_10:34:47 wol_htpc packet_via_EW: bc:5f:f4:e6:ab:4c
2014-10-25_10:34:47 wol_htpc packet_via_UDP: 192.168.1.31

==> fhem.log <==
2014.10.25 10:34:47 5: Triggering syslogger
2014.10.25 10:34:47 4: syslogger exec { logger("notice","$NAME: $EVENT");; }
2014.10.25 10:34:47 5: Cmd: >{ logger("notice","$NAME: $EVENT"); }<
2014.10.25 10:34:47 5: Triggering syslogger
2014.10.25 10:34:47 4: syslogger exec { logger("notice","$NAME: $EVENT");; }
2014.10.25 10:34:47 5: Cmd: >{ logger("notice","$NAME: $EVENT"); }<


Ich habe noch ein "notify .*" drin, das das aktuelle Event an rsyslog schickt (syslogger).

Dietmar63

Warum startest du jeden Tag neu? Das ist nicht nötig!
Wie startest du jeden Tag neu?

Wie sieht deine Definitionen des WOL aus?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

magenbrot

die Box auf der fhem läuft hat nur begrenzten Speicher (ist ein Alix2D3 mit 256MB). Dort laufen noch verschiedene andere Dienste. FHEM nimmt sich allerdings jeden Tag etwas mehr vom Speicherkuchen und gibt nichts mehr zurück, daher der automatische Neustart.

Neustart erfolgt über einen Cronjob:
# restart fhem
0 6 * * * /etc/init.d/fhem restart 2>&1 > /dev/null


Meine Config sieht so aus:

define wol_htpc WOL bc:5f:f4:e6:ab:4c 192.168.1.31
attr wol_htpc room Wohnzimmer
attr wol_htpc sysCmd /usr/bin/wakeonlan
define FileLog_wol_htpc FileLog /var/log/fhem/wol_htpc.log wol_htpc
attr FileLog_wol_htpc logtype text
attr FileLog_wol_htpc nrarchive 1
attr FileLog_wol_htpc room Logfiles

Dietmar63

Ich behautpte das hängt damit zusammen, dass du den restart über cron durchführst.
Leider kann ich nicht so genau sagen was in einem solchen Fall genau fhem macht.

Ich glaube aber mich erinnern zu können, dass die Stati der einzelnen Geräte bei einem shutdown gespeichert werden und bei einem Neustart wieder restauriert werden. Vielleicht hängt es damit zusammen.

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

magenbrot

ich hab mal den automatischen Restart rausgenommen. Hatte das jetzt ein paar Jahre so am Laufen, evtl. brauchts das ja nicht mehr ;)

Martin W

Das hängt wohl damit zusammen, das der STATE des WOL-Devices auf ON bleibt. Und bei einem Neustart wird das ausgewertet und der Aktor (und mehr ist es ja nicht) zur Sicherheit auch auf ON geschaltet, d.h. das WOL-Kommando ausgeführt)
Ich hatte ein vergleichbares Problem.
Lösung: ein notify, der nach dem Einschalten nach X sekunden (beim mir 30) über ein at den Woll wieder auf off setzt:

--
define vdr WOL 00:17:31:84:1A:E1 192.168.178.28 EW
attr vdr eventMap /off:aus/on:ein/
attr vdr room Wohnzimmer
attr vdr webCmd ein

define vdr_n notify vdr {\
   if (ReadingsVal('vdr','state','off') eq 'on' ) {\
          fhem('define at.vdr_dummy at +00:00:30 set vdr off');;\
        }\
    }
---

Tut :)