Comment inclure des appareils domotiques radio RFLink à Home Assistant (HASS) • Domotique et objets connectés à faire soi-même

cuxk8o8but2m2irpeyus-2314959

Home Assistant intègre nativement le support des appareils domotiques radio compatibles avec la passerelle Open Source RFLink. Dans le tutoriel précédent, nous avons vu comment inclure des objets connectés développés à l’aide de la librairie MySensors v2. L’inclusion d’appareils radio à l’aide de la gateway RFLink est un peu différente. La documentation technique manque de détails concernant l’ajout des appareils dans les groupes.

Passerelle RFLink et matériel utilisé pour le tutoriel

RFLink est un projet Open Source qui permet de réaliser une passerelle (gateway) entre un logiciel domotique et des appareils domotiques qui communiquent par ondes radio. C’est une alternative très économique à la gateway commerciale RFXCom. Le projet RFLink est capable de gérer plusieurs fréquences radio 315MHz, 433MHz, 868MHz, 915MHz et 2,4GHz. Suivez ce guide pour fabriquer votre passerelle domotique radio pour moins de 15€.

RFLink à base d’Arduino Mega 2560 et d’un module radio Super Heterodyne.

Pour ce tutoriel, nous utiliserons deux détecteurs de fumée Chacon 34126 qui communiquent en 433MHz. On les trouve assez facilement en magasin de bricolage ou les marchands en ligne.

Avertissement. Vérifiez que la fréquence radio employée par l’appareil est autorisée dans votre pays avant tout achat.

Configuration de la passerelle dans Home Assistant

Tout comme MySensors, RFLink est supporté nativement par Home Assistant. Ouvrez le fichier de 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 le fichier se trouve dans le dossier utilisateur

sudo nano /home/UTILISATEUR/.homeassistant/configuration.yaml

La première chose à faire est de configurer un Hub RFLink. La documentation présente complète se trouve ici. Deux lignes suffisent

rflink:
  port: /dev/serial/by-id/usb-id01234

Pour trouver le port USB sur lequel est branché la passerelle, commencez par connecter l’Arduino Mega à votre ordinateur ou au Raspberry Pi. Ensuite, dans le Terminal, exécutez les commandes suivantes pour lister les appareils connectés.

cd /dev/serial/by-id
ls
usb-Arduino__www.arduino.cc__Arduino_Mega_2560_85430353631351209040-if00

D’autres paramètres optionnels peuvent compléter la configuration si besoin :

  • host : dans le cas ou la gateway est accessible depuis en autre poste en TCP/IP. Suivez ce tutoriel qui explique comment faire avec ser2net
  • wait_for_ask : attend la confirmation de l’exécution de la commande précédente avant d’envoyer la suivante. C’est le mode actif par défaut. Il est plus lent mais aussi plus fiable
  • ignore_devices : il est possible d’ignorer des périphériques radio. La commande supporte le joker (*)
  • reconnect_interval : temps d’attente en secondes entre deux tentatives de re-connexion

Activer le logger

Durant la mise au point, il est nécessaire d’activer l’enregistrement des messages par le logger intégré. Créez une nouvelle section logger si celle-ci n’existe pas encore. Il est possible de récupérer les messages radio ainsi que les messages échangés avec la gateway.

logger:
  default: error
  logs:
    rflink: debug
    homeassistant.components.rflink: 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

Enregistrez le fichier (CTRL + X puis Y) puis 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 depuis le Terminal.

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

Vous pouvez également consulter le log en ouvrant le fichier home-assistant.log qui se trouve dans le même répertoire que les fichiers de configuration. Voici un exemple

