El sistema de domótica de mi casa (el controlador o cerebro)

Llevo implicado en la domótica más de 20 años, instalando probando, configurando e integrando diferentes tecnologías. A lo largo de estos años he ido montando un sistema de domótica bastante completo y complejo, utilizando varias tecnologías. Hoy os lo voy a presentar a vista de pájaro, para que os hagáis una idea, entrando en profundidad en otros artículos dedicados a cada sub-sistema.

A grandes rasgos, mi sistema domótico, incluye los siguientes elementos principales (seguro que se me olvidan alguno, porque son muchos):

Como software principal de control de la casa utilizo el software HomeSeer en un pequeño PC dedicado de bajo consumo, sin ventiladores. Este software (realmente completo) se encarga de las principales automatizaciones, programaciones horarias, escenas, síntesis de voz, etc. Es también el encargado de las comunicaciones con los dispositivos ZWave instalados en la casa (interruptores, reguladores de luz, sensores de las puertas interiores, sensores de temperatura, humedad e iluminación, etc, etc).

Node-RED es un software de IBM de lo más útil y lo utilizo principalmente para integrar diferentes tecnologías, a modo de middleware. Podríamos decir que es el «concentrado de comunicaciones» de los diferentes sistemas de la casa. Es como un traductor de protocolos y además se encarga del almacenamiento de la información en bases de datos para posteriormente, por ejemplo, crear gráficas con esos datos. Por ejemplo, cuando HomeSeer detecta que ha saltado la alarma, aparte de realizar diferentes acciones sobre dispositivos que tienen que ver con la seguridad y de las notificaciones mediante síntesis de voz (dependiendo del tipo de alarma de la que se trate, la hora a la que ha saltado, las personas que estemos en casa en ese momento, etc) da la orden a Node-RED para que nos envíe un mensaje por Telegram con todos los detalles de lo que ha sucedido.

Node-RED se encarga también de recibir los datos mediante radio frecuencia de algunos de los sensores instalados en la casa, mediante un receptor especial conectado a uno de sus puertos usb, y comunicar estos datos a HomeSeer o enviarlos mediante MQTT. Muchos sensores, como los de consumo eléctrico y gas, temperaturas, sniffers bluetooth, etc. envían sus datos a Node-RED para que los procese y envíe la información donde proceda (HomeSeer, bases de datos, otros dispositivos, etc).

Una ventaja muy importante de Nodered es que necesita muy pocos recursos para funcionar. Lo tengo instalado en un Raspberry PI 3, que comparte con el servidor MQTT, y algunos servicios más, y tiene potencia de sobra.

Mosquitto es el servidor MQTT de la casa y está instalado en una Raspberry PI 3, que comparte con Node-RED. Recibe las mensajes MQTT de todos los dispositivos de la casa y los reenvía a los que se suscriben a ellos.

Hay poco más que decir sobre él. Hace su importante trabajo en silencio y no da problemas ni pide de comer.

Es la base de datos principal, donde se almacenan los datos a largo plazo de todos los sensores y sistemas. Está instalada en una Raspberry PI 2 y funciona estupendamente.

WeeWX es el software de la estación meteorológica (una Davis Vantage Pro 2 conectada a uno de los puertos usb de la Raspberry PI 2 en la que está instalado) y se encarga del almacenamiento de los datos meteorológicos, su proceso y consolidación, y su envío al servidor web (un VPS hospedado en la compañía Strato) donde reside la web meteorológica de la estación. Con la ayuda del paquete Meteotemplate crea las bonitas páginas que podéis ver en la sección Meteo de esta web.

Pinchar imagen para ver grande

Grafana es el programa que se encarga de crear los gráficos y paneles de datos del sistema domótico. Está instalado en un contenedor Docker en uno de los NAS (un Synology).

Es el complemento perfecto para la visualización de los datos almacenados en la base de datos InfluxDB de todos los sensores y sistemas.

OpenTherm gateway (OTGW)

OpenTherm gateway (OTGW) es el dispositivo conectado a la caldera de gas que proporciona calefacción y agua caliente a la vivienda. Permite acceder a los datos de la caldera, programación, estado, estadísticas de uso, y realizar acciones como cambiar la temperatura deseada desde el sistema domótico en base a las necesidades, ocupación de la casa, datos meteorológicos, etc. tratando de ahorrar siempre en la factura del gas proporcionando un nivel de confort adecuado a los habitantes de la casa.

Compartiendo el Pc con HomeSeer, hay un software que se comunica con la caldera y envía sus datos mediante MQTT al resto de los sistemas. También es capaz de recibir órdenes, mediante MQTT, para el control de la caldera.OpenSprinkler es un programador y controlador de ocho zonas de riego, controlado por HomeSeer, que se encarga del control del riego de las plantas exteriores, calculando sus necesidades en base a los datos meteorológicos, tratando siempre de ahorrar agua y mantener un nivel óptimo de salud de las plantas. Está 100% automatizado de forma que es capaz incluso de utilizar el pronóstico del tiempo para decidir cancelar el riego si va a llover en las próximas horas y la planta va a aguantar.

Dentro los elementos que conforman la gestión de energía eléctrica de la vivienda, este sistema, parte del proyecto OpenEnergyMonitor, se encarga de leer los datos de consumo eléctrico, directamente en el cuadro eléctrico de los cuatro circuitos principales de la vivienda (Total, aire acondicionado, fuerza cocina, y enchufes de potencia) y comunicárselos a Nodered, que a su vez los manda a la base de datos para su almacenamiento y al resto de sistema para su utilización inteligente (por ejemplo, si el consumo de energía es muy alto, puede apagar el aire acondicionado u otros elementos de la vivienda de alto consumo para evitar que salte el limitador).

Blue Iris: Corriendo en una máquina virtual VMWare del PC principal, este software de video vigilancia recibe las imágenes de todas las cámaras instaladas en la casa, las procesa y almacena, detectando, por ejemplo, movimiento en las imágenes, que comunica a HomeSeer, para realizar determinadas acciones relacionadas con la seguridad integral, combinando los datos con los proporcionados por la alarma y otros sensores.

La alarma de la vivienda es una Visonic Powermax Pro, sistema inalámbrico, autónomo e independiente, que funciona sin depender del resto del sistema de domótica. En el PC de HomeSeer, y compartiéndolo con él, un pequeño software llamado Visonic Driver, se comunica con ella y proporciona datos de su estado, detecciones, alarmas, etc. al resto del sistema enviándolos mediante MQTT. Además el sistema puede armar la alarma, desarmarla, etc. De esta forma podemos además desde los cuadros de control, móviles y tablets (e incluso desde las TV de la casa) acceder a la información, armar y desarmar la alarma, etc.

Resumen

Esta ha sido una pequeña presentación del «cerebro» de la casa. Por supuesto, además de estos elementos inteligentes, hay un ejército de sensores y actuadores proporcionando información y ejecutando órdenes. En otra entrada hablaré de algunos de ellos.

¿Qué cómo afronto la creación de un nuevo circuito?

Cuando me planteo un nuevo cacharreo, puede ser por varios motivos:

  1. Solo por hacerlo, ver que funciona y aprender por el camino
  2. Para ver qué resultado da y si es bueno pasarlo a «producción» e instalarlo definitivamente en mi casa
  3. Para su instalación en mi casa si o si (siempre y cuando funcione)

Está claro que cuando solamente quiero cacharrear, lo hago de cualquier manera «al aire», sobre una breadboard o una perfboard.

En muchos casos el proceso es el siguiente:

  • Hago las pruebas de la manera más rápida posible con los sensores que quiero poner, de uno en uno, y veo si todo funciona bien
  • Me planteo que sensores voy a combinar en base a lo bien que me venga combinar esos sensores concretos (por idoneidad del emplazamiento, pines disponibles, caja, etc)
  • Pienso en que caja le voy a poner para que tenga un acabado «más o menos» profesional y que no sean un enjambre de cables colgando por la casa

Aunque parezca mentira, de los puntos anteriores, el que más quebraderos de cabeza suele darme es la caja. Además la caja, en muchos montajes, suele ser una parte «activa» del montaje ya que la aprovecho para el cableado del circuito.
Me gusta que las cosas que se quedan «fijas en la casa» tengan una buena terminación, y soy bastante perfeccionista, por lo que nunca estoy satisfecho con el resultado obtenido.
La realidad es que suelo decir «lo dejo de momento así, que está aceptable, y en cuanto tenga un rato lo mejoro» y… se suele quedar así.

Un ejemplo

El mejor ejemplo que puedo poner en este momento, es el proyecto que estoy terminando y del que ya he publicado algunas entradas en el blog sobre sus partes: un nodo para el dormitorio principal, basado en ESPEASY con un emisor de infrarojos para controlar el aire acondicionado y un sensor de CO2.

Por supuesto, antes de hacer nada con hardware o firmware hay que realizar un poquito de investigación y toma de decisiones preliminares. ¿Qué funcionalidades quiero que tenga el cacharro? ¿Cómo lo voy a alimentar? ¿Qué componentes voy a utilizar para conseguir estas funcionalidades? ¿Voy a diseñar una caja que pueda imprimir en 3D, usar una caja estándar, quizá hay una caja ya diseñada para imprimir en 3D que me pueda valer? Con todas estas decisiones tomadas podemos ya ensuciarnos las manos:

Primero monté el circuito con los diodos emisores de infrarrojos y probé y ajusté el firmware, de forma que funcionara correctamente de forma independiente. Posteriormente, y una vez satisfecho con el funcionamiento del emisor de infrarrojos, hice lo mismo con el sensor de CO2.

La siguiente etapa es juntarlo todo y asegurarme de que tanto el hardware como el firmware está funcionando correctamente, haciendo todas las pruebas que sean necesarias y dejándolo todo funcionando «en sucio».

La parte de pruebas es muy importante. Nada peor que tener un cacharro aparentemente terminado y luego darnos cuenta de que algo no funciona correctamente. No hay que ahorrar tiempo en las pruebas.

El siguiente paso importante fue la caja. Para esto, partí de la caja estándar que suelo utilizar para la mayoría de mis montajes con NodeMCU, y que imprimo en mi impresora 3D,  pero la modifiqué adecuadamente en tamaño y le añadí las aberturas necesarias (dos para los dos LED de infrarrojos que iba a utilizar y otras dos para las dos zonas «activas» del sensor MH-Z19 que iba a montar.

El último paso: ajustar y cablear todo dentro de la caja y volver a hacer todas las pruebas necesarias, antes de instalarlo en su ubicación definitiva.