FHEM - Hausautomations-Systeme > 1Wire

[erledigt] OWDevice feature request

<< < (3/6) > >>

erwin:
Sorry Boris,
ich hab jetzt noch einen kleinen Bug entdeckt - (..meine Änderungen...) während startup kommt:

--- Code: ---PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/11_OWDevice.pm line 725
--- Ende Code ---
Kannst du bitte die Zeile 725 ändern:

--- Code: ---#  return if($attr{$name} && $attr{$name}{disable} == 1);
  return if(ReadingsVal($name,'disable',1) == 1);
--- Ende Code ---
danke Erwin

Dr. Boris Neubert:
Klar!

Kannst Du mir bitte wieder Deine getestete Version anhängen? Das minimiert das Fehlerpotential bei mir  :P

Viele Grüße
Boris

Beta-User:
Zwischenfragen:
- warum "1" als default?
- warum ReadingsVal() bei nummerischem "Zwangsergebnis"? (=>ReadingsNum())
- warum überhaupt nummerisch?
- warum nicht gleich IsDisabled() aus fhem.pl? Das würde ggf. direkt auch "disabledForIntervals" erlauben, was sich aber mit dem Löschen des Timers beißt (solange das Attribut aber nicht zugelassen ist, dürfte es auch egal sein...). Jedenfalls wäre es dann von den syntaktischen Anforderungen an den Attributwert 1:1 mit anderen Modulen vergleichbar...
(- warum die Klammern bei "nachgelagertem if"? Da kann man die genausogut weglassen)

erwin:
Hi Beta-User!

ReadingsVal vs. ReadingsNum -> du hast natürlich recht!

--- Zitat ---- warum überhaupt nummerisch?
- warum nicht gleich IsDisabled()
--- Ende Zitat ---
..disabled attr hat 0,1 als erlaubte werte, minimale Änderung an bestehendem code - der gehört Boris!
Das heutige Problem war ausschließlich im startup schlagend. (attr noch nicht verfügbar...)
l.g. erwin

edit: Readings(Val|Num) ist natürlich Blödsinn, mein Fehler, muss AttrVal heissen... Danke fürs anstupsen!

Beta-User:

--- Zitat von: erwin am 27 August 2021, 09:41:23 ---disabled attr hat 0,1 als erlaubte werte, minimale Änderung an bestehendem code - der gehört Boris!

--- Ende Zitat ---
Jein: Das "Problem" ist, dass manche "Schlauberger" die cfg editieren oder ggf. über die Kommandozeile Werte setzen. Wenn dann der Modulcode nicht eine Validierung durchführt (?), kommt "Käse" raus, der schwer zu entdecken ist. Die Validierung kann man sich schenken, wenn man einfach nur prüft, ob "wahr" (also nicht 0 oder undef).

IsDisabled (an der richtigen Stelle, s.U.) hat den weiteren Vorteil, dass man "inactive" als state setzen könnte. (k.A., ob das zum sonstigen Modulkonzept paßt, nur eine Anmerkung).


--- Zitat ---Das heutige Problem war ausschließlich im startup schlagend. (attr noch nicht verfügbar...)

--- Ende Zitat ---
Dann sollte man m.E. die eigentliche Initialisierung nach "$init_done" erledigen (InternalTimer-Aufruf), weil mAn. zu diesem Zeitpunkt auch kein ReadingsVal ein irgendwie sinnvolles Ergebnis bringt (statefile wird erst nach der cfg geladen).

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln