Aller au contenu

Domotique avec Home Assistant

Installation en mode supervisé

En suivant le documentation https://www.home-assistant.io/installation/linux#install-home-assistant-supervised et plus spécifiquement https://github.com/home-assistant/architecture/blob/master/adr/0014-home-assistant-supervised.md. Il faut installer une Debian 12 (ne marche pas sinon) et ensuite suivre les instructions.

Pour la gestion des périphériques Zigbee nous avons ajouté à la machine un dongle USB SonOff.

HACS (Home Assistant Community Store)

HACS est une extension pour Home Assistant (non fournie par Home Assistant version officielle) qui simplifie l’ajout d’intégrations, de thèmes et de cartes personnalisées, développés par les autres utilisateurs de Home Assistant. Explorez et installez facilement des plugins communautaires, bénéficiez de mises à jour automatiques et profitez du soutien d’une vaste communauté d’utilisateurs. HACS rend votre expérience Home Assistant plus riche et personnalisée, tout en garantissant sécurité et fiabilité.

HACS repose sur l’accès à des dépôts github et nécessite une connexion à un compte github. Dans notre cas nous avons créé un compte spécifique dont l’email est gh_hacs@eirlab.net. Il suffit de suivre la documentation https://www.hacs.xyz/ (ajout depuis settings/Devices and Services/Add integration).

Une fois HACS installé, nous avons ajouté des Add-On ( Settings/Add-On) :

  • Advanced SSH and Web Terminal
  • Terminal and SSH
  • File Editor
  • ESP Home (version officielle HA)
  • MQTT IO
  • Spotify Connect
  • Ultimaker

Ajout d’intégrations

On peut ajouter différentes intégrations de la manière suivante Settings/Devices and Services/Add Integration :

  • Zigbee Home Automation
  • Phillips Hue
  • Bluetooth
  • UPnP/IGD (gestion du routeur)

Configuration des intégrations

Dans l’intégration Zigbee nous avons ajouté différents Devices : température et humidité (SonOff), capteur de présence (Aqara) et des prises connectées (Zigbee Nous).

Dans l’intégration Phillips Hue nous avons ajouté le bridge Phillips Hue qui permet d’avoir accès aux différents devices tels que les rubans LED, les spots et les interrupteurs.

L’intégration UPnP donne des informations sur le réseau.

Ultimaker

L’ajout de la gestion des Ultimaker (extension HACS Ultimaker installée) passe par le fichier configuration.yaml

On utilise le file editor pour ajouter les différents paramètres d’imprimante :


# Configuration des capteurs
sensor:
  - platform: ultimaker
    name: ultimaker_s5_01
    host: 192.168.0.119
    scan_interval: 10
    decimal: 2
    sensors:
      - status
      - state
      - progress
      - bed_type
      - bed_temperature
      - bed_temperature_target
      - hotend_1_id
      - hotend_1_temperature
      - hotend_1_temperature_target
      - hotend_2_id
      - hotend_2_temperature


  - platform: ultimaker
    name: ultimakers3
    host: 192.168.0.105
    scan_interval: 10
    decimal: 2
    sensors:
      - status
      - state
      - progress
      - bed_type
      - bed_temperature
      - bed_temperature_target
      - hotend_1_id
      - hotend_1_temperature
      - hotend_1_temperature_target
      - hotend_2_id
      - hotend_2_temperature


  - platform: ultimaker
    name: ultimakers5_02
    host: 192.168.0.110
    scan_interval: 10
    decimal: 2
    sensors:
      - status
      - state
      - progress
      - bed_type
      - bed_temperature
      - bed_temperature_target
      - hotend_1_id
      - hotend_1_temperature
      - hotend_1_temperature_target
      - hotend_2_id
      - hotend_2_temperature

Pour accéder au flux des caméras intégrées dans le Ultimaker, de manière fluide, on ajoute le lien du flux vidéo séparément de la déclaration des imprimantes (cf code au dessus), toujours dans le fichier configuration.yaml :

# Déclaration des caméras des Ultimaker
camera:
  - platform: generic
    name: ultimaker_s5_01
    stream_source: http://192.168.0.119:8080/?action=stream
    framerate: 4


  - platform: generic
    name: Ultimakers3
    stream_source: http://192.168.0.105:8080/?action=stream
    framerate: 4


  - platform: generic
    name: ultimaker_s5_02
    stream_source: http://192.168.0.110:8080/?action=stream
    framerate: 4

Dashboard

L’affichage des différentes données collectées par les devices se font sur des dashboards organisés par thèmes. La création d’un dashboard se fait depuis eirlab en mode éditeur suivant le chemin Add view/save/Add card. Chaque carte peut être éditée manuellement dans show code editor.

Le plan interactif a été créé via la card picture-elements et par superposition d’images .png auxquelles sont rattachées diverses entités (lumières, capteurs …) . On peut également ajouté à l’entité un bouton qui lui correspond. Des labels peuvent également être attribués aux paramètres suivants : température, humidité, CO2.

type: picture-elements
elements:
  - type: image
    entity: light.casier_elec_2
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/bureau.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.yoan
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/mur.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.hue_color_spot_1
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/bureau.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.hue_color_spot_1_2
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/flipper.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.table_son
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/pilier_1.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.thermoformeuse
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/pilier_2.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.volterra
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/pilier_2.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.libre_service_1
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/pilier_3.png
      'off': /local/plan/transparent.png
  - type: image
    entity: light.hue_color_spot_2
    style:
      top: 50%
      left: 50%
      width: 100%
    state_image:
      'on': /local/plan/pilier_3.png
      'off': /local/plan/transparent.png
  - type: state-label
    entity: sensor.temperature_01_temperature
    attribute: null
    style:
      top: 56%
      left: 47%
      color: black
      font-size: 20px
      font-family: Roboto, sans-serif
      background: rgba(255,255,255,0.3)
      box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3)
      padding: 4px
      border-radius: 4px
  - type: state-label
    entity: sensor.temperature_01_humidity
    attribute: null
    style:
      top: 65%
      left: 47%
      color: black
      font-size: 20px
      font-family: Roboto, sans-serif
      background: rgba(255,255,255,0.3)
      box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3)
      padding: 4px
      border-radius: 4px
  - type: state-label
    entity: sensor.temperature_02_temperature
    attribute: null
    style:
      top: 10%
      left: 73%
      color: black
      font-size: 20px
      font-family: Roboto, sans-serif
      background: rgba(255,255,255,0.3)
      box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3)
      padding: 4px
      border-radius: 4px
  - type: state-label
    entity: sensor.temperature_02_humidity
    attribute: null
    style:
      top: 19%
      left: 73%
      color: black
      font-size: 20px
      font-family: Roboto, sans-serif
      background: rgba(255,255,255,0.3)
      box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3)
      padding: 4px
      border-radius: 4px
  - type: state-label
    entity: sensor.mh_z19_co2_sensor
    attribute: null
    style:
      top: 19%
      left: 82%
      color: black
      font-size: 20px
      font-family: Roboto, sans-serif
      background: rgba(255,255,255,0.3)
      box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3)
      padding: 4px
      border-radius: 4px
  - type: state-icon
    entity: light.yoan
    style:
      top: 25%
      left: 43%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.casier_elec_2
    style:
      top: 39%
      left: 42%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.hue_color_spot_1
    style:
      top: 39%
      left: 44%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.hue_color_spot_1_2
    style:
      top: 25%
      left: 28%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.volterra
    style:
      top: 55%
      left: 53%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.thermoformeuse
    style:
      top: 50%
      left: 53%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.hue_color_spot_2
    style:
      top: 50%
      left: 65%
    tap_action:
      action: toggle
  - type: state-icon
    entity: light.libre_service_1
    style:
      top: 55%
      left: 65%
    tap_action:
      action: toggle
image: /local/plan/eteint.png