Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Aujourd'hui, grâce au développement rapide de la microélectronique, des canaux de communication, des technologies Internet et de l'intelligence artificielle, le thème de la maison intelligente devient de plus en plus d'actualité. L'habitat humain a subi des changements importants depuis l'âge de pierre et, à l'ère de la révolution industrielle 4.0 et de l'Internet des objets, il est devenu confortable, fonctionnel et sûr. Des solutions arrivent sur le marché qui transforment un appartement ou une maison de campagne en systèmes d'information complexes contrôlés depuis n'importe où dans le monde à l'aide d'un smartphone. De plus, l'interaction homme-machine ne nécessite plus la connaissance des langages de programmation : grâce aux algorithmes de reconnaissance et de synthèse vocales, une personne parle à une maison intelligente dans sa langue maternelle.

Certains systèmes de maison intelligente actuellement sur le marché constituent une évolution logique des systèmes de vidéosurveillance cloud, dont les développeurs ont compris la nécessité d'une solution complète non seulement pour la surveillance, mais également pour la gestion des objets distants.

Nous présentons à votre attention une série de trois articles, qui vous présenteront tous les principaux composants d'un système cloud de maison intelligente, développés personnellement par l'auteur et mis en service. Le premier article est consacré à l'équipement client terminal installé à l'intérieur d'une maison intelligente, le deuxième à l'architecture du système de stockage et de traitement des données cloud et enfin le troisième à l'application client de gestion du système sur les appareils mobiles et fixes.

Équipement pour la maison intelligente

Parlons d'abord de la façon de créer une maison intelligente à partir d'un appartement, d'une datcha ou d'un chalet ordinaire. Pour ce faire, en règle générale, il est nécessaire de placer les équipements suivants dans la maison :

  1. des capteurs qui mesurent divers paramètres environnementaux ;
  2. actionneurs agissant sur des objets extérieurs ;
  3. un contrôleur qui effectue des calculs conformément aux mesures des capteurs et à la logique intégrée, et envoie des commandes aux actionneurs.

La figure suivante montre un schéma d'une maison intelligente, sur laquelle se trouvent des capteurs de fuite d'eau (1) dans la salle de bain, de température (2) et d'éclairage (3) dans la chambre, une prise intelligente (4) dans la cuisine et un caméra de vidéosurveillance (5) dans le couloir.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Actuellement, les capteurs sans fil fonctionnant selon les protocoles RF433, Z-Wave, ZigBee, Bluetooth et WiFi sont largement utilisés. Leurs principaux avantages sont la facilité d'installation et d'utilisation, ainsi que le faible coût et la fiabilité, car Les fabricants s'efforcent de commercialiser leurs appareils sur le marché de masse et de les rendre accessibles à l'utilisateur moyen.

En règle générale, les capteurs et les actionneurs sont connectés via une interface sans fil à un contrôleur de maison intelligente (6) - un micro-ordinateur spécialisé qui combine tous ces appareils en un seul réseau et les contrôle.

Cependant, certaines solutions peuvent combiner à la fois un capteur, un actionneur et un contrôleur. Par exemple, une prise intelligente peut être programmée pour s'allumer ou s'éteindre selon un calendrier, et une caméra de vidéosurveillance cloud peut enregistrer une vidéo en fonction d'un signal de détecteur de mouvement. Dans les cas les plus simples, vous pouvez vous passer d'un contrôleur séparé, mais cela est nécessaire pour créer un système flexible avec de nombreux scénarios.

Pour connecter le contrôleur de maison intelligente au réseau mondial, vous pouvez utiliser un routeur Internet classique (7), qui est depuis longtemps devenu un appareil électroménager courant dans n'importe quelle maison. Il existe ici un autre argument en faveur d'un contrôleur de maison intelligente : si la connexion à Internet est perdue, la maison intelligente continuera à fonctionner normalement grâce au bloc logique stocké à l'intérieur du contrôleur, et non dans le service cloud.

Contrôleur de maison intelligente

Le contrôleur du système cloud de maison intelligente évoqué dans cet article est développé sur la base d'un micro-ordinateur monocarte Raspberry Pi 3 modèle B+, qui a été publié en mars 2018 et dispose de ressources et de performances suffisantes pour les tâches de maison intelligente. Il comprend un processeur quad-core Cortex-A53 basé sur une architecture ARMv64-A 8 bits, cadencé à 1.4 GHz, ainsi que 1 Go de RAM, Wi-Fi 802.11ac, Bluetooth 4.2 et un adaptateur Gigabit Ethernet fonctionnant via USB 2.0. .

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

L'assemblage du contrôleur est très simple - le micro-ordinateur (1) est installé dans un boîtier en plastique (2), puis une carte mémoire de 8 Go au format microSD avec logiciel (3) et un contrôleur réseau USB Z-Wave (4) sont installés dans les emplacements correspondants. Le contrôleur de maison intelligente est connecté à l'alimentation via un adaptateur secteur 5 V, 2.1 A (5) et un câble USB - micro-USB (6). Chaque contrôleur possède un numéro d'identification unique, qui est écrit dans le fichier de configuration lors du premier lancement et est nécessaire pour interagir avec les services cloud de maison intelligente.

Le logiciel du contrôleur de maison intelligente a été développé par l'auteur de cet article sur la base du système d'exploitation Linux Raspbian Stretch. Il se compose des principaux sous-systèmes suivants :

  • processus serveur pour l'interaction avec les équipements de la maison intelligente et le cloud ;
  • interface utilisateur graphique pour définir les paramètres de configuration et de fonctionnement du contrôleur ;
  • base de données pour stocker la configuration du contrôleur.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

База данных le contrôleur de maison intelligente est implémenté sur la base d'un SGBD intégré SQLite et est un fichier sur une carte SD avec le logiciel système. Il sert de stockage pour la configuration du contrôleur - des informations sur l'équipement connecté et son état actuel, un bloc de règles de production logiques, ainsi que des informations nécessitant une indexation (par exemple, les noms de fichiers d'une archive vidéo locale). Au redémarrage du contrôleur, ces informations sont enregistrées, permettant de restaurer le contrôleur en cas de panne de courant.

Interface graphique contrôleur de maison intelligente développé en PHP 7 à l'aide d'un microframework Slim. Le serveur Web est responsable de l'exécution de l'application. lumièretpd, souvent utilisé dans les appareils embarqués en raison de ses bonnes performances et de ses faibles besoins en ressources.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs
(cliquez sur l'image pour l'ouvrir en plus haute résolution)

La fonction principale de l'interface graphique est de connecter les équipements de la maison intelligente (caméras de surveillance IP et capteurs) au contrôleur. L'application Web lit la configuration et l'état actuel du contrôleur et des appareils qui y sont connectés à partir de la base de données SQLite. Pour modifier la configuration du contrôleur, il envoie des commandes de contrôle au format JSON via l'interface API RESTful du processus serveur.

Processus serveur

Processus serveur - un composant clé qui effectue tous les principaux travaux d'automatisation des processus d'information qui constituent la base d'une maison intelligente : réception et traitement des données sensorielles, émission d'actions de contrôle en fonction de la logique embarquée. Le but du processus serveur est d'interagir avec les équipements de la maison intelligente, d'exécuter des règles logiques de production, de recevoir et de traiter les commandes de l'interface graphique et du cloud. Le processus serveur dans le contrôleur de maison intelligente considéré est implémenté en tant qu'application multithread développée en C++ et lancée en tant que service distinct. systemd système opérateur Linux Raspbian.

Les principaux blocs du processus serveur sont :

  1. Gestionnaire de messages ;
  2. Serveur de caméra IP ;
  3. Serveur de périphériques Z-Wave ;
  4. Serveur de règles logiques de production ;
  5. Base de données de configuration du contrôleur et bloc de règles logiques ;
  6. Serveur API RESTful pour l'interaction avec l'interface graphique ;
  7. Client MQTT pour interagir avec le cloud.

Les blocs de processus du serveur sont implémentés sous forme de threads distincts, entre lesquels les informations sont transférées sous forme de messages au format JSON (ou de structures de données représentant ce format dans la mémoire de processus).

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Le composant principal du processus serveur est gestionnaire de messages, qui achemine les messages JSON vers tous les blocs de processus du serveur. Les types de champs d'informations de message JSON et les valeurs qu'ils peuvent accepter sont répertoriés dans le tableau :

type d'appareil
protocole
type de message
État de l'appareil
commander

appareil photo
onvif
données du capteur
on
diffusion en continu (Activé/Désactivé)

capteur
ZWave
commander
de rabais
enregistrement (marche/arrêt)

effecteur
MQTT
entrepriseLogiqueRègle
diffusion en continu (Activé/Désactivé)
appareil (Ajouter/Supprimer)

entrepriseLogique
données de configuration
enregistrement (marche/arrêt)

Bluetooth
État de l'appareil
erreur

Wifi

rf

Par exemple, un message provenant d'un détecteur de mouvement d'une caméra ressemble à ceci :

{
	"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"
}

Logique de production

Pour recevoir ou envoyer un message du répartiteur, le bloc de processus serveur s'abonne aux messages d'un certain type. L'abonnement est une règle logique de production du type "Si donc...", présenté au format JSON, et un lien vers le gestionnaire de messages à l'intérieur du bloc de processus du serveur. Par exemple, pour permettre au serveur de caméra IP de recevoir des commandes de l'interface graphique et du cloud, vous devez ajouter la règle suivante :

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

Si les conditions spécifiées dans antécédent (côté gauche) les règles sont vraies, alors c'est satisfait conséquent (côté droit) et le gestionnaire a accès au corps du message JSON. L'antécédent prend en charge les opérateurs logiques qui comparent les paires clé-valeur JSON :

  1. est égal à « égal » ;
  2. différent de "not_equal" ;
  3. moins « moins » ;
  4. plus « plus grand » ;
  5. inférieur ou égal à "less_or_equal" ;
  6. supérieur ou égal à "Greater_or_equal".

Les résultats de la comparaison peuvent être liés les uns aux autres à l'aide d'opérateurs d'algèbre booléenne :

  1. Et et"
  2. Ou ou";
  3. Pas pas".

Ainsi, en écrivant des opérateurs et des opérandes en notation polonaise, vous pouvez créer des conditions assez complexes avec un grand nombre de paramètres.

Exactement le même mécanisme, basé sur des messages JSON et des règles de production au format JSON, est utilisé dans le bloc serveur logique de production pour représenter les connaissances et effectuer une inférence logique à l'aide des données sensorielles des capteurs de la maison intelligente.

À l'aide d'une application mobile, l'utilisateur crée des scénarios selon lesquels la maison intelligente doit fonctionner. Par exemple: "Si le capteur d'ouverture de la porte d'entrée se déclenche, allumez la lumière dans le couloir". L'application lit les identifiants des capteurs (capteur d'ouverture) et des actionneurs (prise intelligente ou lampe intelligente) dans la base de données et génère une règle logique au format JSON, qui est envoyée au contrôleur de la maison intelligente. Ce mécanisme sera abordé plus en détail dans le troisième article de notre série, où nous parlerons de l'application cliente de gestion d'une maison intelligente.

Le mécanisme logique de production discuté ci-dessus est implémenté à l'aide de la bibliothèque RapidJSON — Analyseur SAX pour le format JSON en C++. La lecture et l'analyse séquentielles d'un ensemble de règles de production vous permettent d'implémenter facilement la fonction de comparaison de données dans les antécédents :

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);
        }
    }
}

il est pFait — une structure contenant des paires clé-valeur issues d'un message JSON, m_Règles — un ensemble de chaînes de règles de production. La comparaison du message entrant et de la règle de production s'effectue dans la fonction lecteur.Parse (ruleStream, RuleHandler)gestionnaire de règles est un objet contenant la logique des opérateurs booléens et de comparaison. sRuleId — un identifiant de règle unique, grâce auquel il est possible de stocker et de modifier des règles dans la base de données du contrôleur de maison intelligente. m_pActions — un tableau avec les résultats de l'inférence logique : des messages JSON contenant les conséquences de la base de règles et envoyés ensuite au gestionnaire de messages afin que les threads d'abonnés puissent les traiter.

Les performances de RapidJSON sont comparables à celles de la fonction strlen(), et les exigences minimales en matière de ressources système permettent l'utilisation de cette bibliothèque dans les appareils embarqués. L'utilisation de messages et de règles logiques au format JSON vous permet de mettre en œuvre un système flexible d'échange d'informations entre tous les composants du contrôleur de maison intelligente.

Capteurs et actionneurs Z-Wave

Le principal avantage d'une maison intelligente est qu'elle peut mesurer indépendamment divers paramètres de l'environnement extérieur et exécuter des fonctions utiles en fonction de la situation. Pour ce faire, des capteurs et des actionneurs sont connectés au contrôleur de maison intelligente. Dans la version actuelle, il s'agit d'appareils sans fil fonctionnant grâce au protocole Z-Wave sur une fréquence spécialement attribuée 869 MHz Pour la Russie. Pour fonctionner, ils sont combinés dans un réseau maillé contenant des répéteurs de signal pour augmenter la zone de couverture. Les appareils disposent également d'un mode d'économie d'énergie spécial : ils passent la plupart du temps en mode veille et n'envoient des informations que lorsque leur état change, ce qui peut prolonger considérablement la durée de vie de la batterie intégrée.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Vous pouvez désormais trouver un assez grand nombre d’appareils Z-Wave différents sur le marché. Jetons un coup d'œil à quelques exemples :

  1. La prise intelligente Zipato PAN16 peut mesurer les paramètres suivants : consommation électrique (kWh), puissance (W), tension (V) et courant (A) dans le réseau électrique. Il dispose également d'un interrupteur intégré avec lequel vous pouvez contrôler l'appareil électrique connecté ;
  2. Le capteur de fuite Neo Coolcam détecte la présence de liquide déversé en fermant les contacts de la sonde déportée ;
  3. Le capteur de fumée Zipato PH-PSG01 se déclenche lorsque des particules de fumée pénètrent dans la chambre de l'analyseur de gaz ;
  4. Le capteur de mouvement Neo Coolcam analyse le rayonnement infrarouge du corps humain. De plus, il y a un capteur de lumière (Lx) ;
  5. Le multicapteur Philio PST02-A mesure la température (°C), la lumière (%), l'ouverture de porte, la présence d'une personne dans la pièce ;
  6. Contrôleur réseau Z-Wave USB Stick ZME E UZB1, auquel les capteurs sont connectés.

Il est très important que les appareils et le contrôleur fonctionnent à la même fréquence, sinon ils ne se verront tout simplement pas au moment de la connexion. Jusqu'à 232 appareils peuvent être connectés à un contrôleur réseau Z-Wave, ce qui est largement suffisant pour un appartement ou une maison de campagne. Pour étendre la zone de couverture du réseau à l'intérieur, une prise intelligente peut être utilisée comme répéteur de signal.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Dans le processus de serveur de contrôleur de maison intelligente évoqué dans le paragraphe précédent, le serveur Z-Wave est responsable de l'interaction avec les appareils Z-Wave. Il utilise une bibliothèque pour recevoir des informations des capteurs OuvrirZWave en C++, qui fournit une interface pour interagir avec le contrôleur USB du réseau Z-Wave et fonctionne avec une variété de capteurs et d'actionneurs. La valeur du paramètre environnemental mesuré par le capteur est enregistrée par le serveur Z-Wave sous la forme d'un message 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"
}

Il est ensuite transmis au gestionnaire de messages du processus serveur afin que les threads des abonnés puissent le recevoir. L'abonné principal est le serveur logique de production, qui correspond aux valeurs des champs de message dans les antécédents des règles logiques. Les résultats d'inférence contenant les commandes de contrôle sont renvoyés au gestionnaire de messages et de là vont au serveur Z-Wave, qui les décode et les envoie au contrôleur USB du réseau Z-Wave. Ensuite, ils entrent dans l'actionneur, qui modifie l'état des objets environnementaux, et la maison intelligente effectue ainsi un travail utile.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs
(cliquez sur l'image pour l'ouvrir en plus haute résolution)

La connexion des appareils Z-Wave se fait dans l'interface graphique du contrôleur de maison intelligente. Pour ce faire, rendez-vous sur la page avec une liste d'appareils et cliquez sur le bouton « Ajouter ». La commande add via l'interface API RESTful entre dans le processus du serveur et est ensuite envoyée par le gestionnaire de messages au serveur Z-Wave, ce qui place le contrôleur USB du réseau Z-Wave dans un mode spécial pour l'ajout de périphériques. Ensuite, sur l'appareil Z-Wave, vous devez effectuer une série d'appuis rapides (3 appuis en 1,5 seconde) sur le bouton de service. Le contrôleur USB connecte l'appareil au réseau et envoie des informations le concernant au serveur Z-Wave. Cela crée à son tour une nouvelle entrée dans la base de données SQLite avec les paramètres du nouveau périphérique. Après un intervalle de temps spécifié, l'interface graphique revient à la page de liste des appareils Z-Wave, lit les informations de la base de données et affiche le nouvel appareil dans la liste. Chaque appareil reçoit son propre identifiant unique, qui est utilisé dans les règles d'inférence de production et lors du travail dans le cloud. Le fonctionnement de cet algorithme est illustré dans le diagramme UML :

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs
(cliquez sur l'image pour l'ouvrir en plus haute résolution)

Connexion de caméras IP

Le système cloud de maison intelligente évoqué dans cet article est une mise à niveau du système de vidéosurveillance cloud, également développé par l'auteur, qui est sur le marché depuis plusieurs années et compte de nombreuses installations en Russie.

Pour les systèmes de vidéosurveillance cloud, l'un des problèmes aigus est le choix limité d'équipements avec lesquels l'intégration peut être effectuée. Le logiciel responsable de la connexion au cloud est installé à l'intérieur de la caméra vidéo, ce qui impose immédiatement de sérieuses exigences à son matériel - le processeur et la quantité de mémoire libre. Cela explique principalement le prix plus élevé des caméras de vidéosurveillance cloud par rapport aux caméras IP classiques. De plus, une longue phase de négociations avec les fabricants de caméras de vidéosurveillance est nécessaire pour accéder au système de fichiers des caméras et à tous les outils de développement nécessaires.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

D'autre part, toutes les caméras IP modernes disposent de protocoles standard pour interagir avec d'autres équipements (notamment les enregistreurs vidéo). Ainsi, l'utilisation d'un contrôleur séparé qui se connecte via un protocole standard et diffuse les flux vidéo des caméras IP vers le cloud offre des avantages concurrentiels significatifs pour les systèmes de vidéosurveillance cloud. De plus, si le client a déjà installé un système de vidéosurveillance basé sur de simples caméras IP, il devient alors possible de l'étendre et de le transformer en une maison intelligente cloud à part entière.

Le protocole le plus populaire pour les systèmes de vidéosurveillance IP, désormais pris en charge par tous les fabricants de caméras IP sans exception, est ONVIF Profil S, dont les spécifications existent dans un langage de description de services Web WSDLName. Utiliser les utilitaires de la boîte à outils gSAVON Il est possible de générer du code source pour les services qui fonctionnent avec les caméras 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

En conséquence, nous obtenons un ensemble de fichiers d'en-tête « *.h » et de source « *.cpp » en C++, qui peuvent être placés directement dans une application ou une bibliothèque distincte et compilés à l'aide du compilateur GCC. En raison des nombreuses fonctions, le code est volumineux et nécessite une optimisation supplémentaire. Le micro-ordinateur Raspberry Pi 3 modèle B+ a des performances suffisantes pour exécuter ce code, mais s'il est nécessaire de porter le code sur une autre plate-forme, il est nécessaire de sélectionner l'architecture de processeur et les ressources système appropriées.

Les caméras IP prenant en charge la norme ONVIF, lorsqu'elles fonctionnent sur un réseau local, sont connectées à un groupe de multidiffusion spécial avec l'adresse 239.255.255.250. Il existe un protocole Découverte WS, qui vous permet d'automatiser la recherche d'appareils sur le réseau local.

L'interface graphique du contrôleur de maison intelligente implémente une fonction de recherche de caméras IP en PHP, ce qui est très pratique pour interagir avec des services Web via des messages XML. Lors de la sélection des éléments de menu Appareils > Caméras IP > Numérisation L'algorithme de recherche de caméras IP se lance, affichant le résultat sous forme de tableau :

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs
(cliquez sur l'image pour l'ouvrir en plus haute résolution)

Lorsque vous ajoutez une caméra au contrôleur, vous pouvez spécifier les paramètres selon lesquels elle interagira avec le cloud. À ce stade également, un identifiant d'appareil unique lui est automatiquement attribué, grâce auquel il pourra ensuite être facilement identifié dans le cloud.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Ensuite, un message est généré au format JSON contenant tous les paramètres de la caméra ajoutée et envoyé au processus serveur du contrôleur de maison intelligente via la commande API RESTful, où les paramètres de la caméra sont décodés et enregistrés dans la base de données interne SQLite, et sont également utilisé pour lancer les threads de traitement suivants :

  1. établir une connexion RTSP pour recevoir des flux vidéo et audio ;
  2. transcodage audio à partir des formats G.711 mu-Law, G.711 A-Law, G.723, etc. au format AAC ;
  3. transcoder les flux vidéo au format H.264 et audio au format AAC dans un conteneur FLV et les transmettre vers le cloud via le protocole RTMP ;
  4. établir une connexion avec le point final du détecteur de mouvement de la caméra IP via le protocole ONVIF et l'interroger périodiquement ;
  5. générer périodiquement une image d'aperçu miniature et l'envoyer vers le cloud via le protocole MQTT ;
  6. enregistrement local des flux vidéo et audio sous forme de fichiers séparés au format MP4 sur une carte SD ou Flash du contrôleur de maison intelligente.

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Pour établir une connexion avec les caméras, transcoder, traiter et enregistrer les flux vidéo dans le processus serveur, les fonctions de la bibliothèque sont utilisées FFmpeg 4.1.0.

