eHouse Building Automation System – Android-software om de status van controllers via UDP te ontvangen

Ethernet Home Automation eHouse kunt u het automatisch verzenden van een status broadcastu UDP (User Datagram Protocol) , die kan ontvangen alle apparaten in uw LAN of WiFi en IP voldoen aan de voorwaarde – Gevonden in de lokale masker 255 . 255 . 255 . 0 , dat wordt uitgezonden van de status van de IP-adressen van de controllers 192 . 168 . 0 . x . UDP Broadcast kunt u uitschakelen van de download status van de TCP / IP-client , hetgeen een verbinding met de controller . UDP Broadcast een protocol zonder verbindingen , voor de vermeerdering gegevens en ongeacht het aantal van de ontvangende apparaten laadt niet meer de CPU of netwerkverbindingen .
Eenvoudige UDP broadcast ontvangst functie met smartphones , panelen en Android-tablets wordt hieronder .
Het is daarom een ​​oneindige lus op basis van deze functie , je nodig hebt om een ​​thread (draad) die werkzaam zijn in de achtergrond , waardoor het de laagste prioriteit werk .
Anders , het uitvoeren van deze functie blokkeren de uitvoering van andere activiteiten van het programma .
De broncode voor het ontvangen van UDP Broadcast Android-platform:
public void udp (int port) / / parameter-poort op te halen de standaard uitgezonden 6789 – status in binaire controller
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi-manager
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Haal info van wifi dhcp
if (dhcp == null) / / krijgen standaard waarde is niet beschikbaar als DHCP-netwerk van eHouse
{/ / Geen dhcp of een fout van het apparaat
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
uitzending = int (dhcp . IP-adres en ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Voor udp-uitzendingen – Als u de gegevens wilt uitgezonden op de functie
controller ontvangt alleen de status van
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((uitgezonden> ; > ; k * 8) en ; 0xFF) ;
lokale int = (dhcp . ipadres) ; / / Local ip adres dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokaal> ; > ; k * 8) en ; 0xFF) ; / / Voor lokale ip adres
}
proberen
{
ds = new DatagramSocket (haven) ; / / / Luisteren op UDP-poort gegevens uit een ip
in een masker – udp socket naar een instantie van de lokale poort te creëren
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Fout Inet: get adres ” + E . GetMessage ()) ; voor test
}
proberen
{
ds . setBroadcast (true) ; / / Enable sturen broadcast-bericht – voor transmissie
ds . setReuseAddress (true) ; / / Laat meerdere socket hetzelfde IP-adres
/ / Ds . setSoTimeout (400) ; / / Ontvangst time-out
}
catch (Exception io)
{/ / Negeer fouten, maar we beschermen tegen de toepassing en systeem fouten
}
/ / * UDP broadcast TEST – broadcastu-test udp uitgezonden vanaf je telefoon of tablet – toekomstige communicatie met de toepassing van de
/ * Probeer
{
DatagramPacket dd = new DatagramPacket ( ” Hallo Word van Android UPD TEST ” . getBytes () , 0 , ” Hallo Word van Android UPD TEST ” . length () ,
InetAddress . getByAddress (broadcastadr) , poort) ;
ds . stuur (dd) ; / / Hiermee wordt een DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmit Datagram pakket error: ” + E . GetMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast enabled slot ” ) ;
/ / Maak een instantie van het blok multicast en broadcastu
ml . Acquire () ; / / Multicast lock enable udp radio-ontvangst – Het kan worden uitgeschakeld Bepaalde Android smartphones voor batery te besparen –
broadcastu UDP ondersteuning activeert de telefoon als deze is vergrendeld en alleen uitgeschakeld
while (! ehousecommunication . Beëindig) / / oneindige lus voor udp-ontvangst
{/ / Oneindige lus ontvangen udp-status
DatagramPacket dp = new DatagramPacket (bericht , bericht . lengte) ; / / Maak een UDP-datagram packet buffergrootte met behulp van gegevens – maakt gebruik van het UDP packet
buffer ” bericht ”
try {
ds . ontvangen (dp) ; / / UDP-pakket ontvangst van eHouse systeem – ontvangt het pakket udp-poort van de UDP een stopcontact
if (dp . getLength ()> ; 0) / / of de grootte van percelen groter dan nul – iets ontvangen
{
EhouseTCP . QueryBuff = dp . getData () ; / / Wijs een UDP broadcast recepition querybuffer – geladen in de buffer staat eHouse
/ / Dp . setLength (0) ; – pakketgrootte op nul is gezet, zodat er geen dezelfde gegevens herhaaldelijk te verwerken
EhouseTCP . QueryReceived () ; / / Decode query gegevens arrays en vul apparaten – decodeert de status van controllers en laadt de toepassing statustabel
}
}
catch (Exception os)
{/ / Negeer fouten
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / Voor-test alleen
}
}
ml . release () ; / / Multicast udp lock vrij voor de ontvangst van eHouse toepassing – heft de vergrendeling op multicast
ds . close () ; / / Sluit het datagram socket op het einde – sluit de aansluiting aan het einde van de
}
Multicast slot kan nodig zijn bij sommige Android-apparaten .
Lokale Broadcast UDP in het geval van mobiele telefoons kan worden in-of niet, afhankelijk van de mobiele telefoon firmware .
Het kan ook permanent worden uitgeschakeld om de batterij te sparen en om veiligheidsredenen of om de CPU-belasting op het netwerk te verminderen op het werk .
(Let op de kernel configuratie: CONFIG_IP_MULTICAST is niet ingesteld) .
Bovendien , sommige modellen kan worden geblokkeerd door een lokale firewall en de noodzaak om de transmissie te activeren op een bepaalde poort (standaard 6789) .
Outside Broadcast bij het gebruik van GPRS-internetverbindingen , EDGE , 3G , 4G kan worden vergrendeld of ontgrendeld door de netbeheerder . Vaker , echter , worden verwacht , dat wordt vastgesteld om het gebruik van de verbinding te minimaliseren .
In sommige modellen van mobiele telefoons , Software-implementatie status van controllers ontvangen UDP kan zeer moeilijk of zelfs onmogelijk . Vereisen het gebruik van speciale firmware niebrandowanego of smartphone .
Bovendien , zorg moet worden genomen bij het upgradowaniu firmware en controleer of alle functies goed werken out of the box , anders de diagnose van fouten zal zeer moeilijk .
Op basis van een aantal HTC-telefoons en andere producten die het Android-besturingssysteem versie lager dan 2 . 3 . 3 zagen een totaal blok UDP receptie broadcastu .
Dit was de versie van android (2 . 1 – 2 . 3 van de periode van 01 . 01 . 2010 – 14 . 06 . 2011)
Als je niet kan ontvangen UDP broadcastu downloaden en installeren , Nieuwe Android-ROM-versie van de minimum 2 . 3 . 3 (14 juni , 2011) , die testte de juistheid van de werklast UDP broadcast .
Kernel Versie 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ 18 * – 2 # 1 .
Geen . 3software . 14 . 405 . 1 .
Voor andere merken van telefoons met vergelijkbare problemen , download dan Firmware Android Rom van de fabrikant , versie van ten minste 2 . 3 . 3 .
Let ook op de essentiële kenmerken van UDP-pakketten .
Ze zijn asynchrone en vereisen lezen over wat kan leiden tot gegevens leesfouten , hun verlies (afscheiding) , vooral trage materieel , koppelingen , combineren een hoge belasting en CPU-bezetting smartphones en tablets .
Udp statusgegevens is uitgerust In de controlesom de geldigheid van gegevens te controleren .
Home Automation Producer eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse