
El artículo anterior provocó una discusión bastante acalorada, y esta circunstancia me convenció de la necesidad de continuar con lo que llamamos "compartir experiencia". Entonces, nos decidimos por el hecho de que después de la aparición de fuentes de energía alternativas en la casa, principalmente el colector solar, quería medir los parámetros que acompañan su trabajo. Por ejemplo, para ver cómo cambia la temperatura del refrigerante solar, se sobrecalienta el agua de la caldera, etc. Está claro que la medición de algo en sí mismo e incluso la transmisión de esta información al lugar de consumo (telemetría) no aumentan la comodidad o la seguridad, por lo que inmediatamente se agregó un elemento en el control remoto de varios actuadores al "TK". En este artículo no daré listados de códigos, detallaré todas las soluciones técnicas hasta el más mínimo detalle. Mi objetivo es mostrar el tren de pensamiento y las soluciones técnicas adoptadas, así como su resultado. Cualquiera que quiera seguir un camino similar todavía tendrá que resolver muchos problemas por su cuenta.
Una ligera digresión lírica.En 2010, junto con un inversor / baterías, apareció en la casa un sistema universal de alarma y controlador GSM de la compañía rusa RADS Electronics. Este maravilloso dispositivo universal se utilizó además de las funciones de alarma con alertas GSM, también para controlar la luz en la sala de estar y, lo más importante, para controlar la caldera eléctrica. Así que aprendí a controlar la temperatura, mantener la temperatura y también calentar la casa con anticipación, antes de llegar, hace mucho tiempo. La conveniencia de tales sistemas es bastante obvia. Sin embargo, las capacidades del controlador son limitadas, por lo que el nuevo "TK" inicialmente sentó las bases para crear un sistema paralelo, incluso con funciones parcialmente repetidas y, por supuesto, con acceso a la información de los sensores y el control a través de Internet.
Entonces surgieron los requisitos iniciales:
- Mida la temperatura en las 8 boquillas de la caldera y 2 boquillas de la caldera.
- Mida la temperatura y la humedad en la sala de calderas donde está montado el equipo.
- Mida la temperatura y la humedad del aire exterior. Para algún día implementar el control de calefacción dependiente del clima.
- Conduzca una caldera eléctrica mientras mantiene el sistema antiguo. La caldera es de tres etapas, con ajuste de la temperatura de calentamiento y retroalimentación sobre la temperatura del refrigerante. Sin embargo, para fines de control remoto, es suficiente activar / desactivar los pasos de calentamiento.
- Gestionar el calentador de caldera.
- Coloque un mínimo de cables. No tanto como para no molestar, sino porque la decoración de la casa ya está hecha.
- Tenga una interfaz conveniente para administrar y trabajar con lecturas de sensores. La interfaz debe ser accesible en dispositivos móviles.
Y una pequeña digresión más.
En la foto: un generador con arranque eléctrico. Para la puesta en marcha en invierno tuve que poner una batería de coche y un cargador. Y usa aceite sintético.
Todo en el mismo 2010, un generador de gasolina se instaló en el garaje. Y pronto se le agregó un controlador de arranque automático, hecho de forma independiente sobre la base del microcontrolador Arduino. El controlador observa no solo la presencia de una red de 220 V, sino también la señal del inversor acerca de la descarga de las baterías, y el inversor proporciona la entrada automática del generador. En conjunto, fue posible implementar un algoritmo de control de generador bastante inteligente. En general, no había miedo de usar microcontroladores, tanto en el sentido de conectar periféricos como en el sentido de la programación. En el pasado, programé mucho en C / C ++.
Los requisitos son, en general, simples, si no triviales. Hay miles de formas diferentes de implementarlos. Y es por eso que la piedra angular es la elección de la arquitectura y la pila tecnológica sobre la cual se construirá el nuevo sistema. El enfoque sistemático es justo lo que es importante aquí, la comprensión de que las soluciones técnicas individuales deben estar vinculadas entre sí, la comprensión de que el sistema ciertamente se expandirá aún más, como ya ha sucedido con el sistema de suministro de energía en el hogar. Y también es importante comprender sus propias capacidades. Por lo tanto, tuve que buscar en Google, tomar "ayuda de la audiencia" y "llamar a un amigo".
En la foto Arduino Nano y nRF24L01 + con antena
Empecé a mirar desde sistemas basados en el estándar Z-Wave ampliamente utilizado, esto influyó mucho en otras decisiones, aunque Z-Wave se descartó al principio. Dado que Z-Wave es una opción obvia para los requisitos cercanos al mío, es importante comprender por qué se descartó. Primero, por supuesto, el costo de un sensor. Y solo necesito medir la temperatura en una caldera en 8 puntos, cada punto resulta más de 3000 rublos. En segundo lugar, el factor de forma de los sensores estándar, que no permite su uso en boquillas de calderas. En tercer lugar, la elección limitada de sistemas de control y acceso remoto, que también son de propiedad exclusiva (debe leer: "limitado") y de pago. Sin embargo, la idea misma de una red autoorganizada con la posibilidad de comunicaciones (asociaciones) punto a punto de un sensor-actuador y una gestión centralizada de servidor-cliente es muy atractiva. Siguiendo el consejo de un amigo, emprendió un proyecto interesante , que inicialmente parecía una extensión de la funcionalidad de los sistemas Z-Wave basados en controladores Vera, pero utilizando el enfoque de bricolaje. El proyecto utilizó los transceptores inalámbricos Arduino, 2.4GHz nRF24L01 + y la biblioteca correspondiente. Todo junto es justo lo que necesito para mis requerimientos. El uso de Arduino abre posibilidades casi ilimitadas de automatización del hogar por dinero, un orden de magnitud (!) Más pequeño que en el caso de Z-Wave. También es importante que Arduino sea una plataforma excepcionalmente estable. El controlador de arranque automático del generador, una vez montado en el Arduino, ha estado funcionando sin problemas durante 7 años. Dada la experiencia de desarrollo, soldadura y programación, paré en este proyecto.
E incluso continuó. En el código, me negué completamente a unirme a Vera. En cambio, eligió uno de los controladores de software recomendados por el autor de la biblioteca mysensors. Después de estudiar los foros y sitios de fabricantes, se convirtió en el proyecto de código abierto openHAB . El factor decisivo, además de la apertura, multiplataforma, lenguaje de reglas potente incorporado, la presencia de clientes móviles, fue la siguiente propiedad declarada: "un proveedor y agnóstico tecnológico". Esto es exactamente lo que necesita un especialista en TI con mentalidad de sistema: la posibilidad de expandir el sistema en el futuro, utilizando componentes de diferentes fabricantes y estándares, a la vez que es más adecuado para fines específicos. Es decir Desde el principio hubo un entendimiento de que no todo se debe hacer en el Arduino y que no todo es posible dentro de los límites de Z-Wave. Al mismo tiempo, decidí adherirme a una lógica de gestión centralizada, que para empezar es bastante natural. Es decir En los dispositivos terminales ensamblados en Arduino, habrá una lógica comercial mínima: encender / apagar la luz de los interruptores mecánicos convencionales antiguos que simplemente se convierten en sensores, leer y convertir información de sensores de parámetros físicos, transmitir datos al servidor, recibir y ejecutar comandos del servidor. No planifico ninguna interacción directa entre los nodos de red del dispositivo. Toda la lógica de gestión empresarial real se basa en las reglas de openHAB. Ahora quedan cosas pequeñas: elija la plataforma de hardware y el sistema operativo para la parte del servidor, para openHAB.
Muchos entusiastas del bricolaje en openHAB eligen la Raspberry Pi. Y esta es una gran solución, económica, compacta y silenciosa. Sin embargo, me pareció incorrecto limitarme a la potencia informática, porque inmediatamente decidí usar el futuro servidor como dispositivo multifuncional, por ejemplo, quería implementar el centro de medios Kodi y, posiblemente, en el futuro, algo más, por ejemplo, un grabador de video de software. Mirando hacia el futuro, diré que al final, Kodi está integrado con una casa inteligente, cuando el video comienza, la luz se apaga, cuando se detiene, se ilumina. Y el DVR también apareció y también está integrado. Al mismo tiempo, no tengo requisitos especiales para componentes multimedia, es suficiente que el servidor tenga HDMI y S / PDIF. En general, en el otoño de 2015, la elección recayó en una nettop sin ventilador de Hystou (ver en AliExpress): Intel Core i7, 8GB, 256GB SSD, 8 puertos USB, incluidos 4 3.0, 2 LAN, WiFi, 2 HDMI, S / PDIF, Lector de tarjetas en general, todo lo que necesitas para la felicidad de una caja de bricolaje. Luego costó alrededor de 24 tr. Nunca me he arrepentido de la elección, aunque debo decir que WiFi no es muy estable para él. Pero, la experiencia que siguió a todo esto dice con confianza: donde sea que pueda tender cables, coloque cables. Un canal de radio, independientemente del estándar y la frecuencia (WiFi, Z-Wave, 433 MHz, 869 MHz, 2.4 GHz, etc.) siempre es peor que un cable. Por lo tanto, el nettop finalmente se conecta al cable LAN de la casa. Y varios sistemas más diferentes se asentaron en él.
En cuanto al sistema operativo para el servidor, recomendaría estabilidad y previsibilidad. Las distribuciones de Linux con una gran comunidad tienen esta propiedad. Estoy más familiarizado con Ubuntu. Aunque, gracias a la plataforma cruzada, todo se puede hacer en Windows.
Entonces, se seleccionan la arquitectura y la pila. Estamos actuando
Tarea 1. Seleccione sensores y actuadores. La temperatura del refrigerante y el agua se medirá en las boquillas de la caldera y la caldera. Para hacer esto, tomamos sensores DS18B20 de 1 cable en una caja sellada de metal, se montan convenientemente directamente en las boquillas, desde el exterior. Y las tuberías mismas con sensores en la parte superior están cubiertas con aislamiento de espuma para tuberías. Cuando hay muchos sensores similares, el bus de 1 cable es muy conveniente. Para medir la temperatura y la humedad del aire en la sala de calderas y en la calle, elegimos DHT22, simplemente porque esta es una opción estándar de bricolaje. Administre la caldera por separado por pasos, utilizando relés mecánicos convencionales de cinco voltios, también familiares para cuadros de bricolaje. Es importante tener en cuenta que estos relés están conectados en paralelo con los interruptores de etapa en la caldera, y no los relés TEN, que están controlados por la automatización de la caldera. Todos los periféricos seleccionados se programan directamente, como un relé, por ejemplo, o tienen las bibliotecas apropiadas para Arduino, como 1-wire / DS18B20 / DHT22. Sin complicaciones
En la foto, una caldera de 300l. Se puede ver que un cable negro con un sensor en el extremo se aproxima a cada tubo de derivación, se combinan en una caja blanca y un cable blanco común de 1 cable va al controlador.
Tarea 2. Intercambie datos y comandos con openHAB. Tuve que jugar un poco, porque con openHAB todavía no estaba "en ti". La arquitectura de missensores implica la presencia de una puerta de enlace (puerta de enlace) para conectarse al controlador / servidor central, es decir. para abrir HAB.
La puerta de enlace en sí es un controlador físicamente separado en el Arduino / nRF24L01 + y se puede conectar al servidor a través de LAN / WiFi o Serial. Como estoy al comienzo de la ruta, selecciono Serie y coloco la puerta de enlace al lado del servidor. La puerta de enlace se utiliza para enrutar los mensajes enviados a la red de mysensors a través de la puerta de enlace y comunicarse directamente con el controlador central, openHAB. Los mensajes de Mysensors son de formato fijo y fáciles de analizar. Agregamos a la serie de enlace openHAB para conectar la puerta de enlace a través de USB y escribimos una regla para analizar mensajes de dispositivos en la red mysensors recibidos a través de USB desde la puerta de enlace. La regla de openHAB que analiza los mensajes se basa en el código encontrado en el foro mysensors. A continuación, escribimos las reglas para actuadores: relé de control de caldera, calentador de caldera, luz, etc.
La foto muestra una puerta de enlace, una pequeña caja marrón con una antena en un altavoz de audio.
Sobre openHABopenHAB: una solución abierta que se expande con la ayuda de la comunidad mediante el desarrollo de enlaces para dispositivos específicos con los que interactuará openHAB. Por ejemplo, para interactuar con dispositivos a través de USB hay una serie vinculante. De manera similar para otros dispositivos o protocolos, por ejemplo Modbus, NTP, HTTP, Squeezebox, Kodi / XBMC, Z-Wave, ZigBee, Nest, etc. Yo mismo participé en el desarrollo como probador de enlace Modbus activo.
Mientras estaba ocupado conectando la puerta de enlace al servidor openHAB, decidí finalizar el código de la puerta de enlace (y la puerta de enlace en sí), tomado de mysensors.org y agregarle un sensor de temperatura y humedad DHT22 y un sensor de presión atmosférica BMP180, y al mismo tiempo encontré el código fuente para predecir el clima a partir de la dinámica atmosférica presión Todas estas mediciones y predicciones se pasan a openHAB.
En la foto, la puerta de entrada está adentro. En el cable blanco es DHT22, la placa con pines libres es Arduino, abajo a la derecha es nRF24L01 + y BMP180.
Tarea 3. Interfaz y acceso remoto. openHAB es un sistema totalmente personalizable, que incluye diseño de interfaz. Y este marcado está unificado, tanto para el acceso ordinario a través de un navegador como a través de una aplicación móvil. El marcado universal, por supuesto, puede no ser ideal, pero se ve bien en un teléfono inteligente, y esto es importante. Queda por decidir cómo acceder al servidor openHAB fuera de la red local. Primero, puede (y lo más importante, opcionalmente) usar la nube myopenhab.org. El servidor openHAB se conecta directamente a la nube mediante un enlace especial. Esta solución es la más simple y proporciona una funcionalidad completa de administración del sistema, excepto la transferencia de video desde cámaras IP. En segundo lugar, para aquellos a quienes no les gustan las nubes, y les pertenezco, existen los medios habituales de acceso remoto, por ejemplo, una combinación de VPN + VNC, etc. No divulgaré detalles por razones obvias, especialmente porque este problema no se relaciona directamente con el tema del artículo. Solo noto que el cliente móvil openHAB tiene una configuración para dos direcciones. Va al primero si ve un servidor openHAB en esta dirección, al segundo, si no lo hace. Esta es una característica muy conveniente de la interfaz. Por ejemplo, puede especificar la nube como la segunda dirección y luego openHAB siempre está disponible sin manipulaciones adicionales con la conexión VPN. O especifique la dirección virtual obtenida usando cualquier solución VPN. O algo mas.
Interfaz de pantalla de inicio | Desplazarse hacia abajo en la pantalla de inicio | El elemento de menú abierto "Luz" |
---|
 |  |  |
El marcado le permite realizar un formato condicional, por ejemplo, resaltar la temperatura en rojo cuando excede el valor especificado en el marcado. Algunos elementos se muestran cuando se presionan, por ejemplo, "Calefacción", "Luz", "Sirena", etc.
Eso es todo Recogemos un soldador, luego un teclado a su vez. Y gradualmente toma forma la primera versión del sistema. Como sabes, el apetito viene con comer. Como resultado, se agregan nuevos sensores e incluso nuevos controladores a la primera versión del sistema, por ejemplo, para automatizar una casa de huéspedes. Como resultado, en la primera etapa, se introdujo un sistema que:
- Mide la temperatura en 16 puntos.
- Mide la humedad en 4 puntos.
- Mide el voltaje de la red de 220V en la entrada de la casa, al estabilizador.
- Mide la luz ambiental. La iluminación se utiliza para encender automáticamente la luz.
- Mide la presión atmosférica y hace una predicción del clima sobre la dinámica de la presión.
- Detecta movimiento en varios puntos.
- Controla todo el mundo en una casa de huéspedes. Los interruptores se convirtieron en sensores.
- Acciona sirenas.
- Controla por separado 3 etapas de una caldera eléctrica, preservando la funcionalidad del sistema anterior. Controla el calentador de la caldera.
- Comprueba la presencia de voltaje en la caldera y los elementos de calentamiento de la caldera, y también lee los hechos de la inclusión de elementos de calentamiento de la caldera. Esto es importante porque, en primer lugar, la caldera tiene retroalimentación sobre la temperatura del refrigerante y puede apagar los elementos de calentamiento en sí, y en segundo lugar, se monta un relé de limitación de carga de dos etapas en el panel, que desconecta la caldera y la caldera en serie si se excede el umbral de consumo en la casa. Estos datos se utilizarán más en algoritmos de hogar inteligente. Pero en esta etapa no sabía exactamente cómo, solo sentía que serían necesarios.
- Lee los hechos de encender y apagar la bomba del circuito solar.

