FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ajuba am 05 April 2025, 23:24:57

Titel: Korrekter Syntax für Notify
Beitrag von: Ajuba am 05 April 2025, 23:24:57
Hallo
Ich scheitere wieder mal am korrekten Syntax.

Ich möchte bei Änderung des Dummy "Salzfuellung" ein Notify auslösen.
Es soll dann in das Device "WasserRechner", UserReading "mySalzZiel" den Wert des Devices "WasserRechner", Reading "Watermeter_value_CounterCurrent" + 50 schreiben.

in der Kommandozeile funktioniert das und gibt den Wert aus
{ ReadingsVal("WasserRechner","Watermeter_value_CounterCurrent","0") +50 }
Das schreibt brav 50 in das UserReading
define nSalz notify Salzfuellung:.* set WasserRechner mySalzZiel 50
Aber die Kombination schreibt genau "{ ReadingsVal("WasserRechner","Watermeter_value_CounterCurrent","0") +50 }" in das Reading anstatt der Zahl.
define nSalz notify Salzfuellung:.* set WasserRechner mySalzZiel { ReadingsVal("WasserRechner","Watermeter_value_CounterCurrent","0") +50 }
Was ist an der Kombination falsch und bitte auch warum?
Titel: Aw: Korrekter Syntax für Notify
Beitrag von: Otto123 am 06 April 2025, 00:20:09
Hi,

das nennt sich set magic und dabei müssen zusätzliche Klammern () innerhalb der Perl Klammern {} gesetzt werden.
define nSalz notify Salzfuellung:.* set WasserRechner mySalzZiel {( ReadingsVal("WasserRechner","Watermeter_value_CounterCurrent","0") +50 )}Beschreibung in der commandref unter set: https://fhem.de/commandref_modular_DE.html#set

Aber ein "echtes" userReadings wäre einfacher? Und für Zahlen auch gerne ReadingsNum() verwenden. ;)
attr WasserRechner mySalzZiel:Watermeter_value_CounterCurrent.* { ReadingsNum($NAME,"Watermeter_value_CounterCurrent",0) +50 }Oder muss das Ganze fremd getriggert werden: Device Salzfuellung? Dann vergiss die falsche Idee. ;)

Gruß Otto
Titel: Aw: Korrekter Syntax für Notify
Beitrag von: betateilchen am 06 April 2025, 09:53:46
Alternativ:

define nSalz notify Salzfuellung:.* { fhem("set WasserRechner mySalzZiel ".ReadingsNum("WasserRechner","Watermeter_value_CounterCurrent",0)+50) }
Titel: Aw: Korrekter Syntax für Notify
Beitrag von: Ajuba am 06 April 2025, 12:04:07
Zitat von: Otto123 am 06 April 2025, 00:20:09das nennt sich set magic
Danke für das Stichwort set magic. Ich hatte vergeblich den untersten Teil der CommandRef bei Perl specials durchsucht.

Zitat von: Otto123 am 06 April 2025, 00:20:09Beschreibung in der commandref unter set: https://fhem.de/commandref_modular_DE.html#set (https://fhem.de/commandref_modular_DE.html#set)
Auch wenn das Wiki (https://wiki.fhem.de/wiki/Set_magic) nicht als erste Auskunftsquelle empfohlen wird, hat mir erst dieser Teil mehr Klarheit verschafft und noch eine Schreibweise gezeigt.

Mir gefällt diese Schreibweise am Besten weil am kompaktesten und (für mich) unkompliziertesten.
define nSalz notify Salzfuellung:.* set WasserRechner mySalzZiel {([WasserRechner:Watermeter_value_CounterCurrent]+50)}
Zitat von: Otto123 am 06 April 2025, 00:20:09ein "echtes" userReadings wäre einfacher
Da ich nach dem Nachfüllen von Salz in der Entkalkungsanlage per DisplayButton das neu Wasserziel fürs nächste Nachfüllen setzen möchte, muss ich wohl fremdtriggern.
Aktuell war es noch ein Dummy, der wird aber umgestellt auf eine CCU Systemvariable.
Titel: Aw: Korrekter Syntax für Notify
Beitrag von: Prof. Dr. Peter Henning am 07 April 2025, 11:30:06
Zitat von: Otto123 am 06 April 2025, 00:20:09attr WasserRechner mySalzZiel:Watermeter_value_CounterCurrent.* { ReadingsNum($NAME,"Watermeter_value_CounterCurrent",0) +50 }

attr WasserRechner userReadings mySalzZiel:Watermeter_value_CounterCurrent.* { ReadingsNum($NAME,"Watermeter_value_CounterCurrent",0) +50 }

LG

pah