Filter für devspec2array

Begonnen von DocCyber, 01 April 2025, 10:52:45

Vorheriges Thema - Nächstes Thema

DocCyber

Hallo zusammen,

Ich möchte gern alle Readings herausfiltern, deren Namen battery enthält.
Damit möchte ich Readings wie battery, aber z.B. auch params_devicepower_0_battery_percent finden.

Ich habe schon Vieles versucht, und die commandRef hilft mir auch nicht weiter.
Am ehestens - so dachte ich - könnte
list (.*):FILTER=.*battery.*=.+passen, aber falsch gedacht.

Kann mir jemand helfen?
Danke vorab-
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

betateilchen

wo hast Du denn diese krude Syntax her?

Probier mal:

list .* r:battery
Aber mehrere readings so in "list" anzugeben, funktioniert m.W. nicht.

Was aber funktioniert:

JsonList2 .* temperature humidity
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DocCyber

Zitat von: betateilchen am 01 April 2025, 11:03:30Probier mal:
list .* r:battery
Das hatte ich schon zuvor probiert, aber das findet tatsächlich ausschließlich Readings namens battery, nicht aber die anderen.

ZitatAber mehrere readings so in "list" anzugeben, funktioniert m.W. nicht.
Das wäre egal ... list ist halt eine einache Möglichkeit zu prüfen.
Ich brauch es im Code für devspec2array()

Offenbar muss man aber die Readingnamen kennen, um die zugehörigen Devices zu finden.
FILTER=NAME=WERT
RegEx für die Readingnamen geht dabei wohl nicht, oder?



Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

Otto123

#3
Du willst nicht die Readings listen sondern die Devices nach bestimmten Readings Inhalten filtern?
Zitat von: DocCyber am 01 April 2025, 11:52:08RegEx für die Readingnamen geht dabei wohl nicht, oder?
Sowas geht:
list r:battery=ok,r:battery=lowCommandref:
Zitateine durch Komma(,) getrennte Liste von Gerätenamen

Oder sowas:
list r:battery=.+Commandref
ZitatWERT ist ein regulärer Ausdruck.

Zitat von: betateilchen am 01 April 2025, 11:03:30Aber mehrere readings so in "list" anzugeben, funktioniert m.W. nicht.
Doch das geht, sieht nur etwas komisch aus. list device reading1 reading2z.B.:list .* temperature humidity
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

DocCyber

Zitat von: Otto123 am 01 April 2025, 17:32:39Du willst nicht die Readings listen sondern die Devices nach bestimmten Readings Inhalten filtern?

Hallo...
... und danke für deinen Input.

Ich beschreibe es mal anders:
Gesucht sind alle Devices, bei denen mindestens ein Readingname battery enthält.
Damit finde ich dann hoffentlich <device>:battery, aber auch <device>:params_devicepower_0_battery_V oder <device>:device_0_battery_percent
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

betateilchen

Schonmal darüber nachgedacht, die Info aus den eventTypes zu lesen?

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DocCyber

Hi,

nein.
Das sagt mir bislang auch noch nicht viel  :o
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

betateilchen

#7
In jeder Standardinstallation von FHEM gibt es ein device vom TYPE=eventTypes, das sämtlich auftretende events aufzeichnet (Modulbeschreibung in der commandref).
Das wird normalerweise dafür benutzt, um die dropdown-Listen von device:reading Kombinationen zu befüllen.

Die Datei kann man aber auch für andere Dinge nutzen :)

sub etest {
  fhem("set et flush");
  my ($err,@et) = FileRead("./log/eventTypes.txt");
  return $err if $err;
  for (@et) {
    my (undef,$n,$r,undef) = split(/ /,$_,4);
    Debug "device $n has reading $r" if ($r =~ m/battery/i);
  }
}

liefert bei mir beispielsweise:

2025.04.04 13:21:52 1: DEBUG>device HMinfo has reading ERR_battery:
2025.04.04 13:21:52 1: DEBUG>device az_lux has reading battery:
2025.04.04 13:21:52 1: DEBUG>device fl_Sensor has reading battery:
2025.04.04 13:21:52 1: DEBUG>device te_Sensor has reading battery:
2025.04.04 13:21:52 1: DEBUG>device te_Sensor2 has reading battery:
2025.04.04 13:21:52 1: DEBUG>device te_multi has reading battery:
2025.04.04 13:21:52 1: DEBUG>device wz_HMIP1_Btn_1 has reading battery:
2025.04.04 13:21:52 1: DEBUG>device wz_HMIP1_Btn_2 has reading battery:
2025.04.04 13:21:52 1: DEBUG>device wz_Tuer_Terrasse has reading battery:
2025.04.04 13:21:52 1: DEBUG>device wz_lux has reading battery:
2025.04.04 13:21:52 1: DEBUG>device xx_Sensor_1 has reading battery:
2025.04.04 13:21:52 1: DEBUG>device xx_Sensor_2 has reading battery:

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DocCyber

Zitat von: betateilchen am 04 April 2025, 13:25:57Die Datei kann man aber auch für andere Dinge nutzen

Das funktioniert prima!  :)
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox