eHouse gebou Automation System – Android sagteware die status van beheerders via UDP te ontvang

Ethernet Home Automation eHouse jou toelaat om outomaties stuur 'n status broadcastu UDP (User Data Gram Protocol) , wat al die toestelle in jou LAN of WiFi en IP voldoen aan die toestand kan ontvang – Gevind in die plaaslike masker 255 . 255 . 255 . 0 , wat uitgesaai van die status van die IP-adresse van die beheerders 192 . 168 . 0 . x . UDP Broadcast kan jy die download status van die TCP / IP kliënt te skakel , wat vereis dat 'n verbinding aan die Kontroleur . UDP Broadcast is 'n Verbindingloos protokol , vir voortplanting data en ongeag van die aantal van die ontvangende toestelle nie laai meer die SVE of 'n netwerk skakels .
Simple UDP uitsending ontvangs funksie met smart phones , panele en Android-tablette word hieronder .
Dit is dus 'n oneindige lus op die basis van hierdie funksie , wat jy nodig het om te skep 'n draad (draad) werk in die agtergrond , gee dit die laagste prioriteit werk .
Anders , die uitvoering van hierdie funksie sluit die uitvoering van die ander aktiwiteite van die program .
Die bron-kode vir die ontvangs van UDP Broadcast Android platform:
public void udp (int hawe) / / parameter Port te haal die standaard uitgesaai 6789 – status in binêre kontroleerder
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Konteks . WIFI_SERVICE) ; / / Wifi bestuurder
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Kry info uit wifi dhcp
if (dhcp == null) / / kry standaard waarde is afgeskakel as DHCP netwerk van eHouse
{/ / Geen DHCP-of 'n fout vir die toestel
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
anders / / DHCP
{
uitgesaai = int (dhcp . IPaddress & ; ; dhcp . netmasker) | ~ dhcp . netmasker ; / / Vir udp uitgesaai – As jy wil hê dat die data op die funksie uit te saai
kontroleerder ontvang slegs status
(int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((uitgesaai> ; > ; k * 8) & ; 0xff wees) ;
plaaslike int = (dhcp . IPaddress) ; / / Plaaslike ip adres dhcp
(int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((plaaslike> ; > ; k * 8) & ; 0xff wees) ; / / Vir plaaslike IP-adres
}
probeer
{
ds = new DatagramSocket (hawe) ; / / / Luister op UDP-poort data van enige ip
binne 'n masker – UDP socket 'n geval van die plaaslike hawe te skep
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Fout Inet: kry adres ” + E . getMessage ()) ; vir toets
}
probeer
{
ds . setBroadcast (ware) ; / / Aktiveer stuur uitsending boodskap – vir die oordrag
ds . setReuseAddress (ware) ; / / Aktiveer verskeie socket dieselfde IP-adres gebruik
/ / Ds . setSoTimeout (400) ; / / Ontvangs timeout
}
vang (Exception io)
{/ / Ignoreer foute, maar ons beskerm teen die aansoek en stelsel foute
}
/ / * UDP uitsending TOETS – broadcastu toets udp uitgesaai vanaf jou selfoon of tablet – toekomstige kommunikasie met die toepassing van
/ * Probeer
{
DatagramPacket dd = new DatagramPacket ( ” Hallo Woord van Android UPD TOETS ” . getBytes () , 0 , ” Hallo Woord van Android UPD TOETS ” . lengte () ,
InetAddress . getByAddress (broadcastadr) , hawe) ;
ds . stuur (dd) ; / / Stuur 'n DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Oordra Data Gram pakkie fout: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast enabled slot ” ) ;
/ / Skep 'n geval van die blok multicast and broadcastu
ml . Verkry () ; / / Multicast slot enable udp uitsending ontvangs – Dit kan sekere Android smart phones gedeaktiveer word vir die doeleindes van battery besparing –
broadcastu UDP ondersteuning aktiveer die telefoon as dit gesluit is en slegs gedeaktiveer
terwyl (ehousecommunication . Beëindig) / / oneindige lus vir udp ontvangs
{/ / Oneindige lus udp status ontvang
DatagramPacket dp = new DatagramPacket (boodskap , boodskap . lengte) ; / / Skep udp datagram pakkie buffer deur gebruik te maak van data – maak gebruik van die UDP pakkie
buffer ” boodskap ”
try {
ds . (OB) ; / / UDP pakkie ontvangs van eHouse stelsel – die pakkie ontvang UDP-poort van die UDP socket
if (dp . getLength ()> ; 0) / / as die grootte van die pakkies groter as nul – iets ontvang
{
EhouseTCP . QueryBuff = dp . getData () ; / / Ken 'n udp uitsending recepition querybuffer – gelaai in die buffer status eHouse
/ / DP . setLength (0) ; – pakkie grootte is ingestel op nul sodat dit nie die herhaaldelik dieselfde data te verwerk
EhouseTCP . QueryReceived () ; / / Dekodeer query data skikkings en vul toestelle – dekodeer die status van beheerders op laai en vele die aansoek status tabel
}
}
vang (Exception os)
{/ / Ignoreer foute
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Vir toets net
}
}
ml . release () ; / / Multicast udp slot gratis vir die ontvangs van eHouse aansoek – stel die slot multicast
ds . sluit () ; / / Maak die datagram socket aan die einde – sluit die sok aan die einde van
}
Multicast slot wat nodig mag wees in 'n paar Android-toestelle .
Plaaslike Broadcast UDP in die geval van selfone kan geaktiveer word of nie, afhangende van die selfoon firmware .
Dit kan ook permanent afgeskakel vir battery besparing en vir veiligheids redes of die CPU las op die netwerk te verminder by die werk .
(Let op die kern configuration: CONFIG_IP_MULTICAST nie) .
Daarbenewens , sommige modelle kan geblokkeer word deur 'n plaaslike firewall en nodig het om die oordrag te aktiveer op 'n gegewe hawe (standaard 6789) .
Buite Uitsending wanneer die gebruik van GPRS Internet verbindings , EDGE , 3G , 4G kan gesluit word of ontsluit deur die netwerk-operateur . Meer dikwels , egter , moet verwag word , dat dit word vasgestel ten einde die gebruik van die skakel tot 'n minimum te beperk .
In sommige modelle van selfone , Sagteware implementering status van beheerders ontvang UDP kan baie moeilik of selfs onmoontlik wees . Kan vereis dat die gebruik van spesiale firmware niebrandowanego of smartphone .
Daarbenewens , sorg moet gedra word wanneer upgradowaniu firmware en maak seker dat al die funksies behoorlik werk uit die boks , anders sal die diagnose van die foute baie moeilik sal wees .
Gebaseer op 'n paar HTC fone en ander produkte met die Android-bedryfstelsel weergawe laer as 2 . 3 . 3 neem 'n totale blok UDP ontvangs broadcastu .
Dit was die weergawe van Android (2 . 1 – 2 . 3 van die tydperk van 01 . 01 . 2010 – 14 . 06 . 2011)
As jy nie kan ontvang UDP broadcastu aflaai en installeer , Nuwe Android-ROM weergawe van die minimum 2 . 3 . 3 (14 Junie , 2011) , wat die korrektheid van die werkslading UDP uitsending getoets .
Kern weergawe 2 . 6 . 35 . 10 – htcg3ef43272 – kern @ and18 – 2 # 1 .
Geen . 3software . 14 . 405 . 1 .
Vir ander handelsmerke van selfone met soortgelyke probleme , laai asseblief Firmware Android Rom van die vervaardiger , weergawe van ten minste 2 . 3 . 3 .
Let ook op die noodsaaklike eienskappe van UDP-pakkies .
Hulle is asynchrone en vereis lees oor wat kan veroorsaak data lees foute , hul verlies (beurtkrag) , veral met 'n stadige toerusting , skakels , kombineer hoë lading en CPU beroep smart phones en tablette .
UDP status data is toegerus in checksum geldigheid van data te kontroleer .
Home Automation Producer eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse