Aller au contenu

Index

Home-assistant

Installation Docker-compose

mkdir home/mathgon/homeassistant
cd home/mathgon/homeassistant
docker run -d --name="home-assistant" -v /home/mathgon/homeassistant_config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant


docker-compose restart

Mise à jour du container

docker-compose pull
docker-compose up -d --build homeassistant

Mapping des périphériques USB

Afin d'accéder aux controleurs zwave et RF, il faut mapper leurs répertoires de montage dans le container home-assistant

docker-compose.yaml

  version: '3'
  services:
    homeassistant:
      container_name: home-assistant
      image: homeassistant/home-assistant
      volumes:
        - /home/mathgon/homeassistant/config:/config
        - /etc/localtime:/etc/localtime:ro
        - /dev/ttyUSB0:/dev/ttyUSB0
        - /dev/serial/by-id/usb-0658_0200_FFFFFFFF-FFFF-FFFF-2417-0829011513B3-if00:/dev/serial/by-id/usb-0658_0200_FFFFFFFF-FFFF-FFFF-2417-0829011513B3-if00
        - /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00:/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00
        - /dev/ttyACM0:/dev/ttyACM0
      restart: always
      network_mode: host
      privileged: true

Accès samba

sudo nano /etc/samba/smb.conf
[HOME ASSISTANT]
   path = /home/mathgon/home-assistant_config/
   comment = No comment
   browsable = yes
   read only = no
   valid users =
   writable = yes
   guest ok = yes
   public = yes
   create mask = 0777
   directory mask = 0777
   force user = root
   force create mode = 0777
   force directory mode = 0777
   hosts allow =

Controleurs

Zigbee

Utilisation d'un CCR 2531 comme passerelle zigbee. Nécessite de flasher la puce CCR2531 afin de la convertir en zigbee2mqtt

Flasher

Nécessite de flasher la puce via un périphérique dédié (CC Debugger) ou à l'aide d'un Raspberry avec le montage suivant

https://notenoughtech.com/home-automation/flashing-cc2531-without-cc-debugger/

Installer WiringPi

sudo apt-get install wiringpi
gpio -v
see if the USB device is wired correctly running:
git clone https://github.com/jmichault/flash_cc2531.git
cd flash_cc2531 and  ./cc_chipid

Cette commande doit retourner ID = b524, si une autre valeur est retournée, vérifier les branchements.

Cloner le repository avec la dernière version

git clone https://github.com/Koenkk/Z-Stack-firmware.git
unzip ./Z-Stack-firmware/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
./cc_erase
./cc_write ./CC2531ZNP-Prod.hex

Déconnecter les cables, rebooter le raspberry.

Container Zigbee2mqqt

Ajouter au fichier docker-compose

zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt
    volumes:
        - ./zigbee2mqtt/data:/app/data
    devices:
        - /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00:/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00
        #- /dev/ttyACM0:/dev/ttyACM0
        - /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00:/dev/ttyACM0
        - /dev/ttyACM1:/dev/ttyACM1
    restart: unless-stopped
    network_mode: host

Modification de cette partie du fichier suite à mise du volume et déconnexion de l'adaptateur usb, ttyACM0 -> ttyACM1 (voir la partie commentée)

Paramétrer zigbee2mqtt

Le fichier de configuration ./zigbee2mqtt/data/configuration.yaml a automatiquement été créé avec le container. L'éditer afin de renseigner les paramètres du broker mqtt et la connection avec HA.

homeassistant: true
permit_join: true
frontend:
  port: 8643
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
  user: home-assistant
  password: @
serial:
  port: /dev/ttyACM0
Modification de juin 2022 afin d'ajouter le frontend de zigbee2mqtt http://192.168.1.111:8643

Ajouter des devices zigbee

Procéder à l'appairage des devices suivant la procédure spécifique à celui-ci C'est à la suite du fichier ./zigbee2mqtt/data/configuration.yaml que seront ajoutés les devices suivant le modèle suivant:

devices:
  '0x00158d0004254c41':
    friendly_name: 'garage_TH'
  '0x00158d000445ddc6':
    friendly_name: 'chambre_TH'

