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

  1. 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.
  2. 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


imagem

imagem

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á:

  1. Servidor Web Lighttpd para hospedagem de páginas de interface (pré-instaladas)
  2. php para que eles sejam interativos (pré-instalados)
  3. 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


imagem

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ódulo

Dispositivos gerenciados


imagem

imagem

imagem

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)


imagem

imagem

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


imagem

imagem

imagem

imagem

imagem



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