Este é um assunto em que venho pensando há algum tempo, especialmente porque o conceito de "IoT" tem flutuado muito ultimamente.
Começarei com o que quero dizer quando digo "IoT" . Eu sei que o termo IoT pode significar coisas diferentes e que às vezes é mal utilizado. Pode ser um termo que não esteja claramente definido e possa levar a grandes discussões sobre o que exatamente significa. Eu mesmo não conheço a definição adequada e amplamente aceita do termo. Então, para mim, a IoT é um conceito, um conceito que define a capacidade de conectar-se a um dispositivo incorporado remotamente através da Internet, de outro dispositivo incorporado ou de um telefone celular . Tão simples como isso.
Nesse contexto, o objetivo da conexão não importa, se você pode conectar um dispositivo em seu escritório a outro em casa ou se pode conectar a um dispositivo em casa usando seu telefone celular, tudo isso através da Internet, então estamos falando de dispositivos IoT (os dispositivos incorporados, não o telefone).
Então, tendo concordado com o que quero dizer com IoT, descreverei agora o que estou tentando alcançar.
O que estou tentando alcançar é exatamente isso que descrevo na minha definição de IoT.
Quero ter um ou vários dispositivos incorporados em casa conectados ao meu roteador da Internet, por Ethernet ou Wi-Fi, e poder conectar-me a eles remotamente com outros dispositivos incorporados em um local remoto (e por remoto, quero dizer, não na mesma rede) e talvez também possa conectar-se a eles com um aplicativo de monitoramento no meu telefone
Por exemplo, eu posso ter um dispositivo incorporado simples atuando como um interruptor liga / desliga conectado ao abridor da porta da garagem e outro dispositivo incorporado atuando como um grande botão vermelho na minha mesa de trabalho, para que eu possa pressionar o botão vermelho na minha mesa e a porta da garagem se abre.
Outro exemplo seria ter um dispositivo incorporado com recursos de ADC que possa monitorar a temperatura da minha casa e me enviar um alerta quando atingir um limite. A notificação pode ser recebida por um aplicativo Android simples ou por outro dispositivo incorporado com uma pequena tela na minha mesa de trabalho.
Esses exemplos podem ser tolos, mas servem apenas para ilustrar os possíveis cenários e casos de uso para o que estou tentando alcançar. No final, a ideia é a mesma: conectar um dispositivo incorporado a outro através da Internet.
Outra coisa a esclarecer é que a troca de dados entre esses dispositivos será muito leve, apenas alguns bytes de cada vez, não é necessário que centenas de kilobytes sejam necessários para serem trocados entre os dispositivos.
Além disso, o tipo de "dispositivos incorporados" aos quais me refiro são dispositivos simples, mas capazes, baseados em microcontroladores de 100MHz ou 200MHz córtex-m4. E isso é importante para esclarecer, porque não haverá bibliotecas Linux ou complexas em execução nesses dispositivos. No final, é um desperdício de recursos e completamente desnecessário ter um processador poderoso executando o Linux apenas para ligar e desligar uma lâmpada . De qualquer forma, estou planejando usar um BeagleBoard, Raspberry Pi ou qualquer outra placa como essa como meus dispositivos incorporados. Apenas microcontroladores, porque não é necessária mais complexidade do que isso.
Não sei muito sobre plataformas IoT e esses tipos de soluções complexas por aí. Quando comecei essa jornada para descobrir uma maneira de conectar um dispositivo incorporado a outro através da Internet, deparei-me com alguns sites com serviços de IoT.
Eu sei que existem alguns serviços de nuvem IoT, como:
Só para citar alguns. Os principais problemas com esses são custo e complexidade. Você precisa pagar para obter esses serviços e também aprender como implementar todos os serviços que eles têm, caso precise de todos eles, e suas APIs e talvez um monte de outras coisas que não me parecem necessárias capaz apenas de trocar alguns bytes entre dispositivos. Eu só quero algo mais simples que isso, algo que eu possa fazer sozinho.
Você pode dizer que implementar minha própria "nuvem", se é algo que tenho que fazer, não é simples e às vezes é melhor usar esses tipos de serviços por uma questão de simplicidade, mas há duas razões principais pelas quais quero saber como implementar meus próprios serviços de IoT.
A principal razão é que eu quero fazer isso sozinho. Não quero contar com terceiros para conectar meus dispositivos e, como desenvolverei o código e o hardware para meus dispositivos, é melhor criar também meus próprios meios para conectá-los como dispositivos de IoT.
A segunda razão é aprender como fazê-lo. Ao conhecer todas as coisas necessárias para conseguir isso, terei um melhor entendimento sobre o mundo da IoT.
Além disso, quero mencionar que sou proficiente em C e uso o Linux como meu sistema operacional diário no trabalho e em minha casa, portanto, evite as coisas do Windows, porque isso é inútil para mim. Não tenho medo de nada que precise implementar em C para meus dispositivos incorporados ou no Linux para implementar o que for necessário para alcançar meu objetivo.
Portanto, minha pergunta é: o que é necessário implementar e onde, para conectar dois ou mais dispositivos incorporados um ao outro com o objetivo de trocar dados entre eles?
Esta pergunta O que posso usar para criar uma IoT em nosso próprio servidor? possui algo semelhante, mas está fechado e não possui respostas, também pressupõe que uma infraestrutura em nuvem já existente seja usada. Então isso não me ajuda.
Esta outra postagem Quais serviços de IoT estão disponíveis para armazenamento / envio / publicação de dados genéricos na nuvem? tem uma pergunta semelhante, mas o OP está pedindo explicitamente serviços de IoT e estou tentando evitá-los.