eHouse Bangunan Sistem Otomasi – Android software untuk menerima status pengendali melalui UDP

Ethernet Home Automation eHouse memungkinkan Anda untuk secara otomatis mengirimkan status broadcastu UDP (User Datagram Protocol) , yang dapat menerima semua perangkat di LAN Anda atau WiFi dan IP memuaskan kondisi – Ditemukan di dalam topeng lokal 255 . 255 . 255 . 0 , yang disiarkan dari status alamat IP dari pengendali 192 . 168 . 0 . x . UDP Broadcast memungkinkan Anda untuk menonaktifkan status download dari klien TCP / IP , yang memerlukan sambungan ke controller . UDP Broadcast adalah protokol connectionless , untuk data propagasi dan terlepas dari jumlah perangkat penerima tidak memuat lebih CPU atau link jaringan .
UDP sederhana penerimaan siaran fungsi dengan smartphone , panel dan tablet Android ditampilkan di bawah .
Oleh karena itu infinite loop atas dasar fungsi ini , Anda perlu membuat thread (THREAD) yang bekerja di latar belakang , memberikan pekerjaan prioritas terendah .
Jika tidak , pelaksanaan fungsi ini memblokir pelaksanaan kegiatan lain dari program .
Kode sumber untuk menerima UDP Broadcast Platform android:
public void udp (int port) / port / parameter untuk mengambil default disiarkan 6789 – Status di controller biner
{
byte [] = new byte broadcastadr [4] ;
byte [] = new byte localadr [4] ;
WifiManager wifi = (WifiManager) getSystemService (Konteks . WIFI_SERVICE) ; / Manager / Wifi
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Dapatkan info dari wifi dhcp
if (dhcp == null) / / mendapatkan nilai default dinonaktifkan jika DHCP jaringan eHouse
{/ / Tidak ada dhcp atau kesalahan untuk perangkat
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
lain / / DHCP
{
broadcast = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Untuk udp broadcast – Jika Anda ingin menyiarkan data pada fungsi
kontroler hanya menerima statusnya
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((broadcast> ; > ; k * 8) & ; 0xFF) ;
lokal int = (dhcp . ipaddress) ; / Alamat / ip dhcp Lokal
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((local> ; > ; k * 8) & ; 0xFF) ; / / Untuk alamat ip lokal
}
coba
{
ds = new DatagramSocket (port) ; / / / Mendengarkan pada data udp port dari ip setiap
dalam masker – udp socket untuk membuat sebuah instance dari nomor port lokal
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Kesalahan Inet: mendapatkan alamat ” + E . getMessage ()) ; untuk tes
}
coba
{
ds . setBroadcast (benar) ; / / Aktifkan mengirim pesan broadcast – untuk transmisi
ds . setReuseAddress (benar) ; / / Aktifkan soket ganda menggunakan alamat IP yang sama
/ / Ds . setSoTimeout (400) ; / / Penerimaan batas waktu
}
catch (Exception io)
{/ / Abaikan kesalahan tapi kami melindungi terhadap kesalahan aplikasi dan sistem
}
/ / * UDP broadcast UJI – broadcastu uji udp disiarkan dari ponsel atau tablet – masa depan komunikasi dengan penerapan
/ * Cobalah
{
DatagramPacket dd = new DatagramPacket ( ” Hello Word dari TES UPD Android ” . getBytes () , 0 , ” Hello Word dari TES UPD Android ” . panjang () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . kirim (dd) ; / / Mengirim DatagramPacket a
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmit kesalahan paket Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast diaktifkan kunci ” ) ;
/ / Buat instance dari multicast blok dan broadcastu
ml . Acquire () ; / / Multicast kunci mengaktifkan udp penerimaan siaran – Hal ini dapat dinonaktifkan smartphone Android tertentu untuk Tujuan hemat batery –
broadcastu dukungan UDP mengaktifkan telepon jika terkunci dan hanya dinonaktifkan
while (! ehousecommunication . Hentikan) loop / / tak terbatas untuk penerimaan udp
{/ / Tak Terbatas lingkaran menerima statusnya udp
DatagramPacket dp = new DatagramPacket (pesan , pesan . panjang) ; / / Buat udp buffer paket datagram menggunakan data – memanfaatkan paket UDP
penyangga ” pesan ”
try {
ds . terima (dp) ; / / Udp packet penerimaan dari sistem eHouse – menerima paket udp port dari UDP socket
if (dp . getLength ()> ; 0) / / jika ukuran paket lebih besar dari nol – sesuatu yang diterima
{
EhouseTCP . QueryBuff = dp . getData () ; / / Menetapkan siaran udp recepition querybuffer – dimuat ke dalam eHouse status buffer
/ / Dp . SetLength (0) ; – ukuran paket diatur ke nol agar tidak memproses data yang sama berulang-ulang
EhouseTCP . QueryReceived () ; / / Decode array permintaan data dan mengisi perangkat – decode status pengendali dan beban tabel status aplikasi
}
}
catch (Exception os)
{/ / Abaikan kesalahan
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Untuk tes hanya
}
}
ml . rilis () ; / / Multicast udp kunci gratis untuk penerimaan aplikasi eHouse – melepaskan multicast kunci
ds . close () ; / / Tutup soket datagram di akhir – menutup soket pada akhir
}
Kunci Multicast mungkin diperlukan dalam beberapa perangkat Android .
Broadcast UDP lokal dalam kasus ponsel dapat diaktifkan atau tidak tergantung pada firmware ponsel .
Hal ini juga dapat secara permanen dinonaktifkan untuk menghemat baterai dan untuk alasan keamanan atau untuk mengurangi beban CPU pada jaringan di tempat kerja .
(Perhatikan konfigurasi kernel: CONFIG_IP_MULTICAST tidak diatur) .
Tambahan , beberapa model dapat diblokir oleh firewall lokal dan perlu untuk mengaktifkan transmisi pada port tertentu (default 6789) .
Di luar Broadcast saat menggunakan koneksi internet GPRS , EDGE , 3G , 4G dapat dikunci atau dibuka oleh operator jaringan . Lebih sering , namun , harus diharapkan , bahwa itu adalah tetap untuk meminimalkan pemanfaatan link .
Pada beberapa model ponsel , Software pelaksanaan status pengendali menerima UDP bisa sangat sulit atau bahkan tidak mungkin . Mungkin memerlukan penggunaan niebrandowanego firmware khusus atau smartphone .
Tambahan , perawatan harus diambil ketika upgradowaniu firmware dan periksa bahwa semua fitur bekerja dengan baik di luar kotak , jika diagnosis kesalahan akan sangat sulit .
Berdasarkan pada beberapa ponsel HTC dan produk lain yang mengandung operasi Android versi sistem lebih rendah dari 2 . 3 . 3 mengamati blok UDP Total penerimaan broadcastu .
Ini adalah versi android (2 . 1 – 2 . 3 dari periode 01 . 01 . 2.010 – 14 . 06 . 2011)
Jika Anda tidak dapat menerima UDP broadcastu download dan menginstal , Baru Android ROM versi 2 minimal . 3 . 3 (14 Juni , 2011) , yang menguji kebenaran dari siaran beban kerja UDP .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Tidak . 3software . 14 . 405 . 1 .
Untuk merek lain ponsel dengan masalah yang sama , silahkan download Firmware Rom Android dari produsen , versi minimal 2 . 3 . 3 .
Perhatikan juga karakteristik penting dari UDP Paket .
Mereka adalah asynchronous dan memerlukan membaca tentang apa yang dapat menyebabkan kesalahan membaca data , mereka loss (shedding) , terutama dengan peralatan lambat , Link , menggabungkan beban tinggi dan smartphone pendudukan CPU dan tablet .
Data status udp yang dilengkapi di checksum untuk memeriksa validitas data .
Home Automation Produser eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse