Hallo,
bei vielen KNX-Devicen muss ich diese Userreadings hinterlegen, da
egal ob ein Reading mit -set -get oder -put aktualisiert wird. Und das Pro gruppenadresse pro Device,
also durchaus hunderte male.
Jeder Wert ist relevant und wird daher in das reading
measured-temp (hier im beispiel)
kopiert.
Dazu nutze ich folgendes reading.
measured-temp:measured-temp-set.* {
ReadingsNum($name,"measured-temp-set",-10);
},
measured-temp:measured-temp-get.* {
ReadingsNum($name,"measured-temp-get",-10);
},
Ruecklauftemperatur:Ruecklauftemperatur-set.* {
ReadingsNum($name,"Ruecklauftemperatur-set",-10);
},
Wenn ich auf den Trigger zugreifen könnte, wäre folgende Schreibweise viel eleganter:
measured-temp:measured-temp-.* {
ReadingsNum($name,$trigger,-10);
}
$trigger existiert sogar, beinhaltet jedoch leider nicht den tatsächlichen trigger, sondern ebenfalls
den Text "measured-temp-.*".
$reading enthält leider auch nicht den gesuchten Text.
Vielleicht wäre deshalb eine andere Variable notwendig?
Noch ein Wunsch: Optimal wäre es natürlich, wenn ich wie aus Perl gewohnt auch Zugriff
auf den Klammerinhalt bekommen würde.
Dann wäre
measured-temp:measured-temp-(...)\s?(.*) {
return $2
}
möglich.
sG Joe
Ich habe den Code etwas angepasst, damit beim aktivierten userReadings-Trigger folgende Variablen gesetzt werden:
- $event: enthaelt das Event (komplett!)
- $eventName: enthaelt den Namen des Events
- $eventValue: enthaelt den Wert.
Beispiel:
Zitatfhem> attr d userReadings state:basicR.* { "EV: $event NAME:$eventName VALUE:$eventValue" }
fhem> info timer
fhem> setreading d basicReport 255
2018-04-13 21:51:54 dummy d basicReport: 255
2018-04-13 21:51:54 dummy d EV: basicReport: 255 NAME:basicReport VALUE:255
Mit $1 / $2 habe ich so meine Probleme: da die Suche nach dem Trigger in einer Schleife erfolgt, scheint $1/$2 auch nur innerhalb der Schleife gesetzt zu sein. Wenn jemand eine Alternative kennt....
Vielen Dank! Sehr hilfreiche Erweiterung!!! Hab Sie soeben großflächig zum Einsatz gebracht und meinen Code stark reduzieren können!!