eHouse Building Automation System – Android programvare for å få status som kontrollerne via UDP

Ethernet Home Automation eHouse kan du sende en automatisk status broadcastu UDP (User Datagram Protocol) , som kan motta alle enhetene i LAN eller WiFi og IP tilfredsstiller betingelsen – Funnet i den lokale maske 255 . 255 . 255 . 0 , som sendes av status IP-adressene til kontrollerne 192 . 168 . 0 . x . UDP Broadcast kan du deaktivere nedlastingen status TCP / IP-klient , som krever en forbindelse til kontrolleren . UDP Broadcast er en forbindelsesløs protokoll , for forplantning data og uavhengig av antall av de mottaksenheter ikke laste mer CPU eller nettverkskoblinger .
Enkel UDP mottak av funksjon med smarttelefoner , paneler og Android tabletter er vist nedenfor .
Det er derfor et uendelig løkke på grunnlag av denne funksjonen , du trenger for å lage en tråd (thread) arbeider i bakgrunnen , gir det laveste prioritet arbeidet .
Ellers , gjennomføringen av denne funksjonen blokkere gjennomføringen av andre aktiviteter på programmet .
Kildekoden for mottak UDP Broadcast Android-plattform:
public void udp (int port) / / parameter port for å plukke opp standard kringkaste 6789 – status i binær kontrolleren
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi leder
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Få info fra wifi dhcp
if (dhcp == null) / / få standardverdien er deaktivert hvis DHCP nettverk av eHouse
{/ / No dhcp eller en feil for enheten
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
kringkasting = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / For udp kringkasting – Hvis du ønsker å kringkaste data på funksjonen
kontrolleren mottar bare status
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((kringkaste> ; > ; k * 8) og ; 0xFF) ;
lokale int = (dhcp . ipadresse) ; / / Local ip adresse dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokal> ; > ; k * 8) og ; 0xFF) ; / / For lokale ip-adresse
}
prøve
{
ds = new DatagramSocket (port) ; / / / Lytter på UDP port data fra alle ip
inne i en maske – udp socket å opprette en forekomst av den lokale portnummer
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Feil Inet: få adresse ” + E . GetMessage ()) ; for test
}
prøve
{
ds . setBroadcast (sann) ; / / Aktiver sende kringkastingsmelding – for overføring
ds . setReuseAddress (sann) ; / / Aktivere flere socket bruke samme IP-adresse
/ / Ds . setSoTimeout (400) ; / / Mottak timeout
}
catch (Exception io)
{/ / Ignorer feil, men vi beskytte mot program og system feil
}
/ / * UDP broadcast TEST – broadcastu test udp kringkaste fra telefonen eller nettbrettet – fremtidig kommunikasjon med anvendelse av
/ * Prøv
{
DatagramPacket dd = new DatagramPacket ( ” Hei Word fra Android UPD TEST ” . getBytes () , 0 , ” Hei Word fra Android UPD TEST ” . length () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . sende (dd) ; / / Sender en DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmit Datagram pakke feil: ” + E . GetMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast-aktivert lås ” ) ;
/ / Opprett en forekomst av blokken multicast og broadcastu
ml . Erverve () ; / / Multicast lås enable udp sendinger – Det kan deaktiveres Enkelte Android smarttelefoner for batery lagring formål –
broadcastu UDP støtte aktiverer telefonen hvis den er låst og bare deaktivert
while (! ehousecommunication . Avslutte) / / uendelig løkke for udp mottak
{/ / Infinite Loop mottar udp status
DatagramPacket dp = ny DatagramPacket (melding , melding . lengde) ; / / Opprett udp datagram packet buffer ved hjelp av data – gjør bruk av UDP-pakke
buffer ” melding ”
try {
ds . motta (dp) ; / / UDP-pakke mottak fra eHouse system – mottar pakken udp port av UDP en socket
if (dp . getLength ()> ; 0) / / hvis størrelsen av pakker større enn null – noe mottatt
{
EhouseTCP . QueryBuff = dp . GetData () ; / / Tilordne en udp kringkasting recepition querybuffer – lastet inn i buffer status eHouse
/ / Dp . setLength (0) ; – pakkestørrelse er satt til null, slik som ikke å behandle de samme dataene gjentatte
EhouseTCP . QueryReceived () ; / / Decode spørringsdata arrays og fylle enheter – dekoder status av kontrollører og laster programmet status tabellen
}
}
catch (Exception os)
{/ / Ignorer feil
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / For test bare
}
}
ml . release () ; / / Multicast udp lås gratis for mottak av eHouse søknad – frigjør låsen multicast
ds . close () ; / / Lukk datagram socket på slutten – lukker kontakten på slutten av
}
Multicast lås kan være nødvendig i noen Android-enheter .
Lokale Broadcast UDP i tilfelle av mobiltelefoner kan aktiveres eller ikke, avhengig av mobiltelefonen firmware .
Det kan også være permanent deaktivert for å spare batteriet og av sikkerhetsmessige grunner eller for å redusere CPU-belastningen på nettverket på jobben .
(Legg merke til kjernekonfigurasjonen: CONFIG_IP_MULTICAST er ikke angitt) .
I tillegg , noen modeller kan bli blokkert av en lokal brannmur og trenger å aktivere overføring på en gitt port (standard 6789) .
Utenfor Broadcast når du bruker GPRS Internett-tilkoblinger , EDGE , 3G , 4G kan låses eller låses opp av nettverksoperatøren . Oftere , men , bør forventes , at det er løst for å minimere bruken av koblingen .
I enkelte modeller av mobiltelefoner , Programvare implementering status kontrollere mottar UDP kan være svært vanskelig eller umulig . Kan kreve bruk av spesielle firmware niebrandowanego eller smarttelefon .
I tillegg , hensyn må tas når upgradowaniu firmware og kontroller at alle funksjoner fungerer som de skal ut av boksen , ellers diagnosen feilene vil være svært vanskelig .
Basert på noen HTC-telefoner og andre produkter som inneholder operativsystemet Android versjon lavere enn 2 . 3 . 3 observerte en total blokk UDP mottak broadcastu .
Dette var den versjonen av Android (2 . 1 – 2 . 3 av perioden 01 . 01 . 2010 – 14 . 06 . 2011)
Hvis du ikke kan motta UDP broadcastu nedlasting og installasjon , Nye Android ROM versjon av minimum 2 . 3 . 3 (14 juni , 2011) , som testet riktigheten av arbeidsbyrden UDP broadcast .
Kernel versjon 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Ingen . 3software . 14 . 405 . 1 .
For andre merker av telefoner med lignende problemer , kan du laste ned Firmware Android Rom fra produsenten , versjon av minst 2 . 3 . 3 .
Legg også merke til de grunnleggende egenskapene til UDP pakker .
De er asynkron og krever å lese om hva som kan føre til at data lesefeil , deres tap (shedding) , spesielt med treg utstyr , lenker , kombinerer høy belastning og CPU okkupasjon smarttelefoner og tabletter .
UDP statusdata er utstyrt i kontrollsum for å sjekke gyldigheten av data .
Home Automation Producer eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse