Cloud Smart Home. Parte 1: Controlador e sensores

Cloud Smart Home. Parte 1: Controlador e sensores

Hoxe, grazas ao rápido desenvolvemento da microelectrónica, as canles de comunicación, as tecnoloxías de Internet e a Intelixencia Artificial, o tema dos fogares intelixentes cobra cada vez máis relevancia. A vivenda humana sufriu cambios significativos desde a Idade de Pedra e na era da Revolución Industrial 4.0 e a Internet das Cousas tornouse cómoda, funcional e segura. Están chegando ao mercado solucións que converten un apartamento ou unha casa de campo en complexos sistemas de información controlados desde calquera parte do mundo mediante un teléfono intelixente. Ademais, a interacción humano-máquina xa non require coñecementos de linguaxes de programación: grazas aos algoritmos de recoñecemento de voz e síntese, unha persoa fala nunha casa intelixente na súa lingua nativa.

Algúns sistemas domésticos intelixentes actualmente no mercado son un desenvolvemento lóxico de sistemas de videovixilancia na nube, cuxos desenvolvedores se decataron da necesidade dunha solución completa non só para a monitorización, senón tamén para a xestión de obxectos remotos.

Presentámosche á túa atención unha serie de tres artigos, nos que che falarán de todos os compoñentes principais dun sistema doméstico intelixente na nube, desenvolvido persoalmente polo autor e posto en funcionamento. O primeiro artigo está dedicado ao equipo cliente terminal instalado no interior dunha casa intelixente, o segundo á arquitectura do sistema de almacenamento e procesamento de datos na nube e, finalmente, o terceiro á aplicación cliente para xestionar o sistema en dispositivos móbiles e estacionarios.

Equipos domésticos intelixentes

En primeiro lugar, imos falar de como facer unha casa intelixente nun apartamento, unha casa ou unha casa comúns. Para iso, por regra xeral, é necesario colocar os seguintes equipos na casa:

  1. sensores que miden varios parámetros ambientais;
  2. actuadores que actúan sobre obxectos externos;
  3. un controlador que realiza cálculos de acordo coas medicións do sensor e a lóxica integrada, e envía comandos aos actuadores.

A seguinte figura mostra un esquema dunha casa intelixente, na que hai sensores de fuga de auga (1) no baño, temperatura (2) e iluminación (3) no dormitorio, unha toma intelixente (4) na cociña e un cámara de videovixilancia (5) no corredor.

Cloud Smart Home. Parte 1: Controlador e sensores

Actualmente, os sensores sen fíos que funcionan usando os protocolos RF433, Z-Wave, ZigBee, Bluetooth e WiFi son moi utilizados. As súas principais vantaxes son a facilidade de instalación e uso, así como o baixo custo e fiabilidade, porque Os fabricantes están esforzándose por levar os seus dispositivos ao mercado masivo e facelos accesibles para o usuario medio.

Os sensores e actuadores, por regra xeral, están conectados a través dunha interface sen fíos a un controlador doméstico intelixente (6), un microordenador especializado que combina todos estes dispositivos nunha única rede e os controla.

Non obstante, algunhas solucións poden combinar un sensor, un actuador e un controlador ao mesmo tempo. Por exemplo, pódese programar un enchufe intelixente para acenderse ou desactivarse segundo un horario e unha cámara de videovixilancia na nube pode gravar vídeo baseándose nun sinal de detector de movemento. Nos casos máis sinxelos, pode prescindir dun controlador separado, pero para crear un sistema flexible con moitos escenarios, é necesario.

Para conectar o controlador de casa intelixente á rede global, pódese usar un enrutador de Internet normal (7), que se converteu dende hai tempo nun electrodoméstico común en calquera casa. Aquí hai outro argumento a favor dun controlador de casa intelixente: se se perde a conexión a Internet, a casa intelixente seguirá funcionando normalmente grazas ao bloque lóxico almacenado dentro do controlador, e non no servizo na nube.

Controlador de casa intelixente

O controlador para o sistema de casa intelixente en nube que se comenta neste artigo desenvólvese baseándose nun microordenador dunha placa única Raspberry Pi 3 modelo B+, que foi lanzado en marzo de 2018 e ten recursos e rendemento suficientes para as tarefas do fogar intelixente. Inclúe un procesador Cortex-A53 de catro núcleos baseado na 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 e un adaptador Gigabit Ethernet que funciona a través de USB 2.0. .

Cloud Smart Home. Parte 1: Controlador e sensores

Montar o controlador é moi sinxelo: o microordenador (1) instálase nunha caixa de plástico (2), despois instálase unha tarxeta de memoria de 8 GB en formato microSD con software (3) e un controlador de rede USB Z-Wave (4). os slots correspondentes. O controlador de casa intelixente está conectado á fonte de alimentación mediante un adaptador de alimentación de 5 V, 2.1 A (5) e un cable USB - micro-USB (6). Cada controlador ten un número de identificación único, que está escrito no ficheiro de configuración cando se inicia por primeira vez e é necesario para interactuar cos servizos domésticos intelixentes na nube.

O software de controlador de casa intelixente foi desenvolvido polo autor deste artigo baseado no sistema operativo Linux Raspbian Stretch. Consta dos seguintes subsistemas principais:

  • proceso de servidor para a interacción con equipos domésticos intelixentes e a nube;
  • interface gráfica de usuario para configurar a configuración e os parámetros de funcionamento do controlador;
  • base de datos para almacenar a configuración do controlador.

Cloud Smart Home. Parte 1: Controlador e sensores

Base de datos o controlador de casa intelixente está implementado baseado nun DBMS integrado SQLite e é un ficheiro nunha tarxeta SD con software do sistema. Serve como almacenamento para a configuración do controlador: información sobre o equipo conectado e o seu estado actual, un bloque de regras de produción lóxica, así como información que require indexación (por exemplo, os nomes dos ficheiros dun arquivo de vídeo local). Cando se reinicia o controlador, esta información gárdase, o que permite restaurar o controlador en caso de falla de enerxía.

Interface gráfica controlador de casa intelixente desenvolvido en PHP 7 usando un microframework fino. O servidor web é o responsable de executar a aplicación. lighttpd, adoita utilizarse en dispositivos integrados debido ao seu bo rendemento e aos seus baixos recursos.

Cloud Smart Home. Parte 1: Controlador e sensores
(Preme na imaxe para abrila en maior resolución)

A función principal da interface gráfica é conectar equipos domésticos intelixentes (cámaras e sensores de vixilancia IP) ao controlador. A aplicación web le a configuración e o estado actual do controlador e dos dispositivos conectados a el desde a base de datos SQLite. Para cambiar a configuración do controlador, envía comandos de control en formato JSON a través da interface API RESTful do proceso do servidor.

Proceso do servidor

Proceso do servidor - un compoñente clave que realiza todos os traballos principais de automatización dos procesos de información que constitúen a base dun fogar intelixente: recibir e procesar datos sensoriais, emitir accións de control en función da lóxica integrada. O propósito do proceso do servidor é interactuar con equipos domésticos intelixentes, executar regras lóxicas de produción, recibir e procesar comandos desde a interface gráfica e a nube. O proceso do servidor no controlador de casa intelixente que se está a considerar está implementado como unha aplicación multiproceso desenvolvida en C++ e lanzada como un servizo separado systemd sistema operativo Linux Raspbian.

Os principais bloques do proceso do servidor son:

  1. Xestor de mensaxes;
  2. servidor de cámara IP;
  3. servidor de dispositivos Z-Wave;
  4. Servidor de regras lóxicas de produción;
  5. Base de datos de configuración do controlador e bloque de regras lóxicas;
  6. Servidor de API RESTful para a interacción coa interface gráfica;
  7. Cliente MQTT para interactuar coa nube.

Os bloques de procesos do servidor impléntanse como fíos separados, a información entre as cales se transfire en forma de mensaxes en formato JSON (ou estruturas de datos que representan este formato na memoria do proceso).

Cloud Smart Home. Parte 1: Controlador e sensores

O compoñente principal do proceso do servidor é xestor de mensaxes, que envía mensaxes JSON a todos os bloques de procesos do servidor. Os tipos de campos de información de mensaxes JSON e os valores que poden aceptar están listados na táboa:

deviceType
Protocolo
tipo de mensaxe
dispositivoEstado
mando

cámara
onvif
sensorData
on
streaming (activado/desactivado)

sensor
zwave
mando
fóra
gravación (activado/desactivado)

efector
MQTT
BusinessLogic Rule
streaming (activado/desactivado)
dispositivo (Engadir/Eliminar)

lóxica empresarial
datos de configuración
gravación (activado/desactivado)

Bluetooth
dispositivoEstado
erro

Wifi

rf

Por exemplo, unha mensaxe dun detector de movemento da cámara ten o seguinte aspecto:

{
	"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óxica de produción

Para recibir ou enviar unha mensaxe do despachador, o bloque de procesos do servidor subscríbese a mensaxes dun determinado tipo. A subscrición é unha regra lóxica de produción deste tipo "Se... entón...", presentado en formato JSON e unha ligazón ao controlador de mensaxes dentro do bloque de proceso do servidor. Por exemplo, para permitir que o servidor da cámara IP reciba comandos da GUI e da nube, cómpre engadir a seguinte regra:

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

Se as condicións especificadas no antecedente (lado esquerdo) as regras son certas, entón cómpre consecuente (lado dereito) e o xestor ten acceso ao corpo da mensaxe JSON. O antecedente admite operadores lóxicos que comparan pares clave-valor JSON:

  1. é igual a "igual";
  2. non é igual a "non_igual";
  3. menos "menos";
  4. máis "maior";
  5. menor ou igual a "menos_ou_igual";
  6. maior ou igual a "maior_ou_igual".

Os resultados da comparación pódense relacionar entre si usando operadores de álxebra booleana:

  1. E "e"
  2. OU "ou";
  3. NON "non".

Así, escribindo operadores e operandos en notación polaca, podes crear condicións bastante complexas cun gran número de parámetros.

Exactamente o mesmo mecanismo, baseado en mensaxes JSON e regras de produción en formato JSON, utilízase no bloque do servidor lóxico de produción para representar o coñecemento e realizar inferencias lóxicas utilizando datos sensoriais de sensores domésticos intelixentes.

Mediante unha aplicación móbil, o usuario crea escenarios segundo os cales debería funcionar a casa intelixente. Por exemplo: "Se se activa o sensor para abrir a porta de entrada, acende a luz do corredor". A aplicación le os identificadores dos sensores (sensor de apertura) e dos actuadores (enchufe intelixente ou lámpada intelixente) da base de datos e xera unha regra lóxica en formato JSON, que se envía ao controlador da casa intelixente. Este mecanismo tratarase con máis detalle no terceiro artigo da nosa serie, onde falaremos da aplicación cliente para xestionar un fogar intelixente.

O mecanismo lóxico de produción comentado anteriormente implícase mediante a biblioteca RapidJSON — Analizador SAX para formato JSON en C++. A lectura e análise secuencial dunha serie de regras de produción permítelle implementar facilmente a función de comparación de datos dentro dos 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);
        }
    }
}

Aquí pFacto — unha estrutura que contén pares clave-valor dunha mensaxe JSON, m_Regras — matriz de cadeas de regras de produción. A comparación da mensaxe entrante e a regra de produción realízase na función reader.Parse(ruleStream, ruleHandler)onde manejador de regras é un obxecto que contén a lóxica de operadores booleanos e de comparación. sRuleId — un identificador de regras único, grazas ao cal é posible almacenar e editar regras dentro da base de datos do controlador da casa intelixente. m_pActions — unha matriz cos resultados da inferencia lóxica: mensaxes JSON que conteñen consecuencias da base de regras e enviadas ao xestor de mensaxes para que os fíos de subscritores poidan procesalas.

O rendemento de RapidJSON é comparable á función strlen(), e os requisitos mínimos de recursos do sistema permiten o uso desta biblioteca en dispositivos incorporados. O uso de mensaxes e regras lóxicas en formato JSON permítelle implementar un sistema flexible de intercambio de información entre todos os compoñentes do controlador de casa intelixente.

Sensores e actuadores Z-Wave

A principal vantaxe dunha casa intelixente é que pode medir de forma independente varios parámetros do ambiente externo e realizar funcións útiles dependendo da situación. Para iso, os sensores e actuadores están conectados ao controlador da casa intelixente. Na versión actual, trátase de dispositivos sen fíos que funcionan mediante o protocolo Onda Z nunha frecuencia especialmente asignada 869 MHz Para Rusia. Para funcionar, combínanse nunha rede de malla, que contén repetidores de sinal para aumentar a área de cobertura. Os dispositivos tamén teñen un modo especial de aforro de enerxía: pasan a maior parte do tempo en modo de suspensión e envían información só cando o seu estado cambia, o que pode prolongar significativamente a vida útil da batería integrada.

Cloud Smart Home. Parte 1: Controlador e sensores

Agora podes atopar un número bastante grande de diferentes dispositivos Z-Wave no mercado. Vexamos algúns exemplos:

  1. A toma intelixente Zipato PAN16 pode medir os seguintes parámetros: consumo eléctrico (kWh), potencia (W), tensión (V) e corrente (A) na rede eléctrica. Tamén conta cun interruptor incorporado co que se pode controlar o electrodoméstico conectado;
  2. O sensor de fugas Neo Coolcam detecta a presenza de líquido derramado pechando os contactos da sonda remota;
  3. O sensor de fume Zipato PH-PSG01 acciona cando as partículas de fume entran na cámara do analizador de gases;
  4. O sensor de movemento Neo Coolcam analiza a radiación infravermella do corpo humano. Ademais hai un sensor de luz (Lx);
  5. O multisensor Philio PST02-A mide a temperatura (°C), a luz (%), a apertura da porta, a presenza dunha persoa na habitación;
  6. Controlador de rede Z-Wave USB Stick ZME E UZB1, ao que están conectados os sensores.

É moi importante que os dispositivos e o controlador funcionen á mesma frecuencia, se non, simplemente non se verán no momento da conexión. A un controlador de rede Z-Wave pódense conectar ata 232 dispositivos, o que é suficiente para un apartamento ou unha casa de campo. Para ampliar a área de cobertura da rede en interiores, pódese usar unha toma intelixente como repetidor de sinal.

Cloud Smart Home. Parte 1: Controlador e sensores

No proceso do servidor do controlador de casa intelixente discutido no parágrafo anterior, o servidor Z-Wave é o responsable de interactuar cos dispositivos Z-Wave. Usa unha biblioteca para recibir información dos sensores OpenZWave en C++, que proporciona unha interface para interactuar co controlador USB da rede Z-Wave e funciona con diversos sensores e actuadores. O valor do parámetro ambiental medido polo sensor é rexistrado polo servidor Z-Wave en forma de mensaxe 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"
}

Despois envíase ao xestor de mensaxes do proceso do servidor para que os fíos de subscritores poidan recibilo. O abonado principal é o servidor lóxico de produción, que coincide cos valores do campo da mensaxe nos antecedentes das regras lóxicas. Os resultados de inferencia que conteñen comandos de control envíanse de novo ao xestor de mensaxes e desde alí van ao servidor Z-Wave, que os decodifica e envíaos ao controlador USB da rede Z-Wave. Despois entran no actuador, que cambia o estado dos obxectos ambientais, e a casa intelixente realiza así un traballo útil.

Cloud Smart Home. Parte 1: Controlador e sensores
(Preme na imaxe para abrila en maior resolución)

A conexión de dispositivos Z-Wave realízase na interface gráfica do controlador de casa intelixente. Para iso, vai á páxina cunha lista de dispositivos e fai clic no botón "Engadir". O comando add a través da interface RESTful API entra no proceso do servidor e despois o xestor de mensaxes envía ao servidor Z-Wave, que pon o controlador USB da rede Z-Wave nun modo especial para engadir dispositivos. A continuación, no dispositivo Z-Wave cómpre facer unha serie de presións rápidas (3 presións en 1,5 segundos) do botón de servizo. O controlador USB conecta o dispositivo á rede e envía información sobre el ao servidor Z-Wave. Iso, á súa vez, crea unha nova entrada na base de datos SQLite cos parámetros do novo dispositivo. Despois dun intervalo de tempo especificado, a interface gráfica volve á páxina da lista de dispositivos Z-Wave, le información da base de datos e mostra o novo dispositivo na lista. Cada dispositivo recibe o seu propio identificador único, que se usa nas regras de inferencia de produción e cando se traballa na nube. O funcionamento deste algoritmo móstrase no diagrama UML:

Cloud Smart Home. Parte 1: Controlador e sensores
(Preme na imaxe para abrila en maior resolución)

Conexión de cámaras IP

O sistema de casa intelixente en nube que se comenta neste artigo é unha actualización do sistema de vixilancia por vídeo na nube, tamén desenvolvido polo autor, que leva varios anos no mercado e ten moitas instalacións en Rusia.

