Mon système domotique

Bonjour, Habr!

Le but de cet article (cycle) est l' effet Habra, une histoire d'introduction sur mon système domotique, bien sûr, je n'ai pas inventé et créé tout à partir de zéro, mais seulement collecté des technologies et des projets que je considérais comme les plus appropriés à cet effet et ajouté un peu de moi-même. Niveau amateur, mais en conséquence, tout fonctionne, les gens l'utilisent et ne courent pas après moi avec un club. J'ai tout fait moi-même. La critique constructive est la bienvenue, il sera intéressant de connaître toute opinion.

Le système comprend des équipements et un ensemble de programmes: directement un système d'automatisation pour la communication et la visualisation des équipements, la communication et la télémétrie pour la surveillance et la mise à jour à distance, un assistant vocal de Yandex. Tout (presque tout) est ouvert et publié sur Github .

Niveau d'équipement


La partie principale et nécessaire est un serveur basé sur le Raspberry Pi, mais il peut fonctionner sur un PC avec Debian ou Ubuntu sans problèmes. Système d'exploitation Raspbian. Le système devrait fonctionner 24/7/365, vous avez donc besoin d'une alimentation de haute qualité, par exemple, une alimentation idéale pour iPad.



Pour la gestion à distance, j'ai également la compétence pour que l'assistant vocal Yandex ait besoin d'un serveur avec une IP "blanche" et un domaine. Un serveur MQTT s'exécute sur le serveur; SSL / TLS est utilisé pour la sécurité.

Prise en charge KNX via la passerelle BAOS 771-774. BAOS est l'interface entre le bus KNX et le LAN. Permet d'accéder aux adresses sur le bus via un service Web au format JSON.

Mon équipement:

Projets pour Arduino IDE

Contrôleur Wifi basé sur Wemos D1 mini



Alimenté par un réseau 230 volts, il est également possible sans alimentation d'un bus 5 volts commun d'alimenter Wemos ou d'un équipement qu'il contrôle, par exemple, un entraînement à rideau. Il est possible de l'installer dans des boîtiers de montage et de dérivation d'une profondeur suffisante, par exemple derrière un interrupteur.

Il peut être utilisé à la place de la radiocommande de différents entraînements de rideaux.

Schéma


Brochage des sorties contrôlées:
L1, L2 - Sorties de puissance des triacs BT-137S, contrôlées par les sorties wemos D0, D5 via un optocoupleur MOC 3063S avec contrôle de transition de phase par zéro. L'activation et la désactivation de la charge auront lieu sans provoquer d'interférence avec le réseau.
p1, p2 - sortie pwm pour variateurs ou entraînements de rideaux motorisés ou boutons supplémentaires, selon les réglages. correspondent aux conclusions de wemos'a D6, D7.
Entrée analogique A0 pour connecter différents capteurs, comme la lumière ou un bouton supplémentaire.
ds - La connexion de la sonde de température DS18B20 correspond à la broche D1.
DHT - Le raccordement de la sonde de température DHT22 correspond à la broche D2.
b1, b2 - Les boutons, appui court et long, avec fonction de compteur de clics, peuvent être connectés aux sorties d'impulsions des compteurs d'électricité, d'eau, etc.

Démonstration de travail


Programme de contrôleur créé dans Arduino IDE. Convient à toutes les cartes mères basées sur ESP-8266. La configuration du réseau, le contrôle et le fonctionnement du contrôleur sont effectués par MQTT. Pour une visualisation pratique des paramètres, il existe une interface Web, auparavant, il y avait la possibilité de contrôler via http, mais ensuite je l'ai considérée superflue et je l'ai supprimée.

Interface Web


L'interface Web peut être désactivée. Pour faciliter la configuration initiale, un script winit.sh et des instructions sont fournis. Pour réinitialiser le contrôleur aux paramètres par défaut, vous devez soit entrer la commande «default 1», soit appuyer simultanément sur les boutons b1, b2 pendant 20 secondes. Il existe également une version simplifiée du programme pour les prises Sonoff gérées.

Contrôleur basé sur Arduino Mega



Il se compose de la méga elle-même et du blindage de la carte réseau W5100, la carte a des sorties séparées pour les gradateurs et une entrée pour les capteurs et les boutons, les sorties de relais doivent être connectées séparément à l'aide d'un câble au connecteur à 2 rangées situé sur la méga carte du côté opposé aux ports d'alimentation et USB. Le contrôleur est conçu pour le boîtier D6MG.

Brochage:

D2-9, D11-13 - Sorties PWM pour gradateurs, la fréquence de PWM est augmentée par rapport à la norme.
D14-21 - Capteurs de température DS18B20 et DHT22.
D22-49 - sorties relais, les sorties D22-29 peuvent être configurées pour les stores, portails, rideaux.
D 10.50-53 - utilise la carte réseau W5100.
A0-16 - entrées pour boutons, appui court et long. A0-A6 peut être configuré pour des capteurs analogiques.

Les paramètres réseau pour les méga sont définis dans le programme avant de clignoter. L'adresse IP est fixe.

Interface Web


Gradateur sur triac BT137-600E



Entrée 220 volts, contrôle PWM 0-5 / 3,3 volts, réglé en réglant un cavalier. 0-5 volts pour travailler avec Arduino Mega ou 0-3,3 volts en cas de wemos. Le signal PWM est envoyé à l'entrée analogique A0 Arduino Pro où il est converti en un retard pour l'ouverture du triac, un connecteur est fourni pour faire clignoter l'arduino en place. Espace désigné pour radiateur. Sur le côté de l'arduino, il y a le connecteur de contrôle et d'alimentation de l'arduino (PWM, -, +), sur le côté du smimstor, il y a un connecteur d'alimentation à 4 broches - alimentation et sortie vers la charge, si nécessaire, il peut également être équipé d'une varistance ou d'un amortisseur. La carte de gradateur est conçue pour le châssis D2MG.

Projet de gradateur:

PCB de PCBWay

Démonstration de travail


Il existe également une unité triac à 28 canaux dans le boîtier D9MG.

Je m'excuse pour la qualité de l'image


L'équipement est connecté via le réseau local, un protocole de communication MQTT. J'utilise le serveur MQTT Mosquitto.

Partie logiciel


Pour plus de commodité, vous devez d'abord préparer une image du système d'exploitation avec tous les programmes nécessaires, j'utilise Raspbian Stretch Lite. Vous devrez installer nodejs, python-pip, python3-pip, superviseur, mosquitto, mosquitto-clients, sqlite3. Et les packages pip: paho-mqtt et psutil. Vous pouvez également installer Node-red, parfait pour toutes sortes d'expériences.

Après la sortie d'Apple Homekit en 2016, il s'est avéré que tous les fabricants et développeurs pour toute l'existence des systèmes Smart Home ne pouvaient rien faire de similaire en termes de commodité et de fonctionnalité par rapport à l'homkit, cela est similaire à la situation avec la sortie du premier iPhone, quand il s'est avéré que tout le zoo les téléphones, les smartphones et les communicateurs se sont transformés en tas de déchets. En tout cas, il est toujours agréable d'utiliser un produit fini et de qualité.

J'ai choisi le projet homekit2mqtt comme système de visualisation principal. Bien sûr, vous pouvez utiliser OpenHUB ou Homeassistant, ces systèmes fonctionnent également avec MQTT.

hjmqtt
Homekit2mqtt crée Homekit Bridge, il peut être trouvé dans le programme Home sur les appareils Apple. Les accessoires (éclairage, capteurs, régulateurs de température, etc.) doivent être enregistrés dans un fichier spécial au format JSON. Les scripts filegen.sh et install.sh sont responsables de la création de ce fichier. Vous devez enregistrer les accessoires dans filegen.sh, install.sh ajoute homekit2mqtt au chargement automatique et démarre. La chose principale se produit dans le fichier hjmqtt.py - la connexion d'accessoires avec l'équipement, également manuellement dans le fichier, vous devez enregistrer les accessoires et les paramètres d'équipement, les adresses pour KNX.
La fonctionnalité des accessoires est enregistrée dans les fichiers accessoire.py et accessoireknx.py. Les statuts des périphériques sont stockés dans la base de données sqlite; la bibliothèque statdb.py est utilisée pour les opérations de base de données.

hjconnect
Le prochain projet est nécessaire pour la télémétrie à distance. Il s'agit de l'utilisation de la mémoire, des disques, de la charge et de la température, et le package psutil est utilisé pour cela. Désormais, l'accès ouvert est disponible pour la version hjconnect uniquement pour la surveillance et sans chiffrement, et en tant que projet distinct, le programme de liaison de fichiers est également MQTT file-transfer-via-mqtt . Les paramètres se trouvent directement dans le fichier hjconnect.py principal. Si vous l'exécutez avec l'option -l, vous pouvez le tester sur le serveur MQTT local, les paramètres du serveur distant sont en ligne 160

rclient.connect("test.mosquitto.org", 1883, 60) 

le serveur test.mosquitto.org peut être remplacé par votre domaine ou votre IP. Pour identifier le Raspberry Pi, le numéro de série du processeur est inclus dans la rubrique, si le programme est exécuté sur un autre ordinateur, au lieu du numéro de série, il y aura la chaîne «SN». L'intervalle de message est défini sur la ligne 96.

 th = threading.Timer(9, my_stat) # interval 

où 9 est des secondes.

Un exemple de ce à quoi ressemble la surveillance


sima
Maintenant, seul Yandex a la seule colonne russophone. Créer une compétence pour Alice est assez facile. Contrairement à Siri, la liberté d'action est totale. Et accédez à n'importe quel appareil. Seulement, malheureusement, bien qu'il n'y ait aucun moyen sain de lancer une compétence, l'exécution constante d'une compétence est gênante.

Démo


Ceci est un exemple de compétence de travail. Pour démarrer la compétence, vous avez besoin d'un certificat SSL; il peut être généré en utilisant openssl. Dans la ligne sima.py sur la ligne 14, il y a un exemple de génération de certificat

 openssl req -new -keyout crt.pem -out crt.pem -x509 -days 365 -nodes -subj '/CN=site.com/O=user/C=RU' 

site.com et l'utilisateur doivent être remplacés par leurs données.

Lorsqu'une compétence est lancée sur un nouvel appareil, son identifiant est enregistré. Afin de lier l'identifiant et le système d'automatisation, vous devez d'abord créer un nouveau fichier csv dans le répertoire clients basé sur l'exemple de fichier my.csv. Le numéro de série est écrit dans le fichier selon le modèle, il s'agit du même numéro de série du programme hjconnect et les objets de contrôle sont écrits: nom, type, rubrique. La rubrique est une partie importante de la rubrique accessoire MQTT du fichier JSON pour homekit2mqtt. Ensuite, à l'aide de sn.py, vous devez convertir le numéro de série en mot de passe et nommer ce mot de passe sur l'appareil à partir duquel vous allez gérer. La communication est assurée par le programme hjconnect et le serveur de surveillance MQTT est le même ordinateur sur lequel la compétence s'exécute.

Merci, au revoir.

Source: https://habr.com/ru/post/fr442600/


All Articles