eHouse Building Automation System – Android software upang matanggap ang katayuan ng mga controllers sa pamamagitan ng UDP

Ethernet Home Automation eHouse nagbibigay-daan sa awtomatikong mong magpadala ng katayuan ng broadcastu UDP (User Datagram Protocol) , na maaaring makatanggap ng lahat ng mga aparato sa iyong LAN o WiFi at IP na nagbibigay-kasiyahan ang kundisyon – Natagpuan sa lokal na mask 255 . 255 . 255 . 0 , na-broadcast ng off ang katayuan ang mga IP address ng controllers 192 . 168 . 0 . x . UDP Broadcast ay nagbibigay-daan sa iyo upang huwag paganahin ang pag-download katayuan ng TCP / IP client , na nangangailangan ng isang koneksyon sa controller . UDP Broadcast ay isang connectionless protocol , para sa pagpapalaganap data at hindi alintana ng bilang ng pagtanggap ng mga aparatong ay hindi nag-load ng higit pa sa CPU o mga link ng network .
Simple UDP broadcast reception pagpapaandar sa smartphone , panel at Android tablet ay ipinapakita sa ibaba .
Ito ay samakatuwid isang walang-katapusang loop sa batayan ng function na ito , kailangan mo upang lumikha ng isang thread (thread) na gumagana sa background , nagbibigay sa ito ang pinakamababang priority trabaho .
Kung hindi , sa pagpapatupad ng function na ito harangan ang pagpapatupad ng iba pang mga gawain ng programa .
Ang source code para sa pagtanggap ng UDP Broadcast android platform:
pampublikong udp void (int port) / / parameter port upang piliin ang default na-broadcast ng 6789 – katayuan sa binary controller
{
byte [] broadcastadr = bagong byte [4] ;
byte [] localadr = bagong byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Konteksto . WIFI_SERVICE) ; / / Wifi manager
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Kumuha ng impormasyon mula sa wifi dhcp
kung (dhcp == null) / / makakuha ng default value ay hindi pinagana kung DHCP network ng eHouse
{/ / Walang dhcp o ng isang error para sa aparato
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
tao / / DHCP
{
broadcast = int (dhcp . IPADDRESS & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Para sa udp broadcast – Kung nais mong mag-broadcast ang data sa pag-andar
natatanggap lamang ng controller katayuan
para sa (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((broadcast> ; > ; k * 8) & ; 0xFF) ;
lokal int = (dhcp . IPADDRESS) ; / / Lokal ip address ng dhcp
para sa (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((lokal> ; > ; k * 8) & ; 0xFF) ; / / Para sa lokal na ip address
}
sumubok
{
DS = bagong DatagramSocket (port) ; / / / Pakikinig sa udp port data mula sa anumang ip
sa loob ng isang mask – udp socket upang lumikha ng isang halimbawa ng mga lokal na numero ng port
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Error Inet: makakuha address ” + E . getMessage ()) ; para sa test
}
sumubok
{
DS . setBroadcast (totoo) ; / / Paganahin magpadala ng broadcast na mensahe – para sa paghahatid
DS . setReuseAddress (totoo) ; / / Paganahin ang maramihang mga socket gamitin ang parehong IP address
/ / DS . setSoTimeout (400) ; / / Reception timeout
}
mahuli (Exception IO)
{/ / Huwag pansinin ang mga error ngunit namin pinoprotektahan laban sa mga application at mga error ng sistema
}
/ / * Udp broadcast PAGSUBOK – broadcastu test udp-broadcast ang mula sa iyong telepono o tablet – hinaharap komunikasyon sa ang application ng
/ * Subukan
{
DatagramPacket dd = bagong DatagramPacket ( ” Kamusta Salita mula sa Android UPD PAGSUBOK ” . getBytes () , 0 , ” Kamusta Salita mula sa Android UPD PAGSUBOK ” . haba () ,
InetAddress . getByAddress (broadcastadr) , port) ;
DS . magpadala ng (dd) ; / / Nagpapadala ng DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Magpadala ang Datagram packet error: ” + E . getMessage ()) ;
}
* /
MulticastLock ML = wifi . createMulticastLock ( ” Multicast pinagana lock ” ) ;
/ / Lumikha ng isang halimbawa ng bloke multicast at broadcastu
ML . Makakuha ng () ; / / Multicast lock paganahin udp broadcast reception – Ito ay maaaring hindi pinagana ang ilang mga smartphone Android para sa batery-save Layunin –
support broadcastu UDP aktibo ang telepono kung ito ay naka-lock at hindi pinagana lamang
habang (! ehousecommunication . Wakasan) / / walang-katapusang loop para sa udp reception
{/ / Walang-hanggan loop pagtanggap udp katayuan
DatagramPacket dp = bagong DatagramPacket (mensahe , mensahe . haba) ; / / Lumikha ng udp datagram packet buffer gamit ang data – ay gumagamit ng packet UDP
nagpapahina ng lakas ” mensahe ”
subukan {
DS . makatanggap ng (dp) ; / / Udp packet reception mula sa eHouse sistema – natatanggap ang packet port udp ng UDP ng socket
if (dp . getLength ()> ; 0) / / kung ang laki ng mga parcels na mas mataas sa zero – isang bagay na natanggap
{
EhouseTCP . QueryBuff = dp . getData () ; / / Magtalaga ng udp broadcast recepition querybuffer – load sa eHouse buffer katayuan
/ / Dp . setLength (0) ; – packet laki ay naka-set sa zero upang hindi maproseso ang parehong data sa paulit-ulit
EhouseTCP . QueryReceived () ; / /-Decode ng mga query array data at punan ang mga aparatong – decodes ang katayuan ng controllers at naglo-load ang talahanayan ng katayuan ng application
}
}
mahuli (Exception os)
{/ / Huwag pansinin ang mga error
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Para sa pagsubok lamang
}
}
ML . release () ; / / Multicast sa udp lock libreng para sa reception ng eHouse application – Release ang lock multicast
DS . isara () ; / / Isara ang datagram socket sa dulo – isinasara ang socket sa dulo ng
}
Multicast lock ay maaaring kinakailangan sa ilang mga Android device .
Lokal na Broadcast UDP sa kaso ng mga mobile phone ay maaaring paganahin o hindi depende sa mobile na telepono firmware .
Maaari rin itong permanenteng hindi pinagana para sa baterya-save at para sa kaligtasan dahilan o upang mabawasan ang CPU load sa network sa trabaho .
(Tandaan ang kernel configuration: CONFIG_IP_MULTICAST hindi nakatakda) .
At saka , ang ilang mga modelo ay maaaring ma-block sa pamamagitan ng isang lokal na firewall at kailangan upang buhayin ang pagpapadala sa isang naibigay na port (default 6789) .
Sa labas Broadcast kapag gumagamit ng GPRS koneksyon sa Internet , EDGE , 3G , 4G ay maaaring naka-lock o unlock ng operator ng network . Mas madalas , gayunman , dapat na inaasahan , na ito ay naayos na upang mabawasan ang paggamit ng link .
Sa ilang mga modelo ng mga mobile phone , Katayuan ng pagpapatupad ng software ng controllers pagtanggap ng UDP ay maaaring maging mahirap o kahit imposibleng . Ay maaaring mangailangan ng paggamit ng espesyal na firmware niebrandowanego o smartphone .
At saka , pag-aalaga ay dapat ay dadalhin kapag upgradowaniu firmware at suriin na ang lahat ng mga tampok ay gumagana nang maayos sa labas ng kahon ng , kung hindi man ang diagnosis ng mga error ay mahirap .
Batay sa ilang HTC phone at iba pang mga produkto na naglalaman ang bersyon ng Android operating system na mas mababa kaysa 2 . 3 . 3 sinusunod ng kabuuang UDP block reception broadcastu .
Ito ay ang bersyon ng android (2 . 1 – 2 . 3 ng panahon ng 01 . 01 . 2010 – 14 . 06 . 2011)
Kung hindi ka maaaring makatanggap ng UDP broadcastu-download at pag-install , Bagong Android ROM bersyon ng minimum na 2 . 3 . 3 (Hunyo 14 , 2011) , na sinubukan ang kawastuhan ng work broadcast ng pagkarga ng UDP .
Kernel Bersyon 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Hindi . 3software . 14 . 405 . 1 .
Para sa iba pang mga tatak ng mga phone na may katulad na mga problema , mangyaring i-download ang Firmware Android ROM mula sa tagagawa , bersyon ng hindi bababa sa 2 . 3 . 3 .
Tandaan din ang mga mahahalagang katangian ng UDP packet .
Sila ay asynchronous at nangangailangan ng pagbabasa tungkol sa kung ano ang maaaring maging sanhi ang mga data na basahin error , kanilang pagkawala (pagpapadanak) , lalo na may mabagal na kagamitan , link , pagsamahin ang mataas na load at CPU trabaho smartphone at tablet .
Udp katayuan data equiped sa checksum upang suriin ang bisa ng data .
Home Automation Producer eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse