Cómo construir una casa inteligente y no volverse loco

imagen

Los muebles inteligentes, que se encargan del orden en la casa, son imprescindibles para casi cualquier imagen futurista. De hecho, un clima autorregulador, luces automáticas de encendido y apagado y control de voz de los electrodomésticos; todo esto se puede configurar ahora. Pero requerirá un poco de experiencia, conocimientos básicos en el campo de la tecnología y, a veces, la programación, así como todo un mar de fantasía. En mi caso, lo hice para que solo la fantasía sea suficiente, pero lo primero es lo primero ...

Me interesé en la idea de una "casa inteligente" hace unos cinco años. Al principio hice el sistema más simple. Ella controlaba la luz en el pasillo y el baño por el sensor de movimiento, la campana por el sensor de humedad y también la estación meteorológica, en ese momento todos estaban locos por ellos. Cada caja de bricolaje respetuosa tenía que hacer una estación meteorológica.

En primer lugar, equipé el apartamento con un relé controlado para encender automáticamente la luz en el pasillo y el baño. Se veía así: un sensor estaba en el pasillo, el segundo en el baño.

Si alguien iba al baño, entonces el sensor del pasillo detectó su movimiento e inmediatamente encendió la luz en el pasillo y en el baño. Al mismo tiempo, si nadie ingresó al baño, entonces esto ya fue reparado por el sensor ubicado dentro del baño. Después de 15 segundos, la luz se apagó allí. Si una persona entró al baño, la luz del pasillo se apagó después de un minuto. 

También pensé en tales casos si alguien estaba pensando demasiado mientras estaba sentado en un "amigo blanco" en el baño (yo tenía un baño combinado). Para esto, la luz en el baño se dividió en dos grupos. Uno se apagó 3 minutos después de que el sensor en el baño dejara de detectar movimientos, el otro después de 5 minutos. Así que por más de cinco minutos permanecer inmóvil en el baño a la luz no funcionó. Muy disciplinado Sin embargo, siempre puedes mover tu mano y seguir pensando en lo esencial.

También funcionaba un sensor de humedad en el baño, que automáticamente activaba la campana si la humedad excedía el 50%. Tan pronto como la habitación fue ventilada al 45% de humedad, la campana se apagó. 

La administración pasó, o más bien intentó ir, a través de la plataforma Arduino. 


Foto tomada del sitio web del fabricante.

Casi de inmediato, se hizo evidente que esta plataforma no se trataba únicamente de crear una casa inteligente. El principal inconveniente de trabajar con Arduino era que la plataforma funcionaba sin una red, y sin ella no podría haber un ecosistema verdaderamente unificado. Por supuesto, podría rehacer el Arduino y agregar soporte de red, pero ¿por qué? Elegí un camino más simple y cambié esta plataforma a otra. 

Después de haber jugado lo suficiente con Arduino, volví a conectar la casa al tablero ESP-8266. De hecho, este es el mismo Arduino, pero con Wi-Fi + es más compacto en tamaño. Este módulo sigue siendo popular entre los fabricantes de gadgets para hogares inteligentes. 


Foto tomada de internet

Paralelamente, traté de hacer que el hogar inteligente fuera aún más inteligente. Por ejemplo, resuelva el problema de calefacción por suelo radiante las 24 horas o un aire acondicionado que siempre esté encendido. Para esto, compré termostatos WiFi chinos Beok. Permitieron apagar la calefacción del piso de forma remota, pero tuvieron que hacerlo a través de una aplicación especial en el teléfono. 

Resolví el problema del control remoto del aire acondicionado usando el emulador de señal infrarroja Broadlink RM Pro. Nada complicado: graba una señal desde el panel de control del aire acondicionado al emulador (puede haber cualquier técnica controlada por el control remoto), y luego en el teléfono presiona un botón en la aplicación, y el emulador reproduce la señal previamente grabada. En el caso del aire acondicionado, tuve la oportunidad de encenderlo y apagarlo, establecer el modo de operación y establecer otros parámetros de forma remota.  

También se instalaron interruptores Livolo. Con su ayuda, también podía encender y apagar las luces por el aire. 



De los inconvenientes: para el control, tuve que instalar una aplicación separada nuevamente y no hubo comentarios, es decir, no pude ver que la luz estaba encendida si alguien la encendía o apagaba manualmente usando un interruptor convencional. 

Varios relés WiFi controlados como Sonoff o Tuya e incluso el costoso Danalock para bloquear el apartamento, que también requería una aplicación separada, también aparecieron en la casa. Casi todas estas pequeñas cosas (con la excepción de Danalock) que compré en el sitio chino de Aliexpress, donde cuestan un centavo y me permitieron experimentar sin inversiones serias. 

Una de las primeras compras relativamente serias fue el respiradero Tion. Con el control automático de CO2, se las arregló más o menos, pero la temperatura del calentamiento del aire en el invierno constantemente tuvo que ajustarse manualmente. Y de nuevo, para administrar era necesario instalar una aplicación separada. 


La foto fue tomada del sitio web del fabricante.

Todos los sensores y controladores que probé en ese momento, ni siquiera recuerdo. Mi teléfono inteligente estaba obstruido con aplicaciones para administrarlas. Era todo un zoológico, que constantemente tenía que seguir. Traté de combinar la gestión de estas aplicaciones a través de todo tipo de agregadores como HomeBridge / MajorDomo, etc. Pero todos mostraron sus importantes deficiencias:

  • interfaz hostil y, a veces, solo una interfaz terrible
  • falta de soporte para todas las aplicaciones usadas
  • conexión compleja

La búsqueda de una aplicación para la gestión centralizada de tal volumen de sensores, controladores y otros sistemas de control no ha tenido éxito. Luego traté de recordar independientemente uno de los dispositivos "inteligentes": el respirador Tion. Escribí un script para controlar automáticamente la temperatura de calentamiento dependiendo de la temperatura ambiente. El hecho es que el sistema de ventilación no tenía un ajuste automático de la temperatura de calentamiento del aire. Resultó que la habitación estaba muy caliente o muy fría. No había forma de alcanzar un término medio. Aquí, con la ayuda de un guión escrito y un respiro, este problema se resolvió. 

El éxito con un script para el respiro me impulsó a crear mi propia aplicación para administrar una casa inteligente. El objetivo principal era crear un programa con una integración conveniente de dispositivos inteligentes, condiciones de automatización de niveles múltiples y la capacidad de administrar todos los dispositivos de la casa. 

Durante aproximadamente un año, yo mismo participé en el desarrollo de aplicaciones back-end y front-end. 

El lado del servidor está escrito en NodeJS. La elección a favor de NodeJS se hizo debido a la comunidad desarrollada, en la que hay protocolos implementados para casi todos los dispositivos en el mercado. La parte del cliente está escrita en Angular (Ionic) y se ejecuta en Android / iOS. En general, la arquitectura clásica de cliente-servidor.

En una nota:En el proceso de trabajar en la aplicación, obtuve una visión técnica sobre el uso de impurezas al escribir controladores de dispositivos. No sé, tal vez para algunos sea elemental, pero realmente me resultó más fácil respirar.

Reescribí los controladores de dispositivos muchas veces hasta que llegué a algo como esto:

Código de ejemplo de uno de los dispositivos
import {XiaomiSubdeviceV2} from '../xiaomi.subdevice.v2';
import {load_power} from '../capabilities/load_power';
import {power_plug} from '../capabilities/power_plug';
import {PowerPurpose} from '../../base/PowerPurpose';
import {Relay} from '../../base/types/Relay';
import {HomeKitAccessory} from '../../hap/HomeKitAccessory';
import {Lightbulb2Accessory} from '../../hap/Lightbulb2Accessory';
import {Yandex} from '../../yandex/Yandex';
import {YandexLightOrSwitch} from '../../yandex/YandexLightOrSwitch';

export class LumiPlug extends XiaomiSubdeviceV2.with(Relay, power_plug, load_power, PowerPurpose,
  HomeKitAccessory, Lightbulb2Accessory,
  Yandex, YandexLightOrSwitch) {

  onCreate() {
    super.onCreate();
    this.model = 'Mi Smart Plug';
    this.class_name = 'lumi.plug';
    this.driver_name = 'Mi Smart Plug';
    this.driver_type = 3;
    this.parent_class_name = 'lumi.gateway';
  }

  getIcon() {
    return 'socket';
  }
}


La conclusión es que, a pesar de la abundancia de diferentes dispositivos, todos hacen aproximadamente lo mismo y proporcionan aproximadamente la misma información. Por lo tanto, todas las capacidades de los dispositivos se colocaron en impurezas separadas, en las cuales el controlador final consiste en última instancia. Por ejemplo, la aplicación admite muchos dispositivos que tienen la función de encendido / apagado. Está hecho en una impureza separada y se usa de manera idéntica para todos los dispositivos. ¡Elemental, Watson!

En qué resultó esto: cualquier controlador de un nuevo dispositivo se escribe de manera bastante rápida y fácil, porque todo está estandarizado y no hay necesidad de preocuparse por un mayor almacenamiento de la información recibida. Para protocolos completamente nuevos (que aún no tenía), también se escriben impurezas basadas en las existentes. Ya reciben información del dispositivo y la transmiten más abajo en la cadena. Este enfoque nos permitió reducir la cantidad de código en decenas de veces (inicialmente, cada controlador era una copia de un controlador similar).

