eHouse Jengo Automation System – Android programu kupokea hali ya controllers kupitia UDP

Ethernet Home Automation eHouse kuruhusu moja kwa moja kutuma hadhi broadcastu UDP (User Datagram Itifaki) , ambayo inaweza kupokea vifaa vyote katika LAN yako au WiFi na IP ya kuridhisha hali – Kupatikana katika mask mitaa 255 . 255 . 255 . 0 , ambayo ni matangazo mbali hali ya anwani ya IP ya controllers 192 . 168 . 0 . x . UDP Broadcast utapata Disable hadhi shusha ya mteja TCP / IP , ambayo inahitaji uhusiano na mtawala . UDP Broadcast ni itifaki connectionless , kwa uenezi data na bila kujali idadi ya vifaa kupokea haufunguki zaidi CPU au viungo mtandao .
Wikipedia UDP matangazo mapokezi kazi pamoja na smartphones , paneli na vidonge Android ni hapa chini .
Kwa hiyo ni kitanzi usio juu ya msingi wa kazi hii , unahitaji kujenga thread (THREAD) kufanya kazi katika background , kutoa ni chini kipaumbele kazi .
Vinginevyo , utekelezaji wa kazi hii kuzuia utekelezaji wa shughuli nyingine ya mpango .
chanzo code kwa kupokea UDP Broadcast android jukwaa:
umma utupu UDP (int bandari) / bandari / parameter kuchukua default matangazo 6789 – Hali katika mtawala binary
{
Byte [] broadcastadr = mpya Byte [4] ;
Byte [] localadr = mpya Byte [4] ;
WifiManager WiFi = (WifiManager) getSystemService (Muktadha . WIFI_SERVICE) ; / / WIFI meneja
DhcpInfo DHCP = WiFi . getDhcpInfo () ; / / Kupata info kutoka WiFi DHCP
kama (DHCP == null) / / kupata default thamani ni walemavu kama DHCP mtandao wa eHouse
{/ / Hapana DHCP au kosa kwa kifaa
broadcastadr [0] = (Byte) 192 ;
broadcastadr [1] = (Byte) 168 ;
broadcastadr [2] = (Byte) 0 ;
broadcastadr [3] = (Byte) 255 ;
}
mwingine / / DHCP
{
matangazo = int (DHCP . IPADDRESS & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / Kwa UDP matangazo – Kama unataka matangazo data juu ya kazi
mtawala tu inapata hadhi
kwa (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (Byte) ((matangazo> ; > ; k * 8) & ; 0xFF) ;
mitaa int = (DHCP . IPADDRESS) ; / / Mitaa IP anuani DHCP
kwa (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (Byte) ((mitaa> ; > ; k * 8) & ; 0xFF) ; / / Kwa anuani za mitaa IP
}
kujaribu
{
ds = mpya DatagramSocket (bandari) ; / / / Kusikiliza juu ya UDP data bandari kutoka IP yoyote
ndani ya mask – UDP tundu kujenga mfano wa idadi ya mtaa bandari
}
catch (Kuondolewa e)
{
/ / Ehousecommunication . l ( ” Hitilafu Inet: kupata anuani ” + E . getMessage ()) ; kwa ajili ya mtihani
}
kujaribu
{
ds . setBroadcast (wa kweli) ; / / Wezesha kutuma ujumbe wa matangazo – kwa ajili ya maambukizi
ds . setReuseAddress (wa kweli) ; / / Wezesha tundu nyingi kutumia sawa IP
/ / Ds . setSoTimeout (400) ; / / Mapokezi Timeout
}
catch (Kuondolewa io)
{/ / Puuza makosa lakini sisi kulinda dhidi ya makosa ya maombi na mfumo
}
/ / * UDP matangazo mtihani – broadcastu mtihani UDP matangazo kutoka simu yako au kibao – baadaye mawasiliano na matumizi ya
/ * Jaribu
{
DatagramPacket dd = mpya DatagramPacket ( ” Wapendwa Neno kutoka Android mtihani UPD ” . getBytes () , 0 , ” Wapendwa Neno kutoka Android mtihani UPD ” . urefu () ,
InetAddress . getByAddress (broadcastadr) , bandari) ;
ds . kutuma (dd) ; / / Anakutumia DatagramPacket
}
catch (Kuondolewa e)
{
ehousecommunication . l ( ” Kusambaza Datagram pakiti hitilafu: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = WiFi . createMulticastLock ( ” Multicast kuwezeshwa lock ” ) ;
/ / Create mfano wa multicast kuzuia na broadcastu
ml . Kupata () ; / / Multicast lock kuwawezesha UDP matangazo mapokezi – Inaweza kuwa walemavu smartphones Baadhi Android kwa Madhumuni batery kuokoa –
broadcastu UDP msaada activates simu ikiwa imefungwa na tu walemavu
wakati (ehousecommunication! . Kuondoa) / / usio kitanzi kwa ajili ya mapokezi UDP
{/ / Usio kitanzi kupokea UDP hadhi
DatagramPacket DP = mpya DatagramPacket (ujumbe , ujumbe . urefu) ; / / Create UDP datagram pakiti buffer kutumia data – inafanya matumizi ya pakiti UDP
buffer ” ujumbe ”
kujaribu {
ds . kupokea (DP) ; / / UDP pakiti mapokezi kutoka mfumo eHouse – inapokea pakiti UDP bandari ya UDP tundu
kama (DP . getLength ()> ; 0) / / kama ukubwa wa vifurushi kubwa kuliko sufuri – kitu kupokea
{
EhouseTCP . QueryBuff = DP . getData () ; / / Pangia matangazo UDP recepition querybuffer – kubeba katika eHouse hadhi buffer
/ / DP . setLength (0) ; – ukubwa pakiti ni kuweka kwa sifuri ili kama si kwa mchakato data huo kurudia
EhouseTCP . QueryReceived () ; / / Decode data swala arrays na kujaza vifaa – decodes ya hadhi ya controllers na mizigo kwa sasa maombi ya meza
}
}
catch (Kuondolewa os)
{/ / Puuza makosa
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Kwa mtihani tu
}
}
ml . kutolewa () ; / / Multicast UDP lock bure kwa ajili ya mapokezi ya maombi eHouse – releases multicast lock
ds . karibu () ; / / Close tundu datagram mwishoni – kufunga tundu mwishoni mwa
}
Lock Multicast kutakiwa katika baadhi Android vifaa .
Mitaa UDP Broadcast katika kesi ya simu za mkononi zinaweza kuwezeshwa au si kutegemea firmware ya simu za mkononi .
Ni pia inaweza kudumu walemavu kwa kuokoa betri na kwa ajili ya usalama sababu au kupunguza mzigo CPU kwenye mtandao katika kazi .
(Kumbuka Configuration kernel: CONFIG_IP_MULTICAST haijawekwa) .
Aidha , baadhi ya mifano inaweza kuwa imefungwa na firewall mitaa na haja ya kuamsha maambukizi kwenye bandari kupewa (default 6789) .
Nje Broadcast wakati wa kutumia GPRS connections Internet , Makali , 3G , 4G inaweza imefungwa au unlocked na operator mtandao . Mara nyingi zaidi , Mara nyingi zaidi , inapaswa kutarajiwa , kwamba ni fasta ili kupunguza matumizi ya kiungo .
Katika baadhi ya mifano ya simu za mkononi , Programu ya utekelezaji ya hadhi ya controllers kupokea UDP inaweza kuwa vigumu sana au hata haiwezekani . Unaweza kuhitaji matumizi ya niebrandowanego maalum firmware au smartphone .
Aidha , uangalifu wakati upgradowaniu firmware na kuangalia kwamba makala yote ni kazi vizuri nje ya boksi , vinginevyo utambuzi wa makosa itakuwa vigumu sana .
Kulingana na baadhi za HTC na bidhaa nyingine zenye uendeshaji Android mfumo toleo chini kuliko 2 . 3 . 3 aliona block jumla UDP mapokezi broadcastu .
Hii ilikuwa toleo la android (2 . 1 – 2 . 3 ya kipindi cha 01 . 01 . 2010 – 14 . 06 . 2011)
Kama huwezi kupokea UDP broadcastu shusha na kufunga , Mpya Android ROM toleo la 2 kima cha chini cha . 3 . 3 (Juni 14 , 2011) , ambayo kipimo usahihi wa matangazo ya kazi mzigo UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Hakuna . 3software . 14 . 405 . 1 .
Kwa bidhaa nyingine ya simu za matatizo yanayofanana , tafadhali shusha Firmware Android Rum kutoka kwa mtengenezaji , toleo la angalau 2 . 3 . 3 .
Kumbuka pia sifa muhimu ya UDP pakiti .
Wao ni Asynchronous na kuhitaji kusoma juu ya kile inaweza kusababisha data kusoma makosa , hasara yao (kumwaga) , hasa kwa vifaa vya polepole , viungo , kuchanganya na mzigo high smartphones CPU kazi na vidonge .
Data Hali UDP ni vifaa katika checksum kuangalia uhalali wa data .
Home Automation Mtayarishaji eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse