
L'article précédent a provoqué une discussion assez animée, et cette circonstance m'a convaincu de la nécessité de poursuivre ce que nous appelons «partager l'expérience». Ainsi, nous nous sommes installés sur le fait qu'après l'apparition de sources d'énergie alternatives dans la maison, principalement le capteur solaire, j'ai voulu mesurer les paramètres qui accompagnent leur travail. Par exemple, pour voir comment la température du liquide de refroidissement solaire change, l'eau de la chaudière surchauffe, etc. Il est clair que la mesure de quelque chose en soi et même la transmission de ces informations au lieu de consommation (télémétrie) n'augmentent pas le confort ou la sécurité, donc immédiatement un élément sur la télécommande de divers actionneurs a été ajouté au «TK». Dans cet article, je ne vais pas donner de listes de codes, détailler toutes les solutions techniques dans les moindres détails. Mon objectif est de montrer le cheminement de la pensée et les solutions techniques adoptées, ainsi que leur résultat. Quiconque veut suivre un chemin similaire devra encore résoudre de nombreux problèmes par lui-même.
Une légère digression lyrique.En 2010, avec un onduleur / batteries, un système universel d'alarme-contrôleur GSM de la société russe RADS Electronics est apparu dans la maison. Ce merveilleux appareil universel a été utilisé en plus des fonctions d'alarme avec alertes GSM, également pour contrôler la lumière dans le salon et, surtout, pour contrôler la chaudière électrique. J'ai donc appris à contrôler la température, à maintenir la température et à réchauffer la maison à l'avance, avant l'arrivée, il y a longtemps. La commodité de tels systèmes est assez évidente. Cependant, les capacités du contrôleur sont limitées, de sorte que le nouveau «TK» a initialement posé les bases de la création d'un système parallèle, même avec des fonctions se répétant partiellement et, bien sûr, avec l'accès aux informations des capteurs et le contrôle via Internet.
Donc, les exigences initiales se profilaient:
- Mesurez la température sur les 8 buses de la chaudière et les 2 buses de la chaudière.
- Mesurer la température et l'humidité dans la chaufferie où l'équipement est monté.
- Mesurez la température et l'humidité de l'air extérieur. Pour un jour mettre en œuvre un contrôle du chauffage en fonction des conditions météorologiques.
- Conduisez une chaudière électrique tout en conservant l'ancien système. La chaudière est à trois étages, avec réglage de la température de chauffage et rétroaction sur la température du liquide de refroidissement. Cependant, à des fins de télécommande, il suffit d'activer / désactiver les étapes de chauffage.
- Gérez le chauffe-eau.
- Posez un minimum de fils. Pas tant pour ne pas déranger, mais parce que la décoration de la maison a déjà été faite.
- Avoir une interface pratique pour gérer et travailler avec les lectures des capteurs. L'interface doit être accessible sur les appareils mobiles.
Et encore une petite digression.
Sur la photo - un générateur avec un démarreur électrique. Pour le démarrage hivernal, j'ai dû mettre une batterie de voiture et un chargeur. Et utilisez de l'huile synthétique.
Au cours de la même année 2010, un générateur d'essence s'est installé dans le garage. Et bientôt un contrôleur de démarrage automatique y a été ajouté, fabriqué indépendamment sur la base du microcontrôleur Arduino. Le contrôleur examine non seulement la présence d'un réseau 220 V, mais également le signal de l'onduleur concernant la décharge des batteries, et l'onduleur lui-même fournit une entrée automatique du générateur. Tous ensemble, il a été possible de mettre en œuvre un algorithme de contrôle de générateur assez intelligent. En général, il n'y avait aucune crainte d'utiliser des microcontrôleurs, à la fois dans le sens de la connexion des périphériques et dans le sens de la programmation. Dans le passé, j'ai beaucoup programmé en C / C ++.
Les exigences sont, en général, simples, sinon triviales. Il existe des milliers de façons différentes de les mettre en œuvre. Et c'est pourquoi la pierre angulaire est le choix de l'architecture et de la pile technologique sur laquelle le nouveau système sera construit. L'approche systématique est exactement ce qui est important ici, la compréhension que les solutions techniques individuelles doivent être liées les unes aux autres, la compréhension que le système va certainement se développer davantage, comme cela s'est déjà produit avec le système d'alimentation électrique à la maison. Et il est également important de comprendre vos propres capacités. Par conséquent, j'ai dû google, prendre "l'aide du public" et "appeler un ami".
Sur la photo Arduino Nano et nRF24L01 + avec antenne
J'ai commencé à regarder à partir de systèmes basés sur la norme Z-Wave largement utilisée, cela a grandement influencé les décisions ultérieures, bien que Z-Wave ait été rejeté au début. Étant donné que Z-Wave est un choix évident pour les besoins proches du mien, il est important de comprendre pourquoi il a été abandonné. Tout d'abord, bien sûr, le coût d'un capteur. Et je n'ai besoin que de mesurer la température sur une chaudière à 8 points, chaque point donne plus de 3000 roubles. Deuxièmement, le facteur de forme des capteurs standard, qui ne permet pas leur utilisation sur les buses de chaudière. Troisièmement, le choix limité de systèmes de contrôle et d'accès à distance, qui sont également tous propriétaires (vous devriez lire: «limités») et payants. Cependant, l'idée même d'un réseau auto-organisé avec la possibilité à la fois de communications peer-to-peer (associations) d'un capteur-actionneur et d'une gestion centralisée serveur-client est très séduisante. Sur les conseils d'un ami, il a poursuivi un projet intéressant , qui ressemblait initialement à une extension de la fonctionnalité des systèmes Z-Wave basés sur les contrôleurs Vera, mais en utilisant l'approche DIY. Le projet a utilisé des émetteurs-récepteurs sans fil Arduino, 2,4 GHz nRF24L01 + et la bibliothèque correspondante. Tous ensemble, c'est exactement ce qui est nécessaire pour mes besoins. L'utilisation d'Arduino ouvre des possibilités presque illimitées de domotique pour de l'argent, un ordre de grandeur (!) Plus petit que dans le cas de Z-Wave. Il est également important que Arduino soit une plate-forme exceptionnellement stable. Le contrôleur de démarrage automatique du générateur, une fois assemblé sur l'Arduino, fonctionne sans problème depuis 7 ans. Compte tenu de l'expérience de développement, de soudure et de programmation, je me suis arrêté sur ce projet.
Et a même continué. Dans le code, j'ai complètement refusé de me lier à Vera. Au lieu de cela, il a choisi l'un des contrôleurs logiciels recommandés par l'auteur de la bibliothèque mysensors. Après avoir étudié les forums et sites de fabricants, il est devenu le projet open source openHAB . Le facteur décisif, en plus de l'ouverture, de la multiplicité des plates-formes, du langage puissant intégré des règles, de la présence de clients mobiles, était la propriété déclarée suivante: «un fournisseur et une technologie agnostiques». C'est exactement ce dont un spécialiste informatique soucieux du système a besoin: la possibilité d'étendre le système à l'avenir, en utilisant des composants de différents fabricants et normes, tout en étant le plus approprié à des fins spécifiques. C'est-à-dire Dès le début, il était entendu que tout n'était pas à faire sur l'Arduino et que tout n'était pas possible dans les limites de Z-Wave. Dans le même temps, j'ai décidé d'adhérer à une logique de gestion centralisée, ce qui est tout à fait naturel pour commencer. C'est-à-dire sur les appareils terminaux assemblés sur Arduino, il y aura une logique métier minimale: allumer / éteindre la lumière des interrupteurs mécaniques classiques antiques qui deviennent simplement des capteurs, lire et convertir des informations à partir de capteurs de paramètres physiques, transmettre des données au serveur, recevoir et exécuter des commandes du serveur. Je ne prévois aucune interaction directe entre les nœuds du réseau d'appareils. Toute logique de gestion d'entreprise réelle est basée sur les règles openHAB. Maintenant, il reste peu de choses - choisissez la plate-forme matérielle et le système d'exploitation pour la partie serveur, pour openHAB.
De nombreux amateurs de bricolage sous openHAB choisissent le Raspberry Pi. Et c'est une excellente solution, économique, compacte et silencieuse. Cependant, il me semblait erroné de me limiter en puissance de calcul, car j'ai tout de suite décidé d'utiliser le futur serveur comme appareil multifonctionnel, par exemple, je voulais y déployer le media center Kodi et, éventuellement, à l'avenir, autre chose, par exemple, un enregistreur vidéo logiciel. Pour l'avenir, je dirai qu'en fin de compte, Kodi est intégré à une maison intelligente, lorsque la vidéo démarre, la lumière s'éteint, lorsqu'elle s'arrête, elle s'allume. Et le DVR est également apparu et est également intégré. En même temps, je n'ai pas d'exigences particulières pour les composants multimédias, il suffit que le serveur dispose de HDMI et S / PDIF. En général, à l'automne 2015, le choix s'est porté sur un nettop sans ventilateur de Hystou (voir sur AliExpress): Intel Core i7, 8 Go, SSD 256 Go, 8 ports USB, dont 4 3.0, 2 LAN, WiFi, 2 HDMI, S / PDIF, Lecteur de cartes en général, tout ce dont vous avez besoin pour le bonheur d'une boîte DIY. Il a ensuite coûté environ 24 tr. Je n'ai jamais regretté le choix, même si je dois dire que le WiFi n'est pas très stable pour lui. Mais l'expérience qui a suivi tout cela dit en toute confiance: partout où vous pouvez poser des fils - posez des fils. Un canal radio, quelle que soit la norme et la fréquence (WiFi, Z-Wave, 433 MHz, 869 MHz, 2,4 GHz, etc.) est toujours pire qu'un fil. Par conséquent, le nettop est enfin connecté au fil LAN domestique. Et plusieurs autres systèmes différents s'y sont installés.
Quant au système d'exploitation du serveur, je recommanderais la stabilité et la prévisibilité. Les distributions Linux avec une grande communauté ont cette propriété. Je connais mieux Ubuntu. Bien que, grâce à la multiplateforme, tout peut être fait sous Windows.
Ainsi, l'architecture et la pile sont sélectionnées. Nous agissons.
Tâche 1. Sélectionnez les capteurs et actionneurs. La température du liquide de refroidissement et de l'eau sera mesurée sur les buses de la chaudière et de la chaudière. Pour ce faire, nous prenons des capteurs DS18B20 1 fil dans une enceinte métallique étanche, ils sont commodément montés directement sur les buses, de l'extérieur. Et les tuyaux eux-mêmes avec des capteurs sur le dessus sont recouverts d'une mousse isolante pour tuyaux. Lorsqu'il existe de nombreux capteurs similaires, le bus à 1 fil est très pratique. Pour mesurer la température et l'humidité de l'air dans la chaufferie et dans la rue, nous choisissons le DHT22, tout simplement parce que c'est un choix de bricolage standard. Gérez la chaudière séparément par étapes - en utilisant des relais mécaniques conventionnels de cinq volts, également familiers aux tableaux de bricolage. Il est important de noter que ces relais sont connectés en parallèle avec les interrupteurs d'étage de la chaudière, et non les relais TEN, qui sont contrôlés par l'automatisation de la chaudière. Tous les périphériques sélectionnés sont programmés directement sans artifice, comme un relais, par exemple, ou ont les bibliothèques appropriées pour Arduino, comme 1 fil / DS18B20 / DHT22. Pas de complications.
Sur la photo, une chaudière de 300l. On peut voir qu'un fil noir avec un capteur à l'extrémité s'approche de chaque tuyau de dérivation, ils sont combinés dans une boîte blanche et un fil blanc à 1 fil commun va au contrôleur.
Tâche 2. Échangez des données et des commandes avec openHAB. J'ai dû bricoler un peu, car avec openHAB je n'étais pas encore «sur toi». L'architecture de mysensors implique la présence d'une passerelle (passerelle) pour se connecter au contrôleur / serveur central, c'est-à-dire pour ouvrirHAB.
La passerelle elle-même est un contrôleur physiquement séparé sur l'Arduino / nRF24L01 + et peut être connectée au serveur via LAN / WiFi ou série. Puisque je suis au début du chemin, je sélectionne Serial et place la passerelle à côté du serveur. La passerelle est utilisée pour acheminer les messages envoyés au réseau mysensors via la passerelle et communiquer directement avec le contrôleur central, openHAB. Les messages de Mysensors sont au format fixe et faciles à analyser. Nous ajoutons à la liaison openHAB Serial pour connecter la passerelle via USB et écrivons une règle pour analyser les messages des appareils sur le réseau mysensors reçus via USB de la passerelle. La règle openHAB qui analyse les messages est basée sur le code trouvé sur le forum mysensors. Ensuite, nous écrivons les règles pour les actionneurs - relais de commande de chaudière, chauffage de chaudière, lumière, etc.
La photo montre une passerelle, une petite boîte brune avec une antenne dans un haut-parleur audio.
À propos d'OpenHABopenHAB - une solution ouverte, en expansion avec l'aide de la communauté en développant des liaisons pour des appareils spécifiques avec lesquels openHAB interagira. Par exemple, pour interagir avec des appareils via USB, il existe une liaison série. De même pour d'autres appareils ou protocoles, par exemple Modbus, NTP, HTTP, Squeezebox, Kodi / XBMC, Z-Wave, ZigBee, Nest, etc. J'ai moi-même participé au développement en tant que testeur de liaison Modbus actif.
Pendant que j'étais occupé à connecter la passerelle au serveur openHAB, j'ai décidé de finaliser le code de la passerelle (et la passerelle elle-même), extrait de mysensors.org et d'y ajouter le capteur de température et d'humidité DHT22 et le capteur de pression atmosphérique BMP180, et en même temps j'ai trouvé le code source pour la prévision météorologique de la dynamique atmosphérique la pression. Toutes ces mesures et prévisions sont transmises à openHAB.
Sur la photo, la passerelle est à l'intérieur. Sur le fil blanc est DHT22, la carte avec des broches libres est Arduino, en bas à droite est nRF24L01 + et BMP180.
Tâche 3. Interface et accès à distance. openHAB est un système entièrement personnalisable, y compris la disposition des interfaces. Et ce balisage est unifié, à la fois pour un accès ordinaire via un navigateur et via une application mobile. Le balisage universel, bien sûr, n'est peut-être pas idéal, mais il a l'air bien sur un smartphone, et c'est important. Il reste à décider comment accéder au serveur openHAB en dehors du réseau local. Tout d'abord, vous pouvez (et surtout, facultativement) utiliser le cloud myopenhab.org. Le serveur openHAB se connecte directement au cloud à l'aide d'une liaison spéciale. Cette solution est la plus simple et offre une fonctionnalité de gestion complète du système, à l'exception du transfert de vidéo à partir de caméras IP. Deuxièmement, pour ceux qui n'aiment pas les nuages, et je leur appartiens, il existe les moyens habituels d'accès à distance, par exemple, une combinaison VPN + VNC, etc. Je ne dévoilerai pas les détails pour des raisons évidentes, d'autant plus que ce problème ne concerne pas directement le sujet de l'article. Je note seulement que le client mobile openHAB a une configuration pour deux adresses. Il va au premier s'il voit un serveur openHAB à cette adresse, au second - s'il ne le fait pas. Il s'agit d'une fonctionnalité très pratique de l'interface. Par exemple, vous pouvez spécifier le cloud comme deuxième adresse, puis openHAB est toujours disponible sans manipulations supplémentaires avec la connexion VPN. Ou spécifiez l'adresse virtuelle obtenue à l'aide de n'importe quelle solution VPN. Ou autre chose.
Écran d'accueil de l'interface | Défilement vers le bas de l'écran de démarrage | L'élément de menu ouvert "Light" |
---|
 |  |  |
Le balisage vous permet d'effectuer une mise en forme conditionnelle, par exemple, de mettre en surbrillance la température en rouge lorsqu'elle dépasse la valeur spécifiée dans le balisage. Certains éléments s'affichent lorsque vous appuyez dessus, par exemple, «Chauffage», «Éclairage», «Sirène», etc.
C'est tout. On ramasse à son tour un fer à souder, puis un clavier. Et progressivement, la première version du système prend forme. Comme vous le savez, l'appétit vient en mangeant. En conséquence, de nouveaux capteurs et même de nouveaux contrôleurs sont ajoutés à la première version du système, par exemple, pour automatiser une maison d'hôtes. En conséquence, à la première étape, un système a été introduit qui:
- Mesure la température à 16 points.
- Mesure l'humidité en 4 points.
- Mesure la tension du réseau 220V à l'entrée de la maison, au stabilisateur.
- Mesure la lumière ambiante. L'éclairage est utilisé pour allumer automatiquement la lumière.
- Mesure la pression atmosphérique et fait une prévision du temps sur la dynamique de la pression.
- Détecte le mouvement en plusieurs points.
- Contrôle le monde entier dans une maison d'hôtes. Les interrupteurs se sont transformés en capteurs.
- Actionne les sirènes.
- Contrôle séparément 3 étages d'une chaudière électrique, préservant la fonctionnalité de l'ancien système. Il contrôle le chauffage de la chaudière.
- Vérifie la présence de tension sur la chaudière et les éléments chauffants de la chaudière, et lit également les faits de l'inclusion des éléments chauffants de la chaudière. Ceci est important, car, d'une part, la chaudière a un retour sur la température du liquide de refroidissement et peut éteindre les éléments chauffants lui-même, et d'autre part, un relais de limitation de charge à deux étages est monté dans le panneau, qui déconnecte la chaudière et la chaudière en série si le seuil de consommation dans la maison est dépassé. Ces données seront ensuite utilisées dans des algorithmes de maison intelligente. Mais à ce stade, je ne savais pas exactement comment, je pensais simplement qu'ils seraient nécessaires.
- Lit les faits d'activer et de désactiver la pompe du circuit solaire.

