eHouse Building Automation System – Android softver za primanje status kontrolora putem UDP

Ethernet Početna Automatizacija eHouse omogućuju vam automatski poslati statusa broadcastu UDP (User Datagram Protocol) , koji može primiti sve uređaje u vašem LAN ili WiFi i IP zadovoljavaju uvjet – Pronađeno u lokalnoj maske 255 . 255 . 255 . 0 , koji se emitira off status IP adrese kontrolora 192 . 168 . 0 . x . UDP objavljivanje vam omogućuje da onemogućite preuzimanje status TCP / IP klijent , koji zahtijeva vezu na kontroleru . UDP objavljivanje je bespojni protokol , za propagacije podataka i bez obzira na broj primaju uređaja ne učita više procesora ili mrežne veze .
Jednostavno UDP prijem funkcija sa smartphone , ploče i Android tablete je prikazan ispod .
To je, dakle, beskonačna petlja na temelju ove funkcije , morate stvoriti nit (thread) rade u pozadini , dajući mu najniži prioritet rad .
Inače , izvršenje ove funkcije blokirati izvršenje drugih aktivnosti programa .
Izvorni kod za primanje UDP objavljene Android platformu:
public void udp (int port) / / parametar luka pokupiti zadani emitirati 6789 – status u binarnom kontroler
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Kontekst . WIFI_SERVICE) ; / / WiFi menadžer
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Get informacije iz WiFi DHCP
ako (dhcp == null) / / dobili zadanu vrijednost je onemogućena ako DHCP mrežu eHouse
{/ / Ne dhcp ili pogreška za uređaj
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
drugo / / DHCP
{
emitiranje = int (dhcp . IPADDRESS & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Za UDP emisiji – Ako želite emitirati podatke o funkciji
Regulator prima samo status
za (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((emitira> ; > ; k * 8) i ; 0xff) ;
lokalni int = (dhcp . IPADDRESS) ; / / Lokalna IP adresa DHCP
za (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokalno> ; > ; k * 8) i ; 0xff) ; / / Za lokalne IP adresu
}
pokušati
{
DS = new DatagramSocket (luka) ; / / / Slušam na UDP port podataka iz bilo kojeg ip
unutar maske – UDP socket stvoriti instancu lokalne brojem porta
}
uhvatiti (Iznimka e)
{
/ / Ehousecommunication . l ( ” Pogreška INET: dobili adresu ” + E . getMessage ()) ; za ispitivanje
}
pokušati
{
DS . setBroadcast (istina) ; / / Enable poslati emitiranu poruku – za prijenos
DS . setReuseAddress (istina) ; / / Enable multiple socket koristiti istu IP adresu
/ / DS . setSoTimeout (400) ; / / Prijem timeout
}
uhvatiti (Iznimka IO)
{/ / Ignoriraj greške, ali smo zaštititi od aplikacija i sustava pogrešaka
}
/ / * UDP emitiranje TEST – broadcastu Test udp emitira iz vašeg telefona ili tableta – Budućnost komunikacija s primjenom
/ * Pokušajte
{
DatagramPacket dd = new DatagramPacket ( ” Pozdrav Riječ Android UPD TEST ” . getBytes () , 0 , ” Pozdrav Riječ Android UPD TEST ” . duljina () ,
InetAddress . getByAddress (broadcastadr) , luka) ;
DS . poslati (dd) ; / / Šalje DatagramPacket
}
uhvatiti (Iznimka e)
{
ehousecommunication . l ( ” Prenositi Datagram pogrešku paketa: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast omogućen zaključavanje ” ) ;
/ / Stvaranje instancu blok multicast i broadcastu
ml . Steći () ; / / Multicast brava deblokada udp prijem – To može biti onemogućen Određene Android smartphone za baterijama svrhu uštede –
broadcastu UDP podrška aktivira telefon ako je zaključan i samo onemogućene
dok je (! ehousecommunication . Ograničen) / / beskonačna petlja za UDP prijem
{/ / Beskonačni petlja primanje UDP status
DatagramPacket dp = new DatagramPacket (poruka , poruka . duljina) ; / / Stvaranje UDP datagrama paketa tampon koristeći podatke – omogućuje korištenje UDP paketa
tampon ” poruka ”
try {
DS . primati (DP) ; / / UDP paketa prijem iz eHouse sustava – prima luku paketa UDP na UDP socket
ako (DP . getLength ()> ; 0) / / ako je veličina parcele veća od nule – nešto dobila
{
EhouseTCP . QueryBuff = dp . getData () ; / / Dodjela UDP emitiranja recepition querybuffer – učitava u eHouse tampon statusa
/ / DP . SetLength (0) ; – veličina paketa je postavljen na nulu, kako ne bi obraditi iste podatke više puta
EhouseTCP . QueryReceived () ; / / Decode upita podataka polja i ispunite uređaje – dekodira status kontrolora opterećenja i stolnih aplikacija status
}
}
uhvatiti (Iznimka os)
{/ / Ignore pogreške
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Za test samo
}
}
ml . izdanje () ; / / Multicast udp zaključavanje besplatno za prijem eHouse prijave – oslobađa zaključavanje Multicast
DS . zatvoriti () ; / / Zatvorite Datagram socket na kraju – zatvara socket na kraju
}
Multicast brava se može tražiti u nekoj Android uređaje .
Lokalno objavljivanje UDP u slučaju mobitela može biti omogućeno ili ne, ovisno o mobilnom telefonu firmware .
To također može biti trajno onemogućen za baterije štednje i iz sigurnosnih razloga ili da se smanji CPU opterećenje na mreži na poslu .
(Napomena konfiguracije kernela: CONFIG_IP_MULTICAST nije postavljen) .
Dodatno , neki modeli mogu biti blokiran od strane lokalnog firewall i treba aktivirati prijenos na određenom port (default 6789) .
Izvan objavljivanje kada koristite GPRS internetske veze , EDGE , 3G , 4G može biti zaključana ili otključana mrežnog operatora . Češće , međutim , treba očekivati , da je fiksna u kako bi se smanjila korištenje link .
U nekim modelima mobitela , Softver provedba status kontrolora primaju UDP može biti vrlo teško ili čak nemoguće . Može zahtijevati korištenje posebnih firmware niebrandowanego ili smartphone .
Dodatno , mora se voditi računa kada upgradowaniu firmware i provjerite da su sve značajke rade ispravno out of the box , inače dijagnoza pogrešaka će biti vrlo teško .
Temelji se na nekim HTC telefone i drugih proizvoda koji sadrže Android operativni sustav verzije niže od 2 . 3 . 3 primijetio ukupno blok UDP prijem broadcastu .
To je verzija androida (2 . 1 – 2 . 3. razdoblja 01 . 01 . 2010 – 14 . 06 . 2011)
Ako ne možete dobiti UDP broadcastu preuzeti i instalirati , Novi Android ROM verzija minimalno 2 . 3 . 3 (14. lipnja , 2011) , koja testira ispravnost rada opterećenja UDP emisiji .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Ne . 3software . 14 . 405 . 1 .
Za ostale marke mobitela sa sličnim problemima , molimo preuzmite Firmware Android Rom od proizvođača , inačica najmanje 2 . 3 . 3 .
Imajte na umu bitne karakteristike UDP paketa .
Oni su asinkroni i zahtijevaju čitanje o tome što može uzrokovati podaci pročitati pogreške , njihov gubitak (prolijevanja) , pogotovo sa sporom opreme , linkovi , kombiniraju visoku nosivost i CPU okupacijske smartphone i tablete .
UDP podaci o statusu opremljen je u checksum za provjeru valjanosti podataka .
Početna Automatizacija producent eHouse Početna Automatizacija eHouse
eHouse Kontroleri – Početna Automatizacija eHouse