Así que gradualmente pasé por todos los círculos del infierno para terminar de dar marcha atrás y el frente. Cuando la aplicación adquirió un aspecto bastante tolerable, pensé: ¿por qué no compartir su desarrollo con el público? Se encontraron socios para el proyecto y asistentes para recordar la aplicación. 

En primer lugar, era necesario recordar el diseño de la aplicación. Para hacer esto, tuve que recurrir a diseñadores profesionales. Ingenuamente creía que tomaría de 3 a 4 meses, pero al final el proceso se prolongó. A pesar de que la estructura de la aplicación no ha cambiado mucho desde la fuente original, literalmente todo tuvo que rehacerse.

Paralelamente, yo, no solo, sino con un equipo de socios del proyecto, compré los dispositivos más populares para un hogar inteligente y agregué una aplicación si no era compatible con estos dispositivos. Pronto, sin embargo, quedó claro que no habría suficiente dinero para todos los dispositivos inteligentes, por lo que decidimos hablar con los jugadores existentes en el mercado y acordar muestras de prueba gratuitas de equipos de forma gratuita. No nos negaron, y Wirenboard y MiMiSmart se convirtieron en los primeros proveedores serios.

Entonces, junto con los chicos, creé una nueva aplicación para la automatización del hogar inteligente con la arquitectura clásica de cliente-servidor, que se coloca en cualquier plataforma y con un diseño moderno y conveniente. Conoce a BARY *.

* El nombre no proviene del nombre de Bari Alibasov, sino del personaje del libro de Arthur C. Doyle "El sabueso de Baskerville" del mayordomo de Barrymore: su "mayordomo inteligente" personal. 

Qué sucedió: descripción de la aplicación con bellas imágenes y gatos


La pantalla principal es un panel de control conveniente con la capacidad de ver y administrar parámetros de salas automatizadas. Conveniente: esta es la palabra clave, porque los paneles de control en esas aplicaciones que intenté trabajar conmigo mismo tuvieron que configurarse manualmente. No es el pasatiempo más agradable: la



casa se puede dividir en zonas y zonas, en habitaciones. Cada habitación tiene varios parámetros: temperatura, humedad, consumo de electricidad actual, etc., así como acciones seleccionadas. Si hacemos clic en la sala, entraremos en la lista de dispositivos conectados a ella:



aquí puede encender / apagar el dispositivo y también ver su parámetro principal. Al cambiar a un dispositivo, estará disponible un control más detallado con una lista completa de funciones. 

Todos los dispositivos están conectados con la misma configuración. Para muchos dispositivos hay un asistente de conexión. ¡Sin configuraciones para aquellos que les gusta más! Básicamente, se trata de especificar la dirección IP del dispositivo (para muchos dispositivos hay una búsqueda automática). Si la dirección IP cambia repentinamente, entonces está bien, el servidor la encontrará en la nueva dirección automáticamente.



Hay integración con Apple HomeKit, se utiliza para el control de voz a través de Siri. Todos los dispositivos compatibles con BARY se integran con Apple HomeKit con una sola marca (hola a los fanáticos de HomeBridge). No sin el apoyo de Yandex Alice. Ella era más amigable en términos de comandos de interfaz. Por ejemplo, Siri no quiere cerrar las cortinas con el comando "cerrar las cortinas", no puede establecer un cierto nivel de volumen en la TV, etc. Yandex.Alice no tiene tales kookies. 

Para la conveniencia de administrar tierras inteligentes, se ha implementado la automatización: reglas para la ejecución de cualquier acción cuando se cumple un conjunto de condiciones. Las automatizaciones son lógicas, multinivel, es decir. puede hacer algo como: "Condición 1 y (Condición 2 o Condición 3)". Todo en un hermoso editor de automatización lógica:



Personalmente, ya tenía un centenar de programas de automatización, y cualquiera de ellos se puede encontrar rápidamente, porque todo está agrupado por sala y dispositivo: los



scripts también son compatibles con la aplicación. Un escenario es un complejo de acciones que se realiza bajo alguna condición de automatización. Para mi hogar inteligente, utilizo solo el conjunto estándar:



me fui de casa / regreso a casa a través de Apple TV; se enciende / apaga automáticamente cuando todos se van de casa o alguien regresa a casa. Llegas a casa y el locutor con ojos tristes del Canal 1 ya te encuentra allí. ¿Pues, genial?

Bueno, ¿qué tipo de hogar inteligente sin la capacidad de ver un gato?



Puede conectar cualquier cámara que sea capaz de entregar una transmisión RTSP. 

