Vous savez ce dont le monde a assez ? Des gens qui parlent de ce qu'ils vont faire "un jour". Des rêveurs assis à ne rien faire, attendant le moment parfait, la configuration parfaite, le truc parfait. Pendant ce temps, la vie continue d'avancer.
"Je sentis une fois de plus combien le bonheur est simple et frugal : un verre de vin, une châtaigne grillée, un misérable brasero, le bruit de la mer. Rien d'autre." — Nikos Kazantzakis, Zorba le Grec
Zorba n'a pas attendu. Zorba a dansé. Zorba a échoué spectaculairement et en a ri. Quand sa grande opération minière s'est effondrée (littéralement effondrée), il a attrapé une bouteille de vin et s'est mis à danser sur la plage. Mieux vaut échouer comme Zorba que rester les bras croisés.
Alors aujourd'hui, mon fils et moi, on passe à l'action. Le plan est tracé. Le matériel est préparé. La plupart a été testé individuellement : les automatisations fonctionnent, les capteurs détectent, le code compile. Maintenant on voit si tout fonctionne ensemble. Est-ce que quelque chose va mal tourner ? Probablement. On est prêts pour les défis ? Absolument. C'est ça la partie fun.
Sans plan, il n'y a pas de chemin. Juste des gens qui parlent pour s'écouter parler. Juste des rêves. Ceci n'est pas un rêve, c'est un briefing d'exécution.
La Mission
D'ici à ce qu'on fasse griller le dîner ce soir, cette maison pourra :
- Allumer les lumières dans la pièce où vous entrez, les atténuer derrière vous quand vous sortez
- Verrouiller chaque porte quand le lit détecte qu'on s'est endormis
- Fermer le garage automatiquement quand on oublie (encore)
- Ajuster la climatisation selon quelles pièces sont réellement occupées
- Générer du bruit WiFi pour que personne dehors ne puisse utiliser la même technologie de détection contre nous
Et Amazon n'en saura absolument rien. Tout fonctionne en local. Pas de cloud. Pas d'abonnements. Pas de collecte de données.
L'Arsenal (Déjà Préparé)
Le Cerveau : Raspberry Pi 5 - PRÊT
Cet engin est resté sur mon bureau pendant deux semaines, entièrement configuré, attendant aujourd'hui. Le Pi 5 est excessif pour la domotique basique. J'aime l'excès. Il tourne sous Raspberry Pi OS Lite, Docker est installé, Portainer ronronne. Tout ce que j'ai à faire c'est le brancher là où il va vivre.
J'ai choisi le bundle Argon ONE V3 M.2 NVME PCIE Case. Déjà assemblé :
- SSD M.2 avec l'OS flashé (pas de pannes de carte SD pour nous)
- Docker + Portainer installés et testés
- Conteneur Home Assistant prêt à déployer
- IP statique assignée sur le réseau
Check-list Pré-Vol - COMPLÈTE
- ☑ Raspberry Pi OS Lite flashé sur SSD
- ☑ SSH activé, identifiants configurés
- ☑ Réseau configuré avec IP statique
- ☑ Docker + Portainer en marche
- ☑ Fichiers de configuration Home Assistant préparés
Les Capteurs : Cartes ESP32 - FLASHÉES ET TESTÉES
Ces petites cartes ESP32 ont été la partie amusante. Mon fils et moi avons passé le week-end dernier à les flasher et regarder les données de signal WiFi arriver. Elles fonctionnent. Confirmé.
- Unité de Détection WiFi - Détecte le mouvement en mesurant la perturbation du signal WiFi. Testée en marchant dans le salon : capte le mouvement à travers les murs, portée d'environ 4 à 6 mètres.
- Unité de Brouillard WiFi - Génère du bruit pour aveugler toute détection WiFi externe. Fonctionne en isolation, créant un magnifique chaos dans l'espace spectral.
Aujourd'hui on les intègre dans Home Assistant et on voit si les automatisations se déclenchent correctement. Le code fonctionne en test. La question : est-ce que ça marche quand tout est connecté ?
(Si vous voulez savoir pourquoi c'est important, lisez mes articles sur la détection WiFi et les contre-mesures WiFi.)
L'Infrastructure Existante - DÉJÀ EN PLACE
On ne part pas de zéro. La maison a déjà des trucs connectés ; c'est juste que tout fonctionne sur des applis séparées comme des îles déconnectées. Aujourd'hui on unifie le royaume :
- Ampoules Philips Hue - Déjà installées partout. Actuellement contrôlées par l'appli Hue. Aujourd'hui : Home Assistant prend les commandes.
- Thermostat Ecobee - Sait déjà quelles pièces sont occupées via ses capteurs. Aujourd'hui : on intègre ces données.
- Lit Eight Sleep - Suit déjà quand je dors. Aujourd'hui : ça déclenche l'automatisation de verrouillage nocturne.
- Serrures Kwikset (Z-Wave) - Déjà sur les portes. Aujourd'hui : elles apprennent à se verrouiller toutes seules.
- Garage MyQ - Déjà installé. Aujourd'hui : fini de rentrer à la maison parce que j'ai oublié de le fermer.
Le point important : Vous avez peut-être déjà plus d'équipements connectés que vous ne le pensez. Ils ne se parlent juste pas encore.
Phase 1 : Infrastructure (FAIT)
C'est le travail du week-end dernier. Si vous suivez plus tard, voici ce qu'on a fait. Si vous avez lu mon article sur Docker, vous savez pourquoi on a tout conteneurisé.
bash# Docker + Portainer - Already running
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-cePortainer est en ligne sur http://raspberrypi.local:9000. Belle interface graphique pour la gestion des conteneurs. Vérifié.
Phase 2 : Home Assistant (LA PREMIÈRE TÂCHE D'AUJOURD'HUI)
Le fichier docker-compose est écrit. Le répertoire de configuration est préparé. Aujourd'hui on le lance pour de vrai et on commence à connecter les appareils.
yaml# docker-compose.yml - ready to deploy
version: '3'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- /home/pi/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: hostLe plan : Exécuter docker-compose up -d, lancer l'assistant de configuration, et connecter ces intégrations une par une :
- Philips Hue - Devrait se découvrir automatiquement sur le réseau
- Ecobee - Flux OAuth, besoin d'avoir l'appli sous la main
- Eight Sleep - Intégration API, identifiants prêts
- Z-Wave - Celle-ci pourrait devenir épicée, les serrures peuvent être capricieuses
- MyQ - Simple, déjà fait avant
- ESPHome - Pour les appareils ESP32 qu'on a flashés le week-end dernier
Défi attendu : Z-Wave. Les serrures ont toujours de l'attitude. On verra.
Phase 3 : Intégration de la Détection WiFi (LA PARTIE FUN D'AUJOURD'HUI)
L'Unité de Détection - PRÊTE À CONNECTER
Le week-end dernier mon fils regardait le moniteur série pendant que ce truc me détectait en train de marcher dans le salon. Ses mots exacts : "Papa, c'est flippant et génial."
L'ESP32 est déjà flashé avec ESPHome. Il détecte déjà le mouvement via WiFi CSI (Channel State Information). Aujourd'hui on le branche dans Home Assistant et on lui donne un nom : binary_sensor.living_room_occupied
Le test : Entrer dans le salon. Est-ce que Home Assistant le voit ? Si oui, on est dans la course.
L'Unité de Brouillard - COUCHE DE CONFIDENTIALITÉ PRÊTE
Le second ESP32 fait tourner le générateur de bruit de mon article sur les contre-mesures. Il tourne sur mon établi depuis une semaine, générant un magnifique chaos dans le spectre WiFi.
Oui, on utilise la détection WiFi pour notre propre domotique tout en se protégeant simultanément contre d'autres qui feraient la même chose contre nous. Ce n'est pas de l'hypocrisie. C'est de la sécurité opérationnelle. Et mon fils pense que c'est le truc le plus cool au monde.
Expansion Future : 3+3
L'objectif d'aujourd'hui est de prouver le concept avec un capteur et un appareil de brouillard. Une fois qu'on est confiants :
- 3 Appareils de détection : Salon, cuisine, chambre
- 3 Appareils de brouillard : Distribués partout pour une couverture complète
C'est environ 50 $ de cartes ESP32 pour une mise à niveau complète de la maison. Mais d'abord, assurons-nous que ça marche aujourd'hui.
Phase 4 : Les Automatisations (LE BUT DE TOUT ÇA)
C'est pour ça qu'on a tout construit. Ces fichiers YAML sont écrits, testés dans ma tête une centaine de fois, et prêts à coller. Est-ce qu'ils marcheront du premier coup ? On va le découvrir.
Automatisation 1 : Éclairage Suivez-Moi (LE CLOU DU SPECTACLE)
La vision : Entrez dans une pièce, les lumières s'allument pour vous accueillir. Sortez, et elles s'atténuent derrière vous comme un majordome respectueux. La maison de Tony Stark. C'est l'objectif.
La subtilité : Si vous avez allumé une lumière manuellement, le système la laisse tranquille. Votre choix est respecté. On suit ça avec des helpers input_boolean. Parce qu'il n'y a rien de pire qu'une automatisation qui se bat contre vous.
yaml# configuration.yaml additions
input_text:
last_occupied_room:
name: "Last Occupied Room"
initial: "none"
input_boolean:
living_room_auto_triggered:
name: "Living Room Auto Triggered"
kitchen_auto_triggered:
name: "Kitchen Auto Triggered"
bedroom_auto_triggered:
name: "Bedroom Auto Triggered"Maintenant l'automatisation :
yaml# automations.yaml
- alias: "Follow Me - Living Room Entry"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "on"
condition:
- condition: state
entity_id: light.living_room
state: "off"
action:
# Dim the previous room if it was auto-triggered
- choose:
- conditions:
- condition: template
value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
- condition: state
entity_id: input_boolean.kitchen_auto_triggered
state: "on"
sequence:
- service: light.turn_on
target:
entity_id: light.kitchen
data:
brightness_pct: 20
transition: 3
# Turn on current room
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 100
- service: input_boolean.turn_on
target:
entity_id: input_boolean.living_room_auto_triggered
- service: input_text.set_value
target:
entity_id: input_text.last_occupied_room
data:
value: "living_room"
- alias: "Follow Me - Living Room Vacancy"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "off"
for:
minutes: 2
condition:
- condition: state
entity_id: input_boolean.living_room_auto_triggered
state: "on"
action:
- service: light.turn_off
target:
entity_id: light.living_room
data:
transition: 5
- service: input_boolean.turn_off
target:
entity_id: input_boolean.living_room_auto_triggeredLe test : Une fois que c'est déployé, mon fils et moi allons traverser la maison et voir si ça nous suit. Si ça marche, on va se sentir comme dans un film. Si ça ne marche pas, on déboguera en mangeant de la pizza.
Automatisation 2 : Verrouillage Nocturne (LA TRANQUILLITÉ D'ESPRIT)
Le scénario : Il est 22h. Je me couche. Cinq minutes plus tard, mon Eight Sleep confirme que je dors vraiment (pas juste allongé à scroller). La maison réagit : chaque porte se verrouille, le garage se ferme si j'ai oublié (encore), le thermostat passe en mode nuit, et les lumières automatiques s'éteignent.
yaml- alias: "Bedtime - Eight Sleep Triggered Lockdown"
trigger:
- platform: state
entity_id: binary_sensor.eight_sleep_bed_presence
to: "on"
for:
minutes: 5
condition:
- condition: time
after: "21:00:00"
before: "06:00:00"
action:
# Lock all doors
- service: lock.lock
target:
entity_id:
- lock.front_door
- lock.back_door
# Close garage if open
- service: cover.close_cover
target:
entity_id: cover.garage_door
# Set Ecobee to sleep mode
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Sleep"
# Turn off auto-triggered lights
- service: light.turn_off
target:
entity_id:
- light.living_room
- light.kitchen
data:
transition: 5Vous n'avez pas Eight Sleep ? Remplacez par un déclencheur horaire (22h30) ou la détection de charge du téléphone. La logique est la même.
Automatisation 3 : Fermeture Auto du Garage (LE SAUVE-COUPLE)
Le problème : "T'as fermé le garage ?" - une question posée 3 fois par semaine dans cette maison. C'est fini. Après 10 minutes ouvert, il se ferme tout seul et m'envoie un message.
yaml- alias: "Garage - Auto Close After 10 Minutes"
trigger:
- platform: state
entity_id: cover.garage_door
to: "open"
for:
minutes: 10
action:
- service: cover.close_cover
target:
entity_id: cover.garage_door
- service: notify.mobile_app_your_phone
data:
title: "Garage Secured"
message: "Garage was open for 10 minutes. Auto-closed."
data:
tag: "garage-closed"Automatisation 4 : Climatisation Intelligente (L'ÉCONOMISEUR D'ÉNERGIE)
La logique : Pourquoi chauffer une maison vide ? Quand nos capteurs WiFi disent que personne n'est à la maison depuis 30 minutes, Ecobee passe en mode Absent. Quand quelqu'un entre, il se réveille.
yaml- alias: "Ecobee - Away When House Empty"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "off"
for:
minutes: 30
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Away"
- alias: "Ecobee - Home When Occupied"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "on"
condition:
- condition: state
entity_id: climate.ecobee
attribute: preset_mode
state: "Away"
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Home"Créer le Capteur Agrégé
Le binary_sensor.home_occupied est un capteur template qui combine tous les capteurs de pièce :
yamltemplate:
- binary_sensor:
- name: "Home Occupied"
state: >
{{ is_state('binary_sensor.living_room_occupied', 'on')
or is_state('binary_sensor.kitchen_occupied', 'on')
or is_state('binary_sensor.bedroom_occupied', 'on') }}Qu'est-ce qui Pourrait Mal Tourner ? (La Partie Fun)
Voilà le truc : quelque chose VA mal tourner aujourd'hui. Ce n'est pas du pessimisme, c'est la réalité. Et c'est très bien. C'est tout l'intérêt.
Candidats probables pour l'aventure d'aujourd'hui :
- Serrures Z-Wave - Ces trucs ont du caractère. L'appairage pourrait nécessiter plusieurs tentatives.
- Calibration du capteur WiFi - Ça marche sur l'établi, mais qu'en est-il en position ?
- Cas limites d'automatisation - Que se passe-t-il si quelqu'un traverse une pièce en 2 secondes ?
- Le problème du "ça marchait hier" - La blague préférée de la technologie.
Mais c'est pour ça qu'on fait ça ensemble. Père et fils, en train de résoudre des problèmes, d'apprendre, probablement de se disputer sur pourquoi le YAML ne parse pas. C'est comme ça qu'on apprend vraiment : en construisant quelque chose de réel, en le regardant casser et en le réparant.
La mine de Zorba s'est effondrée. Sa réponse ? Danser sur la plage. Quoi qu'il se casse aujourd'hui, on trouvera une solution. Et si on ne peut pas, on aura une super histoire pour le dîner.
La Philosophie
Voici ce qui sépare ceux qui font de ceux qui rêvent :
Les rêveurs font des recherches pendant des mois. Ils lisent chaque article. Ils attendent le "bon" matériel. Ils optimisent leur plan jusqu'à ce qu'il soit parfait. Ils ne commencent jamais.
Ceux qui font écrivent un plan, rassemblent ce dont ils ont besoin, et exécutent. Ils s'attendent à des défis. Ils s'adaptent en cours de route. Ils échouent vers l'avant.
Sans plan, il n'y a pas de chemin ; juste des gens qui parlent pour s'écouter parler. Mais un plan sans exécution n'est qu'un rêve avec des étapes supplémentaires.
Critères de Succès d'Aujourd'hui
- ☐ Home Assistant en marche avec tous les appareils connectés
- ☐ Capteur WiFi détectant le mouvement dans le salon
- ☐ Éclairage suivez-moi fonctionnel dans au moins une pièce
- ☐ Automatisation de verrouillage nocturne activée
- ☐ Mon fils qui dit "c'est comme la maison de Tony Stark"
La Suite (Après que Ça Marche Aujourd'hui)
En supposant qu'on réussisse (et on réussira, éventuellement, même si ça prend plus de temps que prévu) :
- Déploiement complet 3+3 ESP32 - Détection dans chaque pièce principale, couverture de brouillard complète
- Tablette murale avec tableau de bord - Panneau de contrôle toujours allumé dans le couloir
- Contrôle vocal local - Wyoming/Piper pour des commandes vocales qui ne quittent pas votre maison
- Capteurs de fuite d'eau - Sous chaque évier et près du chauffe-eau
Mais d'abord : aujourd'hui. D'abord : l'exécution. D'abord : prouver que toute cette planification fonctionne vraiment.
"La vie est ce qui vous arrive pendant que vous êtes occupé à faire d'autres plans." - John Lennon
Faux. La vie est ce qui arrive quand on arrête de planifier et qu'on commence à agir. On se voit de l'autre côté. C'est l'heure de construire quelque chose.