Synthèse, accueil

Projets

Maison

Toute la maison pilotée en local, en Rust : Hue en Zigbee sur un Raspberry Pi 1, l'IRDA d'une vieille clim, des prises Meross en protocole natif, et les couleurs Tempo prédites des jours à l'avance, jusqu'aux oreilles et au ventre du lapin. Le bot Twitch homie va jusqu'à donner des super-pouvoirs aux viewers.

Rustdomotique

Rôle
Conception, développement, protocoles, auto-hébergement.
Période
Depuis 2025
Stack
Rust (axum), Zigbee (EZSP), Infrarouge Broadlink, Matter, SvelteKit, Cloudflare Tunnel
Liens
Le tableau de bord de Maison sur ordinateur, avec une maison fictive : une rangée de pastilles d'état, puis les scènes, Tempo (jour blanc, heures pleines jusqu'à 22 h), les lampes et leurs curseurs, le distributeur, la fontaine et la litière du chat, le climatiseur Mitsubishi, le volet du salon, les prises et leur puissance en direct, le lapin et la télévision.

Le besoin

En septembre 2025, j’ai écrit une petite API TypeScript pour le distributeur de croquettes Tuya de mon chat. J’y ai ajouté la fontaine, la litière, les ampoules Hue, EDF Tempo et les prises Meross.

En mars 2026, j’ai tout réécrit en Rust, avec chaque appareil piloté sur le réseau local. La cible est un Raspberry Pi 1 modèle B de 2012 : un cœur ARMv6 à 700 MHz et 512 Mo de mémoire. Home Assistant, en comparaison, demande un Pi 4 ou 5 et 2 Go.

À l'usage

Le tableau de bord regroupe tous les appareils : scènes, équipements du chat, climatisation, télévision. Les volets suivent les heures de lever et de coucher du soleil, et un bouton suspend la fermeture du soir.

La télécommande du décodeur TV pilote toute la maison. Le décodeur, sous un firmware modifié, transmet chaque appui à Maison, qui associe chaque touche à un appareil, une application ou une scène.

La page Tempo affiche la couleur du jour, celle du lendemain, les jours restants dans la saison et une prévision à sept jours. Maison envoie aussi ces couleurs au lapin de Clapier. Pendant les streams, Homie, un bot Twitch, permet aux spectateurs d’allumer une lampe, de changer sa couleur ou de servir une portion au chat.

Architecture

Un seul binaire pilote tous les appareils et sert l’application web, publiée par un tunnel Cloudflare : les passkeys exigent un domaine et HTTPS.

Chaque famille d’appareils a son protocole et son pilote. Une tâche unique gère le port série Zigbee, sous watchdog ; chaque appareil Tuya garde une session TCP supervisée ; les prises Meross reçoivent du JSON signé en HTTP.

L’infrarouge pilote les appareils qui ont seulement une télécommande. Chaque trame de la pompe à chaleur Mitsubishi contient l’heure de l’appareil, que Maison recalcule à chaque envoi. L’API JointSPACE du téléviseur se bloque sur une route inconnue : tous les appels passent par une file unique, espacés d’un intervalle minimal.

Tempo, une semaine à l’avance

Pour prévoir la couleur, j’ai repris la méthode publiée par RTE. Appliquée à la consommation mesurée de 2014 à 2026, elle retrouve la couleur officielle 96 % des jours. Maison l’alimente avec les prévisions météo ECMWF et l’exécute 400 fois ; la part de chaque couleur donne sa probabilité.

Sur deux saisons rejouées, la prévision est juste 95,5 % du temps à un jour et 89,9 % à sept jours, contre 81,8 % en annonçant toujours du bleu. Le modèle est recalibré une fois par an sur Mac ; sur le Pi, une prévision prend quelques millisecondes.

Décisions

Le réseau local d’abord. Chaque appareil est piloté sur le réseau local ; le tunnel expose seulement l’application web.

Une empreinte mesurée. Le binaire pèse environ 20 Mo et occupe environ 18 Mo de mémoire ; le Pi complet utilise 67 Mo sur 427.

Attendre l’heure exacte. Le Pi démarre avec l’heure enregistrée à l’arrêt, que NTP corrige ensuite, parfois de plusieurs semaines. Une telle correction a déjà déclenché d’un coup toutes les actions de lever du soleil manquées. Maison attend désormais la synchronisation avant d’émettre un certificat Matter ou de bouger un volet, et rattrape cinq minutes au plus.

Tester contre le vrai backend. Tests Rust unitaires et d’intégration pour les pilotes, Vitest pour les composants, Playwright et axe contre le vrai backend.

Aujourd'hui

Maison pilote la maison tous les jours depuis le Raspberry Pi 1, à côté de Clapier. Le code est public sous licence MIT (synthe-se/maison), et Homie sur uplg/homie.

Un projet en tête ? Parlons-en