❌

Vue normale

  • ✇Korben
  • CTFreak - L'ordonnanceur de tâches pour toutes vos machines
    -- Article en partenariat avec CTFreak -- Sauvegarder un dossier sur un serveur, vérifier l'espace disque du PC du salon, relancer un service sur le NAS, et j'en passe... Chez moi ça se concrétise au travers de crontabs différents et de tâches planifiées Windows, et malheureusement, comme je n'ai pas toujours le nez dessus, le jour où l'une d'elles tombe en rade, bah je m'en rends compte des jours, voire des semaines plus tard... Heureusement, il existe un outil qui s'appel
     

CTFreak - L'ordonnanceur de tâches pour toutes vos machines

1 octobre 2026 à 03:13
-- Article en partenariat avec CTFreak --

Sauvegarder un dossier sur un serveur, vérifier l'espace disque du PC du salon, relancer un service sur le NAS, et j'en passe... Chez moi ça se concrétise au travers de crontabs différents et de tâches planifiées Windows, et malheureusement, comme je n'ai pas toujours le nez dessus, le jour où l'une d'elles tombe en rade, bah je m'en rends compte des jours, voire des semaines plus tard... Heureusement, il existe un outil qui s'appelle CTFreak et qui permet de centraliser tout ça derrière une seule interface web !

CTFreak, c'est donc un ordonnanceur de tâches auto-hébergé, édité en solo par Jean-Yves Pellé, un développeur français, et cela depuis presque 4 ans. Vous l'installez chez vous, il se connecte à vos machines en SSH ou en WinRM, et il y exécute tout ce que vous lui demandez. C'est top parce que grâce à ça, il n'y a même rien à installer sur les machines pilotées.

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

CTFreak vous propose ainsi 9 types de tâches à créer. La commande locale par exemple tourne sur la machine qui héberge CTFreak, et la commande distante fait la même chose mais sur un ensemble de machines de votre choix. Ensuite viennent les tâches de type scripts bash et PowerShell, les playbooks Ansible, les scripts SQL, ou encore les rapports SQL qui sortent de vrais tableaux et autres graphiques directement depuis vos bases de données (pratique pour illustrer vos rapports).

Il y a aussi la classique requête HTTP, pour taper sur une API ou vérifier qu'un site répond. Et surtout le "workflow", c'est-à-dire une tâche dont le boulot est d'en déclencher d'autres, en série ou en parallèle. Vous pouvez même imbriquer des workflows dans des workflows, si le cœur vous en dit, et surtout, si vous n'avez pas peur de vous y perdre.

Les neuf types de tâches proposés à la création, de la commande locale au rapport SQL

L'installation, c'est une minute chrono

Pour installer CTFreak, vous récupérez le binaire, vous le rendez exécutable, et c'est finito ! C'est un fichier unique de 56 Mo, sans la moindre dépendance, dispo en amd64 comme en arm64 (j'ai fait mes tests sur une Ubuntu 24.04 en ARM). Et il est également dispo en paquets Docker, Snap et Cloudron, mais ils tournent en bac à sable et n'embarquent pas Ansible, donc si les playbooks vous intéressent, restez sur le binaire. Comme l'URL de download se termine par l'architecture, pensez bien à remplacer amd64 par arm64 si votre machine est en ARM.

sudo curl -sL https://ctfreak.com/download/release/latest/linux/amd64 -o /usr/local/bin/ctfreak
sudo chmod +x /usr/local/bin/ctfreak
ctfreak run

Ouvrez ensuite http://IP-du-serveur:6700 et connectez vous avec admin / ctfreak. Changez ce mot de passe tout de suite dans le menu Profile, et surtout n'exposez pas ce port sur Internet sans un reverse proxy devant. En effet, cette interface va bientôt contenir les accès de toutes vos machines.

Ensuite pour en faire un service qui redémarre tout seul, copiez l'unité systemd de la doc d'installation dans /etc/systemd/system/ctfreak.service, puis activez-la.

sudo systemctl daemon-reload
sudo systemctl enable --now ctfreak

Et voilà, vous êtes prêts à commencer !

Votre première tâche planifiée

Tout se passe dans un projet, donc vous en créez un (j'ai appelé le mien Homelab), puis vous cliquez sur New task. Le plus simple pour commencer est la commande locale. Je lui ai collé une archive de mon dossier Documents, et coché Scheduled avec une expression cron pour 3h30 du matin.

tar -czf /home/korben/sauvegardes/documents-$(date +%F).tar.gz -C /home/korben Documents

Le bouton Execute permet de lancer la tâche tout de suite, pour ne pas attendre 3h30 pour savoir si ça marche, et la page d'exécution affiche le statut, la durée et le journal complet. La fiche du projet vous montre ensuite les deux informations qui manquent toujours avec cron : 1/ quand est ce que la tâche est passée pour la dernière fois, et 2/ si elle s'est bien terminée.

Le PC Windows en machine distante

Là où ça devient intéressant, c'est quand vous ajoutez d'autres machines. Côté CTFreak il n'y a aucun agent à déployer, mais côté cible il faut quand même activer le serveur SSH intégré de Windows (ou WinRM, au choix) et installer PowerShell 7.2 ou plus récent, sans quoi les journaux d'erreur remonteront mal. Vous enregistrez ensuite le mot de passe ou la clé dans Credentials, vous déclarez la machine dans Nodes avec son OS, son IP et son identifiant, et le bouton Ping vous dira tout de suite si la connexion passe.

Ensuite vous créez une tâche de type Powershell Script, moi je l'ai planifiée tous les lundis à 8h. Le champ Node Set filter accepte ensuite des noms de machines, mais surtout des tags : j'ai mis #windows, donc toute machine que je taguerai comme ça entrera dans la tâche sans que je la retouche. C'est bien fichu hein ?

$libre = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
Write-Host "Espace libre sur C: $libre Go"
if ($libre -lt 30) { Write-Error "Alerte : moins de 30 Go libres" ; exit 1 }

Le script PowerShell, l'expression cron du lundi matin et le filtre #windows qui trouve une machine

Et le journal qui remonte ensuite est vraiment complet. On y retrouve chaque ligne horodatée à la microseconde, la sortie du script, et le code de retour qui décide du statut. Ma machine Windows n'ayant que 22,1 Go de libre, la tâche a échoué comme prévu et s'est affichée en rouge dans la liste.

Le journal de l'exécution ratée : la sortie du script sur la machine distante, puis la sortie en erreur

Tout ce qu'il y a autour

Alors bien sûr, une tâche qui plante sans prévenir personne, ça ne sert pas à grand-chose. C'est pourquoi CTFreak permet d'envoyer des alertes sur Discord, Slack, Mattermost, Microsoft Teams, Telegram, ntfy ou par mail. Il peut même ouvrir directement un ticket dans GitHub, GitLab, Jira, Linear ou YouTrack quand un truc casse.

Dans l'autre sens, chaque tâche expose un webhook entrant, ce qui permet de la déclencher depuis un dépôt Git ou n'importe quel outil tiers, et une API REST complète fait pareil mais par script.

Le reste ensuite, c'est que du confort qui se découvre quand on utilise l'outil... Il y a par exemple une explorateur de fichiers qui parcourt vos machines depuis le navigateur, des calendriers qui empêchent une tâche de tomber un jour férié, ou encore la possibilité de partager vos projets entre équipe avec différents droits d'accès. L'authentification passe même par votre fournisseur OpenID Connect si vous en avez un.

Et les données dans tout ça ?

Hé bien elles restent bien au chaud dans un dossier avec une base SQLite dedans. C'est pratique parce que, si vous voulez sauvegarder votre ordonnanceur, il suffit juste de faire une copie de ce dossier.

Ce que la version gratuite ne fait pas

Maintenant, avant de vous lancer, sachez que l'édition gratuite vous limite à 8 tâches, avec 1 paramètre par tâche, 3 utilisateurs, 1 calendrier, 1 notificateur d'alerte et 1 notificateur de tickets. Surtout, elle n'exécute rien en parallèle. Vos tâches passent une par une, quel que soit le nombre de machines visées. Par contre, bonne nouvelle, le nombre de machines pilotées n'est bridé dans aucune édition. Vous pouvez donc déclarer 3 nœuds comme 50 sur la version gratuite, c'est le nombre de tâches qui limité dans la version gratuite, mais pas la taille de votre parc.

Autre chose à savoir aussi, c'est que les secrets (mots de passe...etc) sont stockés tels quels en clair dans la base SQLite. C'est bien indiqué dans la documentation, donc ce n'est pas une surprise, mais heureusement, y'a une commande qui permet de basculer tout ça en AES-256-GCM :

sudo systemctl stop ctfreak && ctfreak encrypt AES && sudo systemctl start ctfreak

Faites-le, mais préférez quand même une clé SSH dédiée à un mot de passe de compte.

Côté tarifs, la page affiche l'édition Pro à 369 € la première année puis 299 €, la Business à 599 € puis 519 €, et la Sovereign à 899 € puis 799 € pour les environnements coupés d'Internet, le tout par instance.

Et si vous partez sur l'édition Pro, le code KORBEN15 vous fait 15 % de réduction sur la première année. Il est valable jusqu'au 31 octobre 2026 inclus.

Reste que pour du homelab, la version gratuite est téléchargeable ici et suffit largement pour se faire une idée.

  • ✇Korben
  • Je me suis remis à la domotique grâce à un vieux mini PC et Claude Code
    Ce mois-ci, je suis en mode déménagement / vidage de cartons / montage de meubles Ikea et bien sûr, j'en profite pour réinstaller mon matos... Mon système d'alarme, mes caméras et un peu de domotique. Sauf que la domotique, c'est pas mon kif car même si j'aime l'idée d'avoir des automatisations chez moi, ça fonctionne un moment, puis après ça ne fonctionne plus, souvent parce que les Raspberry Pi passent leur temps à corrompre les cartes SD... Puis surtout, je manque de temps pour me prendre la
     

Je me suis remis à la domotique grâce à un vieux mini PC et Claude Code

17 août 2026 à 06:02

Ce mois-ci, je suis en mode déménagement / vidage de cartons / montage de meubles Ikea et bien sûr, j'en profite pour réinstaller mon matos... Mon système d'alarme, mes caméras et un peu de domotique.

Sauf que la domotique, c'est pas mon kif car même si j'aime l'idée d'avoir des automatisations chez moi, ça fonctionne un moment, puis après ça ne fonctionne plus, souvent parce que les Raspberry Pi passent leur temps à corrompre les cartes SD... Puis surtout, je manque de temps pour me prendre la tête à régler des scénarios au poil de cul.

Mais là, c'est aussi un peu les vacances et y'a plusieurs paramètres qui ont changé. Déjà la nouvelle maison est plus petite. J'ai aussi un mini PC à disposition qui ne faisait pas grand chose. J'ai également une caisse de matos divers et variés (Zigbee / Zwave et autre) qui prend la poussière. Et puis les nouveautés dans ma vie, c'est bien sûr l'IA et Alexa.

Je me suis donc chauffé un peu, et je vais vous raconter ce que j'ai mis en place ces derniers temps.

Étape 1 : le mini PC qui dormait dans un carton

Le point de départ, c'est ce mini PC. Un NiPoGi Pinova P1 (lien affilié) que j'avais acheté en 2023, un Ryzen 3 4300U avec 16 Go de RAM et 1 To de SSD, qui n'avait jamais vraiment trouvé sa vocation. Complètement surdimensionné pour de la domotique, vous vous en doutez, et c'est exactement pour ça qu'il est parfait.

Parce que le vrai sujet, c'est pas la puissance, c'est le stockage. Mes install précédentes mouraient toutes de la même façon : une carte SD qui rend l'âme au bout de quelques mois d'écritures permanentes. Là, le système tourne sur un SSD, et rien que ça, ça règle le problème qui m'avait dégoûté les fois d'avant.

J'ai donc collé Home Assistant OS dessus, ce qu'on appelle HAOS pour les intimes. C'est la version "système d'exploitation" qui prend la machine entière et qui pilote tout elle-même, sans Linux à administrer en dessous ni Docker à maintenir. Et puis avec cette version, vous récupérez au passage le magasin d'add-ons et les sauvegardes automatiques, sans rien configurer. Sur une machine dédiée qui ne fait que ça, c'est franchement le mode le plus tranquille.

Et là, premier petit piège à savoir au niveau du BIOS si vous vous lancez... Pour démarrer, HAOS exige en effet que le mode UEFI soit activé et que le Secure Boot soit désactivé. Si vous zappez ça, votre clé USB ne bootera jamais et vous allez tourner en rond un bon moment.

Et tant que vous êtes dans le BIOS, y'a un troisième réglage dont la doc ne parle pas et qui est pourtant le plus important sur la durée : le comportement après une coupure de courant. Ça s'appelle "Restore on AC Power Loss", "After Power Failure" ou "AC Back Function" selon les marques, et il faut le passer sur "Power On". Sans ça, la moindre micro-coupure vous laisse une maison sans domotique jusqu'à ce que quelqu'un rentre appuyer sur le bouton. Et ça, croyez-moi, on n'en veut pas quand on est parti en vacances.

Le reste après, c'est du classique. Vous récupérez l'image générique x86-64 et vous la flashez sur une clé USB avec Balena Etcher. Attention à bien prendre haos_generic-x86-64 et pas une version pour Raspberry Pi ou pour machine virtuelle, sinon vous allez vous demander longtemps pourquoi ça ne démarre pas. Ensuite vous bootez le mini PC sur la clé, l'installeur écrit le système sur le SSD interne, et c'est plié. Vous retirez la clé, ça reboote, et l'interface vous attend :

http://homeassistant.local:8123

Si ça ne répond pas, c'est que votre box ne fait pas de mDNS, allez juste chercher l'IP dans sa liste de clients. Et voilà, un Home Assistant tout neuf.

Maintenant, passons à la suite parce que j'ai une caisse pleine de matos à réveiller.

Première galère : Faire parler le Zigbee

Dans ma caisse, y'avait notamment un dongle USB Sonoff (lien affilié) pour le Zigbee. Je le branche, et je décide de partir sur Zigbee2MQTT plutôt que sur ZHA, l'intégration native. Le choix se paye tout de suite en complexité (il faut un broker MQTT à côté, Mosquitto en l'occurrence), mais il se rembourse largement après, parce que Zigbee2MQTT expose absolument tous les réglages internes des appareils. Vous verrez plus bas pourquoi c'est déterminant.

Le mini PC qui va me faire oublier mes galères avec le Raspberry Pi

Sauf que rien ne s'est passé comme prévu. J'installe les modules recommandés, et Zigbee2MQTT n'apparaît tout simplement pas dans la liste. Bon. Une fois que j'ai réussi à le sortir de sa cachette, c'est la configuration du port série de la clé qui m'a offert un vrai moment de solitude : on modifie, on clique sur "Submit", ça a l'air de sauvegarder... et la page revient vierge, sans plus rien à sélectionner. Allez savoir si le réglage est passé ou pas !

Le truc à retenir en fait, c'est qu'il faut désigner la clé par son identifiant stable et pas par un /dev/ttyUSB0 qui peut changer au reboot. Le chemin ressemble à ça :

/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_...-if00

Une fois ça compris, le bridge est monté et n'a plus bougé. Mais c'est ce genre de conneries qui font lâcher la domotique à pas mal de monde, je pense.

Deuxième galère : mes appareils étaient otages du cloud

Deuxième claque, et celle-là est plus vicieuse. Mes prises connectées Meross, je les avais appairées à l'époque avec l'app du fabricant. Résultat, elles étaient déjà mariées au cloud Meross, et impossible de les récupérer proprement depuis l'app iPhone pour les basculer ailleurs.

La solution est donc passée par HACS, le magasin de composants communautaires, et un custom component qui s'appelle Meross LAN. L'intérêt, c'est qu'il parle aux prises en local, sur votre réseau, sans faire l'aller-retour par les serveurs du fabricant. Même logique avec l'app Sonoff LAN pour un interrupteur USB que j'avais (lien affilié). Vos automatisations continuent donc de tourner même quand le cloud du constructeur est dans les choux ou quand votre fibre est coupée.

J'ai aussi buté sur un cas plus tordu avec du matos Tuya car j'ai des appareil qui sont vendus sous une autre marque, avec leur app maison, et qui n'existent pas dans le cloud Smart Life sur lequel s'appuie l'intégration Tuya standard. Donc intégration cloud inutilisable... C'est vraiment le problème numéro un de l'objet connecté grand public, et c'est pour ça que je vous conseille de vérifier si un appareil a besoin du cloud avant de l'acheter, pas après.

Du coup, HACS est devenu mon meilleur pote sur ce chantier. J'y ai pris Meross LAN pour les prises, Sonoff LAN pour l'interrupteur, Alexa Media Player pour mes Echo et l'intégration Dyson. Il n'y a que mon capteur de qualité d'air air-Q qui était supporté nativement, sans rien avoir à installer.

Et pour faire tout ça, j'ai une arme secrète : Claude Code !

Et maintenant, la partie qui a vraiment tout débloqué. Parce que jusqu'ici, j'avais du matériel qui répondait, mais toujours zéro automatisation. Et c'est précisément là que je décrochais avant car l'éditeur graphique de Home Assistant devient vite limitant, et dès qu'on veut une condition un peu fine, on se retrouve à taper du YAML avec des templates Jinja et à se planter d'indentation ou de paramètres.

Du coup j'ai fait un truc très à la mode en ce moment... J'ai branché Claude Code directement sur mon Home Assistant via un serveur MCP conçu spécialement pour ça . En gros, le MCP c'est ce qui donne des outils concrets à l'IA. Grâce à ça elle peut lister mes entités, lire leur état en direct, et surtout écrire les automatisations dans HA. Je décris ce que je veux en français, il va regarder ce que j'ai réellement comme capteurs chez moi, et il écrit le scénario.

Et ça pour moi, ça change complètement le rapport tordu que j'ai à ma domotique. Et voilà comment en quelques jours, je me suis retrouvé avec 21 automatisations qui tournent, ce que je n'aurais jamais fait à la main. Pas parce que l'IA est magique, mais parce qu'elle supprime la friction. Je n'ai qu'à formuler les idées qui me passent par la tête et l'IA fait le job sans que j'ai à me galérer avec du paramétrage.

À noter que Home Assistant a aussi sa propre intégration Model Context Protocol Server depuis la version 2025.2, mais elle fait plutôt l'inverse : elle expose vos appareils à un assistant. Moi je voulais un truc qui écrive la config à ma place.

Mon vrai défi : Passer l'été sans clim

Voilà le scénario dont je suis le plus fier, parce qu'il résout un problème que j'ai vraiment dans cette nouvelle maison : pas de clim, et un bureau qui monte en température. Ce n'est pas que je ne veux pas en installer , c'est que je viens d'arriver, que y'a pénurie de ventilos et de pompes à chaleur et en plus je suis en location, donc ce n'est pas si simple que ça. Mes seules armes pour le moment, c'est donc un Dyson qui filtre et qui brasse, et des fenêtres à ouvrir au bon moment.

Mon fidèle ventilo !

Ce que j'ai fait du coup, c'est que le Dyson démarre tout seul quand l'air se charge en pollution et s'arrête quand c'est redevenu propre. Concrètement il se lance quand les PM2,5 dépassent 10 µg/m³ ou les PM10 dépassent 18 µg/m³ pendant 5 minutes d'affilée. Les 5 minutes de délai, c'est important car sans ça, un simple passage devant le capteur déclenche tout.

Mais le truc dont je suis vraiment content, c'est qu'il ne souffle pas pareil selon si je suis là ou pas. Si le capteur de présence me détecte, il démarre à 20% seulement, histoire de rester silencieux pendant que je bosse. Si je suis absent, il part direct à 100% et il purge la pièce à fond. Même logique pour les COV : au-dessus de 1000 ppb, c'est 30% en ma présence et 100% quand j'ai le dos tourné.

Le reste suit la même idée : une purge à fond pendant mon absence, un régime plus doux dès que je rentre dans la pièce, le mode nuit uniquement si je suis présent, et une alerte quand les filtres arrivent en bout de course.

Mais le vrai casse-tête, c'était l'aération. Parce que oui, quand l'air intérieur devient mauvais, la solution évidente c'est d'ouvrir les fenêtres. Sauf qu'en pleine canicule, ouvrir c'est la pire idée du monde : vous virez vos polluants et vous encaissez 35 degrés à la place. Je me suis retrouvé au départ plusieurs fois avec Alexa qui me disait d'aérer alors que c'était juste pas possible.

La solution que j'ai trouvé, c'est donc de mettre en place un scénario qui ne me conseille d'ouvrir que si quatre conditions sont réunies en même temps : il fait plus de 26 degrés chez moi, il fait au moins 2 degrés de moins dehors, l'air extérieur est plus sec que le mien, et la qualité de l'air extérieur est correcte. Alors let's go, Alexa me dit d'ouvrir les fenêtres. Et ça, elle le réévalue toutes les 10 minutes.

La condition sur l'humidité est celle à laquelle je n'avais pas pensé au départ, et que Claude Code m'a conseillé de lui-même, et c'est pourtant la plus utile. Comparer les températures toutes seules, ça ne suffit pas, c'est pourquoi le scénario compare les points de rosée, et pas les pourcentages d'humidité. Parce que de l'air à 24 degrés bien humide vous rafraîchit beaucoup moins que de l'air à 25 degrés bien sec, et vous vous retrouvez avec une pièce moite que vous mettrez la nuit à assécher.

Les notifs que j'ai sur le smartphone et qui sont lues par Alexa

Petite subtilité technique au passage : je ne regarde pas la température qu'il fait dehors, mais la plus chaude des deux prochaines heures. Ça évite d'ouvrir dix minutes avant que ça remonte. Et ça oblige à passer par un helper, parce qu'un template Home Assistant ne peut pas appeler un service tout seul... il faut donc une automatisation qui va chercher la prévision et la dépose dans une variable, toutes les 10 minutes.

Et surtout, il me dit quand refermer, avant que la chaleur ne revienne. Là, je referme quand la fraîcheur est acquise, quand la prévision annonce que c'est fini, ou quand l'air du dehors se dégrade. Et le message diffusé par Alexa m'explique laquelle des trois raisons s'applique.

Deux petits helpers mémorisent aussi qu'une aération est déjà en cours, histoire qu'Alexa ne me répète pas la même chose toutes les cinq minutes. Et si je m'absente pendant l'opération, j'ai droit à un rebriefing en rentrant.

Au passage, j'ai fait deux erreurs de débutant. La première c'est que j'avais posé mon capteur de qualité d'air juste à côté de la fenêtre. Il mesurait donc l'air de la rue et pas celui de mon bureau, et les scénarios se déclenchaient n'importe quand. Déplacé au fond de la pièce, tout est redevenu cohérent. Bref, placez vos capteurs là où vous vivez, pas là où c'est pratique à brancher.

La seconde, c'est que j'ai fini par limiter les annonces vocales sur la plage 8h-22h parce que se faire réveiller à 3h du matin par une enceinte qui vous parle de particules fines, ça vous passe l'envie de la domotique très vite !

Et si vous n'avez pas de clim non plus et que vous cherchez plus radical, Vincent avait aussi testé un rafraîchisseur pendant la canicule .

Le petit capteur qui a tout changé

Dans ma caisse à domotique, y'avait aussi un détecteur de présence Moes (lien affilié) en Zigbee, à ondes millimétriques, ce qu'on appelle un capteur mmWave. Un petit module qui coûte trois fois rien, et c'est clairement ma meilleure surprise de tout ce chantier.

Parce qu'un détecteur de mouvement classique, un PIR, détecte la chaleur qui bouge. Donc quand vous êtes assis à votre bureau en train de lire ou de regarder une vidéo, au bout de deux minutes il décide que la pièce est vide et vous éteint la lumière. Alors que le mmWave, lui, détecte la présence statique : il vous voit même immobile, parce qu'il capte les micro-mouvements et la respiration. Pour un bureau, c'est le jour et la nuit !

Le capteur AirQ à gauche / Le capteur mmWave à droite

Et c'est ici que le choix de Zigbee2MQTT paye enfin, parce qu'il expose tous les réglages internes du capteur. J'ai pu fixer la distance de détection à 225 cm, les sensibilités de mouvement et de présence statique à 4 sur 5, et un délai avant extinction de 20 secondes. Ce réglage de distance est important puisque le capteur peut porter jusqu'à 6 mètres, et à pleine portée il traverse allègrement une cloison pour aller détecter la pièce d'à côté.

Le résultat, c'est que quand j'approche de mon bureau, ma barre lumineuse BenQ s'allume toute seule via mon interrupteur Sonoff. Une deuxième automatisation allume la lampe d'ambiance sur une prise Meross, et une troisième éteint tout quand je quitte la pièce.

Et surtout, le déclencheur n'est pas la présence, mais la distance : la barre s'allume quand la cible passe sous 175 cm et ce chiffre-là, je ne l'ai pas sorti de mon chapeau. J'ai relevé 25 mesures en me plaçant assis, debout et en circulant derrière le bureau. Comme ça, un seuil serré exclut proprement tout ce qui n'est pas moi devant mon écran. Si vous devez retenir une chose sur le mmWave, c'est de bien noter vos vraies distances avant de choisir un seuil, sinon vous passerez des semaines à corriger des déclenchements bizarres.

Rien de spectaculaire au final, mais c'est un super confort !

Et forcément, des trucs ont cassé

Parce que non, même avec l'IA tout ne marche pas du premier coup. Une nuit, je quitte le bureau juste après minuit, et le lendemain matin je retrouve toutes les lumières allumées. Huit heures dans le vide. L'automatisation d'extinction sur absence n'était pourtant pas cassée : elle n'a simplement jamais eu l'information qu'il fallait pour se déclencher.

Le coupable, c'est le défaut classique des radars mmWave : la cible fantôme. Le capteur s'est verrouillé sur un écho statique et a continué à annoncer quelqu'un dans la pièce, en oscillant tranquillement entre 241 et 269 cm toute la nuit. Pour Home Assistant, j'étais donc toujours là. C'est ça la contrepartie de la détection statique... quand un radar voit quelqu'un d'immobile, il ne sait pas faire la différence entre vous et un artefact.

La parade, c'est donc une automatisation garde-fou : si la cible reste au-delà de 175 cm pendant 90 minutes d'affilée alors que les lumières sont allumées, on éteint tout. Le seuil reprend la calibration de la barre BenQ, et les 90 minutes valent le double de la plus longue plage légitime que j'aie observée sur trois jours (49 minutes). Elle ne remplace pas l'extinction sur absence, mais rattrape le cas où celle-ci n'a jamais pu partir.

Bref, l'IA écrit vite les scénarios c'est sûr, mais elle ne les teste pas en conditions réelles dans votre vraie maison. Un scénario parfait sur le papier peut très bien ne jamais se déclencher parce qu'un capteur ment donc il faut comprendre ce qui a été écrit, et surtout aller regarder l'historique quand quelque chose cloche.

Et puis y'a les petites morts silencieuses... Une de mes prises connectées est passée en "unavailable" et y est restée plusieurs jours sans que je m'en rende compte. C'est un autre piège de la domotique... Quand un truc tombe, rien ne vous prévient, ça arrête juste de marcher. D'où l'intérêt d'avoir aussi des automatisations qui surveillent votre installation elle-même, et pas seulement votre maison.

Voilà, c'est un petit début, mais ça me permet de me remettre en selle tranquillement. En tout cas, l'option mini PC + LLM est un bon choix pour avoir une install domotique rapidement fonctionnelle, je pense.

La suite du programme

Ce que j'ai fait aussi c'est installer Tailscale sur le mini PC, pour accéder à mon Home Assistant depuis l'extérieur sans ouvrir le moindre port sur ma box. C'est de loin la méthode la plus propre, et c'est gratuit pour un usage perso.

Ensuite, je pense que je vais sortir les ESP32 du tiroir. L'add-on ESPHome est déjà installé, il ne me manque plus que le courage de m'y mettre. Si ça vous tente, j'avais montré comment transformer un ESP32 à 5 euros en capteur domotique.

J'ai aussi pas mal de matos Z-Wave à recycler, donc je pense que je vais aussi prendre une petite clé Z-Wave à rajouter sur l'ordi.

Voilà pour ce début d'aventure domotique dans mon nouveau chez moi. Pour le moment, je me suis surtout concentré sur l'aération, la pollution, la gestion de la chaleur mais je pense que j'aurais de nouveaux scénarios qui viendront peupler mes rêves dans les semaines qui viennent et je ne manquerai pas de vous en causer.

❌