Top10 Readings | Search Reading

Begonnen von dr4g0n, 03 April 2020, 19:09:49

Vorheriges Thema - Nächstes Thema

dr4g0n

Hallo zusammen,

ich stoße gerade etwas an meine Grenzen.

Es handelt sich um ein Device mit vielen Readings drin, davon hätte ich gerne ein "Top10" der Readings mit dem z.b. höchsten Value.
Den Befehl "list" habe ich bereits gefunden, mein Ansatz wäre ein "list DeviceName:.* -R" dann in Perl ein Sort und nur die ersten 10 Ausgeben lassen. Ich scheitere leider an dem list-Befehl.
Zudem benötige ich eine Art "Suche" wo ich Teilweise den Namen des Readings angebe und dann alle Treffer bekomme. Ich dachte auch hier an "list DeviceName:*.tei.*" wo ich alle Readings mit "tei" im Namen erhalte.

Könnt ihr mir dort weiterhelfen?
Danke schon mal

rudolfkoenig

List kann sowas nicht, list -r name gibt alles raus, das kann man filtern, aber dann am besten von "aussen" aus einem Shellskript gestartet.

Oder man macht alles innerhalb von FHEM mit perl:
fhem> define dummy dummy
fhem> { for my $r (10..30) { fhem("setreading dummy VAL_$r $r") } }
fhem> { my $r=$defs{dummy}{READINGS};; my @sr = sort {$r->{$b}{VAL} cmp $r->{$a}{VAL}} keys %{$r};; join("\n", map { "$_: $r->{$_}{VAL}" } @sr[0..9]) }
VAL_30: 30
VAL_29: 29
VAL_28: 28
VAL_27: 27
VAL_26: 26
VAL_25: 25
VAL_24: 24
VAL_23: 23
VAL_22: 22
VAL_21: 21

Am besten als Funktion in 99_myUtils.pm.