eHouse hoone automaatika – Android tarkvara saada staatus kontrollerid kaudu UDP

Ethernet Home Automation eHouse võimaldab teil automaatselt saata staatuse broadcastu UDP (User Datagram Protocol) , mis võib saada kõik seadmed oma LAN või WiFi ja IP vasta seisukorras – Leitud kohalike mask 255 . 255 . 255 . 0 , mis on saade väljas olek IP-aadressid kontrollerid 192 . 168 . 0 . x . UDP ülekanne võimaldab teil keelata lae staatuse TCP / IP klient , mis vajab ühendust kontroller . UDP ülekanne on ühenduseta protokoll , paljundamiseks andmed ja arvust sõltumata vastuvõtva seadmed ei koorma rohkem CPU või võrguühenduste .
Lihtne UDP ringhäälingu vastuvõtu funktsioon nutitelefonid , paneelid ja Android tabletid on toodud allpool .
Seetõttu on lõputu silmuse põhjal seda funktsiooni , teil on vaja luua niit (thread) töötab taustal , andes madalaima prioriteediga tööd .
Muidu , täitmise seda funktsiooni blokeerida täitmise muude tegevuste programmi .
Lähtekoodi saanud UDP ülekanne Android platvormil:
public void UDP (int port) / / parameeter sadama kiirenemist default eetrisse 6789 – staatuse binaarne kontroller
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (taust . WIFI_SERVICE) ; / / Wifi juht
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / Get info alates wifi dhcp
if (DHCP == null) / / saada vaikeväärtus on keelatud, kui DHCP võrgu eHouse
{/ / Ei DHCP või viga seadme
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
teine ​​/ / DHCP
{
saade = int (DHCP . IP-aadress ja ; ; DHCP . netmask) | ~ dhcp . netmask ; / / UDP eetrisse – Kui soovite edastada andmeid funktsioon
kontroller saab ainult staatust
jaoks (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((eetrisse> ; > ; k * 8) ja ; 0xFF) ;
kohaliku int = (DHCP . IP-aadress) ; / / Kohalik IP aadress DHCP
jaoks (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((kohalikud> ; > ; k * 8) ja ; 0xFF) ; / / Sest kohalik IP aadress
}
püüdma
{
ds = new DatagramSocket (sadam) ; / / / Kuula UDP port andmete mis tahes IP
sees mask – UDP pesa luua näiteks kohaliku pordi number
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Viga Inet: saada aadress ” + E . getMessage ()) ; Katsetamiseks
}
püüdma
{
ds . setBroadcast (tõene) ; / / Luba Kirjuta eetrisse sõnum – edastamise
ds . setReuseAddress (tõene) ; / / Luba mitu pesa kasutada sama IP aadressi
/ / DS . setSoTimeout (400) ; / / Vastuvõtt timeout
}
catch (Exception IO)
{/ / Ignore vigu, kuid me kaitsta taotluse ja süsteemi viga
}
/ / * UDP eetrisse TEST – broadcastu test UDP eetrisse telefoni või tahvelarvuti – tulevikus suhtlemine kohaldamise
/ * Püüa
{
DatagramPacket dd = uus DatagramPacket ( ” Tere Word Android UPD TEST ” . getbytes () , 0 , ” Tere Word Android UPD TEST ” . pikkus () ,
InetAddress . getByAddress (broadcastadr) , sadam) ;
ds . Kirjuta (kk) ; / / Saadab DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Edastab Datagram pakettaknad viga: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast toega lukk ” ) ;
/ / Loo astme blokaad multicast ja broadcastu
ml . Omandada () ; / / Multicast lukk UDP ringhäälingu vastuvõtu – See saab keelata teatud Android nutitelefonid batery kokkuhoiu eesmärgil –
broadcastu UDP toetust aktiveerib telefoni, kui see on lukus ja ainult puudega
while (! ehousecommunication . Lõpetada) / / lõpmatu ahel UDP vastuvõtt
{/ / Infinite loop saanud UDP staatus
DatagramPacket dp = uus DatagramPacket (sõnum , sõnum . pikkus) ; / / Loo UDP datagrammi pakettaknad puhver andmeid kasutades – kasutab UDP paketi
puhverdada ” sõnum ”
try {
ds . saada (DP) ; / / UDP paketi vastuvõtt eHouse süsteem – saab pakettaknad UDP port UDP pesa
if (dp . getLength ()> ; 0) / / kui suurus maatükkide suurem kui null – midagi saanud
{
EhouseTCP . QueryBuff = dp . GetData () ; / / Määra UDP eetrisse recepition querybuffer – laaditud puhver staatuse eHouse
/ / DP . setLength (0) ; – paketi suurus on seatud null, et mitte menetleda samade andmetega korduvalt
EhouseTCP . QueryReceived () ; / / Decode päringu andmed massiivid ja täitke seadmed – dekodeerib staatus kontrollerid ja koormused taotlus tabeli
}
}
catch (Exception os)
{/ / Ignore vigu
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Ainult katsetamiseks
}
}
ml . vabastamist () ; / / Multicast UDP lukk tasuta vastuvõtt eHouse taotlus – vabastab luku multicast
ds . lähedal () ; / / Sulge datagrammi pesa lõpus – sulgub pesa lõpus
}
Multicast lukk võib nõuda mõned Android seadmed .
Kohalik ülekanne UDP puhul mobiiltelefonid saab lubada või mitte sõltuvalt mobiiltelefoni püsivara .
Samuti võib alatiseks aku säästmise ja ohutuse tagamiseks või vähendada protsessori koormust võrgus tööl .
(Märkus kerneli konfiguratsioon: CONFIG_IP_MULTICAST ei ole valitud) .
Veel , Mõnedel mudelitel võib olla blokeeritud kohaliku tulemüüri ja vaja aktiveerida edastamise kohta antud port (vaikimisi 6789) .
Väljaspool ülekanne kasutades GPRS internetiühendused , EDGE , 3G , 4G saab lukustada või avada, kui võrguettevõtja . Sagedamini , aga , tuleb oodata , et see on fikseeritud, et minimeerida kasutamine link .
Mõnes mudelid mobiiltelefonid , Tarkvara rakendamise staatus kontrollerid saanud UDP võib olla väga raske või isegi võimatu . Võib vaja kasutada erilisi püsivara niebrandowanego või nutitelefoni .
Veel , tuleb hoolitseda, kui upgradowaniu püsivara ja kontrollida, et kõik funktsioonid töötavad korralikult karbist , muidu diagnoosi vigu on väga raske .
Põhineb mõned HTC telefonid ja muud tooted, mis sisaldavad Android operatsioonisüsteemi versiooni alla 2 . 3 . 3 Täheldati kogu blokk UDP vastuvõtt broadcastu .
See oli versioon Android (2 . 1 – 2 . 3 perioodi 01 . 01 . 2010 – 14 . 06 . 2011)
Kui te ei saa UDP broadcastu alla laadida ja installida , Uus Android ROMil minimaalselt 2 . 3 . 3 (14. juuni , 2011) , mis testis õigsuse töökoormus UDP eetrisse .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – tuuma @ and18 – 2 # 1 .
Ei . 3software . 14 . 405 . 1 .
Teiste kaubamärkide telefonid sarnaste probleemidega , laadige püsivara Android ROM tootja , versioon vähemalt 2 . 3 . 3 .
Pange ka tähele, olulised omadused UDP pakette .
Nad on asünkroonne ja nõuavad lugedes mida võib põhjustada andmete lugemise vigu , nende kaotus (kadumas) , eriti aeglane seadmed , lingid , kombineerida suure koormuse ja CPU okupatsiooni nutitelefonid ja tabletid .
UDP andmed seisundi kohta on varustatud kontrollsummasse et kontrollida andmete valiidsuse .
Home Automation Produtsent eHouse Home Automation eHouse
eHouse Kontrollerid – Home Automation eHouse