Aktualisierung 98_WOL.pm

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

Vorheriges Thema - Nächstes Thema

UliM

Hallo,
laut SVN wurde 98_WOL.pm am 11.03.13 durch user klassm auktualisiert.
Dabei wurde leider die bekannte Interferenz mit HMLAN nicht behoben,
siehe: Link

Kann klassm das bitte nachholen?

Danke+Gruß,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

UliM

Hi,
leider noch immer nicht geschehen - nach dem letzten update war mein log wieder voll von disconnected/reappeared-Meldungen.

Sollte klassm sich bis Ende Juni nicht hier melden, werde ich die ping-Zeitbegrenzung auf 1s in 98_WOL.pm einchecken, siehe Link oben.

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

maeb3

Bitte bei der Gelegenheit (Aktualisierung 98_WOL.pm) am Besten auch gleich die Thematik "IP-Adresse enthält 100" bereinigen.  
Mit
if (`ping -c 1 $ip` =~ m/100/) {
im Modul wird nach "100" in der Antwort des Pings gesucht, wie sie z.B. bei "100% packet loss" vorkommt und daraus geschlossen, dass das Gerät nicht online ist. Die "100" wird aber auch gefunden, wenn sie in der IP-Adresse enthalten ist (z.B. 192.168.10.100).

Besser wäre daher:
if (`ping -c 1 $ip` =~ m/100%/) {
mit dem %-Zeichen hinter der 100; dann wird nach "100%" gesucht und IP-Adressen mit "100" funktionieren wieder.

(siehe auch Beitrag 62653 oder Beitrag 52087

Grüße, maeb3

UliM

Hi,
eingecheckt, revision 3510.
Ab morgen per update.
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

StefanP

Hallo Uli,
ich hab gestern ein Update gemacht. Dabei ist auch die neue Version von 98_WOL auf meine FB gelangt. Danach fiel mir ein dass ich schon lange eine Änderung im WOL-Modul mitschleppe und immer zur Aufnahme in den offiziellen Code vorschlagen wollte:

In der Sub "WOL_GetUpdate" fehlt meiner Meinung der Update der STATE-Variable, so dass WOL-Objekte in der Oberfläche immer "ON" dargestellt werden.
Nach Anpassung:


sub WOL_GetUpdate($)                                                        
{                                                                            
  my ($hash) = @_;                                                          
                                                                             
  my $ip = $hash->{IP};                                                      
  #if (system("ping -q -c 1 $ip > /dev/null") == 0)                          
  ####                                                                      
  #changed 2013-07-27 by UliM                                                
  #based on Thread http://forum.fhem.de/index.php?t=msg&th=11823&goto=69801&rid=86#msg_69801
 #if (`ping -c 1 $ip`      =~ m/100/)                                                      
  if (`ping -c 1 -w 1 $ip` =~ m/100%/)                                                      
  {                                                                                        
    $hash->{READINGS}{state}{VAL} = "off";                                                  
    $hash->{READINGS}{isRunning}{VAL} = "false";                                            
    $hash->{STATE} = "off";                                                                
  } else                                                                                    
  {                                                                                        
    $hash->{READINGS}{state}{VAL} = "on";                                                  
    $hash->{READINGS}{isRunning}{VAL} = "true";                                            
    $hash->{STATE} = "on";                                                                  
  }                                                                                        
  $hash->{READINGS}{state}{TIME} = TimeNow();                                              
  $hash->{READINGS}{isRunning}{TIME} = TimeNow();                                          
                                                                                           
  InternalTimer(gettimeofday()+$hash->{INTERVAL}, "WOL_GetUpdate", $hash, 0);              
}                                                                                          


Nun wird auch der Status richtig angezeigt. Spricht was gegen die Änderung was ich übersehen hatte?
Bei mir läuft die Änderung seit ca. einem Jahr ohne Seiteneffekte.
Sorry, dass ich das erst nach deiner Änderung schreibe, aber es war mir bis zum Update (mal wieder) entfallen und da ich deinen Kommentar im Code entdeckt habe war die Zeit reif für diesen Kommentar.

Gruß StefanP

betateilchen

Zitat von: StefanP schrieb am Fr, 06 September 2013 17:32Spricht was gegen die Änderung was ich übersehen hatte?

Ja. Man sollte STATE besser nicht direkt beschreiben, weil es sonst Probleme mit stateFormat geben kann. STATE wird normalerweise automatisch aus state abgeleitet.

Das separate Setzen von VAL und TIME kannst Du Dir übrigens sparen, wenn Du die Funktion ReadingsSingleUpdate() verwendest.
Erhöht außerdem die Lesbarkeit von Quelltext erheblich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

StefanP

Hallo betateilchen,
kannst Du mir mehr zum stateFormat sagen (oder mir 'ne Quelle zum nachlesen nennen)?
'stateFormat' steht doch als Attribut gar nicht für WOL-Devices/Entities(?) zur Verfügung. Wie wird denn dann STATE ordentlich upgedated, damit's in der der Oberfläche richtig angezeigt wird?

Danke für Erleuchtung ;-)

Gruß StefanP


rudolfkoenig

Doku zu stateFormat gibts natuerlich unter http://fhem.de/commandref.html#stateFormat

Da kann man auch sehen (paar Zeilen vorher), dass es allen Modulen zur Verfuegung steht, die die "neuen" readingsUpdate Funktionen verwenden, WOL tut es noch nicht...

betateilchen

Zitat von: rudolfkoenig schrieb am Sa, 07 September 2013 07:52dass es allen Modulen zur Verfuegung steht, die die "neuen" readingsUpdate Funktionen verwenden, WOL tut es noch nicht...

Dann sollte man vielleicht mal besser an dieser Stelle ansetzen anstatt noch mehr unschöne (im Sinne von nicht mehr "zeitgemäße") Dinge einzubauen.

(ist nur so ein Gedanke und meine ganz persönliche Meinung)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

StefanP

Nun bin ich halt eher Anwender und kein Entwickler, schon gar nicht vom Modul WOL. Zeitlich bin ich momentan nicht in der Lage der (erfreulicherweise) stürmischen Entwicklung von fhem zu folgen (eigentlich bin schon ich froh wenn fhem einfach läuft). Je nachdem wie lange das letzte Update zurückliegt bin ich eher meist erstaunt/überrascht/schockiert über die vielen Neuerungen. Cooles Projekt, Respekt und Dank an alle Mitstreiter, trotzdem habt ihr mich abgehängt ;-)

Gruß StefanP

Dietmar63

Wenn ihr mich als Maintainer akzeptiert/eintragt, baue ich das Modul auf readingsUpdate um - klasm hat wenig Zeit.
Ich habe noch eine Erweiterung für NAS_Control in der Schublade, die würde ich dann mit freigeben.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

betateilchen

Wenn Du das mit dem eigentlichen/bisherigen Maintainer abgesprochen hast und er nix dagegen hat, ist doch eigentlich alles geklärt.

frisch, fromm, frei ans Werk :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dietmar63

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

ich sehe schon - ich stehe schon als Maintainer drin.
FHEM/98_WOL.pm               dietmar63            http://forum.fhem.de Unterstützende Dienste
werde mich alsbald darum kümmern.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

rudolfkoenig

>  klasm meldet sich nicht

Ich waere nicht so ungeduldig, Matthias liest vlt. nicht alle Gruppen regelmaessig, ich wuerde ihm noch Zeit geben. Er ist definitiv aktiv, siehe Link

Nach meinem willkuerlichen Regel sollte man 3 Wochen abwarten, bis man wegen nicht-aktivitaet des Betreuers selbst aktiv wird. Aber jeder freut sich ueber Patches :)


>  ich sehe schon - ich stehe schon als Maintainer drin.

Da ist aber nur Wunschdenken, in meiner Version steht klassm drin.