/** * Fetches device details * * @param $devices * * @return array */ protected static function getDeviceInfo($devices) { $infos = []; foreach ($devices as $device) { $sender = $device['_sender']; $ip = substr($sender, 0, strpos($sender, ':')); $wc = new WemoClient($ip); $info = $wc->info('setup.xml'); $info = $info['root']['device']; $id = str_replace(' ', '_', strtolower($info['friendlyName'])); $data = ['id' => $id, 'ip' => $ip, 'deviceType' => $info['deviceType'], 'friendlyName' => $info['friendlyName'], 'modelName' => $info['modelName'], 'UDN' => $info['UDN']]; if (static::isBridge($info['UDN'])) { $bridge = new Bridge($ip); $bridgeDevices = $bridge->getPairedDevices(true); foreach ($bridgeDevices as $i => $bridgeDevice) { $bridgeDevice['id'] = str_replace(' ', '_', strtolower($bridgeDevice['FriendlyName'])); $bridgeDevices[$i] = $bridgeDevice; } $data['class_name'] = Bridge::class; $data['device'] = $bridgeDevices; } else { if (static::isLightSwitch($info['UDN'])) { $data['class_name'] = LightSwitch::class; } else { if (static::isWemoSwitch($info['UDN'])) { $data['class_name'] = WemoSwitch::class; } } } $infos[] = $data; } return $infos; }