eHouse Building Automation System – Android programvara för att få status som regulatorer via UDP

Ethernet Home Automation eHouse kan du automatiskt skicka en status broadcastu UDP (User Datagram Protocol) , som kan ta emot alla enheter i ditt nätverk eller WiFi och IP uppfyller villkoret – Finns i lokala masken 255 . 255 . 255 . 0 , som sänds från status IP-adresserna för regulatorerna 192 . 168 . 0 . X . UDP sändning kan du inaktivera hämtning status TCP / IP-klient , vilket kräver en anslutning till styrenheten . UDP Broadcast är en anslutningslöst protokoll , för utbredning data och oavsett hur många av de mottagande enheterna inte lasta mer CPU eller länkar nätverket .
Enkel UDP-broadcast-mottagning funktion med smartphones , paneler och Android tabletter visas nedan .
Det är därför en oändlig slinga på basis av denna funktion , du behöver för att skapa en tråd (tråd) som arbetar i bakgrunden , ge det den lägsta prioritet arbetet .
Annars , genomförandet av denna funktion blockerar genomförandet av andra verksamheter inom programmet .
Källkoden för att ta emot UDP-broadcast Android-plattformen:
public void udp (int port) / / parameter porten för att plocka upp den förvalda sänds 6789 – status i binär styrenhet
{
byte [] broadcastadr = ny byte [4] ;
byte [] localadr = ny byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi-chef
Dhcpinfo dhcp = wifi . getDhcpInfo () ; / / Hämta information från wifi dhcp
if (dhcp == null) / / få standardvärdet är inaktiverat om DHCP nätverk eHouse
{/ / Ingen DHCP eller ett fel för enheten
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
annars / / DHCP
{
sändning = int (dhcp . IP-adress och ; ; dhcp . nätmask) | ~ dhcp . nätmask ; / / För udp sändning – Om du vill sända data på funktionen
mottar endast status
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((sänds> ; > ; k * 8) & ; 0xFF) ;
lokala int = (dhcp . ip-adress) ; / / Lokal IP-adress DHCP
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokal> ; > ; k * 8) & ; 0xFF) ; / / För lokal IP-adress
}
prova
{
ds = new DatagramSocket (hamn) ; / / / Lyssna på UDP-port data från alla ip
inuti en mask – UDP socket att skapa en instans av den lokala portnummer
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Fel Inet: få adress ” + E . getMessage ()) ; för test
}
prova
{
ds . setBroadcast (sant) ; / / Aktivera skicka broadcast-meddelanden – för sändning
ds . setReuseAddress (sant) ; / / Aktivera flera uttag använder samma IP-adress
/ / DS . setSoTimeout (400) ; / / Mottagning timeout
}
catch (Exception io)
{/ / Ignorera fel, men vi skyddar mot program-och systemfel
}
/ / * UDP-broadcast TEST – broadcastu testa UDP-broadcast från telefonen eller tablett – framtida kommunikation med tillämpning av
/ * Försök
{
DatagramPacket dd = ny DatagramPacket ( ” Hej ord från Android UPD TEST ” . getBytes () , 0 , ” Hej ord från Android UPD TEST ” . längd () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . skicka (dd) ; / / Skickar en DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmit Datagram paketfelfrekvens: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast aktiverat lås ” ) ;
/ / Skapa en instans av blocket multicast och broadcastu
ml . Förvärva () ; / / Multicast lås Aktivera UDP-broadcast-mottagning – Det kan inaktiveras Vissa Android smartphones för batery sparande ändamål –
broadcastu UDP stöd aktiveras telefonen om den är låst och endast funktionshindrade
medan (! ehousecommunication . Avsluta) / / oändlig loop för udp mottagning
{/ / Oändlig loop får udp status
DatagramPacket dp = nytt DatagramPacket (meddelande , meddelande . längd) ; / / Skapa udp datagram paketbuffert med hjälp av data – gör användning av UDP-paket
buffert ” meddelande ”
try {
ds . ta emot (dp) ; / / UDP-paket mottagning från eHouse systemet – mottar paketet UDP-port för UDP en sockel
om (dp . getLength ()> ; 0) / / om storleken av paket är större än noll – något emot
{
EhouseTCP . QueryBuff = dp . getData () ; / / Tilldela en UDP-broadcast recepition querybuffer – laddas in i bufferten status eHouse
/ / Dp . setLength (0) ; – paketstorleken är satt till noll för att inte behandla samma data flera gånger
EhouseTCP . QueryReceived () ; / / Decode frågedata matriser och fylla enheter – avkodar status på flygledare och laddar programmet status tabellen
}
}
catch (Exception os)
{/ / Ignorera fel
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / För prov endast
}
}
ml . frisättning () ; / / Multicast udp lås gratis för mottagning av eHouse ansökan – frigör låset multicast
ds . close () ; / / Stäng datagrammet uttaget på slutet – stänger uttaget i slutet av
}
Multicast lås kan krävas i vissa Android-enheter .
Lokalt Broadcast UDP vid mobiltelefoner kan aktiveras eller inte beroende på mobiltelefonen firmware .
Det kan också vara permanent avaktiveras för batteri sparande och av säkerhetsskäl eller för att minska CPU-belastningen på nätverket på jobbet .
(Notera kärnan konfiguration: CONFIG_IP_MULTICAST är inte inställd) .
Dessutom , Vissa modeller kan blockeras av en lokal brandvägg och behöver aktivera överföringen på en viss port (standard 6789) .
Outside Broadcast vid användning GPRS Internet-anslutningar , KANT , 3G , 4G kan låsas eller låsas upp av nätoperatören . Oftare , dock , bör förväntas , att den är fäst för att minimera användningen av länken .
I vissa modeller av mobiltelefoner , Programvara genomförandet status regulatorer får UDP kan vara mycket svårt eller rentav omöjligt . Kan kräva användning av särskild firmware niebrandowanego eller smartphone .
Dessutom , måste man vara försiktig när upgradowaniu firmware och kontrollera att alla funktioner fungerar som de ska ur lådan , annars diagnos av felen kommer att bli mycket svårt .
Baserat på några HTC-telefoner och andra produkter som innehåller operativsystemet Android version lägre än 2 . 3 . 3 observerade en total kvarter UDP-mottagning broadcastu .
Detta var den version av Android (2 . 1 – 2 . 3 av perioden 01 . 01 . 2010 – 14 . 06 . 2011)
Om du inte kan ta emot UDP broadcastu nedladdning och installation , Nya Android ROM-version av den minsta 2 . 3 . 3 (juni 14 , 2011) , som testade riktigheten av arbetsbördan UDP-broadcast .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Nej . 3software . 14 . 405 . 1 .
För andra märken av telefoner med liknande problem , ladda ner Firmware Android Rom från tillverkaren , version av minst 2 . 3 . 3 .
Notera också väsentliga egenskaper UDP-paket .
De är asynkrona och kräver läsa om vad som kan orsaka läs fel , deras förlust (utgjutelse) , särskilt med långsam utrustning , länkar , kombinera hög belastning och CPU SmartPhones yrke och tabletter .
UDP statusdata är utrustad i kontrollsumma för att kontrollera giltigheten av data .
Hemautomation Producent eHouse Home Automation eHouse
eHouse Kontrollerkort – Home Automation eHouse