Wie Ergebnis eines RPC Aufrufes verarbeiten?

Hallo,

ich möchte die Liste alle Geräte ermitteln, die einem Raum zugeordnet sind.

In der Konsole (homegear -r) bekomme ich das erst mal nicht hin, weil ich nicht weiß wie ich den Aufruf formulieren müsste. Jedenfalls sehe ich nichts, wenn ich das hier aufrufe

$hg->getDevicesInRoom(17);

Wenn man das in shell mit folgendem Befehl aufruft,

homegear -e rc 'print_v($hg->getDevicesInRoom(17));'

dann bekommt man aber ein (korrektes) Ergebnis:

(Array length=3)
[
  (Integer64) 23
  (Integer64) 44
  (Integer64) 45
]

Letzlich möchte ich in einem Function Node ein Array haben, in dem genau diese 3 peerID’s stehen.
Wenn in der Function Node folgendes in PHP? programmiere, steht sehe ich im nachfolgenden Debug Node nur das Wort “Array”. Das hilft mir natürlich nix.

$devlist = $hg->getDevicesInRoom(17);
$msg['payload'] = $devlist;
output(3, $msg);

Wie müsste ich das denn korrekt programmieren? Stehe da als Noob total auf dem Schlauch. Weiss nicht mal was ich Tante Google fragen müsste …

Hi,

ich weiß nicht, wie genau du letztlich die Daten brauchst, und was output genau macht, aber du kannst das mal probieren:

$msg['payload'] = implode(',', $devlist);

Ok,
danke für den Hinweis. Werd ich mal ausprobieren.

Da die Funktion “getDevicesInRoom” laut Doku ein Array zurückliefert, habe ich einfach mal folgendes gebastelt.

$show = '';
$devlist = $hg->getDevicesInRoom(17); 
$anzahl = count( $devlist );
for($i = 0, $anzahl; $i < $anzahl; ++$i) {
     $show = $show.$devlist[$id].' / ';
}

$msg['payload'] = $show;
output(1, $msg);

Vielleicht nicht elegant, aber es wird zumindest erst mal eine Liste mit ID’s ausgegeben …