eHouse Building Automation System – Android-ohjelmisto vastaanottaa aseman ohjaimet UDP

Ethernet Home Automation eHouse voit automaattisesti lähettää tila broadcastu UDP (User Datagram Protocol) , jotka voivat saada kaikki laitteet LAN tai WLAN ja IP täyttää ehdon – Löytyy paikallisen naamio 255 . 255 . 255 . 0 , , joka lähetetään pois tilan IP-osoitteet ohjaimet 192 . 168 . 0 . x . UDP Broadcast voit poistaa latauksen tilan TCP / IP client , joka edellyttää yhteyden ohjaimeen . UDP lähetys on yhteydetön protokolla , etenemisympäristö tietojen ja määrästä riippumatta vastaanottavan laitteita ei ladata lisää CPU tai verkon yhteyksiä .
Yksinkertainen UDP vastaanoton toiminto älypuhelimet , paneelit ja Android tabletit on esitetty alla .
Näin ollen on päättymättömään silmukkaan perusteella tämän toiminnon , sinun täytyy luoda säiettä (Thread) työskentelevät taustalla , jolloin se matalin prioriteetti työ .
Muuten , täytäntöönpano toimilohkon toteuttamista muiden ohjelman toimien .
Lähdekoodi vastaan ​​UDP Broadcast Android-alustalla:
public void UDP (int portti) / / parametri portti poimia oletuksena lähettää 6789 – asema binary ohjain
{
tavu [] broadcastadr = new byte [4] ;
tavu [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi johtaja
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Get info wifi dhcp
jos (dhcp == null) / / saat oletusarvo on pois käytöstä, jos DHCP verkon eHouse
{/ / Ei dhcp tai virhe laitteen
broadcastadr [0] = (tavu) 192 ;
broadcastadr [1] = (tavu) 168 ;
broadcastadr [2] = (tavu) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
Broadcast = int (DHCP . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / UDP broadcast – Jos haluat lähettää tiedot toiminto
ohjain saa vain tila
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (tavu) ((lähettävät> ; > ; k * 8) & ; 0xFF) ;
paikallisten int = (DHCP . ipaddress) ; / / Local IP-osoitteen dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (tavu) ((paikallinen> ; > ; k * 8) & ; 0xFF) ; / / Jos paikallinen IP-osoite
}
yrittää
{
ds = uusi DatagramSocket (satama) ; / / / Kuuntelu UDP portin tietoja mistä tahansa ip
sisällä maskin – UDP socket luoda instanssi paikallisen portin numero
}
catch (Exception e)
{
/ / Ehousecommunication . L ( ” Virhe Inet: saat osoitteesta ” + E . GetMessage ()) ; testi-
}
yrittää
{
ds . setBroadcast (tosi) ; / / Ota lähettää lähettää viestin – lähetystä varten
ds . setReuseAddress (tosi) ; / / Ota jatkopistorasiat käyttää samaa IP-osoitetta
/ / Ds . setSoTimeout (400) ; / / Vastaanotto timeout
}
catch (Exception io)
{/ / Ohita virhe mutta suojaavat sovelluksen ja järjestelmän virheet
}
/ / * Udp broadcast TESTI – broadcastu testi UDP lähettää puhelimesta tai tabletti – tulevaisuuden viestintä soveltamiseen
/ * Kokeile
{
DatagramPacket dd = uusi DatagramPacket ( ” Hei Word Android UPD TEST ” . getBytes () , 0 , ” Hei Word Android UPD TEST ” . pituus () ,
InetAddress . getByAddress (broadcastadr) , portti) ;
ds . lähetä (dd) ; / / Lähettää DatagramPacket
}
catch (Exception e)
{
ehousecommunication . L ( ” Lähetys Datagram pakettivirhettä: ” + E . GetMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Ryhmälähetykseen kykenevälle lukko ” ) ;
/ / Luo instanssi lohkon multicast ja broadcastu
ml . Acquire () ; / / Multicast lukko enable udp lähetysten vastaanotto – Se voidaan estää Tietyt Android älypuhelimia batery säästämiseksi –
broadcastu UDP tuki aktivoi puhelimen, jos se on lukittu ja vain käytöstä
while (! ehousecommunication . Lopettaa) / / ikuinen silmukka UDP vastaanotto
{/ / Infinite loop vastaanottaa UDP tila
DatagramPacket dp = uusi DatagramPacket (viesti , viesti . pituus) ; / / Luo UDP pakettipuskuriin käyttäen tietoja – käyttää UDP-paketin
puskuri ” viesti ”
try {
ds . vastaanottaa (dp) ; / / UDP-paketin vastaanoton eHouse järjestelmä – vastaanottaa paketin UDP-porttiin UDP socket
jos (dp . getLength ()> ; 0) / / jos koko lohkojen suurempi kuin nolla – jotain sai
{
EhouseTCP . QueryBuff = dp . GetData () ; / / Määritä UDP broadcast recepition querybuffer – ladataan puskurin tila eHouse
/ / Dp . setlength (0) ; – paketin koko on asetettu nollaan, jotta ei käsitellä samoja tietoja toistuvasti
EhouseTCP . QueryReceived () ; / / Decode kyselyn taulukot ja täytä laitteet – dekoodaa asema valvojien ja kuormien hakemuksen tila taulukon
}
}
catch (Exception os)
{/ / Ohita virhe
/ / Ehousecommunication . L ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / For-testissä
}
}
ml . Release () ; / / Multicast udp lukitus ilmaiseksi vastaanotosta eHouse hakemuksen – vapauttaa lukon multicast
ds . sulje () ; / / Sulje datagrammi socket lopussa – sulkee socket lopussa
}
Multicast lukko voidaan tarvita joissakin Android-laitteisiin .
Paikalliset Broadcast UDP tapauksessa matkapuhelimia voidaan ottaa käyttöön tai ei riippuen matkapuhelimen firmware .
Se voi myös olla pysyvästi käytöstä akun säästön ja turvallisuussyistä tai vähentää suorittimen verkon kuormitus työssä .
(Huomaa ytimen asetukset: CONFIG_IP_MULTICAST ei ole asetettu) .
Lisäksi , Joissakin malleissa voi estää paikallisen palomuurin ja täytyy aktivoida lähetyksen tietyllä portti (oletus 6789) .
Outside Broadcast käytettäessä GPRS Internet-yhteydet , EDGE , 3G , 4G voidaan lukita tai avata verkko-operaattorin . Useammin , kuitenkin , Olisi odotettavissa , että se on kiinnitetty, jotta voidaan minimoida käyttöä linkin .
Joissakin malleissa matkapuhelinten , Ohjelmistototeutus tilan ohjaimia vastaanottavan UDP voi olla hyvin vaikeaa tai jopa mahdotonta . Saattaa edellyttää erityisiä firmware niebrandowanego tai älypuhelin .
Lisäksi , varovaisuutta on noudatettava, kun upgradowaniu firmware ja tarkista, että kaikki toiminnot toimivat oikein kättelyssä , muuten diagnoosi virheet tulee olemaan hyvin vaikeaa .
Perustuu joitakin HTC puhelimet ja muut tuotteet sisältävät Android-käyttöjärjestelmän versio alempi kuin 2 . 3 . 3 havaittiin yhteensä lohko UDP vastaanotto broadcastu .
Tämä oli versio Android (2 . 1 – 2 . 3 jakson 01 . 01 . 2010 – 14 . 06 . 2011)
Jos et voi vastaanottaa UDP broadcastu ladata ja asentaa , Uusi Android ROM version vähintään 2 . 3 . 3 (14. kesäkuuta , 2011) , jotka testataan oikeellisuutta työmäärää UDP broadcast .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Ei . 3Ohjelmistojen . 14 . 405 . 1 .
Muiden merkkien puhelimia samanlaisia ​​ongelmia , lataa Firmware Android Rom valmistajalta , version vähintään 2 . 3 . 3 .
Huomaa myös olennaiset ominaisuudet UDP-paketteja .
Ne ovat asynkroninen ja vaativat lukea mitä voi aiheuttaa tietojen lukuvirheitä , niiden menetys (irtoaminen) , etenkin hidas laitteet , linkit , yhdistyvät korkea kuormitus ja CPU ammatti älypuhelimet ja tabletit .
UDP tilatiedot on varustettu sisään tarkistussumma tarkastaa tietojen oikeellisuus .
Home Automation Tuottaja eHouse Home Automation eHouse
eHouse ohjaimet – Home Automation eHouse