Les objets connectés développés à l’aide de la librairie MySensors sont très bien pris en charge par Home Assistant. Dans ce tutoriel, nous allons voir comment intégrer des projets MySensors développés à l’aide de la version 2.x de la librairie.
Il est possible de se connecter directement à une Gateway MySensors ou une gateway MQTT. Nous allons voir comment faire avec la première solution. Ce tutoriel fonctionne quelque soit la plateforme utilisée pour faire fonctionner le serveur domotique (Windows, macOS, Linux et Raspberry).
Matériel nécessaire
Si vous débutez dans le développement d’objets connectés à base d’Arduino ou d’ESP8266 à l’aide de la librairie MySensors, voici quelques articles pour vous mettre sur les rails :
- Installer Grafana sur macOS et Raspbian pour Raspberry Pi. Exemple de dashboard pour objet connecté MySensors avec Node-RED et InfluxDB
- Comment inclure des objets MySensors v2 à Home Assistant (HASS)
- Utiliser Node-RED pour créer une passerelle entre MySensors et Blynk (serveur local)
- Enregistrer les mesures d’un objet connecté MySensors vers InfluxDB à l’aide de Node-RED
- Comment augmenter la portée des modules radio nRF24L01 des projets MySensors v2 (matériel, configuration)
- Node-RED+MySensors : stocker des données dans une base MongoDB
- MySensors v2.3. Décoder et envoyer des messages avec Node-RED
- Projet IoT, sonde DHT22 MySensors v2 nRF24L01 intégrée à Domoticz
- ser2net : passerelle USB vers Ethernet. RFLink MySensors et Domoticz
- Code Python pour lire sur le port Série d’un Raspberry Pi
Pour cet article, j’ai utilisé la sonde de température et d’humidité présentée dans ce tutoriel. Il se trouve à environ 50m de la gateway. Ce n’est pas très loin, mais il y a beaucoup de végétation. La gateway présentée ici est basée sur un ESP8266 (Wemos d1 mini). Pour augmenter la portée de réception, j’ai opté par un antenne 6dBi. Le cable est assez long pour la fixer à l’extérieur. Pour optimiser la portée de transmission, lisez ce tutoriel.
Ajouter des objets MySensors à la configurations Home
La librairie MySensors étant pris en charge nativement, il n’y a rien à installer. L’intégration va juste consister à déclarer la passerelle et intégrer les objets dans les groupes.
Ouvrez le fichier configuration.yaml. Si vous avez installé Home-Assistant dans un environnement virtuel (conseillé), exécutez cette commande
sudo nano /home/homeassistant/.homeassistant/configuration.yaml
Sinon, il se trouve dans votre dossier utilisateur
sudo nano /home/UTILISATEUR/.homeassistant/configuration.yaml
La documentation présente tous les types de configuration possibles (tous les détails ici)
mysensors: gateways: - device: '/dev/ttyUSB0' persistence_file: 'path/mysensors.json' baud_rate: 38400 - device: '/dev/ttyACM0' persistence_file: 'path/mysensors2.json' baud_rate: 115200 - device: '192.168.1.18' persistence_file: 'path/mysensors3.json' tcp_port: 5003 - device: mqtt persistence_file: 'path/mysensors4.json' topic_in_prefix: 'mygateway1-out' topic_out_prefix: 'mygateway1-in' optimistic: false persistence: true retain: true version: 2.0
On peut donc directement se connecter à un objets MySensors branché sur le port USB (2 premiers devices), à une Gateway standard et enfin une gateway MQTT.
Le composant MySensors propose plusieurs options complémentaires quelque soit la passerelle choisie :
- optimistic (optionnel, faux par défaut). Utilisez cette option pour les appareils qui ne retournent pas l’état de sortie. Par exemple un interrupteur. On considère qu’il a bien changé d’état lorsqu’on a appuyé dessus.
- persistence (optionnel) : permet d’activer ou désactiver l’enregistrement des données dans un fichier JSON local. Il n’est pas conseillé de désactiver cette option. Si la persistence est désactivée, les capteurs doivent se présenter (lisez ce tutoriel pour en savoir plus sur la présentation) à chaque envoi de données. Ce n’est pas très pratique.
- retain (optionnel) : option pour la passerelle MQTT. Active ou désactive l’option de retenue des messages par le broker MQTT.
- version (optionnel) : version de la librairie utilisée. L’API MySensors à sensiblement évoluée depuis la version 2.0 (documentation technique ici). Il est préférable d’indiquer la version utilisée et si possible uniformiser votre code.
Ici nous allons donc configurer une gateway TCP/IP. Elle possède l’adresse IP (fixe) 192.168.1.20 sur le réseau local. Par défaut, le port de communication est le port 5003.
mysensors: gateways: device: '192.168.1.20' persistence_file: '/home/homeassistant/.homeassistant/mysensors.json' tcp_port: 5003 optimistic: false persistence: true retain: true version: 2.0
Activer le logger
Durant la mise au point, il est préférable d’activer l’enregistrement des messages par le logger intégré. Créez une nouvelle section logger. Il est possible de récupérer les messages du composants ainsi que les messages échangés avec la gateway.
logger: default: error logs: mysensors: debug homeassistant.components.mysensors: debug
Le logger accepte plusieurs niveaux de sévérité. Le mode debug convient dans la plupart des cas :
- critical
- fatal
- error
- warning
- warn
- info
- debug
- notset
Redémarrer HASS
Redémarrez Home Assistant. Je vous conseille de redémarrer le service depuis l’interface en vous rendant au panneau Configuration par exemple ou en exécutant cette commande.
sudo systemctl restart home-assistant@homeassistant
Suivez le lancement pour vérifier que HASS est bien connecté à la passerelle avec cette commande
sudo journalctl -fu home-assistant@homeassistant
Configurer le groupe
Maintenant qu’HASS peut se connecter à la passerelle, il ne reste plus qu’à ajouter les devices à un groupe existant (ou un nouveau groupe). Vous avez du voir passer les identifiants des devices en suivant le journal d’execution du service. Heureusement, il est possible de trouver très facilement le nom des appareils directement depuis l’interface Web.
Ouvrez le menu et cliquez sur l’icône <> pour ouvrir le panneau des états (states en anglais). Les appareils commencent par le préfixe sensor
Pour ajouter les capteurs à un groupe existant, il suffit de l’ajouter à la liste des entities. Voici un exemple pour les sondes d’humidité.
humidity: name: Sondes d'humidité entities: - sensor.humidity_158d000156cbfa - sensor.box_little_3_1
Modifier l’affichage (fichier customize.yaml)
Comme pour les tutoriel précédents, je vous conseille de séparer la configuration dans des fichiers séparés pour faciliter la maintenance.
Ouvrez le fichier customize.yaml. Pour chaque capteur, créez une étiquette et ajoutez l’option friendly_name pour définir le libellé qui sera affiché à l’écran.
sensor.objet_1_0: friendly_name: Temperature Extérieure sensor.objet_1_1: friendly_name: Humidité Extérieure
Enregistrez et redémarrez HASS
Voilà, tous les objets MySensors ont été correctement intégré à l’interface. Vous pouvez également profiter de l’historique des mesures.
Dans le prochain tutoriel, nous verrons comment faire pour inclure des appareils radio à l’aide d’aide de la passerelle Open Source RFLink.
- Home Assistant. Installer le snap sur NAS Synology sur une machine virtuelle Ubuntu
- Home Assistant. Plugins indispensables à installer. Samba, HACS, File Editor, MQTT Mosquitto
- Home Assistant Community Store (HACS), installer facilement des thèmes et composants
- Home Assistant. Personnaliser l’interface avec un thème (Raspberry Pi ou NAS Synology)
- Home Assistant. Installation et configuration du package Docker Hassio (NAS Synology DS718+)
Bonjour,
à moins que je ne vois pas la différence, pourquoi avoir utilisé un Gateway MQTT Mysensor alors qu’un broker MQTT est déjà inclus dans HA ?
https://home-assistant.io/docs/mqtt/broker/
Bonjour Migui. Tu as absolument raison. Il est possible d’utiliser le broker interface de Home Assistant. J’ai préféré utiliser un broker externe pour 2 raisons. D’un point de vue didactique, c’est plus facile pour moi de toujours utiliser mosquitto pour montrer le fonctionnement du système. Ensuite, (sauf erreur de ma part, ou jusqu’à une prochaine évolution) le broker de HASS n’intègre pas le cryptage des messages MQTT. Comme je prépare un article sur le sujet, ça me paraissait mieux. Bonne journée