Nuvem doméstica sem fio para coisas na Internet
Passei muitas horas repetindo projetos de outras pessoas em coisas sem fio inteligentes. Isso me levou à conclusão óbvia: após o terceiro ou quarto projeto, você descobre que todos eles são executados em princípios diferentes, usando diferentes tecnologias e técnicas, especialmente depois de alterar ou atualizar alguns deles. Isso significa que seu mundo de coisas se torna absolutamente livre de manutenção.Em outras palavras, você precisa oferecer suporte a enormes bibliotecas de especificações e códigos. E é necessário mais tempo para lidar com todos os seus dispositivos. Certamente, alguns são mais organizados do que eu, mas, muito provavelmente, a maioria na luta contra a entropia alcançou pouco sucesso. Sem ofensa.O que fazer para conter a invasão de robôs em sua casa (e isso é inevitável em qualquer caso)? .. É simples. As coisas são mais fáceis. A nuvem é mais inteligente.Conceito
- Dispositivos o mais simples possível: um módulo padrão para comunicação com uma nuvem privada. Ele consiste em um módulo sem fio e scripts de inicialização (no módulo e no servidor). Se o módulo falhar, descarte-o e substitua-o por um novo módulo padrão.
- Toda lógica e inteligência está localizada no servidor. Um roteador Linux simples.
As coisas são mais fáceis. Nuvem mais inteligente
Um pequeno servidor recebe dados de sensores, os armazena e envia comandos para dispositivos executivos. Agora, seus dispositivos não são uma multidão de coisas que pensam. São apenas sinapses do cérebro do servidor. É simples e natural.Existem dois tipos de dispositivos na minha rede:- Sensores e controles (entrada) e
- Relés, válvulas, etc. (fim de semana)
Todos eles se comunicam com o servidor via módulos wifi (ESP8266 de uma conhecida loja chinesa). As entradas enviam informações de status para o servidor de banco de dados. As saídas recebem e executam comandos do servidor. Como eu já mencionei, os dispositivos não têm razão.O objetivo é tornar as coisas o mais simples possível.Toda a lógica permanece no servidor. No servidor, todos os algoritmos, gatilhos, etc. Por exemplo, o servidor decide ativar o aquecimento se a temperatura em certas salas cair abaixo de um determinado nível por um certo período de tempo. O servidor decide abrir a válvula solenoide de irrigação na estufa se a umidade do solo cair para um determinado nível a uma determinada hora do dia. Naturalmente, uma pessoa sempre pode intervir e assumir o controle com as próprias mãos ou mudar a lógica. O servidor também notifica o proprietário de eventos críticos via SMS. Pode aceitar comandos de determinados telefones.Núcleo de nuvem inteligente

Usei um pequeno roteador sem fio com OpenWRT e memória estendida que pode conter um servidor da Web e um servidor de banco de dados - o Gl-iNet 6416A não custa mais de 25 USD.Surpreendentemente pequeno dispositivo nos dá:- Servidor Web Lighttpd para hospedagem de páginas de interface (pré-instaladas)
- php para que eles sejam interativos (pré-instalados)
- Servidor de banco de dados MySQL para armazenamento de dados (instalado). Alguém usa SQlite, mas ele não é capaz de lidar com solicitações simultâneas à fornalha.
Esta é a minha nuvem privada. Ele cria sua própria rede de sub-rede (192.168.8.1), sua própria rede wifi, acessível apenas para as minhas coisas. Ele também possui uma interface externa (WAN) conectada ao meu roteador doméstico comum (com o endereço atribuído 192.168.1.100). É necessário acessar o painel de controle da minha rede wifi em casa.Software aplicativo usado no projeto:- WinSCP - Cliente FTP gráfico para acesso a arquivos
- HeidiSQL - cliente SQL gráfico para acesso ao banco de dados
- PuTTy - cliente SSH para enviar comandos para o sistema operacional OpenWRT
A configuração atual é armazenada no GitHub .E sim, para culpar, usei uma unidade flash USB como armazenamento de arquivos, embora não deva usar memória NAND como adulto (requisito mySQL).Módulo padrão
O módulo wifi (ESP8266) é temperado com um esboço padrão. Em resumo, ele lê os parâmetros do último acesso ao ponto de acesso, tenta se conectar a ele; se ele falhar, lança seu ponto de acesso e uma página com um formulário para novos parâmetros de acesso. E se ele conseguir se conectar, ele baixa os scripts destinados a este módulo do servidor e os executa. Os módulos diferem pelo endereço MAC.Na minha nuvem, para cada endereço MAC, há uma pasta dedicada com scripts de trabalho no endereço 192.168.8.1:86.Portanto, inicialmente o módulo possui apenas três scripts:AP_config - duas linhas: SSID e senha.init.lua - conexão ao ponto de acesso com parâmetros salvos do AP_config. Se malsucedido, execute do ("ap_request.lua"). Se for bem-sucedido, faça o download dos scripts de trabalho e execute-os.ap_request.lua - solicite novos parâmetros para acessar o ponto de acesso, grave-os no arquivo AP_config (caso a conexão com os pré-instalados falhe).Scripts de móduloDispositivos gerenciados


O objetivo é tornar os periféricos o mais simples possível. Por exemplo, um módulo com dois relés (interruptores de luz) consiste em:- Fonte de alimentação CA-CC
- Estabilizador da fonte de alimentação 3.3V
- ESP8266 (neste caso, ESP-01 com dois pinos controlados)
- módulos de relé
- corpo
Tudo sobre tudo - 7 USD.Sensores (entradas)

Um dispositivo com um sensor consiste em:- Fonte de alimentação
- Condicionador de potência
- Módulo Wifi (novamente ESP01)
- Sensor Digital de Temperatura e Umidade DHT11
Tudo não mais que 5 USD.Ele mede as leituras de temperatura e umidade e envia para o servidor a cada 3 minutos, onde são armazenadas no banco de dados mySQL.Gerência





Toda a diversão no servidor!
O mais interessante é que eu não tenho painéis de controle convencionais. Todas as interfaces são virtuais. Botões, interruptores, mecanismos são virtuais. Claro, você pode torná-los reais e eu farei alguns deles.Usando este site, podemos observar o histórico de sensores e valores de corrente, podemos controlar lâmpadas, válvulas, etc.Você sempre pode adicionar novos dispositivos ao painel usando habilidades simples de codificação HTML e Javascript.Usei mapas de links com imagens criadas em um programa simples SweetHome 3D para organizar a navegação doméstica.Ligue sua imaginação
Muito mais pessoas sabem como codificar para a web (PHP, Javascript, HTML) do que para controladores (C ++, Lua). Usando essa estrutura, podemos receber, solicitar, enviar dados e comandos com scripts php ou js simples. Podemos construir um sistema de aprendizado que possa se adaptar aos nossos hábitos, nos informar sobre os incidentes. Source: https://habr.com/ru/post/pt396755/
All Articles