eHouse Building Automation System – Android softvér získať štatút regulátorov cez UDP

Ethernet Domáce automatizácie eHouse umožňujú automaticky odoslať stave Broadcast UDP (User Datagram Protocol) , ktoré môžu prijímať všetky zariadenia vo vašej sieti LAN alebo Wi-Fi a IP spĺňal podmienku – Nájdené v miestnej maske 255 . 255 . 255 . 0 , ktorý je vysielaný mimo štatút IP adresy regulátorov 192 . 168 . 0 . x . UDP Broadcast umožňuje zakázať sťahovanie stav TCP / IP klienta , ktorá vyžaduje pripojenie k regulátoru . UDP Broadcast je spojované protokol , pre šírenie údajov a bez ohľadu na počet prijímajúcich zariadení nenačíta viac CPU alebo sieťových spojení .
Jednoduché UDP broadcast recepcia funkcie s smartphony , panely a Android tablety je uvedené nižšie .
Z tohto dôvodu je nekonečné slučky na základe tejto funkcie , je potrebné vytvoriť vlákno (thread) v práci na pozadí , dávať to najnižšia prioritou práce .
Inak , výkon tejto funkcie blokovať vykonávanie ďalších činností v rámci programu .
Zdrojový kód pre príjem UDP Broadcast android platformy:
public void udp (int port) / / parameter port vyzdvihnúť predvolené vysielania 6789 – Stav v binárny ovládače
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi manager
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Získanie informácií z wifi dhcp
if (dhcp == null) / / získať predvolenú hodnotu je zakázané, ak DHCP siete eHouse
{/ / No dhcp alebo chyba prístroja
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
vysielanie = int (dhcp . IPAddress & ; ; dhcp . Netmask) | ~ dhcp . Netmask ; / / Pre udp vysielanie – Ak chcete vysielať dáta na funkciu
Regulátor len prijíma informácie o stave
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((vysielanie> ; > ; k * 8) a ; 0xFF) ;
miestne int = (dhcp . ipaddress) ; / / Lokálne IP adresa dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((miestna> ; > ; k * 8) a ; 0xFF) ; / / Pre lokálne IP adresu
}
vyskúšať
{
ds = new DatagramSocket (port) ; / / / Počúva na udp portu údajov z ľubovoľnej IP
vnútri masky – udp socket vytvoriť inštanciu miestne číslo portu
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Chyba Inet: dostať adresu ” + E . getMessage ()) ; pre test
}
vyskúšať
{
ds . setBroadcast (true) ; / / Povoliť poslať broadcast správu – pre prenos
ds . setReuseAddress (true) ; / / Povoliť viac socket použiť rovnakú IP adresu
/ / Ds . setSoTimeout (400) ; / / Recepcia timeout
}
catch (Exception io)
{/ / Ignorovať chyby, ale chránime pred aplikáciou a systémových chýb
}
/ / * UDP Broadcast TEST – Broadcast skúšobné udp vysielanie z telefónu alebo tabletu – Budúcnosť komunikácie s aplikáciou
/ * Skúste
{
DatagramPacket dd = new DatagramPacket ( ” Dobrý deň, Word z Android TEST UPD ” . GetBytes () , 0 , ” Dobrý deň, Word z Android TEST UPD ” . dĺžka () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . Poslať (dd) ; / / Odošle DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Vysielanie Datagram paketov chybu: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast povolené zámok ” ) ;
/ / Vytvorenie inštancie bloku multicast a broadcast
ml . Získať () ; / / Multicast lock enable udp broadcast príjem – To môže byť zakázaný Niektoré Android smartphony na Batériové úsporných účely –
Broadcast UDP podpora aktivuje telefón, ak je uzamknutý a len vypnuté
while (! ehousecommunication . Terminate) / / nekonečná slučka pre príjem udp
{/ / Nekonečná slučka príjem udp stav
DatagramPacket dp = new DatagramPacket (správa , hlásenie . dĺžka) ; / / Vytvorenie udp datagram packet vyrovnávacia pamäť pomocou dát – využíva UDP paketu
buffer ” hlásenie ”
try {
ds . príjem (dp) ; / / UDP paketu príjem z eHouse systému – dostane UDP paketu port UDP socket
if (DP . getLength ()> ; 0) / / ak veľkosť pozemkov väčšia ako nula – niečo dostal
{
EhouseTCP . QueryBuff = dp . getData () ; / / Priradenie UDP Broadcast recepition querybuffer – načítaný do vyrovnávacej pamäte eHouse stave
/ / Dp . setlength (0) ; – veľkosť paketu je nastavená na nulu, aby nedošlo k spracovávať rovnaké údaje opakovane
EhouseTCP . QueryReceived () ; / / Decode dopytu dátové polia a vyplňte zariadenia – dekóduje stav regulátorov a zaťaženie aplikácií stav tabuľky
}
}
catch (Exception os)
{/ / Ignorovať chyby
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Len pre skúšku
}
}
ml . release () ; / / Multicast udp zámok zadarmo pre príjem eHouse aplikácie – uvoľní zámok multicast
ds . close () ; / / Zatvorte zásuvku datagram na konci – zavrie zásuvku na konci
}
Multicast zámok môže byť vyžadované v niektorých zariadeniach so systémom Android .
Lokálne vysielanie UDP v prípade mobilných telefónov môže byť aktivovaná alebo nie v závislosti na mobilnom telefóne firmware .
To môže tiež byť trvalo zakázaný batérie úspor a z bezpečnostných dôvodov alebo pre zníženie zaťaženia procesora na sieti pri práci .
(Poznámka: konfigurácia jadra: CONFIG_IP_MULTICAST nie je nastavený) .
Navyše , Niektoré modely môžu byť blokované miestne firewall a je potrebné aktivovať prenos na danom porte (predvolený 6789) .
Okrem vysielania pri použití GPRS pripojenie na Internet , EDGE , 3G , 4G možno zamknúť alebo odomknúť prevádzkovateľ siete . Častejšie , však , by sa malo očakávať , , Že je pevne, aby sa minimalizovala využitie odkazu .
V niektorých modeloch mobilných telefónov , Softvér stav implementácie riadiacich užívajúcich UDP môže byť veľmi ťažké, alebo dokonca nemožné . Môžu vyžadovať použitie špeciálneho firmvéru niebrandowanego alebo smartphone .
Navyše , starostlivosti musí byť vzatá keď upgradowaniu firmware a skontrolujte, či všetky funkcie správne fungujú po vybalení z krabice , inak diagnostika chýb bude veľmi ťažké .
Na základe niektorých telefónov HTC a ďalších produktov, ktoré obsahujú operačný systém Android verzie nižšej ako 2 . 3 . 3 pozorovať celkový blok UDP recepcia Broadcast .
To bolo na verziu Android (2 . 1 – 2 . 3 doby 01 . 01 . 2010 – 14 . 06 . 2011)
Ak nemôžete prijímať UDP broadcast stiahnuť a nainštalovať , Nová Android ROM verzia minimálne 2 . 3 . 3 (14. júna , 2011) , ktorý testoval správnosť vysielanie pracovného zaťaženia UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Žiadny . 3software . 14 . 405 . 1 .
U ostatných značiek telefónov s podobnými problémami , stiahnite si firmware Android Rom od výrobcu , Verzia aspoň 2 . 3 . 3 .
Všimnite si tiež, aké sú základné znaky UDP paketov .
Oni sú asynchrónne a vyžadujú čítanie o tom, čo môže spôsobiť dáta čítať chyby , ich strata (vylučovanie) , najmä s pomalým zariadenia , odkazy , kombinujú vysokú záťaž a smartphony CPU okupačné a tablety .
UDP údaje o stave je vybavená do kontrolného súčtu pre kontrolu platnosti dát .
Domáce automatizácie výrobcu eHouse Domáce automatizácie eHouse
eHouse kontroléry – Domáce automatizácie eHouse