Para os sistemas de videovixilancia na nube, un dos problemas graves é a limitada selección de equipos cos que se pode realizar a integración. O software responsable da conexión á nube instálase dentro da cámara de vídeo, o que de inmediato impón serias demandas ao seu hardware: o procesador e a cantidade de memoria libre. Isto explica principalmente o prezo máis elevado das cámaras CCTV na nube en comparación coas cámaras IP habituais. Ademais, é necesaria unha longa etapa de negociacións coas empresas fabricantes de cámaras CCTV para acceder ao sistema de ficheiros da cámara e a todas as ferramentas de desenvolvemento necesarias.

Cloud Smart Home. Parte 1: Controlador e sensores

Por outra banda, todas as cámaras IP modernas teñen protocolos estándar para a interacción con outros equipos (en particular, gravadores de vídeo). Así, o uso dun controlador separado que se conecta a través dun protocolo estándar e transmite fluxos de vídeo desde cámaras IP á nube proporciona vantaxes competitivas significativas para os sistemas de vixilancia de vídeo na nube. Ademais, se o cliente xa instalou un sistema de videovixilancia baseado en cámaras IP simples, é posible amplialo e convertelo nunha casa intelixente en toda a nube.

O protocolo máis popular para sistemas de videovixilancia IP, agora soportado por todos os fabricantes de cámaras IP sen excepción, é Perfil ONVIF S, cuxas especificacións existen nunha linguaxe de descrición de servizos web wsdl. Usando as utilidades do kit de ferramentas gSOAP É posible xerar código fonte para servizos que funcionan 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, obtemos un conxunto de ficheiros de cabeceira "*.h" e fonte "*.cpp" en C++, que se poden colocar directamente nunha aplicación ou nunha biblioteca separada e compilar mediante o compilador GCC. Debido ás moitas funcións, o código é grande e require unha optimización adicional. O microordenador Raspberry Pi 3 modelo B+ ten o rendemento suficiente para executar este código, pero se é necesario levar o código a outra plataforma, é necesario seleccionar a arquitectura do procesador e os recursos do sistema correctos.

As cámaras IP que admiten o estándar ONVIF, cando funcionan nunha rede local, están conectadas a un grupo de multidifusión especial co enderezo 239.255.255.250. Hai un protocolo WS Discovery, que permite automatizar a busca de dispositivos na rede local.

A interface gráfica do controlador de casa intelixente implementa unha función de busca de cámaras IP en PHP, que é moi conveniente ao interactuar cos servizos web a través de mensaxes XML. Ao seleccionar elementos do menú Dispositivos > Cámaras IP > Escaneo Iníciase o algoritmo para buscar cámaras IP, mostrando o resultado en forma de táboa:

Cloud Smart Home. Parte 1: Controlador e sensores
(Preme na imaxe para abrila en maior resolución)

Cando engades unha cámara ao controlador, podes especificar a configuración segundo a cal interactuará coa nube. Tamén nesta fase, asígnaselle automaticamente un identificador de dispositivo único, polo que posteriormente pode identificarse facilmente dentro da nube.

Cloud Smart Home. Parte 1: Controlador e sensores

A continuación, xérase unha mensaxe en formato JSON que contén todos os parámetros da cámara engadida e envíase ao proceso do servidor do controlador da casa intelixente mediante o comando API RESTful, onde os parámetros da cámara se decodifican e gárdanse na base de datos interna de SQLite. tamén se usa para lanzar os seguintes fíos de procesamento:

  1. establecer unha conexión RTSP para recibir fluxos de vídeo e audio;
  2. transcodificación de audio dos formatos G.711 mu-Law, G.711 A-Law, G.723, etc. ao formato AAC;
  3. transcodificar fluxos de vídeo en formato H.264 e audio en formato AAC nun contedor FLV e transmitilo á nube mediante o protocolo RTMP;
  4. establecer unha conexión co punto final do detector de movemento da cámara IP a través do protocolo ONVIF e sondeo periódicamente;
  5. xerando periodicamente unha imaxe de vista previa en miniatura e enviándoa á nube mediante o protocolo MQTT;
  6. gravación local de fluxos de vídeo e audio en forma de ficheiros separados en formato MP4 nunha tarxeta SD ou Flash dun controlador de casa intelixente.

Cloud Smart Home. Parte 1: Controlador e sensores

Para establecer unha conexión con cámaras, transcodificar, procesar e gravar fluxos de vídeo no proceso do servidor, utilízanse funcións da biblioteca. FFmpeg 4.1.0.

