Hogar inteligente en la nube. Parte 1: Controlador y sensores

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Hoy en día, gracias al rápido desarrollo de la microelectrónica, los canales de comunicación, las tecnologías de Internet y la Inteligencia Artificial, el tema de los hogares inteligentes está adquiriendo cada vez más relevancia. El hogar humano ha sufrido importantes cambios desde la Edad de Piedra, y en la era de la Revolución Industrial 4.0 y el Internet de las Cosas se ha vuelto cómodo, funcional y seguro. Están llegando al mercado soluciones que convierten un apartamento o una casa de campo en complejos sistemas de información controlados desde cualquier parte del mundo mediante un teléfono inteligente. Además, para la interacción hombre-máquina, ya no se requieren conocimientos de lenguajes de programación: gracias a los algoritmos de síntesis y reconocimiento de voz, una persona habla con una casa inteligente en su idioma nativo.

Algunos sistemas domésticos inteligentes actualmente en el mercado son un desarrollo lógico de los sistemas de videovigilancia en la nube, cuyos desarrolladores se han dado cuenta de la necesidad de una solución integral no solo para el monitoreo, sino también para la gestión de objetos remotos.

Se invita su atención a una serie de tres artículos, que hablarán sobre todos los componentes principales del sistema doméstico inteligente en la nube, desarrollado personalmente por el autor y puesto en funcionamiento. El primer artículo está dedicado al equipo terminal cliente instalado dentro de una casa inteligente, el segundo está dedicado a la arquitectura del sistema de procesamiento de datos y almacenamiento en la nube y, finalmente, el tercer artículo está dedicado a la aplicación cliente para gestionar el sistema. en dispositivos móviles y estacionarios.

Equipos para el hogar inteligente

Primero, hablemos de cómo hacer una casa inteligente a partir de un apartamento, una casa de verano o una cabaña común. Para hacer esto, por regla general, se requiere colocar el siguiente equipo en la vivienda:

  1. sensores que miden diversos parámetros del entorno externo;
  2. actuadores que actúan sobre objetos externos;
  3. un controlador que realiza cálculos de acuerdo con las mediciones de los sensores y la lógica subyacente, y emite comandos a los actuadores.

La siguiente figura muestra un esquema de una casa inteligente, que contiene sensores de fuga de agua (1) en el baño, sensores de temperatura (2) e iluminación (3) en el dormitorio, un enchufe inteligente (4) en la cocina y un sistema de videovigilancia. cámara (5) en el pasillo.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Actualmente, los sensores inalámbricos que funcionan con los protocolos RF433, Z-Wave, ZigBee, Bluetooth y WiFi se utilizan ampliamente. Sus principales ventajas son la facilidad de instalación y uso, así como el bajo coste y la fiabilidad. Los fabricantes se esfuerzan por llevar sus dispositivos al mercado masivo y ponerlos a disposición del usuario medio.

Los sensores y actuadores, por regla general, se conectan a través de una interfaz inalámbrica al controlador doméstico inteligente (6), una microcomputadora especializada que combina todos estos dispositivos en una sola red y los controla.

Sin embargo, algunas soluciones pueden combinar un sensor, un actuador y un controlador al mismo tiempo. Por ejemplo, se puede programar un enchufe inteligente para que se encienda o apague según un horario, y una cámara de videovigilancia en la nube puede grabar video con la señal de un detector de movimiento. En los casos más simples, puede prescindir de un controlador separado, pero para crear un sistema flexible con muchos escenarios, es necesario.

Para conectar el controlador doméstico inteligente a la red global, se puede utilizar un enrutador de Internet normal (7), que desde hace mucho tiempo se ha convertido en un electrodoméstico familiar en cualquier hogar. Hay otro argumento a favor del controlador de hogar inteligente: si se pierde la conexión a Internet, el hogar inteligente continuará funcionando normalmente gracias al bloque lógico almacenado dentro del controlador, y no en el servicio en la nube.

controlador de hogar inteligente

