gelöst: devspec2array überprüfen

Begonnen von igami, 01 Oktober 2015, 12:39:35

Vorheriges Thema - Nächstes Thema

igami

In meinen myUtils nutzte ich devspec2array. Wie kann ich überprüfen ob mindestens ein Device enthaltet ist?
Eigentlich sollte es ja mittels

if(devspec2array("murks")){
  ...
}

nichts passieren, es wird aber trotzdem ausgeführt.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

viegener

Ich habe jetzt gerade keinen fhem code zur hand, aber ich vermute mal stark, dass devspec2array auch dann ein Array zurückliefert, wenn nichts passendes gefunden wird und nichts schlimmes passiert ist (error meldung). Also musst Du vermutlich die Längde des arrays prüfen.

Oder zur Sicherheit erstmal überprüfen ob es ein array ist und dann schauen ob die Länge > 0 ist (scalar)
Mehr infos finden sich auch hier oder in jedem perl buch:  http://wiki.selfhtml.org/wiki/Perl/Listen_bzw._Arrays

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

marvin78

Wenn ich das richtig in Erinnerung habe, gibt devspec2array einen leeren String zurück, wenn "murks" nicht definiert ist.

rudolfkoenig

devspec2array liefert murks zurueck, wenn sie das nicht sinnvoll aufloesen kann.
Das fuehrt zu den gewohnten Fehlermeldung: "Please define murks first", da die Befehle pruefen, ob die von devspec2array zurueckgegebenen Werte in $defs enthalten sind.

igami

Vielen Dank. Habe es nun folgendermaßen gelöst:

my @array = devspec2array("murks");

if(defined($defs{$array[0]})){
  ...
}


Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED