FHEM Forum

FHEM => Automatisierung => Thema gestartet von: igami am 01 Oktober 2015, 12:39:35

Titel: gelöst: devspec2array überprüfen
Beitrag von: igami am 01 Oktober 2015, 12:39:35
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
Titel: Antw:devspec2array überprüfen
Beitrag von: viegener am 01 Oktober 2015, 13:00:54
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 (http://wiki.selfhtml.org/wiki/Perl/Listen_bzw._Arrays)

Titel: Antw:devspec2array überprüfen
Beitrag von: marvin78 am 01 Oktober 2015, 13:04:57
Wenn ich das richtig in Erinnerung habe, gibt devspec2array einen leeren String zurück, wenn "murks" nicht definiert ist.
Titel: Antw:devspec2array überprüfen
Beitrag von: rudolfkoenig am 01 Oktober 2015, 13:05:11
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.
Titel: Antw:devspec2array überprüfen
Beitrag von: igami am 01 Oktober 2015, 13:25:47
Vielen Dank. Habe es nun folgendermaßen gelöst:

my @array = devspec2array("murks");

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


Grüße
igami