eHouse систем за автоматизација – Андроид софтверот да добие статус на контролори преку UDP

Етернет Home automation eHouse ви овозможи да автоматски да испрати статусот broadcastu UDP (User Datagram Protocol) , кои можат да ги добиваат сите уреди во вашата LAN или WiFi и IP задоволување на состојба – Најде во локалните маска 255 . 255 . 255 . 0 , која се емитува надвор од статусот на IP адреси на контролорите 192 . 168 . 0 . x . UDP објавување ви овозможува да го оневозможите преземање статусот на клиентот TCP / IP , која бара поврзување на контролерот . UDP објавување е connectionless протокол , за ширење податоци и без оглед на бројот на добивањето на уреди не се вчита повеќе процесорот или мрежа линкови .
Едноставна UDP емитува прием функција со Smartphones , панели и Андроид таблети е прикажан подолу .
Затоа е бесконечна јамка врз основа на оваа функција , што треба да се создаде нишка (тема) работи во позадина , давајќи најнизок приоритет работа .
Инаку , извршувањето на оваа функција блокира извршувањето на други активности на програмата .
Изворниот код за примање UDP објавување андроид платформа:
јавни празнина UDP (int пристаниште) / / параметар пристаниште да ги собереш на стандардно емитува 6789 – статусот подолго бинарни контролер
{
бајт [] broadcastadr = new byte [4] ;
бајт [] localadr = new byte [4] ;
WifiManager WiFi = (WifiManager) getSystemService (Контекст . WIFI_SERVICE) ; / / Wifi менаџер
DhcpInfo DHCP = WiFi . getDhcpInfo () ; / / Земи информации од WiFi dhcp
ако (DHCP == NULL) / / добие Вообичаената вредност е оневозможена ако DHCP мрежа на eHouse
{/ / Не DHCP или грешка за уредот
broadcastadr [0] = (бајт) 192 ;
broadcastadr [1] = (бајт) 168 ;
broadcastadr [2] = (бајт) 0 ;
broadcastadr [3] = (бајт) 255 ;
}
друг / / DHCP
{
емитува = int (DHCP . IPAddress & ; ; dhcp . мрежна маска) | ~ dhcp . мрежна маска ; / / За UDP емитува – Ако сакате да се емитува на податоци за функција
контролер добива само статус
за (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (бајт) ((емитуваат> ; > ; к * 8) & ; 0xFF) ;
локалните int = (DHCP . IPAddress) ; / / Локални IP адреса dhcp
за (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (бајт) ((локални> ; > ; к * 8) & ; 0xFF) ; / / За локалните ip адреса
}
обидете
{
ДС = new DatagramSocket (порта) ; / / / Слушање на UDP порта податоци од било кој ip
внатре маска – UDP сокет да креирате инстанца на локалната порта број
}
фати (Исклучок е)
{
/ / Ehousecommunication . л ( ” Грешка Инет: добиете адреса ” + Е . getMessage ()) ; за тест
}
обидете
{
ДС . setBroadcast (вистинска) ; / / Овозможи испрати емитува порака – за пренос
ДС . setReuseAddress (вистинска) ; / / Овозможи повеќе сокет користат иста IP адреса
/ / Ds . setSoTimeout (400) ; / / Прием истек на време
}
фати (Исклучок io)
{/ / Игнорираат грешките, но ние заштита од примена и системски грешки
}
/ / * UDP емитува ТЕСТ – broadcastu тест UDP емитува од вашиот телефон или таблета – иднина комуникација со примена на
/ * Обидете се
{
DatagramPacket дд = new DatagramPacket ( ” Здраво Word од Андроид upd ТЕСТ ” . getBytes () , 0 , ” Здраво Word од Андроид upd ТЕСТ ” . должина () ,
InetAddress . getByAddress (broadcastadr) , порт) ;
ДС . испрати (гг) ; / / Испраќа DatagramPacket
}
фати (Исклучок е)
{
ehousecommunication . л ( ” Пренесува Datagram пакет грешка: ” + Е . getMessage ()) ;
}
* /
MulticastLock мл = WiFi . createMulticastLock ( ” Multicast от за заклучување ” ) ;
/ / Креирање на пример на блок multicast и broadcastu
ml . Стекнување () ; / / Multicast брава овозможи UDP емитува прием – Тоа може да биде исклучен Одредени Андроид Smartphones за batery заштеда на –
broadcastu UDP поддршка активира телефон, ако тој е заклучен и само исклучен
додека (! ehousecommunication . Прекинете) / / бесконечна јамка за UDP прием
{/ / Бесконечна јамка добивањето UDP статус
DatagramPacket ДП = new DatagramPacket (порака , порака . должина) ; / / Креирање UDP датаграм пакет тампон користење на податоци – го прави користењето на пакет UDP
тампон ” порака ”
пробајте {
ДС . добиваат (ДП) ; / / UDP пакет прием од eHouse систем – добива пакет UDP порта на UDP сокет
ако (ДП . getLength ()> ; 0) / / ако големината на парцелите поголема од нула – нешто доби
{
EhouseTCP . QueryBuff = ДП . getData () ; / / Доделување UDP емитува recepition querybuffer – натоварена во тампон статус eHouse
/ / Dp . setLength (0) ; – пакет големина е поставена на нула за да не се обработува истите податоци постојано
EhouseTCP . QueryReceived () ; / / Декодирање пребарување податоци низи и пополнете уреди – дешифрира статус на контролори и носивост на примената статус табела
}
}
фати (Исклучок OS)
{/ / Игнорирај грешки
/ / Ehousecommunication . л ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / За тестирање само
}
}
ml . порака () ; / / Multicast UDP заклучување слободен за прием на eHouse апликација – ослободува брава multicast
ДС . затвори () ; / / Затвори го штекерот датаграм на крајот – затвора штекерот на крајот од
}
Multicast брава може да се бара во некои Android уреди .
Локално објавување UDP во случај на мобилни телефони може да биде овозможено или не во зависност од мобилен телефон firmware-от .
Таа, исто така може да бидат трајно исклучени за штедење на батеријата и од безбедносни причини или да се намали оптоварувањето на процесорот на мрежата на работа .
(Забелешка на кернелот конфигурација: CONFIG_IP_MULTICAST не е поставена) .
Во прилог , некои модели може да биде блокиран од страна на еден локален заштитен ѕид и треба да го активирате пренос на дадена порта (стандардно 6789) .
Надвор објавување при користење на GPRS Интернет врски , EDGE , 3G , 4G може да се заклучи или отклучи со мрежата на операторот . Почесто , сепак , треба да се очекува , дека таа е фиксна, со цел да се минимизира користењето на врската .
Во некои модели на мобилни телефони , Софтвер имплементација статус на контролори добивање UDP може да биде многу тешко или дури и невозможно . Може да бараат употреба на специјални firmware niebrandowanego или smartphone .
Во прилог , мора да се внимава кога upgradowaniu firmware-и проверете дали сите функции се работи правилно надвор од кутијата , инаку дијагноза на грешки ќе биде многу тешко .
Врз основа на некои HTC телефони и други производи кои содржат Андроид оперативен систем верзија помал од 2 . 3 . 3 забележани вкупно блок UDP прием broadcastu .
Ова е верзија на андроид (2 . 1 – 2 . 3 од периодот на 01 . 01 . 2010 – 14 . 06 . 2011)
Ако не можете да примате UDP broadcastu преземете и инсталирате , Нов Андроид ROM верзија на минимум 2 . 3 . 3 (14 јуни , 2011) , кои се тестираат точноста на работата оптоварување UDP емитува .
Кернел верзија 2 . 6 . 35 . 10 – htcg3ef43272 – кернелот @ and18 – 2 # 1 .
Не . 3software . 14 . 405 . 1 .
За други брендови на мобилни телефони со слични проблеми , Ве молиме преземете на firmware Андроид Ром од производителот , верзија на најмалку 2 . 3 . 3 .
Забележете исто така важни карактеристики на UDP пакети .
Тие се асинхрони и бараат читање за тоа што може да предизвика податоци за читање грешки , нивната загуба (пролевање) , особено со бавно опрема , линкови , комбинираат високо оптоварување и процесорот окупација Smartphones и таблети .
UDP статусот податоци е опремен во проверката да се провери валидноста на податоците .
Насловна Автоматика продуцент eHouse Home automation eHouse
eHouse Контролори – Home automation eHouse