No experimento de proba de rendemento, conectáronse 3 cámaras ao controlador:

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

Cloud Smart Home. Parte 1: Controlador e sensores

As tres emisións saíron á nube simultáneamente, a transcodificación de audio realizouse desde só unha cámara e desactivouse a gravación do arquivo local. A carga da CPU foi de aproximadamente un 5 %, o uso de RAM foi de 32 MB (por proceso), 56 MB (total incluído o SO).

Así, ao controlador da casa intelixente pódense conectar aproximadamente entre 20 e 30 cámaras (dependendo da resolución e da taxa de bits), o que é suficiente para un sistema de videovixilancia para unha casa de campo de tres pisos ou un pequeno almacén. Para tarefas que requiren un maior rendemento, pode usar un nettop cun procesador Intel de varios núcleos e Linux Debian Sarge OS. O controlador está en fase de proba e os datos sobre o seu rendemento actualizaranse.

Interacción coa nube

Unha casa intelixente baseada na nube almacena os datos dos usuarios (medidas de vídeo e sensores) na nube. A arquitectura do almacenamento na nube comentarase con máis detalle no seguinte artigo da nosa serie. Agora imos falar da interface para transmitir mensaxes de información desde o controlador da casa intelixente á nube.

Os estados dos dispositivos conectados e as medicións dos sensores transmítense a través do protocolo MQTT, que adoita utilizarse en proxectos de Internet das Cousas pola súa sinxeleza e eficiencia enerxética. MQTT usa un modelo cliente-servidor, onde os clientes se subscriben a temas específicos dentro do corredor e publican as súas mensaxes. O corredor envía mensaxes a todos os subscritores segundo as regras determinadas polo nivel de QoS (calidade de servizo):

  • QoS 0 - máximo unha vez (sen garantía de entrega);
  • QoS 1 - polo menos unha vez (con confirmación de entrega);
  • QoS 2 - exactamente unha vez (con confirmación de entrega adicional).

No noso caso, usamos Mosquito Eclipse. O nome do tema é o identificador único do controlador da casa intelixente. O cliente MQTT dentro do proceso do servidor subscríbese a este tema e traduce a el as mensaxes JSON procedentes do xestor de mensaxes. Pola contra, as mensaxes do corredor MQTT son reenviadas por este ao xestor de mensaxes, que logo as multiplexa aos seus subscritores dentro do proceso do servidor:

Cloud Smart Home. Parte 1: Controlador e sensores

Para transmitir mensaxes sobre o estado do controlador da casa intelixente, utilízase o mecanismo de mensaxes gardadas mensaxes retidas Protocolo MQTT. Isto permítelle controlar correctamente o momento das reconexións durante os fallos de alimentación.

O cliente MQTT desenvolveuse baseándose na implementación da biblioteca Eclipse Paho en linguaxe C++.

Os fluxos multimedia H.264 + AAC envíanse á nube a través do protocolo RTMP, onde un clúster de servidores multimedia é responsable de procesalas e almacenalas. Para distribuír de forma óptima a carga no clúster e seleccionar o servidor multimedia menos cargado, o controlador da casa intelixente fai unha solicitude preliminar ao equilibrador de carga da nube e só despois envía o fluxo multimedia.

Conclusión

O artigo examinou unha implementación específica dun controlador doméstico intelixente baseado no microordenador Raspberry Pi 3 B+, ​​que pode recibir, procesar información e controlar equipos mediante o protocolo Z-Wave, interactuar con cámaras IP mediante o protocolo ONVIF e tamén intercambiar datos e comandos coa nube.servizo a través dos protocolos MQTT e RTMP. Desenvolveuse un motor lóxico de produción baseado nunha comparación de regras lóxicas e feitos presentados en formato JSON.

O controlador de casa intelixente está en fase de proba en varios sitios de Moscova e a rexión de Moscova.

A próxima versión do controlador prevé conectar outro tipo de dispositivos (RF, Bluetooth, WiFi, con cable). Para comodidade dos usuarios, o procedemento de conexión de sensores e cámaras IP trasladarase á aplicación móbil. Tamén hai ideas para optimizar o código do proceso do servidor e levar o software ao sistema operativo openwrt. Isto permitirache aforrar nun controlador separado e transferir a funcionalidade dunha casa intelixente a un enrutador doméstico normal.

Fonte: www.habr.com

Engadir un comentario