Entrando em contato com o Arduino pela Internet sem porta a frente

13

Eu tenho uma placa Arduino conectada a uma rede Wi-Fi com acesso à Internet. O que eu quero é que preciso entrar em contato com esta placa do Arduino de qualquer outra rede sem a ajuda do encaminhamento de porta na rede doméstica do Arduino. Atualmente, o que estou fazendo é fazer o ping do Arduino no meu servidor da web a cada dois segundos, o que não é prático, acredito.

Como dispositivos como luzes LED wifi inteligentes se conectam à Internet? Podemos operá-los com nosso telefone celular sem encaminhamento de porta ou qualquer outro ajuste na configuração do roteador, certo? Como eles fazem isso?

Jithesh Kt
fonte
Veja o CoAP e talvez alguns outros protocolos de IoT.
Sean Houlihane

Respostas:

9

Para evitar a necessidade de estar em uma rede que permita tráfego de entrada , você precisa conectar a saída a um servidor que retransmitirá solicitações de clientes que também fazem conexões de saída com ele.

Em essência, é como o modelo de um satélite de comunicação. O computador ou telefone do usuário ou o que quer que seja, e o dispositivo IoT, mantêm os links "ativos" para esse servidor na nuvem, e cada mensagem que aparece de um lado é enviada e, por outro, e vice-versa.

Existem muitas maneiras possíveis de implementar esse servidor. Um que está na moda atualmente é torná-lo um MQTT Broker . No MQTT, os clientes (tanto o dispositivo de IoT quanto os dispositivos de usuário) fazem conexões de saída com o broker e as mensagens de compartilhamento quebradas que são "publicadas" em um "tópico" por um cliente para todos os clientes que "assinaram" esse "tópico" " tema.

  • Como já existe uma conexão estabelecida, o broker pode enviar tráfego não solicitado para baixo sem latência no intervalo de pesquisa

  • Para manter as conexões estabelecidas, o tráfego ocasional de keep-alive é enviado

  • Se a conexão quebrar, existem regras para tentar restabelecê-la

  • Essencialmente, a latência perceptível ocorre apenas se o intermediário tentar retransmitir uma mensagem e a conexão acabar quebrada e ainda não reparada; nesse caso, a mensagem seria adiada até que a reconexão seja concluída. (Existem opções para reter mensagens, descartá-las etc.).

Chris Stratton
fonte
1
MQTT todo o caminho. Obrigado pela pista, Chris. O NodeJS + MQTT é o caminho a percorrer.
Jithesh Kt