El controlador para el sistema de hogar inteligente en la nube que se analiza en este artículo está desarrollado sobre la base de una microcomputadora de placa única. Raspberry Pi 3 modelo B+, que se lanzó en marzo de 2018 y tiene suficientes recursos y rendimiento para tareas domésticas inteligentes. Incluye un procesador Cortex-A53 de cuatro núcleos con arquitectura ARMv64-A de 8 bits, con frecuencia de 1.4 GHz, así como 1 GB de RAM, Wi-Fi 802.11ac, Bluetooth 4.2 y un adaptador Gigabit Ethernet que funciona a través de USB 2.0. autobús.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

El montaje del controlador es muy sencillo: la microcomputadora (1) se instala en una caja de plástico (2), luego se instala una tarjeta de memoria microSD de 8 GB con software (3) y un controlador de red USB Z-Wave (4). las ranuras apropiadas. El controlador doméstico inteligente se conecta a la red eléctrica mediante un adaptador de corriente de 5 V, 2.1 A (5) y un cable USB-micro-USB (6). Cada controlador tiene un número de identificación único, que se escribe en el archivo de configuración en el primer inicio y es necesario para interactuar con los servicios de hogar inteligente en la nube.

El software del controlador del hogar inteligente fue desarrollado por el autor de este artículo basándose en el sistema operativo Estiramiento de Linux Raspbian. Consta de los siguientes subsistemas principales:

  • un proceso de servidor para interactuar con equipos domésticos inteligentes y la nube;
  • interfaz gráfica de usuario para configurar la configuración y los parámetros operativos del controlador;
  • base de datos para almacenar la configuración del controlador.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

База данных El controlador de hogar inteligente se implementa sobre la base de un DBMS integrado. SQLite y es un archivo en la tarjeta SD con el software del sistema. Sirve como almacenamiento de configuración del controlador: información sobre el equipo conectado y su estado actual, un bloque de reglas de producción lógicas, así como información que requiere indexación (por ejemplo, nombres de archivos de video locales). Cuando se reinicia el controlador, esta información se guarda, lo que permite restaurar la funcionalidad del controlador en caso de cortes de energía.

Interfaz gráfica El controlador doméstico inteligente está desarrollado en PHP 7 usando un microframework. Delgado. El servidor web es responsable de ejecutar la aplicación. lighttpd, que se utiliza a menudo en dispositivos integrados debido a su buen rendimiento y bajos requisitos de recursos.

Hogar inteligente en la nube. Parte 1: Controlador y sensores
(haga clic en la imagen para abrirla en mayor resolución)

La función principal de la GUI es conectar equipos domésticos inteligentes (cámaras y sensores IP) al controlador. La aplicación web lee la configuración y el estado actual del controlador y los dispositivos conectados a él desde la base de datos SQLite. Para cambiar la configuración del controlador envía comandos de control en formato JSON a través de la API RESTful del proceso del servidor.

Proceso del servidor

Proceso del servidor - un componente clave que realiza todo el trabajo principal de automatización de los procesos de información que forman la base de una casa inteligente: recibir y procesar datos sensoriales, emitiendo acciones de control según la lógica subyacente. El propósito del proceso del servidor es interactuar con equipos domésticos inteligentes, ejecutar reglas lógicas de producción, recibir y procesar comandos desde la interfaz gráfica y la nube. El proceso del servidor en el controlador doméstico inteligente considerado se implementa como una aplicación multiproceso desarrollada en C++ y lanzada como un servicio independiente. sistemad sistema operativo linux raspbian.

Los principales bloques del proceso del servidor son:

  1. Administrador de mensajes;
  2. servidor de cámara IP;
  3. servidor de dispositivos Z-Wave;
  4. Servidor de reglas lógicas de producción;
  5. Base de datos de configuración del controlador y bloque de reglas lógicas;
  6. Servidor API RESTful para interactuar con la interfaz gráfica;
  7. Cliente MQTT para interactuar con la nube.

Los bloques de procesos del servidor se implementan como flujos separados, cuya información se transfiere en forma de mensajes en formato JSON (o estructuras de datos que representan este formato en la memoria del proceso).

Hogar inteligente en la nube. Parte 1: Controlador y sensores

El componente principal del proceso del servidor es administrador de mensajes, que enruta mensajes JSON a todos los bloques del proceso del servidor. Los tipos de campos de información en un mensaje JSON y los valores que pueden tomar se enumeran en la tabla:

tipo de dispositivo
protocolo
Tipo de mensaje
dispositivoEstado
comando

cámara
onvif
datos del sensor
on
transmisión (activada/desactivada)

sensor
onda z
comando
off
grabación (encendido/apagado)

Efector
MQTT
businessLogicRule
transmisión (activada/desactivada)
dispositivo (Agregar/Quitar)

lógica de negocios
configuraciónDatos
grabación (encendido/apagado)

Bluetooth
dispositivoEstado
error

Wifi

rf

Por ejemplo, un mensaje de un detector de movimiento de cámara se ve así:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566293475475",
	"clientType": "gateway",
	"deviceId": "1616453d-30cd-44b7-9bf0-************",
	"deviceType": "camera",
	"protocol": "onvif",
	"messageType": "sensorData",
	"sensorType": "camera",
	"label": "motionDetector",
	"sensorData": "on"
}

Lógica de producción

Para recibir o enviar un mensaje desde el despachador, el bloque de proceso del servidor se suscribe a mensajes de un tipo particular. Una suscripción es una regla lógica de producción del tipo "Si... entonces...", representado en formato JSON, y un enlace al controlador de mensajes dentro del bloque de proceso del servidor. Por ejemplo, para que el servidor de la cámara IP reciba comandos de la GUI y la nube, debe agregar la siguiente regla:

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

Si las condiciones especificadas en antecedente (lado izquierdo) las reglas son verdaderas, entonces consecuente (lado derecho) y el controlador obtiene acceso al cuerpo del mensaje JSON. El antecedente admite operadores lógicos que comparan pares clave-valor JSON:

  1. es igual a "igual";
  2. no igual a "not_equal";
  3. menos que "menos";
  4. más "mayor";
  5. menor o igual a "menos_o_igual";
  6. mayor o igual a "mayor_o_igual".

Los resultados de la comparación se pueden interconectar mediante operadores de álgebra booleana:

  1. Y y";
  2. O o";
  3. NO "no".

Por lo tanto, al escribir operadores y operandos en notación polaca, se pueden formar condiciones bastante complejas con una gran cantidad de parámetros.

Exactamente el mismo mecanismo, basado en mensajes JSON y reglas de producción en formato JSON, se utiliza en el bloque del servidor de lógica de producción para representar el conocimiento y realizar inferencias utilizando datos de sensores de hogares inteligentes.

El usuario, utilizando una aplicación móvil, crea escenarios según los cuales debería funcionar una casa inteligente. Por ejemplo: "Si se activa el sensor de apertura de la puerta de entrada, encienda la luz del pasillo". La aplicación lee los identificadores de sensores (sensor de apertura) y actuadores (enchufe inteligente o lámpara inteligente) de la base de datos y genera una regla lógica en formato JSON, que se envía al controlador del hogar inteligente. Este mecanismo lo trataremos con más detalle en el tercer artículo de nuestro ciclo, donde hablaremos de la aplicación cliente para la gestión de una casa inteligente.

El mecanismo de lógica de producción discutido anteriormente se implementa utilizando la biblioteca. JSON rápido — Analizador SAX de formato JSON en lenguaje C++. La lectura secuencial y el análisis de una serie de reglas de producción facilitan la implementación de una función de coincidencia de datos dentro de los antecedentes:

void CRuleEngine::Process(PProperties pFact)
{
    m_pActions->clear();

    rapidjson::Reader   reader;
    for(TStringMap::value_type& rRule : m_Rules)
    {
        std::string sRuleId   = rRule.first;
        std::string sRuleBody = rRule.second;

        CRuleHandler            ruleHandler(pFact);
        rapidjson::StringStream ruleStream(sRuleBody.c_str());
        rapidjson::ParseResult  parseResult = reader.Parse(ruleStream, ruleHandler);
        if(!parseResult)
        {
            m_Logger.LogMessage(
                        NLogger2::ePriorityLevelError,
                        std::string("JSON parse error"),
                        "CRuleEngine::Process()",
                        std::string("RuleId: ") + sRuleId);
        }

        PProperties pAction = ruleHandler.GetAction();
        if(pAction)
        {
            pAction->Set("ruleId", sRuleId);
            m_pActions->push_back(pAction);
        }
    }
}

es hecho - una estructura que contiene pares clave-valor de un mensaje JSON, m_Reglas — conjunto de cadenas de reglas de producción. La coincidencia del mensaje entrante y la regla de producción se realiza en la función lector.Parse(ruleStream, ruleHandler)Donde manejador de reglas es un objeto que contiene la lógica de operadores booleanos y operadores de comparación. sReglaId - un identificador de reglas único, gracias al cual es posible almacenar y editar reglas dentro de la base de datos del controlador del hogar inteligente. m_pAcciones - una matriz con los resultados de la inferencia: mensajes JSON que contienen consecuencias de la base de reglas y se envían al administrador de mensajes para que los hilos de los suscriptores puedan procesarlos.

El rendimiento de RapidJSON es comparable a la función. strlen ()y los requisitos mínimos de recursos del sistema permiten que esta biblioteca se utilice en dispositivos integrados. El uso de mensajes y reglas lógicas en formato JSON le permite implementar un sistema flexible de intercambio de información entre todos los componentes del controlador del hogar inteligente.

Sensores y actuadores Z-Wave

La principal ventaja de una casa inteligente es que puede medir de forma independiente varios parámetros del entorno externo y realizar funciones útiles según la situación. Para ello se conectan sensores y actuadores al controlador de hogar inteligente. En la versión actual, estos son dispositivos inalámbricos que operan bajo el protocolo. Z-Wave en una frecuencia dedicada 869 MHz Para Rusia. Para su trabajo, se combinan en una red de malla, en la que existen repetidores de señal para aumentar el área de cobertura. Los dispositivos también tienen un modo especial de ahorro de energía: pasan la mayor parte del tiempo en modo de suspensión y envían información solo cuando cambia su estado, lo que puede prolongar significativamente la vida útil de la batería incorporada.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Actualmente, existe una gran cantidad de dispositivos Z-Wave diferentes en el mercado. Como ejemplo, considere algunos:

  1. El enchufe inteligente Zipato PAN16 puede medir los siguientes parámetros: consumo eléctrico (kWh), potencia (W), voltaje (V) y corriente (A) en la red. También lleva incorporado un interruptor, con el que podrás controlar el aparato eléctrico conectado;
  2. El sensor de fugas Neo Coolcam detecta la presencia de un líquido derramado cerrando los contactos de la sonda remota;
  3. El detector de humo Zipato PH-PSG01 se activa cuando partículas de humo ingresan a la cámara del analizador de gases;
  4. El sensor de movimiento Neo Coolcam analiza la radiación infrarroja del cuerpo humano. Además, hay un sensor de luz (Lx);
  5. El multisensor Philio PST02-A mide la temperatura (°C), la iluminación (%), la apertura de la puerta y la presencia humana en la habitación;
  6. Controlador de red Z-Wave USB Stick ZME E UZB1, al que se conectan los sensores.

Es muy importante que los dispositivos y el controlador funcionen a la misma frecuencia, de lo contrario, de forma sencilla, no se verán en el momento de la conexión. Se pueden conectar hasta 232 dispositivos a un controlador de red Z-Wave, lo cual es suficiente para un apartamento o una casa de campo. Para ampliar la cobertura de la red en interiores, se puede utilizar un enchufe inteligente como repetidor de señal.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

En el proceso del servidor del controlador del hogar inteligente discutido en el párrafo anterior, el servidor Z-Wave es responsable de interactuar con los dispositivos Z-Wave. Para obtener información de los sensores, utiliza la biblioteca. AbrirZWave en C++, que proporciona una interfaz para interactuar con un controlador USB de red Z-Wave y funciona con una variedad de sensores y actuadores. El valor del parámetro ambiental medido por el sensor lo escribe el servidor Z-Wave como un mensaje JSON:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566479791290",
	"clientType": "gateway",
	"deviceId": "20873eb0-dd5e-4213-a175-************",
	"deviceType": "sensor",
	"protocol": "zwave",
	"messageType": "sensorData",
	"homeId": "0xefa0cfa7",
	"nodeId": "20",
	"sensorType": "METER",
	"label": "Voltage",
	"sensorData": "229.3",
	"units": "V"
}

Luego se envía al administrador de mensajes del proceso del servidor para que los hilos de los suscriptores puedan recibirlo. El suscriptor principal es el servidor lógico de producción, que coincide con los valores del campo de mensaje en los antecedentes de las reglas lógicas. Los resultados de la inferencia que contienen comandos de control se envían de regreso al administrador de mensajes y desde allí al servidor Z-Wave, que los decodifica y los envía al controlador USB de la red Z-Wave. Luego entran en el dispositivo ejecutivo, que cambia el estado de los objetos en el entorno exterior, y la casa inteligente realiza así un trabajo útil.

Hogar inteligente en la nube. Parte 1: Controlador y sensores
(haga clic en la imagen para abrirla en mayor resolución)

La conexión de dispositivos Z-Wave se realiza en la interfaz gráfica del controlador doméstico inteligente. Para hacer esto, vaya a la página con la lista de dispositivos y haga clic en el botón "Agregar". El comando agregar a través de la interfaz API RESTful ingresa al proceso del servidor y luego el administrador de mensajes lo envía al servidor Z-Wave, lo que coloca el controlador de red USB Z-Wave en un modo especial para agregar dispositivos. A continuación, en el dispositivo Z-Wave, debe realizar una serie de pulsaciones rápidas (3 pulsaciones en 1,5 segundos) del botón de servicio. El controlador USB conecta el dispositivo a la red y envía información sobre él al servidor Z-Wave. Eso, a su vez, crea un nuevo registro en la base de datos SQLite con los parámetros del nuevo dispositivo. La interfaz gráfica después del intervalo de tiempo especificado regresa a la página de lista de dispositivos Z-Wave, lee información de la base de datos y muestra un nuevo dispositivo en la lista. Al mismo tiempo, cada dispositivo recibe su propio identificador único, que se utiliza en las reglas de inferencia de producción y cuando se trabaja en la nube. El funcionamiento de este algoritmo se muestra en el diagrama UML:

Hogar inteligente en la nube. Parte 1: Controlador y sensores
(haga clic en la imagen para abrirla en mayor resolución)

Conexión de cámaras IP

El sistema de hogar inteligente en la nube que se analiza en este artículo es una actualización del sistema de videovigilancia en la nube, también desarrollado por el autor, que lleva varios años en el mercado y tiene muchas instalaciones en Rusia.

Para los sistemas de videovigilancia en la nube, uno de los problemas graves es la elección limitada de equipos con los que se puede realizar la integración. El software responsable de conectarse a la nube está instalado dentro de la videocámara, lo que inmediatamente impone serios requisitos a su hardware: el procesador y la cantidad de memoria libre. Esto explica principalmente el mayor precio de las cámaras de vigilancia en la nube en comparación con las cámaras IP normales. Además, se requiere una larga etapa de negociación con las empresas de cámaras CCTV para obtener acceso al sistema de archivos de la cámara y a todas las herramientas de desarrollo necesarias.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Por otro lado, todas las cámaras IP modernas tienen protocolos estándar para interactuar con otros equipos (en particular, grabadoras de vídeo). Por lo tanto, el uso de un controlador independiente que se conecta mediante un protocolo estándar y transmite transmisiones de vídeo desde cámaras IP a la nube proporciona importantes ventajas competitivas para los sistemas de videovigilancia en la nube. Además, si el cliente ya ha instalado un sistema de videovigilancia basado en cámaras IP simples, entonces es posible ampliarlo y convertirlo en una casa inteligente en la nube completa.

