define d_settings dummy
setreading d_settings presence_lan-ping_absenceThreshold 2
define whatever PRESENCE lan-ping whatever 5
attr whatever absenceThreshold {ReadingsVal("d_settings","presence_lan-ping_absenceThreshold","1")}
absenceThreshold must be a valid integer number
Einzige Lösung wäre das PRESENCE Modul zu ändern, richtig?
Oder weiß jemand einen anderen Weg?
Danke und Gruß,
kroman
Hi kroman,
abgesehen davon, dass mich der Titel deiner Frage verwirrt. :-[
So geht es sicher nicht wie Du bemerkt hast, siehe auch, da steht nix von Perl:
ZitatpresenceThreshold
(Nicht im Modus "event" anwendbar)
Die Anzahl an Checks, welche in "present" resultieren müssen, bevor der Status der PRESENCE-Definition auf "present" wechselt. Mit dieser Funktion kann man die Anwesenheit eines Gerätes verifizieren bevor der Status final auf "present" geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe present" gesetzt, bis der Status final auf "present" wechselt.
Standardwert ist 1 (keine Anwesenheitsverifizierung)
Aber userattr (https://commandref.fhem.de/commandref_DE.html#userattr)sollte gehen.
Gruß Otto
Es ist nicht ueblich, dass "normale" Attribute Ihren Wert als Perl-Ausdruck auswerten, und ich meine es waere auch nicht sinnvoll damit anzufangen.
Man kann leicht die gleiche Funktionalitaet durch ein notify erreichen:define n notify d_settings:presence_lan-ping_absenceThreshold.* attr whatever absenceThreshold $EVTPART1
@Otto,
danke, aber ich bin nicht in der Lage zu durchschauen, wie global userattr meine Aufgabenstellung lösen kann.
Der Titel passt soweit denke ich :)
@Rudi,
danke, das funktioniert sicher. Nur bräuchte ich für jedes lan-ping device wieder ein notify (bzw. müsste man das eine notify pflegen falls Ausbau möglich).
Dann konfiguriere ich es lieber manuell in jedem device, da es kaum bis nie Änderungen geben wird.
Wobei... hast du ein notify für mehrere Geräte parat (ala list TYPE=PRESENCE)?
Zitat
Es ist nicht ueblich, dass "normale" Attribute Ihren Wert als Perl-Ausdruck auswerten, und ich meine es waere auch nicht sinnvoll damit anzufangen.
agree (in aller Bescheidenheit, da <> perl Experte)
warum verwendest Du ständig global? Unter global verstehe ich etwas anderes. Ich habe auch nix von global userattr gesagt.
Aber ich war im falschen Film und meinte userreadings - sorry.
Du kannst doch aber attr $NAME absenceThreshold $EVTPART1 verwenden und musst nur die Namen / den trigger fürs notify so machen, das er auf Deine Geräte anspricht.
Gruß Otto
ZitatWobei... hast du ein notify für mehrere Geräte parat (ala list TYPE=PRESENCE)?
Du meinst sowas wie
define n notify d_settings:presence_lan-ping_absenceThreshold.* attr TYPE=PRESENCE absenceThreshold $EVTPART1
Ja, das geht laut commandref: https://fhem.de/commandref_modular.html#attr :)
So werd ich's machen, danke!
Der absenceThreshold schadet auch bei lan-bluetooth und shellscript nicht.