- Crea gráficos de temperatura para la semana, el día y la hora.
- Envía notificaciones push sobre varios eventos. Los eventos pueden ser casi cualquier, por ejemplo, movimiento en el porche, temperatura que excede un umbral predeterminado, pérdida / aparición de electricidad, etc. También se ha realizado una alerta por SMS.
- El sistema antiguo permaneció separado física y lógicamente del nuevo, aunque los mismos sensores se reutilizan parcialmente en el nuevo. El sistema anterior conservaba las funciones de seguridad y un sistema de monitoreo / control de respaldo.
La foto muestra el equipo eléctrico de la casa de huéspedes. La caja con la antena es el controlador, la "lavadora" redonda es la sirena, entre ellos está el sensor DHT22, debajo del escudo hay un sensor de movimiento, a la izquierda hay una unidad de alimentación ininterrumpida de 12V.
Ejemplo de operación del sistemaCada 30 segundos, el controlador sondea los sensores de temperatura. En el caso de un cambio en las lecturas o a solicitud del servidor, envía datos a la puerta de enlace por separado para cada sensor. Gateway recibe datos y los envía a través de USB a openHAB. En openHAB, se activa una regla, se analiza el mensaje y se asigna el valor de temperatura correspondiente al elemento correspondiente (el concepto básico de openHAB). Se genera una regla que está configurada para cambiar este elemento. Si la lógica proporciona alguna reacción, por ejemplo, "si la temperatura ha descendido por debajo de cierto nivel", se realiza una acción, por ejemplo, "encender el calentador de la caldera". Este comando se envía por USB a la puerta de enlace. Gateway envía un comando por radio al controlador, el controlador recibe el comando y enciende el relé correspondiente. Devuelve una confirmación de recepción del comando. Algo así se parece al esquema general de interacción de los componentes del sistema.
El resultado Objetivos iniciales alcanzados y aún más. Las temperaturas se miden y visualizan en gráficos y en la interfaz. De acuerdo con los resultados de las observaciones, quedó claro que la temperatura del agua caliente nunca sube por encima de los 55 grados, y el refrigerante en el circuito solar - 60, no tiene que preocuparse por el sobrecalentamiento. Se puede ver que la temperatura del aire en la sala de calderas a veces supera los 30 grados y es necesario instalar aire acondicionado. Se volvió conveniente controlar la calefacción, solo toque los interruptores virtuales en la pantalla del teléfono inteligente. Siguiente . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . Es decir .
, ., . — 11.05.2018. , 49 . 38, 35 . . . . 
. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .