diff --git a/README.md b/README.md index 0c6edb5..ad905d2 100644 --- a/README.md +++ b/README.md @@ -1 +1,126 @@ -# iDiamant2Mqtt \ No newline at end of file +# iDiamant2Mqtt + +Outil de conversion de l'API du iDiamant (volets Bubendorff) depuis MQTT pour Home Assistant. + +## Netatmo +Pour que cela fonctionne, les volets doivent être configurés dans l'application "Home + Control" de Legrand - Netatmo - Bticino. +Rendez-vous ensuite sur la page https://dev.netatmo.com/ et connectez-vous avec les même identifiants que l'application. Il faut enuite cliquer sur son login puis "My apps". +Cliquer ensuite sur "Create" et renseiger les champs suivants : +- app name : le nom de votre application, par exemple "Volets" +- description : une courte descrition, pzr exemple "Gestion des volets depuis HASS" +- data protection officer name : votre nom +- data protection officer email : l'email de votre compte + +Cliquer sur "I agree to the terms and conditions" et sur Save. +Dans la partie "App Technical Parameters", conserver les identifiants "client ID" et "client secret" pour le déploiement. + + +## Déploiement + +Il vous faut : + +- Home-Assistant (en même temps, vous êtes surtout là pour lui non?) +- Un brocker (serveur) MQTT (sans certificat pour l'instant) +- Le service iDiamant2Mqtt + +Il y a deux solutions pour déployer ce service : + +- Docker (recommandé) +- Exécuter le script python directement + +### Docker + +Je préfère cette solution car elle encapsule le processus, contient toutes les dépendances et facilite le déploiement. + +Le service peut être démarré grâce à la commande suivante : + +``` sh +docker run -d --name idiamant \ + -e PALAZZETTI_HOST=192.168.1.1 \ + -e PALAZZETTI_PULL_STATUS=5 \ + leclubber/idiamant2mqtt +``` + +Ou en docker-compose (recommandé) : + +``` yaml +version: '3' +services: + palazzetti: + container_name: idiamant + image: leclubber/idiamant2mqtt + privileged: true + restart: always + environment: + - MQTT_PORT=1883 + - MQTT_HOST=mqtt + - MQTT_TOPIC=homeassistant + - IDIAMANT_USER= + - IDIAMANT_PASSWORD= + - IDIAMANT_CLIENT_ID= + - IDIAMANT_CLIENT_SECRET= +``` + +Certaines variables d'environnement sont optionnelles, elles possèdent une valeur par défaut. Toutes les variables d'environnement sont les suivantes : + +- MQTT_PORT (1883 par défaut) +- MQTT_HOST (mqtt par défaut) +- MQTT_TOPIC (homeassistant par défaut) +- MQTT_USER (vide par défaut) +- MQTT_PASSWORD (vide par défaut) +- IDIAMANT_USER (aucun par défaut) +- IDIAMANT_PASSWORD (aucun par défaut) +- IDIAMANT_CLIENT_ID (aucun par défaut) +- IDIAMANT_CLIENT_SECRET (aucun par défaut) + +Un fichier [docker-compose.yml](docker-compose.yml) est disponible pour exemple, avec toutes les variables d'environnement ainsi que les services homeassistant et mqtt. + +Une fois votre fichier docker-compose.yml réalisé, il faut lancer la commande suivante pour démarrer le ou les services configurés : + +``` sh +docker-compose up -d +``` + +### Python + +Il faut récupérer le contenu du dossier [idiamant](idiamant) et le mettre sur votre futur serveur. + +Certaines variables d'environnement sont optionnelles, elles possèdent une valeur par défaut (voir section Docker). +Chaque variable sera définie de cette manière : + +``` sh +export ENV_VAR=valeur +``` + +Exécuter ensuite les lignes suivantes : + +``` sh +pip install -r requirements.txt +chmod +x *.py +./server.py +``` + +## Configuration de Home-Assistant + +Le iDiamant dans Home-Assistant fonctionne avec le discovery de MQTT. Il suffit de s'abonner dans Home-Assistant au canal souhaité ("homeassistant" par défaut). + +**Optionnel :** On peut également le déclarer via le fichier de configuration [configuration.yaml](configuration.yaml). Il faut ajouter un module "cover" de cette façon : +``` yaml +cover: + TODO +``` + +Vous pourrez alors : +- Monter, descendre et arrêter les volets +- Renommer dans Home-Assistant chaque volet + +## Todo list + +- [x] Initialisation des config dans MQTT +- [x] Discovery MQTT +- [x] Documentation +- [x] Utilisation d'un login/mot de passe pour le broker MQTT +- [x] Publier image Docker en multiple arch +- [ ] Attente du serveur MQTT si non disponible +- [ ] Tester les paramètres et gestion d'erreur +- [ ] Utilisation de certificat pour le broker MQTT diff --git a/docker-compose.yml b/docker-compose.yml index 205e799..af9904c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,8 +25,8 @@ services: idiamant: container_name: idiamant - # image: leclubber/idiamant2mqtt - build: ./idiamant + image: leclubber/idiamant2mqtt + # build: ./idiamant privileged: true restart: always environment: @@ -37,5 +37,4 @@ services: - IDIAMANT_PASSWORD=${PASSWORD} - IDIAMANT_CLIENT_ID=${CLIENT_ID} - IDIAMANT_CLIENT_SECRET=${CLIENT_SECRET} - - IDIAMANT_PULL_STATUS=5 diff --git a/idiamant/Dockerfile b/idiamant/Dockerfile index 37641c3..5760d51 100644 --- a/idiamant/Dockerfile +++ b/idiamant/Dockerfile @@ -3,7 +3,6 @@ FROM python:3-alpine ENV MQTT_PORT 1883 ENV MQTT_HOST mqtt ENV MQTT_TOPIC homeassistant -ENV IDIAMANT_PULL_STATUS 5 WORKDIR /usr/src/idiamant COPY requirements.txt requirements.txt