MQTT, Smart Home, ESP-8266 et Plug & Play

La création d'une maison intelligente implique de nombreux capteurs différents qui surveillent la situation dans la maison - mouvement, éclairage, température et autres capteurs. Si la «maison intelligente» est petite, tout semble simple, même avec des systèmes faits maison basés sur des solutions ouvertes (MQTT, OpenHAB, etc.) - ils ont connecté le capteur, l'ont enregistré dans le programme OpenHAB ou HomeAssistant et ont commencé à fonctionner. Mais s'il y a beaucoup de capteurs, alors beaucoup de travail routinier et ingrat apparaît sur la prescription de chacun d'eux dans le système de contrôle.

La solution proposée ("béquille") vous permet d'effectuer un minimum d'opérations manuelles à ce stade. Le contrôleur de capteur se connecte au courtier MQTT et parle de ses capteurs et appareils dans un format spécifique dans des rubriques spéciales, puis un petit script sur le serveur domestique intelligent crée des fichiers de configuration correspondant à ces capteurs, après quoi il vous suffit de les identifier manuellement dans les groupes spécifiques à la maison et vous pouvez commencer à créer des scripts de gestion.

Plus précisément, ce firmware fonctionne sur des modules avec ESP-8266 (y compris Sonoff Basic Switch et Sonoff Touch Wallswitch) avec des scripts P&P pour OpenHAB et HomeAssistant, mais la méthode de sortie d'informations plug & play elle-même peut être utilisée dans d'autres projets.

Lorsque vous connectez l'appareil au courtier MQTT, les rubriques suivantes sont créées (dans ce cas, pour le bouton FLASH de l'ESP-8266 avec le numéro de série 0023CB541):

  • / myhome / PNP / ESPX-0023CB541 / BUTTON / nom - nom / description («bouton FLASH» - cela sera affiché dans l'interface Web)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / type - le type de la variable et la direction du flux de données pour celle-ci, "O: Switch" indique le capteur qui fournit des informations et, par exemple, "I: Dimmer" - le canal entrant du gradateur
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / groups - groupes dans lesquels cette variable apparaîtra par défaut ("Switches Builtin Buttons")
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / min - la valeur minimale (pour les variables numériques, pour le bouton, elle sera vide)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / max - valeur maximale (similaire)

Un script exécuté sur le serveur (par couronne ou manuellement, après avoir connecté l'appareil) - télécharge une liste de sujets depuis / myhome / PNP, recherche les appareils qui ne sont pas dans OpenHAB et crée des fichiers de configuration pour eux. Si le fichier de configuration d'un tel périphérique existe déjà, les informations P&P sont complètement ignorées, mais vous pouvez supprimer ce fichier, si nécessaire, recréer le fichier pour le périphérique avec un ensemble de capteurs modifié.

De manière si simple et transparente - nous nous débarrassons d'un mal de tête assez important si vous devez connecter un grand nombre d'appareils contrôlés par réseau dans notre maison intelligente maison.

Je vais vous en dire un peu plus sur le firmware actuel de l'ESP-8266. Ses codes sources (et les scripts de support pour OpenHAB et HomeAssistant) peuvent être trouvés sur Github (en particulier, les scripts de support sont ici ).

Il fonctionne sur les modules ESP-8266 standard (ainsi que sur le commutateur de base Sonoff et le commutateur mural Sonoff Touch), prend en charge la mise à niveau du micrologiciel à la volée (ArduinoOTA), et dispose également d'un serveur Web simple pour la configuration initiale des paramètres du réseau WiFi et la définition de l'adresse IP MQTT - courtier.

La structure du firmware est modulaire et vous pouvez très facilement ajouter vos capteurs / appareils. La liste actuelle comprend:

  • Capteurs de mouvement infrarouges et détecteur de mouvement en bande X Parallax (jusqu'à 3 unités par module)
  • Capteur de température / humidité DHT22 ou équivalent
  • Mon variateur contrôlé Modbus / RS-485 4 canaux
  • Sonars HC-SR04 et Sonars de la série MaxBotix
  • Relais sur Sonoff Basic Switch et Sonoff Touch (ce dernier peut être commuté à la fois en mode de contrôle de relais par un bouton, et uniquement via OpenHAB / HomeAssistant)
  • ADC intégré, LED et bouton Flash (pour Sonoff Touch - c'est un bouton tactile)
  • Un thermostat simple avec deux relais pour contrôler un ventilateur (unité intérieure) et un compresseur (unité extérieure)

Il convient de noter qu'en raison du manque de broches sur l'ESP-8266, les modules peuvent entrer en conflit les uns avec les autres (par exemple, un gradateur avec un sonar ne peut pas être connecté en même temps si vous ne redistribuez pas les broches vous-même).

Après avoir sélectionné les appareils nécessaires dans esp-sensor.h, la compilation et le firmware - le module passe en mode configuration - il lève son réseau WiFi avec un nom comme "espx-0023cb541", auquel vous devez vous connecter (vous pouvez utiliser n'importe quel smartphone) avec un mot de passe du même fichier , puis accédez à 192.168.4.1 et définissez le nom d'utilisateur et le mot de passe réseau, ainsi que l'adresse IP du courtier. Ces paramètres seront enregistrés en un éclair, donc la deuxième fois, vous n'avez pas besoin de le faire. S'il n'est pas possible de se connecter à un réseau donné en une minute, il repassera en mode configuration pendant trois minutes, puis répétera ce cycle jusqu'à ce qu'il soit correctement connecté.

Pour ceux qui vont éditer ce firmware, je mentionnerai que chaque module capteur / appareil est divisé en six fonctions:

  • setup _ * () - configuration des broches
  • boucle _ * () - interrogation du capteur à chaque cycle de programme
  • refresh _ * (forceSend) - met à jour les informations d'état du capteur sur MQTT (200 ms par défaut, et toutes les deux secondes - mise à jour forcée)
  • pnp _ * () - envoi d'informations P&P
  • s'abonner _ * () - abonnement aux rubriques entrantes nécessaires
  • mqtt _ * () - traitement des messages mqtt entrants

Ces fonctions doivent être définies dans le fichier de votre module, puis ajoutez leur appel aux endroits appropriés esp-sensor.ino.

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


All Articles