2017-05-19 12:16:05 INFO (MainThread) [homeassistant.components.rflink] Initiating Rflink connection
2017-05-19 12:16:05 INFO (MainThread) [homeassistant.components.rflink] Connected to Rflink
2017-05-19 12:16:05 DEBUG (MainThread) [rflink.protocol] connected
2017-05-19 12:16:06 DEBUG (MainThread) [rflink.protocol] received data: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R46;
2017-05-19 12:16:06 DEBUG (MainThread) [rflink.protocol] got packet: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R46;
2017-05-19 12:16:06 DEBUG (MainThread) [rflink.protocol] decoded packet: {'node': 'gateway', 'firmware': 'RFLink Gateway', 'protocol': 'unknown', 'revision': '46', 'hardware': '$
2017-05-19 12:16:06 DEBUG (MainThread) [rflink.protocol] got event: {'version': '1.1', 'firmware': 'RFLink Gateway', 'id': 'rflink', 'hardware': 'Nodo RadioFrequencyLink', 'revi$
2017-05-19 12:16:06 DEBUG (MainThread) [homeassistant.components.rflink] event of type unknown: {'version': '1.1', 'firmware': 'RFLink Gateway', 'id': 'rflink', 'hardware': 'Nod$
2017-05-19 12:16:06 DEBUG (MainThread) [homeassistant.components.rflink] unhandled event of type: unknown

Tout est correct, vous pouvez continuer

Inclusion des appareils : lumières, interrupteurs, capteurs

Maintenant qu’HASS peut se connecter à la passerelle, il ne reste plus qu’à ajouter les devices à un groupe existant (ou un nouveau groupe). Contrairement à MySensors, les appareils radio ne sont malheureusement pas listés dans le panneau d’état.

La première chose à faire est de récupérer l’identifiant de l’appareil. Pour cela, un seul moyen, faire fonctionner l’appareil pour qu’il envoi un signal radio contenant son identité. Appuyez sur le bouton de test ou de commande puis ouvrez le journal d’exécution (home-assistant.log) qui se trouve dans le même répertoire que les fichiers de configuration.

Ici, en appuyant sur le bouton de test du détecteur de fumée Chacon, on récupère toutes les informations nécessaires pour l’inclure dans Home Assistant.

2017-05-19 15:50:17 DEBUG (MainThread) [rflink.protocol] received data: 20;01
2017-05-19 15:50:17 DEBUG (MainThread) [rflink.protocol] received data: ;Slave;Debug=01 00 00 10
2017-05-19 15:50:17 DEBUG (MainThread) [rflink.protocol] received data: 00 1;
2017-05-19 15:50:17 WARNING (MainThread) [rflink.protocol] dropping invalid data: 20;01;Slave;Debug=01 00 00 10 00 1;
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] received data: 20;02;
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] received data: FA20RF;ID=40cd71;SWITCH=
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] received data: 01;CMD=ON;SMOKEALERT=ON;
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] received data:
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] got packet: 20;02;FA20RF;ID=40cd71;SWITCH=01;CMD=ON;SMOKEALERT=ON;
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] decoded packet: {'node': 'gateway', 'command': 'on', 'protocol': 'fa20rf', 'smokealert': 'on', 'id': '40cd71', 'switch':$
2017-05-19 16:37:01 DEBUG (MainThread) [rflink.protocol] got event: {'command': 'on', 'id': 'fa20rf_40cd71_01'}

L’identifiant se trouve à la ligne got event.

Ouvrez de nouveau le fichier de configuration.

sudo nano configuration.yaml

Les détecteurs de fumées sont gérés comme des interrupteurs. L’inclusion d’un appareil de type switch ne nécessite aucun réglage particulier. On ajoute un bloc de type switch en lui indiquant un nom (utilisé dans le groupe). La plateforme est de type rflink. Puis on liste les appareils (devices) reliés à ce bloc

switch sirenes:
  platform: rflink
  devices:
    fa20rf_40cd71_01:
      name: cuisine

C’est la configuration minimale nécessaire. D’autres paramètres sont disponibles pour affiner la gestion des appareils (la liste complète ici) :

Si vous devez inclure des capteurs, la configuration est un peu différente. En effet, il est nécessaire d’indiquer à HASS le type de capteur employé. Les types des capteurs supportés sont les suivants (documentation détaillée) :

  • average_windspeed : vitesse moyenne du vent
  • barometric_pressure : pression atmosphérique
  • battery : batterie
  • weather_forecast : prévision météo
  • doorbell_melody : mélodie de la sonnette
  • command : commande
  • co2_air_quality : teneur en CO2 dans l’atmosphère
  • current_phase_1 : intensité du courant phase 1
  • current_phase_2 : idem pour la phase 2
  • current_phase_3 : et la phase 3
  • distance
  • firmware
  • humidity_status
  • humidity
  • hardware
  • kilowatt
  • light_intensity : intensité lumineuse
  • meter_value
  • total_rain : hauteur d’eau totale tombée
  • rain_rate
  • revision
  • noise_level : niveau de bruit
  • temperature
  • uv_intensity : indice UV
  • version
  • voltage : tension du courant
  • watt
  • windchill (?)
  • winddirection : direction du vent
  • windgusts : rafale de vent
  • windspeed : vitesse du vent
  • windtemp : température du vent (?)

C’est la même chose pour les lumières mais le type n’est pas un paramètre obligatoire. Voici les types de lumière gérés (documentation détaillée) :

  • hybrid : envoi une commande dim suivie de ON ou OFF
  • Switchable : commutable, une lampe classique
  • Dimmable : variateur de lumière
  • Toogle : inverseur d’état. Il n’y a que la commande ON qui est envoyée. Cette commande peut être utile pour certains appareils tel que les interrupteurs muraux de la marque Livolo.

Configurer le groupe

Le plus dure est fait, l’ajout des détecteurs de fumée dans un groupe se fait très simplement. On va par exemple créer un groupe qui présente tous les détecteurs de fumée de la maison

smoke:
  name: Détecteurs de fumées
  control: hidden
  entities:
    - switch.cuisine  
    - switch.lingerie

On pourra ajouter ce groupe dans la vue capteurs par exemple

sensor_view:
  name: Capteurs
  view: yes
  icon: mdi:gauge
  entities:
    - group.smoke

Enregistrez la configuration et redémarrez Home Assistant depuis l’interface ou en exécutant cette commande

sudo systemctl restart home-assistant@homeassistant

Voilà, les deux détecteurs de fumées sont maintenant intégrés à Home Assistant. L’affichage n’est pas encore parfait. La surcharge du style disponible qui permet de définir le type de capteur via l’option device_class semble ne pas fonctionner pour RFLink. 

Avez-vous aimé cet article ?