FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Stril am 14 November 2016, 11:19:31

Titel: ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Stril am 14 November 2016, 11:19:31
Hallo!

Es kommt bei mir manchmal vor, dass Geräte nicht mehr erreichbar sind - z.B. weil:
- Batterie leer ohne brauchbares Reading
- Außer Funkreichweite
- Defekt

Ich würde gerne all diese Fälle irgendwie im Auge behalten und hätte dafür gerne eine Übersicht aller Geräte ohne "Reading-Update" seit einer Woche oder ähnlich.

Kennt ihr irgendeine gute Möglichkeit, das ohne ein Notify für jedes einzelne Gerät?

Danke und Grüße
Phil
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: DeeSPe am 14 November 2016, 12:01:41
Wenn es um HM Geräte geht würde ein notify auf den ActionDetector reichen um Dir den Status aller Geräte ausgeben zu lassen.

Gruß
Dan
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Stril am 14 November 2016, 12:52:23
Hallo!

Es geht um verschiedenste Geräte. Enocean, HMCCUDEV und und und.

Was für mich auch ausreichen würde, wäre z.B. ein DOIF das triggert, wenn ein Device die "Woche Inaktivität" überschreitet.

Grüße
Phil
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Hans Franz am 14 November 2016, 14:02:48
Du kannst ReadingsAge verwenden. Pack' soetwas
sub
get_readings_older_than($$) {
my ($mdevspec,$days) = @_;
my $ret = '';
my @mdevarray = devspec2array($mdevspec);
foreach my $mdev (@mdevarray) {
my $readings = $defs{$mdev}->{READINGS};
foreach my $key (keys %{$readings}) {
my $age = int(ReadingsAge($mdev,$key,"")/60/60/24);
if ($age > $days) {
$ret .= $mdev.': '. $key.":".$readings->{$key}{VAL}."\n";
$ret .= $age."\n";
}
}
}
return $ret ;
}

in eine 99_myUtils. Und ruf' es mit
{get_readings_older_than(".*",7)}
auf.

Gruß
Hans
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Stril am 14 November 2016, 15:16:35
Hallo!

Vielen Dank! Das sieht schonmal richtig gut aus.
Schade ist nur, dass ein Device auftaucht, wenn es ein einzelnes, altes Reading hat.
Gibt es auch so etwas wie einen "Geräteweisen" Timestamp?

Danke und Grüße
Phil
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Hans Franz am 14 November 2016, 16:27:10
ZitatGibt es auch so etwas wie einen "Geräteweisen" Timestamp?
Meinst du soetwas?
{get_readings_older_than("IT.*,CUL.*",7)}
{get_readings_older_than("TYPE=Enocean",7)}
{get_readings_older_than("room=Wohnzimmer",7)}
Das geht auch.

Gruß
Hans
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Stril am 14 November 2016, 17:38:34
Hallo!

Nicht ganz. Eigentlich meinte ich die Logik:

Zeige Devices, die seit 7 Tage _keines_ ihrer Readings aktualisiert haben.
Bei Deinem Aufruf tauchen auch Geräte auf, die andere ihrer Readings aktualisiert haben.

Danke und Grüße
Phil
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Hans Franz am 14 November 2016, 19:38:35
Vlt. geht's ja so:
Sorry. Ist ja Quatsch. Blackout >:(
Aber evtl. so:
sub
get_readings_older_than($$) {
my ($mdevspec,$days) = @_;
my $ret = '';
my @mdevarray = devspec2array($mdevspec);
foreach my $mdev (@mdevarray) {
my $readings = $defs{$mdev}->{READINGS};
my $r = 1;
foreach my $key (keys %{$readings}) {
my $age = int(ReadingsAge($mdev,$key,"")/60/60/24);
if ($age <= $days){
$r = 0;
last;
}
}
$ret .= $mdev."\n" if ($r == 1);
}
return $ret ;
}


Gruß
Hans
Titel: Antw:ReadingsGroup oder Notify - Inaktive oder defekte Geräte
Beitrag von: Stril am 17 November 2016, 12:26:49
Hallo!

Tut mir Leid, aber ich hab Deine Antwort übersehen gehabt.

Das Ganze ist einfach super! Vielen Dank!!!

Grüße
Phil