FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: roedert am 21 Juni 2017, 12:55:19

Titel: Abfrage eines nicht vorhandene Attributs abfangen
Beitrag von: roedert am 21 Juni 2017, 12:55:19
In einem at frage ich tgl. ab welche Pflanzen ich giessen muss ... außer die auf "disable" gesetzt sind.

foreach (devspec2array("TYPE=XiaomiFlowerSens"))
   {
     if (($attr{$_}{'disable'} != 1) && (ReadingsVal($_,"moisture",0) < $attr{$_}{'minMoisture'}))
         ......
   }


Jetzt kommt natürlich auch eine Warnung "PERL WARNING: Use of uninitialized value in numeric ne (!=) at (eval 194680) line 4.", da es das disable-Attribut bei machen Devices gar nicht gibt.
Ist zwar nur eine Warnung - aber wie wäre ein sauberer Weg dies abzufangen?
Titel: Antw:Abfrage eines nicht vorhandene Attributs abfangen
Beitrag von: rudolfkoenig am 21 Juni 2017, 12:58:15
Mit AttrVal
Titel: Antw:Abfrage eines nicht vorhandene Attributs abfangen
Beitrag von: justme1968 am 21 Juni 2017, 12:58:43
das geht mit defined(). aber man sollte niemals direkt auf $attr zugreifen sondern AttrVal verwenden.

aber warum baust du das nicht direkt als
FILTER bei devspec2array mit ein? das geht für das attribut und für das reading.
Titel: [gelöst] Abfrage eines nicht vorhandene Attributs abfangen
Beitrag von: roedert am 21 Juni 2017, 13:10:55
Perfekt .... danke!

*13:10:00 {
   foreach (devspec2array("TYPE=XiaomiFlowerSens:FILTER=disable!=1"))
   {
     if (ReadingsVal($_,"moisture",0) < AttrVal($_,"minMoisture",0))
     {
       fhem("set iMessage " . $_ . " (" . ReadingsVal($_,"ID","") . ") giessen");
     }
   }
}