Ehouse Sistema de Automatización Predial – Android software para recibir o estado dos controladores vía UDP

Ethernet Domótica Ehouse permite que envíe automaticamente un estado broadcastu UDP (User Datagram Protocol) , que pode recibir todos os dispositivos na súa rede local ou Wi-Fi e IP que satisfai a condición – Atopado na máscara de 255 locais . 255 . 255 . 0 , que se transmite fóra do estado os enderezos IP dos controladores 192 . 168 . 0 . x . Transmisión UDP permite que desactivar o estado de descarga do cliente TCP / IP , que require unha conexión para o controlador . UDP Broadcast é un protocolo sen conexión , para os datos de propagación e, independentemente do número de dispositivos que reciben non leva máis a CPU ou de rede .
Simple UDP función de recepción de transmisión con smartphones , paneis e tabletas Android é o seguinte .
É, polo tanto, un ciclo infinito con base desta función , ten que crear unha thread (fío) traballando en segundo plano , dándolle o traballo máis baixa prioridade .
Se non , a execución desta función bloquear a execución doutras actividades do programa .
O código fonte para recibir UDP Transmisión plataforma Android:
public void UDP (porto int) / Port / parámetro para incorporarse o estándar transmitido 6789 – estado controlador binario
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wi-fi = getSystemService (WifiManager) (Contexto . WIFI_SERVICE) ; / Xerente / Wifi
Dhcpinfo DHCP = WiFi . getDhcpInfo () ; / / Obter información do wi-fi DHCP
if (DHCP == null) / / ver o valor por defecto é desactivado o DHCP rede de eHouse
{/ / Non DHCP ou un erro no dispositivo
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
transmisión = int (DHCP . IPAddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / Para UDP transmisión – Se queres transmitir os datos sobre a función
controlador só recibe o estado
é (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((transmitida> ; > ; k * 8) + ; 0xFF) ;
locais int = (DHCP . ipaddress) ; / / Enderezo lugar ip dhcp
é (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((local> ; > ; k * 8) + ; 0xFF) ; / / Para o enderezo IP local
}
tentar
{
ds = new DatagramSocket (porto) ; / / / Escoitar en datos do porto UDP de calquera ip
dentro dunha máscara – UDP toma para crear unha instancia do número de porto local
}
catch (Exception e)
{
/ Ehousecommunication / . l ( ” Inet erro: obter o enderezo ” + E . getMessage ()) ; para proba
}
tentar
{
ds . setBroadcast (true) ; / / Activar enviar mensaxe de difusión – para a transmisión
ds . setReuseAddress (true) ; / / Activar toma múltiple utilizar o mesmo enderezo IP
/ / Ds . setSoTimeout (400) ; / Recepción / timeout
}
catch (Exception io)
{/ / Ignorar erros, pero nós protexer contra erros de aplicacións e do sistema
}
/ / * Proba de difusión UDP – broadcastu proba UDP transmitido a partir do seu teléfono móbil ou tablet – futura comunicación coa aplicación de
/ * Proba
{
DatagramPacket dd = DatagramPacket novo ( ” Ola Palabra de Android Comproba UPD ” . getBytes () , 0 , ” Ola Palabra de Android Comproba UPD ” . length () ,
InetAddress . getByAddress (broadcastadr) , porto) ;
ds . enviar (dd) ; / / Enviar unha DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmitir Datagram de erro do paquete: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = WiFi . createMulticastLock ( ” Bloqueo habilitado Multicast ” ) ;
/ / Crear unha instancia do bloque e multicast broadcastu
ml . Adquirir () ; / / Multicast bloqueo permiten a recepción de transmisión UDP – Pode ser desactivado smartphones Android Certos para fins de aforro batery –
broadcastu apoio UDP activa o teléfono se está bloqueado e só desactivado
while (! ehousecommunication . Fin) loop / / infinito para recepción UDP
{Bucle / / Infinito estado de recepción UDP
DatagramPacket dp = new DatagramPacket (mensaxe , mensaxe . lonxitude) ; / / Crear UDP buffer de paquete de datagrama usando datos – fai uso do paquete UDP
amortecer ” mensaxe ”
try {
ds . recibir (DP) ; / / Recepción de paquetes UDP do sistema eHouse – recibe o paquete do porto UDP do UDP un socket
if (dp . getLength ()> ; 0) / / o tamaño das parcelas maior que cero – algo recibido
{
EhouseTCP . QueryBuff = DP . getData () ; / / Asignar unha transmisión UDP recepition querybuffer – cargados no estado do buffer eHouse
/ / DP . setlength (0) ; – tamaño de paquete é axustado a cero para non procesar os mesmos datos varias veces
EhouseTCP . QueryReceived () ; / / Decode matrices de consulta de datos e cubrir dispositivos – decodifica o estado de controladores e leva a táboa de estado da aplicación
}
}
catch (Exception os)
{/ / Ignorar erros
/ Ehousecommunication / . l ( ” asdfasdfsafsa ” + Ss . getMessage ()) ; / / Para o único test
}
}
ml . Release () ; / / Multicast UDP bloqueo libre para a recepción de aplicación Ehouse – libera o multicast de bloqueo
ds . close () ; / / Pechar o socket de datagrama a finais – pecha o socket ao final de
}
Bloqueo Multicast pode ser necesaria nalgúns dispositivos Android .
Transmisión UDP local, no caso de teléfonos móbiles pode ser activado ou non, dependendo do firmware do teléfono móbil .
Tamén pode ser permanentemente incapacitado para aforro de enerxía e por razóns de seguridade ou para reducir a carga da CPU na rede no traballo .
(Teña en conta a configuración do núcleo: CONFIG_IP_MULTICAST non está definido) .
Ademais , algúns modelos poden ser bloqueada por un firewall local e precisa activar a transmisión nunha determinada porta (por defecto 6789) .
Fóra Transmisión ao usar conexións GPRS Internet , BORDO , 3G , 4G pode ser bloqueado ou desbloqueado polo operador de rede . Máis frecuentemente , Porén , debe ser esperado , que está fixado para minimizar o uso da conexión .
Nalgúns modelos de teléfonos móbiles , Estado de implantación de software de controladores recibindo UDP pode ser moi difícil ou mesmo imposíbel . Pode esixir o uso de niebrandowanego firmware especial ou smartphone .
Ademais , coidados deben ser tomados cando upgradowaniu firmware e comprobar que todos os recursos están funcionando correctamente fóra da caixa , en caso contrario, o diagnóstico dos erros será moi difícil .
Con base en algúns teléfonos HTC e outros produtos que conteñen a versión do sistema operativo Android inferior a 2 . 3 . 3 observaron un bloqueo total UDP recepción broadcastu .
Esta foi a versión de Android (2 . 1 – 2 . 3 do período de 01 . 01 . 2010 – 14 . 06 . 2011)
Se non pode recibir UDP broadcastu descarga e instalación , Nova versión da ROM do Android mínimo 2 . 3 . 3 (14 de xuño , 2011) , que deu a corrección do traballo de transmisión de carga UDP .
Núcleo versión 2 . 6 . 35 . 10 – htcg3ef43272 – núcleo do @ and18 – 2 # 1 .
Non . 3software . 14 . 405 . 1 .
Para outras marcas de teléfonos con problemas semellantes , fai a descarga do firmware Rom Android do fabricante , versión de polo menos 2 . 3 . 3 .
Observe-se tamén as características esenciais dos paquetes UDP .
Son assíncronas e esixir a lectura sobre o que pode causar erros de lectura de datos , súa perda (derramamento) , especialmente co equipo lento , con , combinar alta carga de CPU e smartphones e tabletas ocupación .
Datos de estado UDP está equipado en suma de verificación para comprobar a validez dos datos .
Produtor de Domótica Ehouse Domótica Ehouse
Controladores eHouse – Domótica Ehouse