Le friendly_name peut-être ajusté afin qui soit plus facilement retrouvable dans la HA

Sécuriser la

Afin d'empêcher l'ajout de nouveaux device editer le fichier ./zigbee2mqtt/data/configuration.yaml et changer en permit_join: false

Liste de périphériques

Sensors

Controllers

Intégration à HA

lsub doit faire apparaitre une nouvelle ligne dans les devices détectés:

Bus 002 Device 002: ID 0451:16a8 Texas Instruments, Inc.

ls /dev/serial/by-id retourne l'id du device. Il doit être mentionné dans le fichier docker-compose

usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018E2EF42-if00

Zwave

Trouver ou y connecté le controleur usb

ls /dev/serial/by-id

usb-0658_0200_FFFFFFFF-FFFF-FFFF-2417-0829011513B3-if00
Ajouter au fichier configuration.yaml
zwave:
  usb_path: /dev/serial/by-id/usb-0658_0200_FFFFFFFF-FFFF-FFFF-2417-0829011513B3-if00

Hard reset du donfle zwave

Afin de supprimer la liste de tous les périphériques déja vus. Le connecter sur une autre machine et

sudo -s echo -ne “\x01\x04\x00\x42\x01\xB8” > /dev/ttyACM0

Controleur RFXcom

Ajouter au fichier configuration.yaml

rfxtrx:
  device: /dev/ttyUSB0

sensor:
  - platform: rfxtrx
    automatic_add: True

MQTT

Parti pris de ne pas installer directement le broker MQTT sur le serveur mais dans un container attenant à celui de home assistant.

Modification du fichier docker-compose

    mosquitto:
      container_name: mosquitto
      image: eclipse-mosquitto
      restart: always
      expose:
        - "1883"
        - "9001"
      ports:
        - "1883:1883"
        - "9001:9001"
      volumes:
        - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf
        - ./mosquitto/data:/mosquitto/data
        - ./mosquitto/log:/mosquitto/log

Créer les répertoires correspondants ainsi que le fichier de configuration

mkdir mosquitto
mkdir mosquitto/log
mkdir mosquitto/data
touch mosquitto/mosquitto.conf
touch mosquitto/log/mosquitto.log
Modifier les droits afin que le container mosquitto puisse écrire dans les fichiers
sudo chmod o+w /home/mathgon/homeassistant/mosquitto/mosquitto.log
sudo chown -R 1883:1883 /home/mathgon/homeassistant/mosquitto/log/
sudo chown -R 1883:1883 /home/mathgon/homeassistant/mosquitto/data/

mosquitto.conf

retry_interval 20
sys_interval 10
store_clean_interval 10
user mosquitto
max_inflight_messages 40
max_queued_messages 200
queue_qos0_messages false
message_size_limit 0
allow_zero_length_clientid true
persistent_client_expiration 3m
allow_duplicate_messages false
autosave_interval 60
autosave_on_changes false

persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data/

# Port to use for the default listener.
listener 1883

Tester le broker MQTT

Maintenant que le broker est prêt, publions notre premier message.

Installer le client MQTT

sudo apt-get install mosquitto-clients

On se connecte au serveur (-h) localhost sur le Topic (-t) sensor/temperature et on publie le message (-m) 22.5

Ouvrir deux terminaux et executer les deux commandes suivantes:

mosquitto_pub -h localhost -t sensor/temperature -m 22.5

Ou éventuellement souscrire à tous les topics

mosquitto_sub -h localhost -t "#" -v

Ajout du broker MQTT dans HA

configuration.yaml

mqtt:
  broker: 192.168.1.100
  port: 1883
  discovery: true
  username: "home-assistant"
  password: "@"

Une sonde Temp/Hum à base d'ESP8266 sous micropython

main.py

print youpi

Ajout de la sonde dans HA

configuration.yaml

sensor:
  - platform: mqtt
    name: "Temperature"
    state_topic: "essai/esp8266_2cad62"
    unit_of_measurement: '°C'
    value_template: "{{value_json.Temperature}}"
  - platform: mqtt
    name: "Humidite"
    state_topic: "essai/esp8266_2cad62"
    unit_of_measurement: '%'
    value_template: "{{value_json.Humidite}}"