Korrekter Syntax für Notify

Begonnen von Ajuba, 05 April 2025, 23:24:57

Vorheriges Thema - Nächstes Thema

Ajuba

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?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Alternativ:

define nSalz notify Salzfuellung:.* { fhem("set WasserRechner mySalzZiel ".ReadingsNum("WasserRechner","Watermeter_value_CounterCurrent",0)+50) }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Ajuba

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
Auch wenn das Wiki 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.
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Prof. Dr. Peter Henning

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