Esempio n. 1
0
 /**
  * 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;
 }