El protocolo más popular para sistemas de videovigilancia IP, ahora soportado por todos los fabricantes de cámaras IP sin excepción, es ONVIF Perfil S, cuyas especificaciones existen en el Lenguaje de descripción de servicios web WSDL. Usando las utilidades del kit de herramientas gSOAP es posible generar el código fuente de los servicios que trabajan con cámaras IP:

$ wsdl2h -o onvif.h 
	https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl 
	https://www.onvif.org/ver10/events/wsdl/event.wsdl 
	https://www.onvif.org/ver10/media/wsdl/media.wsdl 
	https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl

$ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h

Como resultado, obtenemos un conjunto de archivos de encabezado "*.h" y fuente "*.cpp" en lenguaje C ++, que se pueden colocar directamente en una aplicación o biblioteca separada y compilar usando el compilador GCC. Debido a la gran cantidad de funciones, el código es grande y requiere una optimización adicional. La microcomputadora Raspberry Pi 3 modelo B+ tiene suficiente rendimiento para ejecutar este código, pero en caso de que sea necesario portar el código a otra plataforma, es necesario elegir la arquitectura del procesador y los recursos del sistema adecuados.

Las cámaras IP que admiten el estándar ONVIF, cuando funcionan en una red local, están conectadas a un grupo de multidifusión especial con la dirección 239.255.255.250. Hay un protocolo Descubrimiento WS, que le permite automatizar la búsqueda de dispositivos en la red local.

En la interfaz gráfica del controlador de hogar inteligente se implementa la función de buscar cámaras IP en lenguaje PHP, lo cual es muy conveniente al interactuar con servicios web a través de mensajes XML. Al seleccionar elementos del menú Dispositivos > Cámaras IP > Escanear Se lanza el algoritmo de búsqueda de cámaras IP, mostrando el resultado en forma de tabla:

Hogar inteligente en la nube. Parte 1: Controlador y sensores
(haga clic en la imagen para abrirla en mayor resolución)

Al agregar una cámara al controlador, puede especificar la configuración según la cual interactuará con la nube. También en esta etapa, se le asigna automáticamente un identificador de dispositivo único, mediante el cual podrá identificarse fácilmente dentro de la nube en el futuro.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

A continuación, se genera un mensaje en formato JSON que contiene todos los parámetros de la cámara agregada y se envía al proceso del servidor del controlador del hogar inteligente a través del comando RESTful API, donde los parámetros de la cámara se decodifican y almacenan en la base de datos interna SQLite, y se También se utiliza para iniciar los siguientes subprocesos de procesamiento:

  1. establecer una conexión RTSP para recibir transmisiones de video y audio;
  2. transcodificación de audio desde G.711 mu-Law, G.711 A-Law, G.723, etc. al formato AAC;
  3. transcodificar transmisiones de video en formato H.264 y audio en formato AAC a un contenedor FLV y transferirlos a la nube a través del protocolo RTMP;
  4. Establecer una conexión con el punto final del detector de movimiento de la cámara IP utilizando el protocolo ONVIF y sondearlo periódicamente;
  5. generar periódicamente una imagen de vista previa en miniatura (vista previa) y enviarla a la nube utilizando el protocolo MQTT;
  6. Grabación local de secuencias de vídeo y audio como archivos separados en formato MP4 en la tarjeta SD o Flash del controlador de hogar inteligente.

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Para establecer una conexión con cámaras, transcodificar, procesar y grabar transmisiones de video en el proceso del servidor, se utilizan funciones de la biblioteca. FFmpeg 4.1.0.

