Nube doméstica inalámbrica para cosas de Internet

Pasé muchas horas repitiendo proyectos de otros en cosas inalámbricas inteligentes. Esto me llevó a la conclusión obvia: después del tercer o cuarto proyecto, descubres que todos se ejecutan según diferentes principios, utilizando diferentes tecnologías y técnicas, especialmente después de cambiar o actualizar algunos de ellos. Esto significa que su mundo de cosas se vuelve absolutamente libre de mantenimiento.

En otras palabras, debe admitir enormes bibliotecas de especificaciones y códigos. Y se necesita más tiempo para hacer frente a todos sus dispositivos. Ciertamente, algunos están más organizados que yo, pero, muy probablemente, la mayoría en la lucha contra la entropía ha tenido poco éxito. Sin ofender.

¿Qué hacer para frenar la invasión de robots en su hogar (y esto es inevitable en cualquier caso)? Es simple. Las cosas son más fáciles. La nube es más inteligente.

Concepto

  1. Dispositivos lo más simples posible: un módulo estándar para la comunicación con una nube privada. Consiste en un módulo inalámbrico y scripts de inicialización (tanto en el módulo como en el servidor). Si el módulo falla, deséchelo y reemplácelo con un nuevo módulo estándar.
  2. Toda la lógica e inteligencia se encuentra en el servidor. Un simple enrutador Linux.


Las cosas son más fáciles. Nube más inteligente

Un pequeño servidor recibe datos de sensores, los almacena y envía comandos a dispositivos ejecutivos. Ahora sus dispositivos no son una multitud de cosas pensantes. Son solo sinapsis del cerebro del servidor. Es simple y natural.

Hay dos tipos de dispositivos en mi red:

  • Sensores y controles (entrada) y
  • Relés, válvulas, etc. (fin de semana)

Todos se comunican con el servidor a través de módulos wifi (ESP8266 de una conocida tienda china). Las entradas envían información de estado al servidor de la base de datos. Las salidas reciben y ejecutan comandos del servidor. Como ya mencioné, los dispositivos no tienen razón.

El objetivo es hacer las cosas lo más simples posible.

Toda la lógica permanece en el servidor. En el servidor, todos los algoritmos, disparadores, etc. Por ejemplo, el servidor decide encender la calefacción si la temperatura en ciertas habitaciones cae por debajo de cierto nivel durante un cierto período de tiempo. El servidor decide abrir la válvula solenoide de riego en el invernadero si la humedad del suelo se ha reducido a un cierto nivel en un momento determinado del día. Naturalmente, una persona siempre puede intervenir y tomar el control en sus propias manos o cambiar la lógica. El servidor también notifica al propietario de los eventos críticos a través de SMS. Puede aceptar comandos de ciertos teléfonos.

Nube inteligente


imagen

imagen

Utilicé un pequeño enrutador inalámbrico con OpenWRT y memoria extendida que puede contener un servidor web y un servidor de base de datos: Gl-iNet 6416A no cuesta más de 25 USD.

Sorprendentemente pequeño dispositivo nos da:

  1. Servidor web Lighttpd para alojar páginas de interfaz (preinstalado)
  2. php para que sean interactivos (preinstalados)
  3. Servidor de base de datos MySQL para almacenar datos (instalado). Alguien usa SQlite, pero no puede manejar solicitudes simultáneas a la caja de fuego.

Esta es mi nube privada. Crea su propia red de subred (192.168.8.1), su propia red wifi, accesible solo para mis cosas. También tiene una interfaz externa (WAN) conectada a mi enrutador doméstico habitual (con la dirección asignada 192.168.1.100). Es necesario para acceder al panel de control desde la red wifi de mi casa.

Software de aplicación utilizado en el proyecto:

  • WinSCP - Cliente gráfico de FTP para acceso a archivos
  • HeidiSQL - cliente gráfico de SQL para acceso a la base de datos
  • PuTTy: cliente SSH para enviar comandos al sistema operativo OpenWRT

La configuración actual se almacena en GitHub .

Y sí, para culpar, usé una unidad flash USB como almacenamiento de archivos, aunque no debería usar memoria NAND como adulto (requisito de mySQL).

Módulo estándar


imagen

El módulo wifi (ESP8266) está sazonado con un boceto estándar. En resumen, lee los parámetros del último acceso al punto de acceso, intenta conectarse a él, si falla, lanza su punto de acceso y una página con un formulario para nuevos parámetros de acceso. Y si logra conectarse, descarga los scripts destinados a este módulo desde el servidor y los ejecuta. Los módulos difieren según la dirección MAC.

En mi nube para cada dirección MAC hay una carpeta dedicada con scripts de trabajo en la dirección 192.168.8.1:86

Entonces, inicialmente el módulo tiene solo tres scripts:

AP_config - dos líneas: SSID y contraseña.

init.lua: conexión al punto de acceso con parámetros guardados de AP_config. Si no tiene éxito, ejecute do ("ap_request.lua"). Si tiene éxito, descargue scripts de trabajo y ejecútelos.

ap_request.lua: solicita nuevos parámetros para acceder al punto de acceso, escríbelos en el archivo AP_config (en caso de que falle la conexión con los preinstalados).

Guiones de módulos

Dispositivos gestionados


imagen

imagen

imagen

El objetivo es hacer que los periféricos sean lo más simples posible. Por ejemplo, un módulo con dos relés (interruptores de luz) consta de:

  • Fuente de alimentación AC-DC
  • Estabilizador de fuente de alimentación de 3.3V
  • ESP8266 (en este caso, ESP-01 con dos pines controlados)
  • módulos de relé
  • cuerpo

Todo sobre todo - 7 USD.

Sensores (entradas)


imagen

imagen

Un dispositivo con un sensor consta de:

  • Fuente de alimentación
  • Acondicionador de energía
  • Módulo wifi (nuevamente ESP01)
  • Sensor digital de temperatura y humedad DHT11

Todo no más de 5 USD.

Mide las lecturas de temperatura y humedad y lo envía al servidor cada 3 minutos, donde se almacenan en la base de datos mySQL.

Gestión


imagen

imagen

imagen

imagen

imagen



Toda la diversión en el servidor!


Lo más interesante es que no tengo paneles de control convencionales. Todas las interfaces son virtuales. Botones, interruptores, motores son virtuales. Por supuesto, puedes hacerlos reales y yo haré algunos de ellos.

Usando este sitio, podemos observar el historial de sensores y valores actuales, podemos controlar lámparas, válvulas, etc.
Siempre puede agregar nuevos dispositivos al panel utilizando habilidades simples de codificación HTML y Javascript.

Utilicé mapas de enlaces con imágenes creadas en un programa simple SweetHome 3D para organizar la navegación de inicio.

Enciende tu imaginación


Mucha más gente sabe cómo codificar para la web (PHP, Javascript, HTML) que para los controladores (C ++, Lua). Usando esta estructura, podemos recibir, solicitar, enviar datos y comandos con simples scripts php o js. Podemos construir un sistema de aprendizaje que pueda adaptarse a nuestros hábitos, informarnos sobre incidentes.

Source: https://habr.com/ru/post/es396755/


All Articles