Accueil / Domotique / Home Assistant : installation et 1er pas sur Raspberry Pi

Home Assistant : installation et 1er pas sur Raspberry Pi

Home Assistant (@Home_Assistant) est un serveur domotique entièrement écrit en Python qui s’installe avec une seule ligne de commande dans le Terminal. Ce serait dommage de ne pas l’essayer ! Home Assistant est un projet open-source qui devenu très rapidement une référence dans le monde des serveurs domotique (github). Seul bémol, Home Assistant n’est disponible qu’en Anglais. Il est possible de traduire les étiquettes des widgets mais ça ne va pas au delà. Home Assistant et toutefois un très bon outil d’apprentissage si vous débutez en domotique ou en programmation.

Installer Home-Assistant

Pour rédiger cet article, j’ai utilisé un Raspberry Pi 3 avec la dernière version de Raspbian Jessie. Il est également possible d’installer Home-Assistant sur Mac OS X, Linux ou Windows. La seule condition est que Python 3.4 (ou supérieur) soit installé. Enfin, il est possible d’installer HomeAssistant sur un NAS Synology (la version DSM 6 est conseillée).

Sur les machines Linux, il suffit d’executer la commande suivante dans le Terminal.

pip3 install homeassistant

Pour les utilisateurs de Windows 10 (ou 7), commencez par installer Python 3 puis dans le Command Prompt

python -m pip install homeassistant

Et voilà, en quelques minutes, votre serveur domotique est prêt à fonctionner. Contrairement aux autres solutions, il n’y a aucun composant supplémentaire à installer. Il suffira de configurer ce dont vous avez besoin à l’aide de fichiers de configuration dans le langage YAML.

Commencer avec Home Assistant

Démarrer

La commande hass permet de démarrer Home-Assistant depuis le Terminal

Pour accéder à Home Assistant, il vous suffit d’utiliser n’importe quel navigateur ayant un accès à votre réseau privé en saisissant cet URL

http://IP_DE_VOTRE_PI:8123/states

Démarrer en mode démo

En saisissant la commande hass –demo-mode, on démarre directement dans le mode démo qui permet de tester les principales fonctionnalités. Aucun crainte à avoir, même si vous avez déjà commencer à modifier votre script, démarrer en mode démo ne modifie pas votre script. Vous pouvez également tester la démo ici https://home-assistant.io/demo/

home-assistant demo screen ecran

Arrêter

La combinaison de touche Ctrl+X dans le Terminal permet d’arrêter proprement Home-Assistant.

Mettre à jour

Pour mettre à jour, exécutez la commande suivante

pip3 install --upgrade homeassistant

Premier script

Home-Assistant utilise le fichier configuration.yaml qui se trouve à la racine du répertoire d’installation. Sur Raspberry (Linux et Mac OS X) il se trouve à ~/.homeassistant. Sur Windows, il se trouve ici %APPDATA%/.homeassistant.

L’écriture du script est assez simple. Il faut un peu maîtriser le langage YAML (documentation en anglais) qui n’a rien de bien méchant comme nous allons le voir.

Exécutez la commande suivante pour éditer le fichier de configuration à l’aide de nano

sudo nano configuration.yaml

Chaque fonction débute par un mot clé, par exemple homeassistant: Dans ce bloc on y ajoute les paramètres sous la forme clé : valeur en retournant à la ligne pour chaque couple clé/valeur.

Le symbole # est utilisé pour les commentaires.

homeassistant:
  #Maison. Pour connaître votre adresse ip, utilisez http://freegeoip.io  
  #Coordonnées GPS utilisées pour le service Météo

  latitude: 48.870972
  longitude: 2.533044

  # C pour Celsius, F pour Fahrenheit

  temperature_unit: C

 

Ajouter un capteur publiant des données sur MQTT

Dans l’article précédent, nous avons vu comment installer le broker MQTT Mosquitto sur un Raspberry. Voyons maintenant comment il est très simple de récupérer une mesure de température réalisée avec un DHT22 et un ESP8266 (ce projet fera l’objet d’un prochain article). Voici donc comment récupérer des Topics MQTT.

On ajoute une section mqtt

