eHouse System Building Automation – Android software per ricevere lo status di controllori tramite UDP

Ethernet Home Automation eHouse consentono di inviare automaticamente uno stato broadcastu UDP (User Datagram Protocol) , in grado di ricevere tutti i dispositivi della rete LAN o Wi-Fi e IP che soddisfano la condizione – Trovato nella maschera locale 255 . 255 . 255 . 0 , che viene trasmesso fuori lo stato gli indirizzi IP dei controller 192 . 168 . 0 . x . UDP Broadcast consente di disattivare lo stato del download del protocollo TCP / IP del client , che richiede una connessione con il controllore . UDP Broadcast è un protocollo senza connessione , per i dati di propagazione e indipendentemente dal numero dei dispositivi di ricezione non carica più la CPU o collegamenti di rete .
Semplice funzione di broadcast UDP ricezione con gli smartphone , pannelli e tablet Android è la seguente .
E 'quindi un ciclo infinito sulla base di questa funzione , è necessario creare un thread (thread) a lavorare in background , dando così il lavoro priorità più bassa .
Altrimenti , l'esecuzione di questa funzione di bloccare l'esecuzione di altre attività del programma .
Il codice sorgente per la ricezione di UDP Broadcast piattaforma Android:
public void udp (porta int) / / parametro di porto per ritirare il default trasmissione 6789 – stato in controllo binario
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Contesto . WIFI_SERVICE) ; / / WiFi Manager
Dhcpinfo = dhcp wifi . getDhcpInfo () ; / / Ottieni informazioni dal wifi dhcp
if (dhcp == null) / / ottiene il valore di default è disabilitata se DHCP rete di eHouse
{/ / No dhcp o un errore per il dispositivo
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
broadcast = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . maschera di rete ; / / Per udp trasmissione – Se si desidera trasmettere i dati sulla funzione
controller riceve lo stato di sola
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((in onda> ; > ; k * 8) e ; 0xFF) ;
locale = int (dhcp . ipaddress) ; / / Indirizzo IP locale dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((locale> ; > ; k * 8) e ; 0xFF) ; / / Per indirizzo ip locale
}
provare
{
ds = new DatagramSocket (porta) ; / / / Ascolto sulla porta UDP dati della porta da qualsiasi ip
all'interno di una maschera – udp socket per creare un'istanza del numero di porta locale
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Errore Inet: ottenere l'indirizzo ” + E . getMessage ()) ; per test
}
provare
{
ds . setBroadcast (true) ; / / Abilita invia messaggio trasmesso – per la trasmissione
ds . setReuseAddress (true) ; / / Abilita multipresa utilizzare lo stesso indirizzo IP
/ / Ds . setSoTimeout (400) ; / / Ricezione timeout
}
catch (Exception io)
{/ / Ignora errori, ma abbiamo la protezione contro gli errori delle applicazioni e del sistema
}
/ / * UDP Broadcast TEST – broadcastu prova udp trasmessi dal telefono o dal tablet – futura comunicazione con l'applicazione di
/ * Prova
{
DatagramPacket dd = new DatagramPacket ( ” Ciao Word da TEST Android UPD ” . getBytes () , 0 , ” Ciao Word da TEST Android UPD ” . length () ,
InetAddress . getByAddress (broadcastadr) , porta) ;
ds . send (dd) ; / / Invia un DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Trasmissione errore di pacchetto Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast blocco abilitato ” ) ;
/ / Crea un'istanza del blocco e multicast broadcastu
ml . Acquisisci () ; / / Multicast blocco enable udp ricezione della trasmissione di – Può essere disabilitato Alcuni smartphone Android per scopi di risparmio batery –
broadcastu supporto UDP si attiva il telefono se è bloccato e solo disattivato
while (! ehousecommunication . Termina) / ciclo / infinito per la ricezione udp
{/ / Ciclo infinito stato di ricezione udp
DatagramPacket dp = new DatagramPacket (messaggio , messaggio . lunghezza) ; / / Crea buffer dei pacchetti UDP datagram utilizzando i dati – fa uso del pacchetto UDP
bufferizzare ” messaggio ”
try {
ds . ricezione (dp) ; / / Udp ricezione dei pacchetti dal sistema eHouse – riceve il pacchetto UDP port del UDP una presa
if (dp . getLength ()> ; 0) / / se la dimensione delle particelle maggiore di zero – qualcosa di ricevuto
{
EhouseTCP . QueryBuff = dp . getData () ; / / Assegnazione di una trasmissione udp recepition querybuffer – caricato nel eHouse stato del buffer
/ / Dp . setLength (0) ; – dimensione del pacchetto è impostato a zero per non elaborare i dati stessi ripetutamente
EhouseTCP . QueryReceived () ; / / Decodifica di query matrici di dati e riempire i dispositivi – decodifica lo stato dei controller e dei carichi la tabella di stato dell'applicazione
}
}
catch (Exception os)
{/ / Ignora errori
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Per la prova solo
}
}
ml . release () ; / / Multicast UDP blocco libero per la ricezione della domanda eHouse – rilascia il blocco multicast
ds . close () ; / / Chiude il socket datagramma alla fine – chiude la presa a fine
}
Blocco multicast può essere richiesto in alcuni dispositivi Android .
UDP Broadcast locale nel caso dei telefoni cellulari può essere abilitata o meno a seconda del firmware del telefono cellulare .
Può anche essere disattivato in modo permanente per il risparmio della batteria e per ragioni di sicurezza o per ridurre il carico sulla CPU rete aziendale .
(Si noti la configurazione del kernel: CONFIG_IP_MULTICAST non è impostato) .
Inoltre , alcuni modelli può essere bloccata da un firewall locale e necessario attivare la trasmissione su una data porta (default 6789) .
Outside Broadcast quando si utilizzano connessioni Internet GPRS , BORDO , 3G , 4G può essere bloccato o sbloccato dal gestore di rete . Più spesso , tuttavia , dovrebbe essere previsto , che sono fissati in modo da minimizzare l'utilizzo del link .
In alcuni modelli di telefoni cellulari , Stato di attuazione del software dei controllori di ricezione UDP può essere molto difficile o addirittura impossibile . Può richiedere l'uso di niebrandowanego firmware speciale o smartphone .
Inoltre , la cura deve essere presa quando upgradowaniu firmware e verificare che tutte le caratteristiche funzionano correttamente fuori dalla scatola , altrimenti la diagnosi degli errori sarà molto difficile .
Sulla base di alcuni telefoni HTC e altri prodotti che contengono la versione del sistema operativo Android inferiore a 2 . 3 . Tre osservato un blocco totale UDP ricezione broadcastu .
Questa è stata la versione di Android (2 . 1 – 2 . 3 del periodo di 01 . 01 . 2010 – 14 . 06 . 2011)
Se non è possibile ricevere UDP broadcastu il download e l'installazione , Nuovo Android versione ROM del minimo 2 . 3 . 3 (14 giugno , 2011) , che testato la correttezza della trasmissione del carico di lavoro UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – @ kernel ei 18 – 2 # 1 .
No . 3Panoramica sul software . 14 . 405 . 1 .
Per le altre marche di telefoni con problemi simili , si prega di scaricare il firmware Rom Android del produttore , versione di almeno 2 . 3 . 3 .
Si noti anche le caratteristiche essenziali di pacchetti UDP .
Essi sono asincroni e richiedono la lettura di ciò che può causare errori di lettura dei dati , la loro perdita (spargimento) , soprattutto con apparecchiature lento , link , combinano alto carico e SmartPhone occupazione della CPU e compresse .
Dati di stato UDP è dotato nel totale di controllo per verificare la validità dei dati .
Home Automation Produttore eHouse Home Automation eHouse
eHouse Controller – Home Automation eHouse