Sistem Automasi Bangunan eHouse – Android perisian untuk menerima status pengawal melalui UDP

Ethernet Automasi Utama eHouse membolehkan anda untuk secara automatik menghantar status broadcastu UDP (User Datagram Protocol) , yang boleh menerima semua peranti di LAN anda atau WiFi IP dan memuaskan keadaan – Found in topeng tempatan 255 . 255 . 255 . 0 , yang disiarkan kira status alamat IP daripada 192 pengawal . 168 . 0 . x . UDP Penyiaran membolehkan anda untuk melumpuhkan status muat turun pelanggan TCP / IP , yang memerlukan sambungan kepada pengawal . UDP Penyiaran adalah protokol tanpa sambungan , untuk penyebaran data dan tanpa mengira bilangan peranti penerima tidak memuatkan lebih CPU atau pautan rangkaian .
Mudah UDP penerimaan siaran fungsi dengan telefon pintar , panel dan tablet Android yang ditunjukkan di bawah .
Oleh itu, ia adalah gelung tak terhingga berdasarkan fungsi ini , anda perlu untuk mewujudkan benang (Benang) bekerja di latar belakang , memberi keutamaan kerja terendah .
Sebaliknya , pelaksanaan fungsi ini menghalang pelaksanaan aktiviti-aktiviti lain program .
Kod sumber untuk menerima UDP Penyiaran android platform:
awam tidak sah udp (int pelabuhan) / pelabuhan / parameter untuk mengambil lalai siaran 6789 – status dalam pengawal binari
{
bait [] broadcastadr = new bait [4] ;
bait [] localadr = new bait [4] ;
WifiManager wifi = (WifiManager) getSystemService (Konteks . WIFI_SERVICE) ; / / Pengurus Wifi
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / Dapatkan maklumat dari wifi DHCP
jika (DHCP == null) / / mendapatkan nilai lalai dilumpuhkan jika DHCP rangkaian eHouse
{/ / Tiada DHCP atau kesilapan untuk peranti
broadcastadr [0] = (bait) 192 ;
broadcastadr [1] = (bait) 168 ;
broadcastadr [2] = (bait) 0 ;
broadcastadr [3] = (bait) 255 ;
}
lain / / DHCP
{
siaran = int (DHCP . Ipaddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / Untuk udp siaran – Jika anda ingin menyiarkan data kepada fungsi
pengawal hanya menerima status
(int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (bait) ((menyiarkan> ; > ; k * 8) & ; 0xFF) ;
tempatan int = (DHCP . IPADDRESS) ; / / Tempatan alamat IP DHCP
(int k = 0 ; k < ; 4 ; k + +) localadr [k] = (bait) ((tempatan> ; > ; k * 8) & ; 0xFF) ; / / Bagi alamat IP tempatan
}
cuba
{
ds = baru DatagramSocket (pelabuhan) ; / / / Mendengar udp port data dari ip mana-mana
di dalam topeng – udp soket untuk mewujudkan satu contoh nombor port tempatan
}
menangkap (Pengecualian e)
{
/ / Ehousecommunication . l ( ” INET Ralat: mendapatkan alamat ” + E . getMessage ()) ; untuk ujian
}
cuba
{
ds . setBroadcast (benar) ; / / Membolehkan menghantar mesej siaran – untuk penghantaran
ds . setReuseAddress (benar) ; / / Membolehkan soket pelbagai menggunakan alamat IP yang sama
/ / Ds . setSoTimeout (400) ; / / Tamat Reception
}
menangkap (Pengecualian io)
{/ / Abaikan kesilapan tetapi kita melindungi aplikasi dan sistem kesilapan
}
/ / * UDP siaran UJIAN – broadcastu ujian udp siaran dari telefon atau tablet anda – komunikasi masa depan dengan permohonan
/ * Cuba
{
DatagramPacket bb = DatagramPacket baru ( ” Hello Word dari UJIAN UPD Android ” . getBytes () , 0 , ” Hello Word dari UJIAN UPD Android ” . panjang () ,
InetAddress . getByAddress (broadcastadr) , pelabuhan) ;
ds . menghantar (bb) ; / / Menghantar DatagramPacket
}
menangkap (Pengecualian e)
{
ehousecommunication . l ( ” Menghantar ralat paket Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast kunci dibolehkan ” ) ;
/ / Buat contoh multicast blok dan broadcastu
ml . Memperolehi () ; / / Multicast kunci membolehkan udp penerimaan siaran – Ia boleh dilumpuhkan tertentu Android telefon pintar untuk Tujuan penjimatan batery –
broadcastu sokongan UDP mengaktifkan telefon jika ia dikunci dan hanya orang kurang upaya
sementara (! ehousecommunication . Tamatkan) / gelung / terhingga untuk penerimaan udp
{/ / Infinite gelung menerima status udp
DatagramPacket dp = DatagramPacket (mesej yang baru , mesej . panjang) ; / / Buat udp datagram paket penampan menggunakan data – membuat penggunaan paket UDP
penampan ” mesej ”
cuba {
ds . menerima (dp) ; / / UDP paket penerimaan dari eHouse sistem – menerima udp port paket UDP soket
jika (dp . getLength ()> ; 0) / / jika saiz petak lebih besar daripada sifar – sesuatu yang diterima
{
EhouseTCP . QueryBuff = dp . getData () ; / / Berikan udp siaran recepition querybuffer – dimuatkan ke dalam eHouse status penampan
/ / Dp . setLength (0) ; – saiz paket ditetapkan kepada sifar supaya tidak memproses data yang sama berulang kali
EhouseTCP . QueryReceived () ; / / Decode pertanyaan data array dan mengisi peranti – decodes status pengawal dan beban jadual status permohonan
}
}
menangkap (Pengecualian os)
{/ / Abaikan kesilapan
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Untuk ujian sahaja
}
}
ml . pelepas () ; / / Multicast udp kunci percuma untuk penerimaan permohonan eHouse – mengeluarkan multicast kunci
ds . menutup () ; / / Tutup soket datagram pada akhir – menutup soket pada akhir
}
Kunci Multicast mungkin diperlukan dalam beberapa peranti Android .
UDP Penyiaran Tempatan dalam kes telefon bimbit boleh didayakan atau tidak bergantung kepada firmware telefon bimbit .
Ia juga boleh kekal kurang upaya untuk penjimatan bateri dan atas sebab-sebab keselamatan atau untuk mengurangkan beban CPU pada rangkaian di tempat kerja .
(Nota konfigurasi kernel: CONFIG_IP_MULTICAST tidak ditetapkan) .
Di samping itu , sesetengah model boleh disekat oleh firewall tempatan dan perlu mengaktifkan penghantaran pada port yang diberikan (default 6789) .
Luar Penyiaran apabila menggunakan GPRS sambungan internet , EDGE , 3G , 4G boleh dikunci atau dikunci oleh operator rangkaian . Lebih kerap , bagaimanapun , harus dijangka , bahawa ia ditetapkan untuk meminimumkan penggunaan pautan .
Dalam beberapa model telefon bimbit , Perisian status pelaksanaan pengawal menerima UDP boleh menjadi sangat sukar malah mustahil . Mungkin memerlukan penggunaan niebrandowanego firmware khas atau telefon pintar .
Di samping itu , penjagaan perlu diambil apabila upgradowaniu firmware dan periksa bahawa semua ciri-ciri yang berfungsi dengan betul keluar dari kotak , sebaliknya diagnosis kesilapan akan menjadi sangat sukar .
Berdasarkan beberapa telefon HTC dan produk-produk lain yang mengandungi sistem operasi Android versi lebih rendah daripada 2 . 3 . 3 diperhatikan jumlah blok UDP penerimaan broadcastu .
Ini adalah versi android (2 . 1 – 2 . 3 tempoh 01 . 01 . 2010 – 14 . 06 . 2011)
Jika anda tidak boleh menerima UDP broadcastu muat turun dan memasang , Baru Android ROM versi minimum 2 . 3 . 3 (Jun 14 , 2011) , yang menguji ketepatan siaran kerja UDP beban .
Versi Kernel 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Tiada . 3software . 14 . 405 . 1 .
Untuk jenama lain telefon dengan masalah yang sama , sila muat turun Firmware Rom Android dari pengilang , versi sekurang-kurangnya 2 . 3 . 3 .
Perhatikan juga ciri-ciri penting dalam UDP Paket .
Mereka tak segerak dan memerlukan membaca tentang apa yang boleh menyebabkan data membaca kesilapan , mereka kehilangan (menumpahkan) , terutamanya dengan peralatan perlahan , link , menggabungkan beban tinggi dan telefon pintar dan tablet pendudukan CPU .
Data status udp dilengkapi dalam checksum untuk memeriksa kesahihan data .
Home Automation Pengeluar eHouse Automasi Utama eHouse
eHouse Pengawal – Automasi Utama eHouse