- Construit des graphiques de température pour la semaine, le jour et l'heure.
- Envoie des notifications push sur divers événements. Les événements peuvent être presque tous, par exemple, mouvement sur le porche, température dépassant un seuil prédéterminé, perte / apparition d'électricité, etc. Une alerte SMS a également été émise.
- L'ancien système est resté physiquement et logiquement séparé du nouveau, bien que les mêmes capteurs soient partiellement réutilisés dans le nouveau. L'ancien système conservait les fonctions de sécurité et un système de surveillance / contrôle de secours.
La photo montre l'équipement électrique de la maison d'hôtes. La boîte avec l'antenne est le contrôleur, la "rondelle" ronde est la sirène, entre eux le capteur DHT22, sous le bouclier il y a un capteur de mouvement, à gauche il y a une alimentation 12V sans coupure.
Exemple de fonctionnement du systèmeToutes les 30 secondes, le contrôleur interroge les capteurs de température. En cas de modification des lectures ou à la demande du serveur, envoie les données à la passerelle séparément pour chaque capteur. La passerelle reçoit des données et les envoie via USB à openHAB. Dans openHAB, une règle est déclenchée, le message est analysé, la valeur de température correspondante est affectée à l'élément correspondant (le concept de base d'openHAB). Une règle est générée qui est configurée pour modifier cet élément. Si une réaction est fournie par la logique, par exemple, «si la température est descendue en dessous d'un certain niveau», une action est effectuée, par exemple, «allumer le chauffage de la chaudière». Cette commande est envoyée via USB à la passerelle. La passerelle envoie une commande par radio au contrôleur, le contrôleur reçoit la commande et active le relais correspondant. Renvoie une confirmation de réception de la commande. Quelque chose comme ça ressemble au schéma général d'interaction des composants du système.
Le résultat. Objectifs initiaux atteints et encore plus. Les températures sont mesurées et visualisées sur des graphiques et dans l'interface. Selon les résultats des observations, il est devenu clair que la température de l'eau chaude ne dépasse jamais 55 degrés, et le liquide de refroidissement dans le circuit solaire - 60, vous n'avez pas à vous soucier de la surchauffe. On peut voir que la température de l'air dans la chaufferie dépasse parfois 30 degrés et que vous devez installer la climatisation. Il est devenu pratique de contrôler le chauffage, il suffit de toucher les interrupteurs virtuels sur l'écran du smartphone. Ensuite. . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . C'est-à-dire .
, ., . — 11.05.2018. , 49 . 38, 35 . . . . 
. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .