Menu
À propos Services Parcours Travaillons ensemble
Raspberry Pi and smart home components
Smart Home Mar 1, 2026 • 20 min de lecture

Operation Smart Home: A Father-Son Mission Brief

Today my son and I execute our smart home plan. Raspberry Pi 5, follow-me lighting, WiFi sensing. The hardware's ready, the code's tested. Time to build.

Partager:
Lee Foropoulos

Lee Foropoulos

20 min de lecture

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.

Mieux vaut échouer comme Zorba que rester les bras croisés.

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é.

  1. 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.
  2. 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.

Home automation dashboard
D'ici ce soir : tout unifié sous un seul tableau de bord

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-ce

Portainer 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: host

Le 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.

Close-up of a circuit board with electronic components
Les cartes ESP32 sont flashées, testées et prêtes à intégrer

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.

$50
Coût total des cartes ESP32 pour une couverture de détection WiFi dans toute la maison avec 3 capteurs et 3 appareils de brouillard.

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_triggered

Le 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: 5

Vous 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.

Check-list de Construction Maison Intelligente 0/6

"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.

How was this article?

Partager

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

Ne manquez aucun article

Recevez une notification lors de la publication de nouveaux articles. Aucun courriel requis.

Vous verrez une banniere sur le site quand il y a un nouvel article, plus une notification navigateur si vous autorisez.

Notifications du navigateur uniquement. Pas de spam, pas de courriel.