En el experimento de prueba de rendimiento, se conectaron 3 cámaras al controlador:

  1. HiWatch DS-I114W (resolución - 720p, formato de compresión - H.264, velocidad de bits - 1 Mb / s, sonido G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (resolución - 1080p, formato de compresión - H.264, velocidad de bits - 1 Mb / s, sin sonido);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (resolución - 1080p, formato de compresión - H.264, velocidad de bits - 1.5 Mb/s, audio AAC).

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Las tres transmisiones se enviaron simultáneamente a la nube, el audio se transcodificó desde una sola cámara y se deshabilitó la grabación de archivos locales. La carga de la CPU fue de aproximadamente el 5%, el uso de RAM fue de 32 MB (por proceso), 56 MB (en total con el sistema operativo).

Por lo tanto, se pueden conectar entre 20 y 30 cámaras al controlador de hogar inteligente (dependiendo de la resolución y la tasa de bits), lo cual es suficiente para un sistema de videovigilancia de una cabaña de tres pisos o un pequeño almacén. En tareas donde se requiera un alto rendimiento se puede utilizar un nettop con procesador Intel multinúcleo y Linux Debian Sarge. El controlador se encuentra actualmente en operación de prueba y se especificarán los datos sobre el desempeño de su trabajo.

Interacción con la nube

El hogar inteligente en la nube almacena los datos del usuario (mediciones de video y sensores) en la nube. La arquitectura del almacenamiento en la nube se analizará con más detalle en el próximo artículo de nuestra serie. Ahora hablemos de la interfaz para transmitir mensajes de información desde el controlador del hogar inteligente a la nube.

Los estados de los dispositivos conectados y las mediciones de los sensores se transmiten a través del protocolo. MQTT, que se utiliza a menudo en proyectos de Internet de las cosas debido a su simplicidad y eficiencia energética. MQTT utiliza un modelo cliente-servidor en el que los clientes se suscriben a ciertos temas dentro del corredor y publican sus mensajes. El broker envía mensajes a todos los suscriptores de acuerdo con las reglas determinadas por el nivel QoS (Calidad de Servicio):

  • QoS 0: máximo una vez (sin garantía de entrega);
  • QoS 1: al menos una vez (con confirmación de entrega);
  • QoS 2: exactamente una vez (con confirmación de entrega adicional).

En nuestro caso, el corredor MQTT es eclipse mosquito. El nombre del tema es la identificación única del controlador doméstico inteligente. El cliente MQTT dentro del proceso del servidor se suscribe a este tema y traduce en él los mensajes JSON provenientes del despachador de mensajes. Y viceversa, los mensajes del broker MQTT se reenvían al administrador de mensajes, que luego los multiplexa a sus suscriptores dentro del proceso del servidor:

Hogar inteligente en la nube. Parte 1: Controlador y sensores

Para enviar mensajes sobre el estado del controlador del hogar inteligente, se utiliza el mecanismo de mensajes almacenados. mensajes retenidos Protocolo MQTT. Esto le permite realizar un seguimiento correcto de los momentos de reconexión en caso de cortes de energía.

El cliente MQTT fue desarrollado en base a la implementación de la biblioteca. Eclipse Paho en C++.

Los flujos de medios H.264 + AAC se envían a la nube a través del protocolo RTMP, donde un grupo de servidores de medios es responsable de su procesamiento y almacenamiento. Para una distribución óptima de la carga en el clúster y la selección del servidor de medios menos cargado, el controlador del hogar inteligente realiza una solicitud preliminar al balanceador de carga en la nube y solo entonces envía el flujo de medios.

Conclusión

El artículo consideró una implementación específica de un controlador doméstico inteligente basado en la microcomputadora Raspberry Pi 3 B+, ​​que puede recibir, procesar información y controlar equipos usando el protocolo Z-Wave, interactuar con cámaras IP usando el protocolo ONVIF y también intercambiar datos y comandos con el servicio en la nube a través de los protocolos MQTT y RTMP. Se ha desarrollado un motor lógico de producción basado en una comparación de reglas lógicas y hechos presentados en formato JSON.

Ahora el controlador de hogar inteligente se encuentra en fase de prueba en varias instalaciones en Moscú y la región de Moscú.

En la próxima versión del controlador, está previsto conectar dispositivos de otro tipo (RF, Bluetooth, WiFi, cableado). Para comodidad de los usuarios, el procedimiento para conectar sensores y cámaras IP se transferirá a la aplicación móvil. También hay ideas para optimizar el código de proceso del servidor y migrar el software al sistema operativo. OpenWrt. Esto ahorrará en un controlador separado y transferirá la funcionalidad de una casa inteligente a un enrutador doméstico normal.

Fuente: habr.com

Añadir un comentario