eHouse Building Automation System – Android software získat status regulátorů přes UDP

Ethernet Domácí automatizace eHouse umožňují automaticky odeslat stavu broadcastu UDP (User Datagram Protocol) , které mohou přijímat všechna zařízení ve vaší síti LAN nebo Wi-Fi a IP splňoval podmínku – Nalezeno v místní masce 255 . 255 . 255 . 0 , který je vysílán mimo status IP adresy regulátorů 192 . 168 . 0 . x . UDP Broadcast umožňuje zakázat stahování stav TCP / IP klienta , která vyžaduje připojení k regulátoru . UDP Broadcast je nespojovaný protokol , pro šíření údajů a bez ohledu na počet přijímajících zařízení nenačte více CPU nebo síťových spojení .
Jednoduché UDP broadcast recepce funkce s smartphony , panely a Android tablety je uvedeno níže .
Z tohoto důvodu je nekonečné smyčky na základě této funkce , je třeba vytvořit vlákno (thread) v práci na pozadí , dávat to nejnižší prioritou práce .
Jinak , výkon této funkce blokovat provádění dalších činností v rámci programu .
Zdrojový kód pro příjem UDP Broadcast android platformy:
public void udp (int port) / / parametr port vyzvednout výchozí vysílání 6789 – Stav v binární ovladače
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi manager
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Získání informací z wifi dhcp
if (dhcp == null) / / získat výchozí hodnotu je zakázáno, pokud DHCP sítě eHouse
{/ / No dhcp nebo chyba přístroje
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
vysílání = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Pro udp vysílání – Pokud chcete vysílat data na funkci
Regulátor pouze přijímá informace o stavu
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((vysílání> ; > ; k * 8) a ; 0xFF) ;
místní int = (dhcp . ipaddress) ; / / Lokální IP adresa dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((místní> ; > ; k * 8) a ; 0xFF) ; / / Pro lokální IP adresu
}
zkusit
{
ds = new DatagramSocket (port) ; / / / Naslouchá na udp portu údajů z libovolné IP
uvnitř masky – udp socket vytvořit instanci místní číslo portu
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Chyba Inet: dostat adresu ” + E . getMessage ()) ; pro test
}
zkusit
{
ds . setBroadcast (true) ; / / Povolit poslat broadcast zprávu – pro přenos
ds . setReuseAddress (true) ; / / Povolit více socket použít stejnou IP adresu
/ / Ds . setSoTimeout (400) ; / / Recepce timeout
}
catch (Exception io)
{/ / Ignorovat chyby, ale chráníme před aplikací a systémových chyb
}
/ / * UDP Broadcast TEST – broadcastu zkušební udp vysílání z telefonu nebo tabletu – Budoucnost komunikace s aplikací
/ * Zkuste
{
DatagramPacket dd = new DatagramPacket ( ” Dobrý den, Word z Android TEST UPD ” . GetBytes () , 0 , ” Dobrý den, Word z Android TEST UPD ” . délka () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . Poslat (dd) ; / / Odešle DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Vysílání Datagram paketů chybu: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast povoleno zámek ” ) ;
/ / Vytvoření instance bloku multicast a broadcastu
ml . Získat () ; / / Multicast lock enable udp broadcast příjem – To může být zakázán Některé Android smartphony pro Bateriové úsporných účely –
broadcastu UDP podpora aktivuje telefon, pokud je uzamčen a jen vypnuté
while (! ehousecommunication . Terminate) / / nekonečná smyčka pro příjem udp
{/ / Nekonečná smyčka příjem udp stav
DatagramPacket dp = new DatagramPacket (zpráva , zpráva . délka) ; / / Vytvoření udp datagram packet vyrovnávací paměť pomocí dat – využívá UDP paketu
bufferu ” zpráva ”
try {
ds . příjem (dp) ; / / UDP paketu příjem z eHouse systému – obdrží UDP paketu port UDP socket
if (DP . getLength ()> ; 0) / / pokud velikost pozemků větší než nula – něco dostal
{
EhouseTCP . QueryBuff = dp . getData () ; / / Přiřazení UDP Broadcast recepition querybuffer – načten do vyrovnávací paměti eHouse stavu
/ / Dp . setlength (0) ; – velikost paketu je nastavena na nulu, aby nedošlo k zpracovávat stejné údaje opakovaně
EhouseTCP . QueryReceived () ; / / Decode dotazu datové pole a vyplňte zařízení – dekóduje stav regulátorů a zatížení aplikací stav tabulky
}
}
catch (Exception os)
{/ / Ignorovat chyby
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Pouze pro zkoušku
}
}
ml . release () ; / / Multicast udp zámek zdarma pro příjem eHouse aplikace – uvolní zámek multicast
ds . close () ; / / Zavřete zásuvku datagram na konci – zavře zásuvku na konci
}
Multicast zámek může být vyžadováno v některých zařízeních se systémem Android .
Lokální vysílání UDP v případě mobilních telefonů může být aktivována nebo ne v závislosti na mobilním telefonu firmware .
To může také být trvale zakázán baterie úspor a z bezpečnostních důvodů nebo pro snížení zatížení procesoru na síti při práci .
(Poznámka: konfigurace jádra: CONFIG_IP_MULTICAST není nastaven) .
Kromě , Některé modely mohou být blokovány místní firewall a je třeba aktivovat přenos na daném portu (výchozí 6789) .
Mimo vysílání při použití GPRS připojení k Internetu , EDGE , 3G , 4G lze zamknout nebo odemknout provozovatel sítě . Častěji , nicméně , by se mělo očekávat , , že je pevně, aby se minimalizovala využití odkazu .
V některých modelů mobilních telefonů , Software stav implementace řídících užívajících UDP může být velmi obtížné, nebo dokonce nemožné . Mohou vyžadovat použití speciálního firmwaru niebrandowanego nebo smartphone .
Kromě , péče musí být vzata když upgradowaniu firmware a zkontrolujte, zda všechny funkce správně fungují po vybalení z krabice , jinak diagnostika chyb bude velmi obtížné .
Na základě některých telefonů HTC a dalších produktů, které obsahují operační systém Android verze nižší než 2 . 3 . 3 pozorovat celkový blok UDP recepce broadcastu .
To bylo na verzi Android (2 . 1 – 2 . 3 doby 01 . 01 . 2010 – 14 . 06 . 2011)
Pokud nemůžete přijímat UDP broadcastu stáhnout a nainstalovat , Nová Android ROM verze minimální 2 . 3 . 3 (14. června , 2011) , který testoval správnost vysílání pracovního zatížení UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Ne . 3software . 14 . 405 . 1 .
U ostatních značek telefonů s podobnými problémy , stáhněte si firmware Android Rom od výrobce , Verze alespoň 2 . 3 . 3 .
Všimněte si také, jaké jsou základní znaky UDP paketů .
Oni jsou asynchronní a vyžadují čtení o tom, co může způsobit data číst chyby , jejich ztráta (vylučování) , zejména s pomalým zařízení , odkazy , kombinují vysokou zátěž a smartphony CPU okupační a tablety .
UDP údaje o stavu je vybavena do kontrolního součtu pro kontrolu platnosti dat .
Domácí automatizace výrobce eHouse Domácí automatizace eHouse
eHouse kontroléry – Domácí automatizace eHouse