Por separado, quiero decir sobre el bloque de estadísticas. Resultó bastante informativo:



en la leyenda, la barra roja es la desviación de los valores promedio de los últimos seis meses, la barra gris es la velocidad de flujo dentro de los valores promedio.

En la imagen, mis estadísticas de septiembre. Hacía frío, la calefacción aún no se había administrado, por lo que la calefacción se encendía constantemente en la ventilación.

También puede ver estadísticas de cualquier dispositivo conectado:



por cierto, la disponibilidad de automatización y estadísticas han reducido los costos de electricidad en más de 2 veces.

Todos los eventos que ocurren se almacenan y se pueden ver:



también en la página principal hay una pestaña especial que recopila todos los indicadores principales seleccionados por el usuario:



Por cierto, la medición de agua se implementa a través del sensor de puerta / ventana abierta de Xiaomi. Para hacer esto, en lugar de un interruptor de láminas, la salida del contador de pulsos se suelda a un contacto especial, y se crea un contador virtual en BARY, en el que puede especificar este sensor como la fuente de pulsos.

Arquitectura y seguridad


El intercambio cliente-servidor se cifra utilizando la tecnología AES, y el servidor se encuentra directamente dentro de la sala automatizada. En mi opinión, esto protege el sistema tanto como sea posible de las intervenciones no deseadas de terceros.

Si no hay una dirección IP blanca, puede conectar la nube. Actuará como intermediario, sin la capacidad de descifrar comandos, porque Las claves están en el servidor. 

Dónde conseguir


El lado del servidor se puede ejecutar en casi cualquier plataforma existente, gracias NodeJS. Para las plataformas más comunes, hemos preparado scripts que harán todo el trabajo automáticamente.

Para Raspberry Pi basado en Debian Stretch:

wget -qO- "http://bary.io/install?target=pi" | sudo bash

el parámetro de destino es responsable de la plataforma de destino y puede tener los siguientes valores:
Raspberry Pi (Debian Stretch)
Pi
Raspberry Pi (Debian Buster)
pi_buster
Tinker Board (Debian Stretch)
tuberculosis
Wiren Board (Debian Stretch)
wb

Si alguien quiere instalar en otra plataforma, escríbanos y actualizaremos el script. Si encuentra alguna dificultad, también escriba. Realmente necesitamos comentarios. 

La aplicación está disponible gratuitamente en Google Play y App Store . Quizás para fin de año, la aplicación se pagará.

Conclusión


¿Por qué escribí este artículo? El objetivo principal es recibir comentarios de usted.

Actualmente, el proyecto se está desarrollando rápidamente y todo nuestro equipo está tratando de maximizar la lista de equipos compatibles disponibles en el mercado. Aunque no estoy solo trabajando en el proyecto, las tareas siguen siendo las mismas: crear la aplicación más conveniente que tenga en cuenta los deseos y resuelva los problemas de todos los que participaron en la instalación independiente de soluciones inteligentes para el hogar.

Estamos abiertos al diálogo sobre posibles integraciones y estamos listos para implementar el soporte de equipos de compañías interesadas en asociarse lo antes posible. Obtiene una aplicación preparada y no pierde el tiempo desarrollando software. Y obtenemos una amplia gama de dispositivos compatibles para todos los gustos y colores. Todo está bien. 

Planes inmediatos y arcoiris Lista de deseos


Actualmente, mi equipo y yo participamos activamente en el desarrollo de una unidad de almacenamiento de video. Será posible colocar el video en el almacenamiento de su hogar o en un servicio en la nube. Creo que a principios del próximo año será posible hablar sobre un nuevo lanzamiento. ¿Debería ser posible revisar las mejores perlas de un gato que se entretiene mientras los dueños no están en casa? 

El próximo año planeamos más integraciones con varios servicios: una lista de compras y tareas pendientes, un calendario, etc. Se acercó, miró una pantalla, y todo estaba a la vista. Varios proyectos llave en mano han demostrado que esta tarea es relevante.

También planeamos comenzar la producción de controladores con software preinstalado para soluciones por lotes de un hogar inteligente (actualmente la solución por lotes "software + hardware" está disponible junto con nuestros sociosWiren Board .

Y soporte para Google Home y Amazon Alexa. Bueno, la expansión de la gama de equipos compatibles, por supuesto.

Por cierto, a quién le importa, puede ver la lista de dispositivos compatibles (no completos) en nuestro sitio web , y si algo no se encuentra en la lista, pregunte en el grupo de telegramas .

Estaremos muy agradecidos si comparte lo que le falta en las aplicaciones existentes y qué funciones agregaría en nuestro lugar.

Gracias a todos por leer. ¡Hagamos que nuestros hogares sean más inteligentes juntos!

All Articles