Lors de l'expérience de test de performances, 3 caméras ont été connectées au contrôleur :

  1. HiWatch DS-I114W (résolution - 720p, format de compression - H.264, débit binaire - 1 Mb/s, son G.711 mu-Law) ;
  2. Microdigital MDC-M6290FTD-1 (résolution - 1080p, format de compression - H.264, débit binaire - 1 Mb/s, pas de son) ;
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (résolution - 1080p, format de compression - H.264, débit binaire - 1.5 Mb/s, audio AAC).

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Les trois flux ont été simultanément diffusés vers le cloud, le transcodage audio a été effectué à partir d'une seule caméra et l'enregistrement des archives locales a été désactivé. La charge du processeur était d'environ 5 %, l'utilisation de la RAM était de 32 Mo (par processus), 56 Mo (total, système d'exploitation compris).

Ainsi, environ 20 à 30 caméras peuvent être connectées au contrôleur de maison intelligente (en fonction de la résolution et du débit), ce qui est suffisant pour un système de vidéosurveillance pour un chalet à trois étages ou un petit entrepôt. Pour les tâches qui nécessitent de plus grandes performances, vous pouvez utiliser un nettop avec un processeur Intel multicœur et un système d'exploitation Linux Debian Sarge. Le contrôleur est actuellement en phase d'essai et les données sur ses performances seront mises à jour.

Interaction avec le cloud

Une maison intelligente basée sur le cloud stocke les données utilisateur (mesures vidéo et capteurs) dans le cloud. L'architecture du stockage cloud sera abordée plus en détail dans le prochain article de notre série. Parlons maintenant de l'interface de transmission des messages d'information du contrôleur de maison intelligente vers le cloud.

Les états des appareils connectés et les mesures des capteurs sont transmis via le protocole MQTT, qui est souvent utilisé dans les projets Internet des objets en raison de sa simplicité et de son efficacité énergétique. MQTT utilise un modèle client-serveur, dans lequel les clients s'abonnent à des sujets spécifiques au sein du courtier et publient leurs messages. Le courtier envoie des messages à tous les abonnés selon des règles déterminées par le niveau de QoS (Qualité de Service) :

  • QoS 0 - maximum une fois (pas de garantie de livraison) ;
  • QoS 1 - au moins une fois (avec confirmation de livraison) ;
  • QoS 2 - exactement une fois (avec confirmation de livraison supplémentaire).

Dans notre cas, nous utilisons Moustique Eclipse. Le nom du sujet est l'identifiant unique du contrôleur de maison intelligente. Le client MQTT à l'intérieur du processus serveur s'abonne à cette rubrique et y traduit les messages JSON provenant du gestionnaire de messages. A l'inverse, les messages du courtier MQTT sont transmis par celui-ci au gestionnaire de messages, qui les multiplexe ensuite à ses abonnés au sein du processus serveur :

Maison intelligente dans le cloud. Partie 1 : Contrôleur et capteurs

Pour transmettre des messages sur l'état du contrôleur de maison intelligente, le mécanisme des messages enregistrés est utilisé messages conservés Protocole MQTT. Cela vous permet de surveiller correctement le timing des reconnexions lors de pannes de courant.

Le client MQTT a été développé sur la base de l'implémentation de la bibliothèque Éclipse Paho en langage C++.

Les flux multimédias H.264 + AAC sont envoyés vers le cloud via le protocole RTMP, où un cluster de serveurs multimédias est responsable de leur traitement et de leur stockage. Pour répartir de manière optimale la charge dans le cluster et sélectionner le serveur multimédia le moins chargé, le contrôleur de maison intelligente envoie une requête préliminaire à l'équilibreur de charge cloud et envoie ensuite le flux multimédia.

Conclusion

L'article examine une implémentation spécifique d'un contrôleur de maison intelligente basé sur le micro-ordinateur Raspberry Pi 3 B+, ​​qui peut recevoir, traiter des informations et contrôler des équipements via le protocole Z-Wave, interagir avec des caméras IP via le protocole ONVIF, et également échanger des données et commandes avec le service cloud via les protocoles MQTT et RTMP. Un moteur logique de production a été développé sur la base d'une comparaison de règles logiques et de faits présentés au format JSON.

Le contrôleur de maison intelligente est actuellement testé sur plusieurs sites à Moscou et dans la région de Moscou.

La prochaine version du contrôleur prévoit de connecter d'autres types d'appareils (RF, Bluetooth, WiFi, filaire). Pour la commodité des utilisateurs, la procédure de connexion des capteurs et des caméras IP sera transférée vers l'application mobile. Il existe également des idées pour optimiser le code du processus du serveur et porter le logiciel sur le système d'exploitation. OpenWrt. Cela vous permettra d'économiser sur un contrôleur séparé et de transférer les fonctionnalités d'une maison intelligente vers un routeur domestique classique.

Source: habr.com

Ajouter un commentaire