eHouse Building Automation System – Android software til at modtage status af regulatorer via UDP

Ethernet Home Automation eHouse giver dig mulighed for automatisk at sende en status broadcastu UDP (User Datagram Protocol) , som kan modtage alle enheder i dit LAN eller WiFi og IP opfylder betingelsen – Fundet i den lokale maske 255 . 255 . 255 . 0 , som udsendes fra status IP-adresserne på regulatorerne 192 . 168 . 0 . x . UDP Broadcast giver dig mulighed for at deaktivere download status af TCP / IP-klient , der kræver en forbindelse til controlleren . UDP Broadcast er en forbindelsesløs protokol , for formering data og uanset antallet af de modtagende enheder ikke indlæse mere CPU eller netværksforbindelser .
Simple UDP broadcast-modtagelse funktion med smartphones , paneler og Android tabletter er vist nedenfor .
Det er derfor en uendelig løkke på grundlag af denne funktion , skal du oprette en tråd (tråd), der arbejder i baggrunden , giver det den laveste prioritet arbejde .
Ellers , udførelsen af ​​denne funktion blokere udførelsen af ​​andre aktiviteter under programmet .
Kildekoden til at modtage UDP broadcast android platform:
public void udp (int port) / / parameter port at afhente standard udsendt 6789 – status i binær controller
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi leder
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Hent info fra wifi dhcp
if (dhcp == null) / / få Standardværdien er deaktiveret, hvis DHCP netværk af eHouse
{/ / Ingen dhcp eller en fejl for enheden
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
broadcast = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / For udp broadcast – Hvis du ønsker at udsende data på funktionen
controller kun modtager status
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((udsende> ; > ; k * 8) & ; 0xFF) ;
lokal int = (dhcp . ipadresse) ; / / Lokale IP-adresse dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokal> ; > ; k * 8) & ; 0xFF) ; / / For lokal ip-adresse
}
prøv
{
ds = new DatagramSocket (port) ; / / / Lytter på UDP-port data fra enhver ip
inde i en maske – UDP socket til at oprette en instans af den lokale portnummer
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Fejl Inet: få adresse ” + E . GetMessage ()) ; til test
}
prøv
{
ds . setBroadcast (sand) ; / / Aktiver send broadcast-meddelelse – til transmission
ds . setReuseAddress (sand) ; / / Aktiver multistikdåse bruge den samme IP-adresse
/ / Ds . setSoTimeout (400) ; / / Modtagelse timeout
}
catch (Exception io)
{/ / Ignorer fejl, men vi beskytter mod anvendelse og systemfejl
}
/ / * UDP-broadcast TEST – broadcastu test UDP-broadcast fra din telefon eller tablet – fremtidige kommunikation med anvendelsen af
/ * Prøv
{
DatagramPacket dd = ny DatagramPacket ( ” Hej Word fra Android UPD TEST ” . getBytes () , 0 , ” Hej Word fra Android UPD TEST ” . længde () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . send (dd) ; / / Sender en DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmit Datagram pakkefejl: ” + E . GetMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast aktiveret lås ” ) ;
/ / Opret en instans af blokken multicast og broadcastu
ml . Acquire () ; / / Multicast lås Aktiver UDP broadcast-modtagelse – Det kan deaktiveres Visse Android smartphones for batery energispare hensyn –
broadcastu UDP support aktiverer telefonen, hvis den er låst, og kun deaktiveret
while (! ehousecommunication . Afslut) / / uendelig løkke for udp modtagelse
{/ / Infinite loop modtager udp status
DatagramPacket dp = ny DatagramPacket (besked , besked . længde) ; / / Opret UDP datagram pakkebuffer hjælp af data – gør brug af UDP pakke
buffer ” besked ”
try {
ds . modtage (dp) ; / / UDP pakke modtagelse fra eHouse system – modtager pakken udp port UDP en sokkel
if (dp . getLength ()> ; 0) / / hvis størrelsen af ​​pakker større end nul – noget modtaget
{
EhouseTCP . QueryBuff = dp . getData () ; / / Tildel en udp broadcast recepition querybuffer – indlæses i bufferen status eHouse
/ / Dp . setLength (0) ; – pakkestørrelse er sat til nul for ikke at behandle de samme data flere gange
EhouseTCP . QueryReceived () ; / / Afkode forespørgslen dataarrays og udfylde enheder – afkoder status på flyveledere og indlæser programmet status tabellen
}
}
catch (Exception os)
{/ / Ignorer fejl
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / Til test kun
}
}
ml . release () ; / / Multicast udp lås gratis for modtagelse af eHouse ansøgning – frigiver låsen multicast
ds . close () ; / / Luk datagram socket i slutningen – lukker soklen ved udgangen af
}
Multicast lås kan være nødvendig i nogle Android-enheder .
Lokal Broadcast UDP i tilfælde af mobiltelefoner kan være aktiveret eller ikke afhængigt af mobiltelefonen firmware .
Det kan også være permanent deaktiveret for batteri besparelse og af sikkerhedsmæssige årsager eller for at reducere CPU-belastningen på netværket på arbejdspladsen .
(Bemærk kerneopsætning: CONFIG_IP_MULTICAST er ikke indstillet) .
Desuden , nogle modeller kan være blokeret af en lokal firewall og har brug for at aktivere transmission på en given port (default 6789) .
Udenfor Broadcast, når du bruger GPRS internetforbindelser , EDGE , 3G , 4G kan låses eller låses op af netoperatøren . Oftere , dog , bør forventes , at den er fast for at minimere anvendelsen af ​​forbindelsen .
I nogle modeller af mobiltelefoner , Software implementering status af kontrollører, der modtager UDP kan være meget vanskeligt eller endog umuligt . Kan kræve brug af særligt firmware niebrandowanego eller smartphone .
Desuden , skal man være omhyggelig, når upgradowaniu firmware og kontrollere, at alle funktioner fungerer korrekt ud af kassen , ellers diagnosticering af fejl vil være meget vanskeligt .
Baseret på nogle HTC telefoner og andre produkter, der indeholder Android styresystem version lavere end 2 . 3 . 3 observerede en samlet blok UDP-modtagelse broadcastu .
Dette var den version af Android (2 . 1 – 2 . 3 i tidsrum på 01 . 01 . 2010 – 14 . 06 . 2011)
Hvis du ikke kan modtage UDP broadcastu download og installation , Ny Android ROM udgave af minimum 2 . 3 . 3 (14 juni , 2011) , der testede rigtigheden af ​​den arbejdsbyrde UDP broadcast .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Nej . 3software . 14 . 405 . 1 .
For andre mærker af telefoner med lignende problemer , skal du downloade Firmware Android Rom fra producenten , version af mindst 2 . 3 . 3 .
Bemærk også de væsentlige kendetegn ved UDP pakker .
De er asynkron og kræver at læse om, hvad der kan medføre, at data læsefejl , deres tab (udgydelse) , især med langsom udstyr , links , kombinerer høj belastning og CPU besættelse smartphones og tabletter .
UDP statusdata er udstyret i checksum for at kontrollere validiteten af ​​data .
Home Automation Producer eHouse Home Automation eHouse
eHouse Controllere – Home Automation eHouse