Sto provando a implementare la mia scansione UPNP, è in gran parte funzionante e per dimostrare che non sono io ho un programma Windows che consente di inviare pacchetti e vedere cosa la risposta ritorna.L'esecuzione di una scansione UPNP non restituisce il bridge Philips Hue
io mando un pacchetto per 239.255.255.250
sulla porta 1900
e io mando i seguenti dati:
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: "ssdp:discover"
MX: 10
ST: ssdp:all
Proprio per ulteriori informazioni, nel mio codice Java (Android) Ho il seguente, ma ottengo lo stesso risposta come l'applicazione del pacchetto tester:
try
{
byte[] sendData = new byte[1024];
//byte[] receiveData = new byte[1024];
byte[] receiveData;
String mSearch = "M-SEARCH * HTTP/1.1\r\nHost: 239.255.255.250:1900\r\nMan: \"ssdp:discover\"\r\nMX: 10\r\nST: ssdp:all\r\n\r\n";
sendData = mSearch.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("239.255.255.250"), 1900);
DatagramSocket clientSocket = new DatagramSocket();
clientSocket.send(sendPacket);
while (keepGoing)
{
receiveData = new byte[1024];
receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String response = new String(receivePacket.getData());
if (response == null || response.length() == 0)
{
keepGoing = false;
}
else
{
iupnpScan.updateText(response);
}
}
iupnpScan.complete(true);
return true;
}
catch (UnknownHostException ex)
{
Log.e("MainActivity", "Unknown Host Exception: " + ex.toString());
}
catch (SocketException ex)
{
Log.e("MainActivity", "Socket Exception: " + ex.toString());
}
catch (IOException ex)
{
Log.e("MainActivity", "IO Exception: " + ex.toString());
}
iupnpScan.complete(false);
return false;
sto ottenendo alcuni dispositivi ritornano, come il mio smart TV, router e NAS, ma le philips ponte Hue non viene mai restituito nella risposta.
Philips Hue Bridge implementa UpNP in modo diverso, tutto quello che riesco a vedere è la risposta che restituiscono ora tutto ciò che è necessario per trovarlo.
Grazie
Stai utilizzando un bel grande valore MX. 10 secondi è valido per UPnP 1.0 ma v1.1 consiglia un valore compreso nell'intervallo [1..5]. Potresti provare a ridurre il valore MX a 5 secondi per escludere che il dispositivo Philips rifiuti MSEARCH come malformato. Si noti inoltre che alcuni dispositivi UPnP ignorano MSEARCH, affidandosi invece all'invio di frequenti annunci multicast ALIVE. Potresti provare ad ascoltare annunci multicast e risposte unicast MSEARCH e vedere se questo aiuta. – simonc
Grazie Ho provato a cambiare il valore MX a 5, ma nessuna differenza. È interessante notare che ho un ispettore UPNP per Windows da http://coherence.beebits.net/wiki/UPnP-Inspector#DownloadandInstallation e su Bridge non viene visualizzato né quello – Boardy
Quando stavo lavorando con upnp ho trovato che molti pacchetti nativi/Le librerie sono abbastanza incoerenti nel rispondere alle richieste di scoperta. Se è possibile eseguire un test di dimensioni ridotte, provare a utilizzare la libreria cyberlink o cybergarage se il dispositivo incorporato continua a non rispondere alle richieste di rilevamento, potrebbe esserci qualche problema con il dispositivo. – Ichthyocentaurs