mqtt: 
  broker: localhost    #si le Broker est installé sur le même poste qu'Home-Assistant 
  port: 1883                        #par défaut 
  client_id: home-assistant-1 
  keepalive: 60 
  username: USERNAME   #optionnel 
  password: PASSWORD   #optionnel 
  protocol: 3.1                     #par défaut

 

Maintenant on ajoute un nouveau capteur (sensor) qui lit la température. La valeur se trouve dans le payload

sensor: 
  platform: mqtt 
  state_topic: "sensor/temperature" 
  name: "Température" 
  qos: 0 
  unit_of_measurement: "°C" 
  #value_template: '{{ payload }}'

 

Si on veut ajouter de nouveau capteur, il suffit de mettre un numéro à coté du mot clé sensor comme ceci (pour récupérer l’humidité)

sensor 2: 
  platform: mqtt 
  state_topic: "sensor/humidity" 
  name: "Humidité" 
  qos: 0 
  unit_of_measurement: "°C" 
  #value_template: '{{ payload }}'

Enregistrez la configuration (Ctrl + X puis O) et lancez le serveur avec la commande hass. Actualisez la page dans votre navigateur pour voir apparaître la mesure de température et d’humidité.

home assistant mqtt sensor esp8266

Accéder à Home Assistant depuis Internet

Pour le moment Home-Assistant ne propose aucun service équivalent à my.openhab.com pour accéder à votre serveur domotique. Il va falloir configurer sa box manuellement pour cela

Enfin il n’existe encore aucune application pour Android et iOS, il faudra en passer par un raccourci vers la page ou un signet pour accéder rapidement à votre serveur sur iPhone ou Android.

Suite à l’arrêt de l’offre gratuite de DynDNS, je vous conseille de vous tourner vers no-ip.com qui en plus de proposer une offre gratuite et généralement proposé par les Box. Environ 30 noms de domaines sont proposés dans l’offre gratuite : hopto.org, ddns.org…

Une fois votre compte créé, allez dans DynamicDNS puis Hostnames. Commencez par ajouter un Hostname en cliquant sur « Add Hostname ». Donnez un nom et choisissez un domaine (dans la liste free).

home-assistant.io dyndns no-ip create hostname

Ensuite, vous devez activer le service DynDNS sur votre box.

Voici un exemple pour une SFR Box. Un fois connecté à l’interface d’administration, allez dans DynDNS qui se trouve dans Réseau v4.

Appuyez sur Activer et choisissez no-ip.com. Remplissez les champs nom d’utilisateur et mot de passe (ceux que vous avez utilisez pour créer un compte sur no-ip.com. Enfin indiquez votre nom de domaine (créé à l’étape précédente). Validez. Si tout est correct, le statut du service passe en vert et vous affiche l’adresse ip de votre domaine.

sfr box dyndns no-ip

Maintenant il reste encore à faire une redirection (Forwarding) du port 8123 du serveur Home-Assistant. Pour cela, allez dans Réseau v4 puis NAT. Donnez un nom à la redirection (par exemple homeassistant) et indiquez 8123 dans les champs Ports externes et Ports de destination. Indiquez enfin le dernier chiffre de l’adresse ip du poste sur lequel fonctionne Home-Assistant. Enregistrez la redirection.

sfr box dyndns no-ip redirection port

Ouvrez un navigateur, par exemple celui de votre iPhone ou de votre ordinateur et saisissez l’URL (exemple)

monserveurdomotique.hopto.org:8123

 

C’est terminé, vous pouvez accéder à votre serveur domotique Home-Assistant depuis n’importe ou lorsque vous n’êtes pas à la maison.

Sécuriser votre serveur

Maintenant que votre serveur domotique est accessible depuis internet, il est préférable d’ajouter une protection par mot de passe. Pour cela ajouter un bloc http à la configuration

http:
  api_password: MOT_DE_PASSE

Le protection n’est cependant pas parfaite car les données sont transite en clair sur internet (connexion HTPP). Pour bien faire, il faudra mettre une connexion sécurisée HPPTS à l’aide d’un certificat Let’s Encrypyt par exemple. Pour ceux que veulent se lancer dans l’aventure, je vous renvoie vers cet article (en anglais) sur le blog d’Home Assistant.

home-assistant.io password protect protection mot de passe