EHouse система за сградна автоматизация – Android софтуер, за да получи статут на контролерите чрез UDP

Ethernet Home Automation EHouse ви позволяват автоматично да изпрати статут broadcastu UDP (User Datagram Protocol) , които могат да получат всички устройства във вашата локална мрежа или WiFi и IP отговарят на условието – Намерено в местната маска 255 . 255 . 255 . 0 , , който се излъчва на състоянието на IP адресите на контролерите 192 . 168 . 0 . х . UDP Предавания ви позволява да забраните статуса на изтеглянето на TCP / IP клиент , което изисква връзка към контролера . UDP излъчване е несвързан протокол , за размножаване данни и независимо от броя на приемащите устройства не натоварва повече процесора или мрежови връзки .
Обикновено UDP функция предаването рецепция със смартфони , панели и Android таблетки е показан по-долу .
Следователно това е безкраен цикъл въз основа на тази функция , трябва да създадете резба (резба) работи във фонов режим , като най-нисък приоритет работа .
В противен случай , изпълнението на тази функция да блокира изпълнението на други дейности на програмата .
Сорс кодът за получаване на UDP Предавания Android платформа:
обществени невалидни UDP (Int порт) / / параметър пристанище, за да вземете по подразбиране излъчват 6789 – статут в двоичен контролер
{
байта [] broadcastadr = байт [4] ;
байта [] localadr = байт [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 к = 0 ; к < ; 4 ; к + +) broadcastadr [к] = (байт) ((излъчват> ; > ; к * 8) ; 0xFF) ;
местно ПНА = (DHCP . IPADDRESS) ; / / Local IP адрес DHCP
(INT к = 0 ; к < ; 4 ; к + +) localadr [к] = (байт) ((местно> ; > ; к * 8) ; 0xFF) ; / / За локално IP адрес
}
опитвам
{
DS = DatagramSocket (пристанище) ; / / / Слушане на UDP порт данни от всеки ПР
вътре в маската – UDP контакт, за да се създаде копие на местната номера на порта
}
улов (Изключение д)
{
/ / Ehousecommunication . л ( ” Грешка Inet: получите на адрес ” + E . GetMessage ()) ; за изпитване
}
опитвам
{
DS . setBroadcast (вярно) ; / / Разрешаване изпрати съобщение предаването – за предаване
DS . setReuseAddress (вярно) ; / / Разрешаване на множествена гнездо използват един и същ IP адрес
/ / Ds . setSoTimeout (400) ; / / Рецепция изчакване
}
улов (Изключение Йо)
{/ / Игнорирайте грешки, но ние защита срещу грешки при кандидатстване и системата
}
/ / * UDP тестово излъчване – излъчва от своя телефон или таблет broadcastu тест UDP – бъдещата комуникация с прилагането на
/ * Опитайте
{
DatagramPacket дд = DatagramPacket ( ” Здравейте Word тест от Android UPD ” . getBytes () , 0 , ” Здравейте Word тест от Android UPD ” . дължина () ,
InetAddress . getByAddress (broadcastadr) , порт) ;
DS . изпрати (DD) ; / / Изпраща DatagramPacket
}
улов (Изключение д)
{
ehousecommunication . л ( ” Предава Datagram пакет грешка: ” + E . GetMessage ()) ;
}
* /
MulticastLock мл = WiFi . createMulticastLock ( ” Multicast поддръжка за заключване ” ) ;
/ / Създаване на инстанция на блока мултикаст и broadcastu
мл . Придобиване () ; / / Multicast заключване Enable UDP предаването рецепция – Могат да бъдат изключени някои смартфони Android за batery цели за пестене на –
broadcastu UDP подкрепа активира телефона, ако той е заключен и само инвалиди
докато (! ehousecommunication . Прекратяване) / / безкраен цикъл за приемане UDP
{/ / Безкраен цикъл получава UDP статус
DatagramPacket Dp = нови DatagramPacket (съобщение , съобщение . дължина) ; / / Създаване на UDP дейтаграма пакет буфер с използване на данни – използване на пакета UDP
буфер ” съобщение ”
опитайте {
DS . получаване (ДП) ; / / UDP пакет прием от EHouse система – получава пакети UDP порт на UDP сокет
ако (ДП . getLength ()> ; 0) / / ако големината на парцелите, по-голяма от нула – нещо получи
{
EhouseTCP . QueryBuff = Dp . getData () ; / / Присвояване предаването UDP recepition querybuffer – натоварени в EHouse буфер състояние
/ / Dp . SetLength (0) ; – размер на пакет е настроен на нула, така че да не се обработват едни и същи данни многократно
EhouseTCP . QueryReceived () ; / / Декодиране заявка масиви от данни и попълнете устройства – декодира състоянието на ръководителите и товари заявлението за състоянието на маса
}
}
улов (Изключение OS)
{/ / Игнорирайте грешки
/ / Ehousecommunication . л ( ” asdfasdfsafsa ” + OS . GetMessage ()) ; / / Само за тестове
}
}
мл . освобождаване () ; / / Заключване на Multicast UDP безплатно за приемане на EHouse – отключва мултикаст
DS . близо () ; / / Затваряне на контакта дейтаграма в края – затваря контакта в края на
}
Multicast заключване може да се изисква в някои Android устройства .
Локално излъчване UDP в случай на мобилни телефони може да бъде включен или не в зависимост от фърмуера на мобилния телефон .
Той може да бъде с трайни увреждания за пестене на батерията и по съображения за безопасност или да се намали натоварването на процесора в мрежата по време на работа .
(Забележете, че конфигурация на ядрото: CONFIG_IP_MULTICAST не е настроен) .
В допълнение , някои модели могат да бъдат блокирани от местен защитна стена и трябва да активирате предаване на даден порт (по подразбиране 6789) .
Извън излъчване при използване на GPRS интернет връзки , EDGE , 3G , 4G може да бъде заключена или отключена с мрежовия оператор . По-често , обаче , трябва да се очаква , че тя се определя с цел да се сведе до минимум използването на връзката .
При някои модели мобилни телефони , Състоянието на софтуер изпълнението на ръководителите, получаващи UDP може да бъде много трудно или дори невъзможно . Могат да изискват използването на специален фърмуер niebrandowanego или смартфон .
В допълнение , трябва да се внимава, когато upgradowaniu фърмуера и да проверите, че всички функции се работи правилно с изваждането от кутията , в противен случай диагнозата на грешките, ще бъде много трудно .
Въз основа на някои HTC телефони и други продукти, съдържащи версия на Android операционната система по-ниска от 2 . 3 . 3 се наблюдава обща блок UDP прием broadcastu .
Това е версия на Android (2 . 1 – 2 . 3 от периода на 01 . 01 . 2010 – 14 . 06 . 2011)
Ако не можете да получите UDP broadcastu изтеглите и инсталирате , Нова версия на Android ROM на минимум 2 . 3 . 3 (14 юни , 2011) , която тества верността на заетост предаването UDP .
Kernel версия 2 . 6 . 35 . 10 – htcg3ef43272 – ядро @ and18 – 2 # 1 .
Не . 3software . 14 . 405 . 1 .
За други марки телефони с подобни проблеми , моля изтеглите фърмуера Android ром от производителя , версия на най-малко 2 . 3 . 3 .
Имайте предвид също така, основните характеристики на UDP пакети .
Те са асинхронни и изискват четене за това, което може да доведе до четене на данните грешки , тяхната загуба (проливането) , особено с бавна оборудване , звена , съчетават високо натоварване и CPU заетост на смартфони и таблети .
UDP статут на данните е оборудван в контролна проверка на валидността на данните .
Продуцент Home Automation EHouse Home Automation EHouse
EHouse контролери – Home Automation EHouse