FHEM Forum

FHEM => Sonstiges => Thema gestartet von: FhemPiUser am 21 August 2016, 10:46:11

Titel: [gelöst] Perl-Funktion, um alle readings eines devices zu erhalten?
Beitrag von: FhemPiUser am 21 August 2016, 10:46:11
Hallo,

ich möchte gerne eine readingsGroup mit allen dead devices des ActionDetectors haben. Dies ist meines Wissens mit dem readingsGRoup Modul nach nur mit einer Perl-Funktion realisierbar, die alle dead devices zurückgibt. Nur müsste ich dazu alle readings (status_*) des ActionDetector devices auslesen. Jemand eine Idee wie das geht?

Titel: Antw:Perl-Funktion, um alle readings eines devices zu erhalten (dead devices)?
Beitrag von: betateilchen am 21 August 2016, 11:05:51
fhem('list Activity=dead')
Titel: Antw:Perl-Funktion, um alle readings eines devices zu erhalten (dead devices)?
Beitrag von: justme1968 am 21 August 2016, 11:27:53
du kannst in einer readingsGroup die devices nach jedem reading, internal oder attribut filtern ohne das es dazu perl code braucht.

wenn du möchtest das sich die liste auch per longpoll aktualisiert musst du alle devices includen die potentiell in frage kommen und mit etwas perl code in valueFormat alle aussortieren die aktuell nicht dead sind.

das geht auch dynamisch zum umschalten. im wiki gibt es beispiele wie das prinzipiell funktioniert.

gruss
  andre
Titel: Antw:Perl-Funktion, um alle readings eines devices zu erhalten (dead devices)?
Beitrag von: FhemPiUser am 21 August 2016, 12:39:35
Direkt mit readingsGroup wäre natürlich klasse, aber ich wüsste nicht, wie man mit readingsGroup alle readings (status_*) eines devices (ActionDetector) filtern kann, die als Value "dead" haben. Habe es schon mit

define rg_dead readingsGroup ActionDetector:FILTER=status_.*=dead

probiert, aber das ging nicht.

define rg_dead readingsGroup .*:Activity:FILTER=Activity=dead

geht nicht.

Daher der Ansatz mit Perl.

Danke, mit dem list-Befehl und entsprechenden Perl code als devspec in der readingsgroup müsste es gehen...

Titel: Antw:Perl-Funktion, um alle readings eines devices zu erhalten (dead devices)?
Beitrag von: FhemPiUser am 21 August 2016, 14:36:14
habe es:

alle Activity readings mit

define rg_dead readingsGroup .*:Activity

dann mit valueFormat filtern:

attr rg_dead valueFormat { return $VALUE if ( $VALUE ne "alive" );; return undef;; }
Titel: Antw:[gelöst] Perl-Funktion, um alle readings eines devices zu erhalten?
Beitrag von: justme1968 am 21 August 2016, 16:04:33
und die filter variante (aber ohne longpoll aktualisierung): der filter gehört hinter das device. nicht hinter das reading:.*:FILTER=Activity=dead:Activity

gruss
  andre