Ehouse Sistema de Automação Predial – Android software para receber o estado dos controladores via UDP

Ethernet Domótica Ehouse permitir que você envie automaticamente um status broadcastu UDP (User Datagram Protocol) , que pode receber todos os dispositivos em sua LAN ou Wi-Fi e IP que satisfaz a condição – Encontrado na máscara de 255 locais . 255 . 255 . 0 , que é transmitido fora do estado os endereços IP dos controladores 192 . 168 . 0 . x . Transmissão UDP permite que você desabilite o status de download do cliente TCP / IP , que requer uma conexão para o controlador . UDP Broadcast é um protocolo sem conexão , para os dados de propagação e, independentemente do número de dispositivos que recebem não carrega mais a CPU ou de rede .
Simples UDP função de recepção de transmissão com smartphones , painéis e tablets Android é mostrado abaixo .
É, portanto, um ciclo infinito com base desta função , você precisa criar uma thread (Thread) trabalhando em segundo plano , dando-lhe o trabalho mais baixa prioridade .
Caso contrário , a execução desta função bloquear a execução de outras atividades do programa .
O código fonte para receber UDP Transmissão plataforma android:
public void udp (porta int) / port / parâmetro para pegar o padrão transmitido 6789 – estado controlador binário
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wi-fi = getSystemService (WifiManager) (Contexto . WIFI_SERVICE) ; / Gerente / Wifi
Dhcpinfo dhcp = WiFi . getDhcpInfo () ; / / Obter informações do wi-fi dhcp
if (dhcp == null) / / obter o valor padrão é desativado se o DHCP rede de eHouse
{/ / Não dhcp ou um erro para o dispositivo
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
transmissão = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Para udp transmissão – Se você quiser transmitir os dados sobre a função
controlador só recebe o status
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((transmitida> ; > ; k * 8) & ; 0xFF) ;
locais int = (dhcp . ipaddress) ; / / Endereço local ip dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((local> ; > ; k * 8) & ; 0xFF) ; / / Para o endereço IP local
}
tentar
{
ds = new DatagramSocket (porto) ; / / / Ouvir em dados da porta UDP de qualquer ip
dentro de uma máscara – udp tomada para criar uma instância do número de porta local
}
catch (Exception e)
{
/ Ehousecommunication / . l ( ” Inet erro: obter o endereço ” + E . getMessage ()) ; para teste
}
tentar
{
ds . setBroadcast (true) ; / / Ativar enviar mensagem de difusão – para a transmissão
ds . setReuseAddress (true) ; / / Ativar tomada múltipla utilizar o mesmo endereço IP
/ / Ds . setSoTimeout (400) ; / Recepção / timeout
}
catch (Exception io)
{/ / Ignorar erros, mas nós proteger contra erros de aplicativos e do sistema
}
/ / * Teste de difusão UDP – broadcastu teste udp transmitido a partir de seu celular ou tablet – futura comunicação com a aplicação de
/ * Tente
{
DatagramPacket dd = DatagramPacket novo ( ” Olá Palavra do Android TESTE UPD ” . getBytes () , 0 , ” Olá Palavra do Android TESTE UPD ” . length () ,
InetAddress . getByAddress (broadcastadr) , porto) ;
ds . enviar (dd) ; / / Envia uma DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Transmitir Datagram de erro de pacote: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = WiFi . createMulticastLock ( ” Bloqueio habilitado Multicast ” ) ;
/ / Criar uma instância do bloco e multicast broadcastu
ml . Adquirir () ; / / Multicast bloqueio permitem a recepção de transmissão udp – Ele pode ser desativado smartphones Android Certos para Fins de poupança batery –
broadcastu apoio UDP ativa o telefone se ele está bloqueado e só desativado
while (! ehousecommunication . Terminar) loop / / infinito para recepção udp
{Loop / / Infinito estado de recepção udp
DatagramPacket dp = new DatagramPacket (mensagem , mensagem . comprimento) ; / / Criar udp buffer de pacote de datagrama usando dados – faz uso do pacote UDP
amortecer ” mensagem ”
try {
ds . receber (DP) ; / / Recepção de pacotes UDP do sistema eHouse – recebe o pacote da porta UDP do UDP um socket
if (dp . getLength ()> ; 0) / / se o tamanho das parcelas maior que zero – algo recebido
{
EhouseTCP . QueryBuff = dp . getData () ; / / Atribuir uma transmissão udp recepition querybuffer – carregados no estado do buffer eHouse
/ / Dp . setlength (0) ; – tamanho de pacote é ajustado para zero de modo a não processar os mesmos dados repetidamente
EhouseTCP . QueryReceived () ; / / Decode matrizes de consulta de dados e preencher dispositivos – decodifica o estado de controladores e carrega a tabela de status do aplicativo
}
}
catch (Exception os)
{/ / Ignorar erros
/ Ehousecommunication / . l ( ” asdfasdfsafsa ” + Ss . getMessage ()) ; / / Para o único teste
}
}
ml . release () ; / / Multicast UDP bloqueio livre para a recepção de aplicação Ehouse – libera o multicast de bloqueio
ds . close () ; / / Fechar o socket de datagrama no final – fecha o socket no final de
}
Bloqueio Multicast pode ser necessária em alguns dispositivos Android .
Transmissão UDP local, no caso de telefones celulares pode ser ativado ou não, dependendo do firmware do telefone móvel .
Também pode ser permanentemente incapacitado para economia de bateria e por razões de segurança ou para reduzir a carga da CPU na rede no trabalho .
(Observe a configuração do kernel: CONFIG_IP_MULTICAST não está definido) .
Além , alguns modelos pode ser bloqueada por um firewall local e precisa de activar a transmissão em uma determinada porta (padrão 6789) .
Fora Transmissão ao usar conexões GPRS Internet , BORDA , 3G , 4G pode ser bloqueado ou desbloqueado pelo operador de rede . Mais frequentemente , contudo , deve ser esperado , que está fixado de modo a minimizar a utilização da ligação .
Em alguns modelos de telefones móveis , Estado de implementação de software de controladores recebendo UDP pode ser muito difícil ou mesmo impossível . Pode exigir o uso de niebrandowanego firmware especial ou smartphone .
Além , cuidados devem ser tomados quando upgradowaniu firmware e verificar que todos os recursos estão funcionando corretamente fora da caixa , caso contrário, o diagnóstico dos erros será muito difícil .
Com base em alguns telefones HTC e outros produtos contendo a versão do sistema operacional Android inferior a 2 . 3 . 3 observaram um bloqueio total UDP recepção broadcastu .
Esta foi a versão do Android (2 . 1 – 2 . 3 do período de 01 . 01 . 2010 – 14 . 06 . 2011)
Se você não pode receber UDP broadcastu download e instalação , Nova versão da ROM do Android mínimo 2 . 3 . 3 (14 de junho , 2011) , que testou a correção do trabalho de transmissão de carga UDP .
Kernel versão 2 . 6 . 35 . 10 – htcg3ef43272 – kernel do @ and18 – 2 # 1 .
Não . 3software . 14 . 405 . 1 .
Para outras marcas de telefones com problemas semelhantes , faça o download do firmware Rom Android do fabricante , versão de pelo menos 2 . 3 . 3 .
Note-se também as características essenciais dos pacotes UDP .
Eles são assíncronas e exigir a leitura sobre o que pode causar erros de leitura de dados , sua perda (derramamento) , especialmente com o equipamento lento , ligações , combinar alta carga de CPU e smartphones e tablets ocupação .
Dados de status UDP é equipado em soma de verificação para verificar a validade dos dados .
Produtor de Domótica Ehouse Domótica Ehouse
Controladores eHouse – Domótica Ehouse