readingsProxy um wildcards erweitern .*:READING

Begonnen von Diggewuff, 17 Mai 2018, 02:47:38

Vorheriges Thema - Nächstes Thema

Diggewuff

Ich wollte mir mit Hilfe eines readingsProxy ein Device basteln das mir einen Mittelwert aller lux werte all meiner Pflanzensensoren zusammenfasst und anzeigt. Hierfür wollte ich aber ungern die Variante notify und dummy nehmen da ich 2 devices für einen Mittelwert für zu viel halte. An sich funktioniert das vorhaben mit readings Proxy schon sehr gut nur leider wird der Mittelwert hier nur dann gebildet wenn ein spezieller Pflanzensensor (FS_3) einen Wert meldet ich würde allerdings gerne immer einen Mittelwert bilden wenn irgendein Pflanzensensor einen neuen Wert bekommen hat (FS:*). Das klappt in einem notify, allerdings nicht im readingsproxy.
Meine frage währe, ob sich das Modul hierfür eventuell um Kompatibilität zu regex erweitern ließe so dass ich auch einen proxy für z.b. beliebiges gerät aber aktuellstes reading bauen kann?

z.B.: define NAME readingsProxy .*:READING

defmod LUX readingsProxy FS_.*:lux
attr LUX setFn {if ($CMD eq "refresh") { fhem("get FS_.* sensorData") }}
attr LUX setList refresh
attr LUX stateFormat state lux
attr LUX valueFn {\
my @FS_Array = devspec2array("FS_.*");;\
my $luxAnzahl = 0;;\
my $luxSumme = 0;;\
\
foreach (@FS_Array) {\
my $lux = ReadingsVal($_, "lux", "");;\
$luxSumme = $luxSumme + $lux;;\
$luxAnzahl++ if ($lux ne "");;\
}\
\
sprintf("%.0f", $luxSumme / $luxAnzahl);;\
}
attr LUX webCmd refresh