[gelöst] - DeviceMonitor - There was no match for your criteria 'dead'

Begonnen von Christian Uhlmann, 08 März 2017, 16:02:30

Vorheriges Thema - Nächstes Thema

Christian Uhlmann

Hallo zusammen,

seit heute nutze ich das Modul DeviceMonitor aus dem Contrib Verzeichnis um meine nicht Homematic Geräte zu überwachen.
Scheinbar funktioniert das Modul auch, ich bekomme lediglich eine Meldung über dem Modul, mit dem ich nichts anfangen kann:
SYS.DeviceMonitor: There was no match for your criteria 'dead'
SYS.DeviceMonitor ist der Device Name des DeviceMonitor.

List des Device:

Internals:
   CFGFN
   NAME       SYS.DeviceMonitor
   NR         163260
   NTFY_ORDER 50-SYS.DeviceMonitor
   STATE      ENABLED
   TYPE       DeviceMonitor
   CHANGED:
     DEFINED
   Readings:
     2017-03-08 15:59:55   EG.az.SD.Basteltisch alive
     2017-03-08 15:59:46   EG.az.SD.Dauer  alive
     2017-03-08 15:59:18   EG.fl.TF.Garderobe alive
     2017-03-08 15:59:08   EG.ku.TF.Kueche alive
     2017-03-08 15:59:02   EG.vr.TF.Gefriertruhe alive
     2017-03-08 15:59:55   EG.wz.SD.Dauer  alive
     2017-03-08 15:59:56   GH.tr.TF.Lampe  alive
     2017-03-08 15:59:06   GV.ab.TF.Blumengitter alive
     2017-03-08 15:59:55   KG.wr.SD.Trockner alive
     2017-03-08 15:59:55   KG.wr.SD.Waschmaschine alive
     2017-03-08 15:59:15   OG.bz.TF.Badezimmer alive
     2017-03-08 15:59:13   OG.k1.TF.Leonie alive
     2017-03-08 15:58:56   OG.k2.TF.Kind2  alive
     2017-03-08 15:58:12   OG.sz.TF.Schlafzimmer alive
Attributes:
   room       System


Raw definition:

defmod SYS.DeviceMonitor DeviceMonitor
attr SYS.DeviceMonitor room System

setstate SYS.DeviceMonitor ENABLED
setstate SYS.DeviceMonitor 2017-03-08 16:00:05 EG.az.SD.Basteltisch alive
setstate SYS.DeviceMonitor 2017-03-08 16:00:07 EG.az.SD.Dauer alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:18 EG.fl.TF.Garderobe alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:08 EG.ku.TF.Kueche alive
setstate SYS.DeviceMonitor 2017-03-08 16:00:02 EG.vr.TF.Gefriertruhe alive
setstate SYS.DeviceMonitor 2017-03-08 16:00:09 EG.wz.SD.Dauer alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:56 GH.tr.TF.Lampe alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:06 GV.ab.TF.Blumengitter alive
setstate SYS.DeviceMonitor 2017-03-08 16:00:12 KG.wr.SD.Trockner alive
setstate SYS.DeviceMonitor 2017-03-08 16:00:12 KG.wr.SD.Waschmaschine alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:15 OG.bz.TF.Badezimmer alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:13 OG.k1.TF.Leonie alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:58 OG.k2.TF.Kind2 alive
setstate SYS.DeviceMonitor 2017-03-08 15:59:57 OG.sz.TF.Schlafzimmer alive


im Quellcode konnte ich die stelle finden, aber ich verstehe diese nicht.

Quellcode Auszug:

sub DeviceMonitor_GetResult($$$)
{
#*******************************************************************************
# Purpose: Get results from DeviceMonitor readings
# Author : Dennis Gnoyke
# Date   : 27.10.2012
# Changes:
# Remarks:      $_[0] = DeviceMonitor
#                       $_[1] = Criteria dead|alive|total
#                       $_[2] = Output as count|text|html
#**************************** Begin of Code *************************************
        my $hash = $defs{$_[0]}{READINGS};
        my $cnt = 0;            #counter
        my @result ;            #result array
        $result[0] ="null";     #default
        my $tmp = "";           #temp var

        foreach my $readings_name (sort keys %{$hash}) #Loop through Readings
                {
                        my $val = $hash->{$readings_name};
                        if(ref($val))
                                {
                                        my $readings_value = $val->{VAL};
                                        my $readings_time = $val->{TIME};
                                        if ($readings_value eq $_[1]) #value like dead or alive
                                                {
                                                        $result["$cnt"] = $readings_name.','."has health_state '$readings_value' reported at $readings_time";
                                                        $cnt = $cnt + 1
                                                }
                                        elsif($_[1] eq "total")
                                                {
                                                        $result["$cnt"] = $readings_name.','."has health_state '$readings_value' reported at $readings_time";
                                                        $cnt = $cnt + 1
                                                }
                                }
                }
        if ($result[0] eq "null")
                {
                        return 0 if($_[2] eq "count");
                        return "$_[0]: There was no match for your criteria '$_[1]'" if($_[2] eq "text");
                        return "$_[0]: There was no match for your criteria '$_[1]'" if($_[2] eq "html");
                        return "$_[0]: Unknown argument $_[2] , syntax is <criteria>_<output> criteria=dead,alive,total output=count,text,html";
                }
        else
                {
                        if($_[2] eq "count"){return $cnt}
                        elsif($_[2] eq "text")
                                {
                                        foreach (@result)
                                                {
                                                        my ($device, $value) = split (",",$_);
                                                        $tmp .= "Device $device $value\n";
                                                }
                                        return $tmp;
                                }
                        elsif($_[2] eq "html")
                                {
                                        $tmp = "<table>\n";
                                        foreach (@result)
                                                {
                                                        my ($device, $value) = split (",",$_);
                                                        $tmp .= "<tr><td>Device <a href='/fhem?detail=$device'>$device</a> $value</td></tr>\n";
                                                };
                                        $tmp .= "</table></div>";
                                        return $tmp;
                                }
                        else{return "$_[0]: Unknown argument $_[2] , syntax is <criteria>_<output> criteria=dead,alive,total output=count,text,html"}
                }


Kann mir jemand sagen, was das bedeutet?


Danke und Grüße

Christian

Edit:
Link zur Modulvorstellung: https://forum.fhem.de/index.php/topic,8821.0.html
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Wetterhexe

heißt einfach, daß keiner deiner Sensoren "dead" ist ... also alles gut  ;)

Christian Uhlmann

Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota