Sistema eHouse Bini Awtomazzjoni – Android softwer biex jirċievu l-istatus ta 'kontrolluri permezz UDP

Ethernet Awtomazzjoni Home eHouse jippermetti li inti awtomatikament tibgħat UDP status broadcastu (User Datagram Protokoll) , li jista 'jirċievi l-apparati fil LAN tiegħek jew Wifi u IP li jissodisfaw il-kondizzjoni – Misjuba fl-maskra lokali 255 . 255 . 255 . 0 , li hija mxandra off-istatus l-indirizzi IP tal-kontrolluri 192 . 168 . 0 . x . UDP Broadcast jippermettilek li jiskonnettja l-istatus download tal-klijent TCP / IP , li teħtieġ konnessjoni għall-kontrollur . UDP Broadcast huwa protokoll connectionless , għal data propagazzjoni u irrispettivament min-numru ta 'l-apparat riċevitur ma tagħbija aktar l-CPU jew rabtiet ta' netwerk .
Sempliċi UDP xandira akkoljenza funzjoni ma smartphones , pannelli u pilloli Android huwa muri hawn isfel .
Huwa għalhekk loop infinita fuq il-bażi ta 'din il-funzjoni , ikollok bżonn li jinħoloq thread (ħajta) li jaħdmu fl-isfond , tagħtiha l-ħidma ta 'prijorità l-aktar baxx .
Inkella , l-eżekuzzjoni ta 'din il-funzjoni jimblokka l-eżekuzzjoni ta' attivitajiet oħra tal-programm .
Il-kodiċi tas-sors biex jirċievu UDP Broadcast pjattaforma android:
pubbliku null UDP (int port) / port / parametru li jittellgħu l-inadempjenza mxandra 6789 – istatus kontrollur binarju
{
byte [] broadcastadr = byte ġdid [4] ;
byte [] localadr = byte ġdid [4] ;
WifiManager Wifi = (WifiManager) getSystemService (Kuntest . WIFI_SERVICE) ; / / Wifi manager
DhcpInfo DHCP = Wifi . getDhcpInfo () ; / / Get info mill Wifi DHCP
jekk (DHCP == null) / / tikseb valur ta 'default huwa b'diżabilità jekk DHCP netwerk ta' eHouse
{/ / Nru DHCP jew żball għall-mezz
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
inkella / / DHCP
{
xandira = int (DHCP . IPAddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / Għal UDP xandira – Jekk inti tixtieq li jixxandru l-informazzjoni fuq il-funzjoni
kontrollur jirċievi biss status
għal (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((xandira> ; > ; k * 8) & ; 0xFF) ;
lokali int = (DHCP . ipaddress) ; / / Indirizz ip Lokali DHCP
għal (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((> lokali ; > ; k * 8) & ; 0xFF) ; / / Għal indirizz ip lokali
}
jippruvaw
{
ds = ġdid DatagramSocket (port) ; / / / Jisma fuq data port UDP minn kwalunkwe ip
ġewwa maskra – UDP sokit li jinħoloq każ tan-numru tal-port lokali
}
qabda (e Eċċezzjoni)
{
/ / Ehousecommunication . l ( ” Inet Error: tikseb l-indirizz ” + E . getMessage ()) ; għat-test
}
jippruvaw
{
ds . setBroadcast (veru) ; / / Jippermettu jibgħat messaġġ imxandar – għat-trasmissjoni
ds . setReuseAddress (veru) ; / / Jippermettu sokit multipli jużaw l-indirizz IP istess
/ / Ds . setSoTimeout (400) ; / / Akkoljenza timeout
}
qabda (Eċċezzjoni IO)
{/ / Injora l-iżbalji, imma aħna jipproteġu kontra l-iżbalji ta 'applikazzjoni u s-sistema
}
/ / * UDP xandira TEST – broadcastu test UDP mxandra mit-telefon tiegħek jew pillola – komunikazzjoni fil-futur bl-applikazzjoni tal-
/ * Ipprova
{
DatagramPacket jj = DatagramPacket ġdid ( ” Hello Kelma minn Android TEST upd ” . getBytes () , 0 , ” Hello Kelma minn Android TEST upd ” . Tul () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . jibgħat (dd) ; / / Tibgħat a DatagramPacket
}
qabda (e Eċċezzjoni)
{
ehousecommunication . l ( ” Jittrasmettu żball packet Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = Wifi . createMulticastLock ( ” Lock ppermettiet Multicast ” ) ;
/ / Oħloq każ ta 'l-multicast blokk u broadcastu
ml . Jakkwistaw () ; / / Multicast lock xandira jippermettu riċezzjoni UDP – Dan jista 'jiġi diżattivat smartphones Android Ċerti għal Skopijiet iffrankar batery –
broadcastu appoġġ UDP jattiva l-phone jekk huwa maqful u biss b'diżabilità
filwaqt li (! ehousecommunication . Twaqqaf) / linja / infinita għar-riċezzjoni UDP
{/ / Infinita loop jirċievu status UDP
DatagramPacket dp = ġdid DatagramPacket (messaġġ , Messaġġ . tul) ; / / Oħloq buffer UDP pakkett datagram użu ta 'data – jagħmel użu mill-pakkett UDP
buffer ” Messaġġ ”
jippruvaw {
ds . jirċievu (dp) ; / / Packet UDP akkoljenza mis-sistema eHouse – jirċievi l-port pakkett UDP tal-UDP sokit
jekk (dp . getLength ()> ; 0) / / jekk id-daqs tal-pakketti akbar minn żero – xi ħaġa riċevuti
{
EhouseTCP . QueryBuff = dp . getData () ; / / Jassenja xandira UDP recepition querybuffer – jitgħabbew fil-eHouse istatus buffer
/ / Dp . setLength (0) ; – daqs pakkett huwa ssettjat għal żero sabiex ma jipproċessa l-istess data ripetutament
EhouseTCP . QueryReceived () ; / / Jiddekowdja arrays mistoqsija data u imla apparati – decodes l-istatus tal-kontrolluri u tagħbijiet t-tabella istatus applikazzjoni
}
}
qabda (Eċċezzjoni os)
{/ / Injora l-iżbalji
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Għat-test biss
}
}
ml . rilaxx () ; / / Multicast UDP lock ħielsa għar-riċezzjoni ta 'applikazzjoni eHouse – tirrilaxxa l-multicast lock
ds . qrib () ; / / Agħlaq il-sokit datagram fl-aħħar – jagħlaq il-sokit fit-tmiem ta '
}
Lock Multicast jistgħu jkunu meħtieġa f'xi tagħmir Android .
Lokali Broadcast UDP fil-każ ta 'mowbajls jistgħu jkunu ffaċilitati jew le jiddependi fuq il-Firmware mowbajl .
Hija tista 'wkoll tkun permanentement b'diżabilità għall-iffrankar tal-batteriji u għal raġunijiet ta' sigurtà jew li jnaqqsu t-tagħbija CPU fuq in-netwerk fuq ix-xogħol .
(Innota l-konfigurazzjoni għadma: CONFIG_IP_MULTICAST mhuwiex stabbilit) .
Minbarra , xi mudelli jistgħu jiġu mblukkati minn firewall lokali u l-ħtieġa biex jattiva t-trasmissjoni fuq f'port partikolari (default 6789) .
Barra Broadcast meta jużaw GPRS konnessjonijiet tal-Internet , EDGE , 3G , 4G jkun jista 'jissakkar jew jinfetaħ mill-operatur tan-netwerk . Aktar spiss , madankollu , għandhom ikunu mistennija , li dan huwa ffissat sabiex jimminimizzaw l-utilizzazzjoni tar-rabta .
F'xi mudelli tal-mowbajls , Implimentazzjoni Software istatus ta 'kontrolluri li jirċievu UDP jista' jkun diffiċli ħafna jew saħansitra impossibbli . Jistgħu jeħtieġu l-użu ta 'niebrandowanego Firmware speċjali jew smartphone .
Minbarra , għandha tingħata attenzjoni meta upgradowaniu Firmware u jivverifikaw li l-karatteristiċi qed jaħdmu sew barra mill-kaxxa , inkella l-dijanjosi ta 'l-iżbalji se jkun diffiċli ħafna .
Ibbażat fuq xi telefowns HTC u prodotti oħra li fihom il-verżjoni Android sistema operattiva aktar baxxa minn 2 . 3 . 3 osservati blokk total UDP akkoljenza broadcastu .
Dan kien il-verżjoni tal android (2 . 1 – 2 . 3 tal-perjodu ta '01 . 01 . 2010 – 14 . 06 . 2011)
Jekk inti ma tistax tirċievi UDP broadcastu download u jinstallaw , New ROM Android verżjoni tal-2 minimu . 3 . 3 (Ġunju 14 , 2011) , li ttestjati l-korrettezza tal-ħidma UDP tagħbija imxandar .
Verżjoni Kernel 2 . 6 . 35 . 10 – htcg3ef43272 – għadma @ and18 – 2 # 1 .
Nru . 3software . 14 . 405 . 1 .
Għal marki oħra ta 'telefons ma' problemi simili , jekk jogħġbok tniżżel Firmware Rom Android mill-manifattur , verżjoni ta 'mill-inqas 2 . 3 . 3 .
Innota wkoll il-karatteristiċi essenzjali ta 'UDP pakketti .
Huma mhux sinkroniku u jeħtieġu qari dwar dak li jista 'jikkawża data tinqara żbalji , telf tagħhom (twaqqiegħ) , speċjalment ma 'tagħmir bil-mod , rabtiet , jikkombinaw tagħbija għolja u okkupazzjoni smartphones CPU u pilloli .
Data istatus UDP hija mgħammra b'mod checksum li tivverifika validità tad-dejta .
Produttur Awtomazzjoni Home eHouse Awtomazzjoni Home eHouse
eHouse Kontrolluri – Awtomazzjoni Home eHouse