eHouse Building Automation System – Android software prejeti status kontrolorjev preko UDP

Ethernet Avtomatizacija doma eHouse vam omogoča samodejno pošlje poročilo o stanju broadcastu UDP (User Datagram Protocol) , ki lahko sprejema vse naprave v vašem LAN ali WiFi in IP, ki izpolnjujejo pogoj – Najdeno v lokalni masko 255 . 255 . 255 . 0 , ki se prenaša izven statusu IP naslovov kontrolorjev 192 . 168 . 0 . x . UDP oddajanje vam omogoča, da onemogočite prenos statusa stranke TCP / IP , ki zahteva povezavo s krmilnikom . UDP Broadcast je brez povezave protokol , za razmnoževanje podatkov in glede na število sprejemnih naprav ne vlagajte več CPU ali omrežne povezave .
Enostavno UDP oddaja sprejem funkcije s pametnimi telefoni , plošče in Android tablet je prikazan pod .
Zato je neskončna zanka na podlagi te funkcije , morate ustvariti nit (NIT), ki delujejo v ozadju , kar daje najnižjo prioriteto delo .
V nasprotnem primeru , izvršitev te funkcije blokira izvajanje drugih dejavnosti v okviru programa .
Izvorna koda za prejemanje UDP oddajanje Android platformo:
public void UDP (int port) / / parameter pristanišče, da poberem privzeto predvajajo 6789 – Stanje v binarnem upravljavca
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Okvir . WIFI_SERVICE) ; / / Wifi vodja
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / Dobi podatke od wifi dhcp
če DHCP (== null) / / je dobil privzete vrednosti onemogočena, če DHCP omrežja eHouse
{/ / Ne DHCP ali napaka naprave
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
drugega / / DHCP
{
oddaja = int (DHCP . Ipaddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / Za UDP oddaje – Če želite oddajati podatke o funkciji
Regulator le dobila status
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((oddaja> ; > ; k * 8) in ; 0xFF) ;
lokalni int = (DHCP . Ipaddress) ; / / Lokalni IP naslov DHCP
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokalni> ; > ; k * 8) in ; 0xFF) ; / / Za lokalni IP naslov
}
poskusite
{
ds = new DatagramSocket (pristanišče) ; / / / Pripravljen na UDP pristaniških podatkov iz katerega koli ip
znotraj maske – UDP vtičnica ustvariti primerek lokalno številko vrat
}
ulov (Izjema e)
{
/ / Ehousecommunication . l ( ” Napaka INET: dobil naslov ” + E . getMessage ()) ; za preskus
}
poskusite
{
ds . setBroadcast (res) ; / / Omogoči pošiljanje oddaja sporočilo – za prenos
ds . setReuseAddress (res) ; / / Enable več vtičnica uporabljati isti naslov IP
/ / DS . setSoTimeout (400) ; / / Sprejem timeout
}
ulov (Izjema io)
{/ / Prezri napake, vendar bomo zaščitili pred napakami aplikacij in sistema
}
/ / * UDP oddaja TEST – broadcastu preskus UDP oddaja s telefonom ali tabličnim računalnikom – Prihodnost komunikacije z uporabo
/ * Poskusite
{
DatagramPacket dd = new DatagramPacket ( ” Pozdravljeni Beseda TEST Android UPD ” . getBytes () , 0 , ” Pozdravljeni Beseda TEST Android UPD ” . length () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . pošljite (dd) ; / / Pošlje DatagramPacket
}
ulov (Izjema e)
{
ehousecommunication . l ( ” Prenos datagram paketno napako: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast omogočeno zaklepanje ” ) ;
/ / Ustvari primerek skupinske multicast in broadcastu
ml . Pridobiti () ; / / Multicast zaklepanje enable UDP oddaja sprejem – Lahko se onemogoči Nekatere pametne telefone Android, za akumulator namene varčevanja –
broadcastu UDP podpora aktivira telefon, če je zaklenjen in samo za invalide
while (! ehousecommunication . Končati) / / neskončna zanka za sprejem UDP
{/ / Zanka neskončno prejemanje udp statusa
DatagramPacket dp = new DatagramPacket (sporočilo , Sporočilo . dolžina) ; / / Ustvari UDP datagram paketni varovalni uporabo podatkov – izkoristi paketa UDP
varovalni ” Sporočilo ”
try {
ds . prejemati (DP) ; / / UDP paket sprejem iz sistema eHouse – prejme pristanišče paketno UDP v UDP vtičnica
if (dp . getLength ()> ; 0) / / če je velikost parcele večja od nič – Nekaj ​​prejetih
{
EhouseTCP . QueryBuff = dp . getData () ; / / Določite udp oddaja recepition querybuffer – naložen v varovalnem eHouse stanja
/ / Dp . setlength (0) ; – velikost paketa nastavi na nič, tako da ne obdelujejo iste podatke večkrat
EhouseTCP . QueryReceived () ; / / Dekodiranje poizvedbe nize podatkov in izpolnite naprave – dekodira status kontrolorjev in obremenitev statusa aplikacije namiznih
}
}
ulov (Izjema os)
{/ / Prezri napake
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Samo za testiranje
}
}
ml . javnost () ; / / UDP Multicast zaklepanje brezplačno za sprejem vloge eHouse – sprosti zaklepanje multicast
ds . close () ; / / Zapri vtičnico datagramov na koncu – zapre vtičnico na koncu
}
Multicast zaklepanje se lahko zahteva v nekaterih napravah Android .
Lokalni oddajanje UDP v primeru mobilnih telefonov lahko omogočite ali ne, odvisno od mobilnega telefona strojno-programske opreme .
Prav tako se lahko trajno nezmožni za varčevanje z baterijo in varnostnih razlogov ali da zmanjša obremenjenost procesorja na omrežju pri delu .
(Opomba jedra konfiguracijo: CONFIG_IP_MULTICAST ni določeno) .
Poleg tega , Nekateri modeli se lahko blokira lokalni požarni zid in jih je potrebno aktivirati prenos na določenem pristanišču (privzeto 6789) .
Zunaj oddajanje pri uporabi GPRS internetne povezave , EDGE , 3G , 4G je mogoče zakleniti ali odkleniti s strani operaterja omrežja . Pogosteje , Vendar , mogoče pričakovati, , da se določi, da se zmanjša izkoristek povezave .
Pri nekaterih modelih mobilnih telefonov , Programska izvedba status kontrolorjev, ki so prejemali UDP lahko zelo težko ali celo nemogoče . Lahko zahtevajo uporabo posebnih niebrandowanego firmware ali pametni telefon .
Poleg tega , je treba paziti, ko upgradowaniu programov in preverite, da so vsi elementi delujejo pravilno iz škatle , V nasprotnem primeru bo diagnoza napak, je zelo težko .
Na podlagi nekaterih HTC telefonov in drugih proizvodov, ki vsebujejo operacijski sistem Android različice nižja od 2 . 3 . 3 opazili popolno blokado UDP sprejem broadcastu .
To je različica Android (2 . 1 – 2 . 3 v obdobju 01 . 01 . 2010 – 14 . 06 . 2011)
Če ne boste mogli prejemati UDP broadcastu prenesti in namestiti , Novo Android ROM minimalnega 2 . 3 . 3 (14. junij , 2011) , ki je preverila pravilnost oddaje delovnega bremena UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – Jedro @ and18 – 2 # 1 .
Št . 3software . 14 . 405 . 1 .
Za druge blagovne znamke telefonov, ki imajo podobne težave , prenesite Firmware Android Rom od proizvajalca , Različica vsaj 2 . 3 . 3 .
Opozoriti je treba tudi bistvene značilnosti UDP pakete .
So asinhroni in zahtevajo branje o tem, kaj lahko povzroči napake pri branju podatkov , njihova izguba (ukinitev) , predvsem s počasnim opreme , Povezave , združujejo visoko obremenitev in pametne telefone in tablet okupacijske CPU .
UDP stanja podatkov je opremljen v preskusno vsoto za preverjanje veljavnosti podatkov .
Avtomatizacija doma izdelku eHouse Avtomatizacija doma eHouse
eHouse naprave – Avtomatizacija doma eHouse