eHouse Bina Otomasyonu sistemi – Android proqram UDP vasitəsilə kontrollerlər statusu almaq

Ethernet Home Automation eHouse avtomatik statusu broadcastu UDP (User Datagram Protocol) göndərmək imkan verir , şərti təmin LAN və ya WiFi və IP bütün cihazlar almaq bilər – Yerli maskası 255 Tapılan . 255 . 255 . 0 , statusu 192 nəzarətçiləri və IP ünvanlarını off yayımlanacaq olan . 168 . 0 . x . UDP Yayım siz TCP / IP müştəri download vəziyyəti aradan imkan verir , nəzarətçi keçid tələb edən . UDP Broadcast bir connectionless protokoldur , təbliğ data və asılı olmayaraq qəbul qurğuların sayı daha çox CPU və ya şəbəkə links yük deyil .
Smartfon ilə Simple UDP yayım qəbul funksiyası , panellər və Android tablet aşağıda göstərilir .
Buna görə də bu funksiya əsasında sonsuz loop edir , Bir thread (DİŞ) fonunda iş yaratmaq lazımdır , bu aşağı prioritet iş verilməsi .
Başqa cür , bu funksiyanın icrası proqramın digər tədbirlərin icrasının qarşısını .
UDP Yayım Android platforma almaq üçün mənbə kodu:
ictimai etibarsız UDP (int port) / default almaq üçün / parametr port 6789 yayımlanacaq – binar nəzarətçi statusu
{
byte [] broadcastadr = Yeni byte [4] ;
byte [] localadr = Yeni byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (Context . WIFI_SERVICE) ; / / Wifi meneceri
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / Wifi DHCP info alın
(DHCP == null) / / default dəyəri almaq əlil olunarsa eHouse DHCP şəbəkə
{/ / No DHCP və ya cihaz bir səhv
broadcastadr [0] = (bayt) 192 ;
broadcastadr [1] = (bayt) 168 ;
broadcastadr [2] = (bayt) 0 ;
broadcastadr [3] = (bayt) 255 ;
}
başqa / / DHCP
{
yayım = int (DHCP . IPAddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; UDP yayım üçün / / – Siz funksiyası məlumatların yayımlanması istəyirsinizsə
nəzarətçi yalnız statusunu alır
(int k = 0 üçün ; k < ; 4 ; k + +) broadcastadr [k] = (bayt) ((yayımlanacaq> ; > ; k * 8) & ; 0xFF) ;
yerli int = (DHCP . ipaddress) ; / / Yerli ip ünvan DHCP
(int k = 0 üçün ; k < ; 4 ; k + +) localadr [k] = (bayt) ((yerli> ; > ; k * 8) & ; 0xFF) ; / / Yerli IP ünvan üçün
}
çalışmaq
{
ds = Yeni DatagramSocket (port) ; / / / Hər hansı bir ip olan UDP port data dinləmək
maska ​​içərisində – UDP yuva yerli port sıra instansiya yaratmaq
}
tutmaq (İstisna e)
{
/ / Ehousecommunication . l ( ” Error iNet ünvanı: almaq ” + E . getMessage ()) ; test üçün
}
çalışmaq
{
ds . setBroadcast (əsl) ; / / Yayım göndərmək Enable – ötürülməsi üçün
ds . setReuseAddress (əsl) ; / / Neçə yuva eyni IP ünvanı istifadə Enable
/ / Ds . setSoTimeout (400) ; / / Qəbul fasiləsi
}
tutmaq (İstisna io)
{/ / Səhvlərin say amma biz ərizə və sistem səhvləri qarşı qorumaq
}
/ / * UDP yayım TEST – broadcastu test UDP telefon və ya tablet yayımlanacaq – tətbiqi ilə gələcək rabitə
/ * Keçir
{
DatagramPacket dd = Yeni DatagramPacket ( ” Android UPD TEST salam Word ” . getBytes () , 0 , ” Android UPD TEST salam Word ” . uzunluğu () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . göndərmək (dd) ; / / A DatagramPacket göndərir
}
tutmaq (İstisna e)
{
ehousecommunication . l ( ” Datagram paket səhv ötürmək: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast effektiv kilid ” ) ;
/ / Blokunun multicast və broadcastu bir misal yarat
ml . () Əldə ; / / Multicast kilid imkan UDP yayım qəbul – Bu batery qənaət məqsədləri üçün müəyyən Android smartfon əlil ola bilər –
bu kilidli və yalnız əlil əgər broadcastu UDP dəstək telefon işə
isə (! ehousecommunication . UDP qəbul üçün) xitam / / sonsuz loop
UDP statusu alan {/ / Sonsuz döngü
DatagramPacket dp = Yeni DatagramPacket (mesaj , Mesaj . uzunluğu) ; / / UDP datagram paket bufer data istifadə yarat – UDP paket istifadə edir
bufer ” Mesaj ”
cəhd {
ds . almaq (DP) ; EHouse sistemi / / UDP paket qəbul – UDP paketi UDP port bir yuva alır
if (dp . getLength ()> ; 0) / / sıfırdan bağlamaların ölçüsü böyük əgər – bir şey qəbul
{
EhouseTCP . QueryBuff = dp . getData () ; / / A UDP yayım recepition querybuffer Təyin – bufer statusu eHouse yüklənmişdir
/ / DP . setLength (0) ; – paket ölçüsü kimi dəfələrlə eyni data emal üçün sıfıra müəyyən edilir
EhouseTCP . QueryReceived () ; / / Sorğu data serialların deşifre və qurğular doldurmaq – nəzarətçiləri və yük tətbiqi vəziyyəti masa decodes statusu
}
}
tutmaq (İstisna os)
{/ / Səhvlər Yoksay
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / Test yalnız
}
}
ml . azad () ; EHouse ərizə qəbulu üçün / / Multicast UDP kilid pulsuz – kilidi multicast açıqlamaları
ds . () yaxın ; / / Sonunda datagram rozetka yaxın – sonunda soket bağlayıb
}
Multicast kilid bir Android cihazlar tələb oluna bilər .
Mobil telefon halda yerli Yayım UDP effektiv və ya mobil telefon firmware asılı ola bilər .
O, həmçinin daimi batareya qənaət və təhlükəsizlik səbəblərindən əlil ola bilər və ya iş şəbəkə CPU load azaltmaq üçün .
(Kernel konfiqurasiya Qeyd: CONFIG_IP_MULTICAST müəyyən deyil) .
Əlavə , bəzi modelləri yerli firewall ilə bağlanacaq və bir port (default 6789) üzrə ötürülməsi aktivləşdirmək lazımdır bilər .
GPRS İnternet bağlantısı istifadə edərək Yayım Outside , EDGE , 3G , 4G şəbəkə operatoru tərəfindən kilidlənib və ya oxunuş bilər . Daha tez-tez , lakin , gözlənilməlidir , bu link istifadə minimuma endirmək üçün müəyyən edilir ki, .
Mobil telefon bəzi modelləri , UDP qəbul kontrollerlər proqram icra vəziyyəti çox çətin və hətta qeyri-mümkün ola bilər . Xüsusi firmware niebrandowanego və ya smartphone istifadə tələb edə bilər .
Əlavə , upgradowaniu firmware və bütün özellikleri qutusu düzgün olduğunu yoxlamaq zaman qayğı olmalıdır , başqa səhvlər diaqnoz çox çətin olacaq .
2 Android əməliyyat sistemi versiyası aşağı olan bəzi HTC telefonlar və digər məhsulları əsasən . 3 . 3 ümumi blok UDP qəbul broadcastu müşahidə .
Bu Android versiyası (2 . 1 – 2 . 01 müddətinin 3 . 01 . 2010 – 14 . 06 . 2011)
Əgər UDP broadcastu download və quraşdırma ala bilər , Minimum 2 yeni Android ROM versiya . 3 . 3 (14 İyun , 2011) , olan iş yükü UDP yayım düzgün test .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Heç bir . 3software . 14 . 405 . 1 .
Oxşar problemləri ilə telefonlar digər növlərlə üçün , istehsalçısı tərəfindən Firmware Android Rom download edin , ən azı 2 versiyası . 3 . 3 .
Də UDP Paketleri əsas xüsusiyyətləri Qeyd .
Onlar asynchronous və data səhvlər oxumaq səbəb ola bilər nə haqqında oxu tələb , onların zərər (shedding) , xüsusilə yavaş avadanlıq ilə , links , yüksək yük və CPU işğal smartfon və tablet birləşdirmək .
UDP statusu data məlumatların etibarlılığını yoxlamaq checksum ilə təchiz olunur .
Home Automation Üretici eHouse Home Automation eHouse
eHouse nəzarətçiləri – Home Automation eHouse