devspec2array ... ich stehe gerade auf dem Schlauch

Begonnen von dt2510, 26 März 2019, 11:56:12

Vorheriges Thema - Nächstes Thema

dt2510

vielleicht kann mir jemand weiterhelfen ...

Ich versuche gerade über devspec2array alle Devices mit dem Reading "battery" zu greifen, habe aber keine Ahnung wie  :-\

rudolfkoenig


dt2510

das kann ich aber doch nicht in der Form

foreach my $myItem (devspec2array("list .* battery")) {

in meinem perl-Code verwenden oder ?

Den Inhalt könnte ich mit

foreach my $myItem (devspec2array("battery=ok")) {

abfragen ...

marvin78

Das list ist ein Befehl. Rudis Beispiel zeigt die Verwendung von devspec (in seinem Beispiel eben im Befehl list).

dt2510

Dass "list" ein Befehl ist, ist mir schon klar - ich bekomme dann ja auch alle Devices mit Reading "battery" aufgelistet.

Ich brauche aber ein Array mit allen Devices, die das Reading "battery" besitzen, zur Auswertung in meiner 99_myUtils.pm.
Meines Wissens geht das dort mit devspec2array.
Was aber gebe ich dort mit ? "list .* battery" macht keinen Sinn - muss ich stattdessen "*. battery" nehmen ? Ich konnte hierzu leider keine Dokumentation finden ...

DeeSPe

#5
Zitat von: dt2510 am 26 März 2019, 12:09:03
Ich brauche aber ein Array mit allen Devices, die das Reading "battery" besitzen, zur Auswertung in meiner 99_myUtils.pm.

devspec2array(".*:FILTER=battery!=")

oder nur:
devspec2array("battery!=")

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

dt2510

wenn ich folgende Prozedur in meine 99_myUtils.pm einbaue

sub Test() {
  foreach my $myItem (devspec2array("*. battery")) {
    Log 1, $myItem;
  }


führt die Ausführung (über die Eingabezeile in FHEM) von

{Test()}

zu folgenden Fehlermeldungen im Logfile:

2019.03.26 12:13:39 1: devspec2array *. battery: Unknown verb pattern '. battery' in regex; marked by <-- HERE in m/^(*. battery) <-- HERE $/ at fhem.pl line 1307.

2019.03.26 12:13:39 1: stacktrace:
2019.03.26 12:13:39 1:     main::devspec2array                 called by ./FHEM/99_myUtils.pm (95)
2019.03.26 12:13:39 1:     main::Test               called by (eval 1941) (1)
2019.03.26 12:13:39 1:     (eval)                              called by fhem.pl (1127)
2019.03.26 12:13:39 1:     main::AnalyzePerlCommand            called by fhem.pl (1152)
2019.03.26 12:13:39 1:     main::AnalyzeCommand                called by fhem.pl (1081)
2019.03.26 12:13:39 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2666)
2019.03.26 12:13:39 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (939)
2019.03.26 12:13:39 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (567)
2019.03.26 12:13:39 1:     main::FW_Read                       called by fhem.pl (3697)
2019.03.26 12:13:39 1:     main::CallFn                        called by fhem.pl (744)
2019.03.26 12:13:39 1: *. battery

dt2510

Zitat von: DeeSPe am 26 März 2019, 12:15:29
devspec2array(".*:FILTER=battery!=")

oder nur:
devspec2array("battery!=")

Gruß
Dan

Ah ! So funktioniert es :) Danke !!

marvin78