2 points par GN⁺ 2024-04-24 | 1 commentaires | Partager sur WhatsApp
  • ESPHome est une plateforme qui transforme des cartes comme ESP32, ESP8266, BK72xx et RP2040 en appareils de maison connectée, avec une configuration en YAML plutôt qu’en C++
  • Elle prend en charge le contrôle local et les mises à jour sans fil, ce qui réduit la dépendance au cloud, et permet de créer divers appareils en combinant capteurs, écrans et composants
  • Le public visé est large, allant des utilisateurs DIY aux intégrateurs professionnels, jusqu’aux fabricants qui créent des produits certifiés Made for ESPHome
  • Les environnements pris en charge incluent les plateformes host pour certains composants, en plus des Espressif ESP32 et ESP8266, du Raspberry Pi RP2040, du Nordic Semiconductor nRF52, du Realtek RTL87xx et du Beken BK72xx
  • Pour démarrer, le parcours via Home Assistant est le plus simple, tandis que les utilisateurs avancés peuvent partir du guide en ligne de commande ou de projets préconfigurés

Des appareils de maison connectée locaux configurés en YAML

  • ESPHome transforme les ESP32, ESP8266, BK72xx, RP2040 et d’autres cartes prises en charge en appareils de maison connectée
  • Les appareils sont configurés à l’aide de fichiers de configuration YAML plutôt qu’avec du code C++ complexe
  • Fonctionnalités principales

    • Configuration sans code : utilise une configuration YAML simple, sans C++ complexe
    • Mises à jour sans fil : permet de mettre à jour les appareils sans y accéder physiquement
    • Conception modulaire : prend en charge des centaines de capteurs, d’écrans et d’autres composants
    • Contrôle local : fonctionne en local sans dépendre du cloud
  • Ressources associées

Profils d’utilisateurs et parcours de démarrage

  • Qui l’utilise

    • Utilisateurs DIY : créent des capteurs, interrupteurs et écrans adaptés à des besoins spécifiques
    • Amateurs de maison connectée : étendent leur système domotique avec des appareils personnalisés à faible coût
    • Intégrateurs professionnels : déploient des appareils intelligents à contrôle local pour leurs clients
    • Fabricants : créent des produits certifiés Made for ESPHome avec un firmware standardisé
  • Microcontrôleurs et environnements d’exécution pris en charge

    • Espressif ESP32 et ESP8266 : prise en charge des microcontrôleurs ESP32 et ESP8266 largement utilisés dans de nombreux projets IoT
    • RP2040 : prise en charge du microcontrôleur RP2040 de Raspberry Pi
    • Autres puces : prise en charge du nRF52 de Nordic Semiconductor, du RTL87xx de Realtek et du BK72xx de Beken
    • Plateforme host de bureau : permet d’exécuter de nombreux composants ESPHome sur un ordinateur de bureau
  • Comment commencer

    • Le parcours le plus simple consiste à démarrer via l’application Home Assistant : Home Assistant Guide
    • Les utilisateurs avancés qui préfèrent la ligne de commande peuvent utiliser un guide dédié : Command Line Guide
    • Les cas d’usage courants peuvent commencer à partir de projets préconfigurés : Browse Projects

1 commentaires

 
GN⁺ 2024-04-24
Commentaires sur Hacker News
  • Je fais partie des personnes qui pilotent ESPHome. S'il y a des questions, n'hésitez pas
    Samedi dernier, nous avons annoncé qu'ESPHome appartient désormais à l'Open Home Foundation
    L'Open Home Foundation est une organisation qui cherche à préserver la vie privée, le choix et la durabilité pour la maison connectée et toutes les personnes qui y vivent : https://www.openhomefoundation.org/blog/announcing-the-open-...

    • Pour ceux qui veulent essayer ESPHome, il est possible de se lancer immédiatement en installant un projet prêt à l'emploi sans écrire une seule ligne de configuration : https://esphome.io/projects/
      On peut transformer des microcontrôleurs bon marché directement depuis le navigateur en assistant vocal, proxy Bluetooth ou lecteur multimédia
    • Je n'ai pas de question, seulement des compliments. ESPHome est vraiment excellent, et j'ai été bluffé chaque fois que j'en ai découvert les fonctionnalités
      J'avais fouillé en profondeur le SDK d'Espressif pour implémenter presque entièrement un interrupteur sans fil avec capteur de température et MQTT, mais dès que j'ai découvert ESPHome, tout le travail que j'avais fait est devenu inutile
      Toutes les fonctions que j'avais écrites existaient déjà, avec en plus bien davantage
    • ESPHome est excellent, mais j'aimerais sortir de l'IoT en Wi-Fi. L'une des grandes raisons, c'est que j'aime l'idée d'un réseau maillé auto-réparateur qui fonctionne entièrement hors ligne sans demander beaucoup de configuration
      Il semble qu'Espressif ait quelques appareils avec des fonctions Zigbee, et je me demande s'il y aura à l'avenir un moyen de créer directement des appareils Zigbee
    • Le projet ESPHome est exceptionnellement compétent et centré utilisateur, et ça fonctionne tellement bien que c'en est presque étrange
      En revanche, je ne sais pas si ce que je voudrais entre dans le périmètre d'ESPHome, ni si cela peut être implémenté proprement, mais j'aimerais pouvoir exécuter dans l'appareil des boucles de rétroaction rapides et des algorithmes embarqués plus complexes
      Par exemple, je voudrais qu'un capteur de luminosité contrôle une ampoule en ajustant continuellement sa luminosité par très petites variations presque imperceptibles, et utiliser quelque chose comme un filtre de Kalman pour maintenir une luminosité et une température de couleur stables selon l'heure de la journée
      Je voudrais aussi contrôler en continu le purificateur d'air, la ventilation, le chauffage, l'humidification, la déshumidification et la climatisation afin d'optimiser l'environnement et la consommation électrique. La ventilation réduit le CO2/TVOC, mais fait entrer du PM2.5 et la température extérieure, et chauffage, climatisation, ventilation et humidité sont liés de manière complexe
      Un chauffage d'appoint coûte beaucoup plus cher que le chauffage principal, mais il est nécessaire quand il fait très froid, et les priorités changent quand personne n'est à la maison : en présence, je veux une humidité supportable, tandis qu'en absence, je veux minimiser l'humidité
      Deuxièmement, j'aimerais qu'ESPHome permette de créer non seulement des appareils Wi-Fi mais aussi des appareils Zigbee
    • Grâce à ESPHome, le flash, la compilation, les logs et les mises à jour OTA sont tous devenus faciles. C'étaient toujours des tâches pénibles auparavant, mais maintenant c'est simple
      Voir les logs en Wi-Fi est presque trop simple pour être vrai
      J'ai fabriqué un mini récepteur/émetteur infrarouge pour piloter un système audio avec une télécommande TV, et la configuration a été très facile, avec une excellente intégration à Home Assistant
  • J'utilise plus de 20 appareils avec ESPHome, dont environ les trois quarts sont intégrés au réseau Home Assistant, tandis qu'environ 6 fonctionnent de façon autonome et communiquent avec les autres via MQTT
    Je surveille une station météo chinoise bon marché dont j'ai remplacé l'intérieur par un ESP32, un réservoir d'eau de pluie, l'humidité du sol d'une serre, la température et l'humidité à plusieurs endroits de la maison, ainsi que la qualité de l'air dans la cuisine et les chambres des enfants
    ESPHome est vraiment un projet sous-estimé. Littéralement en 5 minutes, avec du matériel à 10 dollars et sans programmation, on peut fabriquer soi-même des appareils IoT domestiques et obtenir des données en temps réel partout sur sa propriété

    • Pareil pour moi, c'est tellement peu cher que je garde une dizaine de variantes de cartes ESP32 dans ma boîte à composants
      Le fait d'avoir du matériel à portée de main dès qu'une idée arrive procure une liberté énorme
      C'est étonnamment stable, et des modules comme un contrôleur d'arrosage peuvent être programmés pour fonctionner de manière autonome, donc ils continuent tant qu'ils sont alimentés
      Je ne me suis rendu compte que plusieurs mois plus tard que la carte microSD de Home Assistant était morte, parce que mon équipement hydroponique continuait à fonctionner normalement
      Ce qui m'a pris le plus de temps, c'était le câblage vers un convertisseur DC/DC pour piloter le relais dans un boîtier étanche Sockitbox
      Avoir aussi sous la main des cartes breakout à borniers est très utile : https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
      CloudFree est aussi un bon endroit pour trouver des composants IoT du commerce reprogrammables avec ESPHome : https://cloudfree.shop/
    • Il faudrait partager plus en détail le matériel utilisé pour ces appareils, les boîtiers, l'alimentation et le processus de fabrication
    • Je me demande comment l'alimentation est fournie
      J'avais utilisé ESPHome avec un Wittycloud ESP8266 à 3 dollars pour récupérer des données d'analyse solaire et voir la consommation dans Home Assistant
      Mais à part un adaptateur USB, je n'ai pas encore trouvé de méthode d'alimentation vraiment élégante. Pour les capteurs extérieurs, une solution sur batterie propre serait idéale
    • Globalement d'accord, mais j'enlèverais la partie sur le matériel à 10 dollars
      Ça semble utiliser des puces assez haut de gamme
      Si on veut réduire encore le coût, un ESP8266 peut descendre jusqu'à 4 dollars, ce qui est vraiment impressionnant
    • Je me demande si vous pouvez recommander de bons composants pour un usage sécurité
      Par exemple dans le cas où quelqu'un entrerait chez moi pendant une location sans laisser de trace d'effraction
      La documentation présente plusieurs options, mais je ne sais pas s'il faut partir sur de la détection de mouvement/présence ou sur un détecteur binaire de présence. Je me demande quels capteurs sont les meilleurs et les plus rentables
  • Ce qu’il y a de mieux avec ESPHome, c’est sa communauté forte et très active
    À propos de notre moniteur de qualité de l’air matériel open source [1], un membre de la communauté a développé une intégration ESPHome sophistiquée [2]
    Cette intégration reprend toutes les fonctionnalités présentes dans le firmware open source de base, et il arrivait même parfois que de nouvelles fonctionnalités y soient implémentées plus vite que chez nous
    D’une certaine manière, cette concurrence open source nous a aidés et motivés à améliorer notre version logicielle
    [1] https://www.airgradient.com/
    [2] https://github.com/MallocArray/airgradient_esphome

  • Dans les ressources associées, il existe une collection de configurations d’appareils ESPHome pour du matériel commercial : https://devices.esphome.io/
    Il existe aussi une collection de configurations Tasmota pour des appareils capables, dans bien des cas, d’exécuter également ESPHome : https://templates.blakadder.com/

  • Petite digression, mais j’aime bien ESPHome et je l’utilise depuis un moment sur quelques capteurs de température IoT dans la maison
    Cela dit, le point qui bloque toujours côté WAF, c’est de réussir à cacher proprement l’enchevêtrement d’ESP32, de capteurs et de fils dans un boîtier présentable
    Je suis curieux de savoir ce que les autres utilisent pour dissimuler les composants électroniques

    • Si vous avez une imprimante 3D, vous pouvez fabriquer quelque chose qui passe mon seuil de WAF
      Les produits Apollo sont assez bien conçus et restent plutôt discrets : https://apolloautomation.com/products/sensor-stand?pr_prod_s...
    • Pour ce qu’il me faut en autonome, je regarde d’abord s’il existe déjà un produit du commerce. C’est généralement plus rentable que de le fabriquer soi-même, et c’est aussi plus joli
      Pour les capteurs de température, je choisis en général des produits du commerce pris en charge par ce firmware : https://github.com/pvvx/ATC_MiThermometer
      Bonus : ils peuvent aussi fonctionner plus d’un an sur batterie
    • Je peux recommander les boîtes Tupperware. Il en existe dans toutes sortes de formes et de tailles, et elles sont très bon marché
      En utilisant un bol en verre ou un produit en plastique transparent, on peut voir l’intérieur tout en gardant les composants propres
      Pour un montage mural, il suffit de visser la carte à l’intérieur du couvercle, puis de fixer ce couvercle au mur. On peut alors accéder facilement au tout en retirant simplement le récipient du couvercle
      L’inconvénient, c’est que cela peut être assez laid si c’est placé à un endroit bien visible
    • J’imprime les boîtiers de projet en 3D
      En général, je cherche sur Thingiverse un design existant qui convient à peu près. Si vous utilisez des composants courants, vous avez de bonnes chances de trouver aussi un modèle parfaitement adapté
    • Ici, la bonne réponse, c’est M5Stack
  • J’ai une question à laquelle je n’ai pas trouvé de réponse malgré mes recherches
    J’ai un système d’alarme de fosse septique, et lorsque l’interrupteur à flotteur détecte que la cuve est remplie aux 3/4, une alarme sonore et visuelle se déclenche
    Il y a une paire de contacts secs NO qui se ferment quand l’alarme se déclenche
    Je me demande comment surveiller l’état ouvert ou fermé de ces contacts. J’ai l’impression qu’un pin GPIO devrait suffire, mais je n’ai rien trouvé de vraiment utile en cherchant
    J’envisage d’abandonner et d’utiliser un relais encapsulé RIB01BDC [0] pour allumer un Raspberry Pi et envoyer un e-mail lorsque le contact de la fosse septique se ferme
    [0] https://www.functionaldevices.com/product/rib01bdc/

    • Sans faire d’hypothèse sur le microcontrôleur utilisé, il suffit de connecter un des contacts à la masse, puis de relier en série le pin GPIO, l’autre contact, une résistance de 10k ou 100k, et VCC
      Si le microcontrôleur lit périodiquement l’état du pin GPIO, un niveau haut signifie que le contact est ouvert et que l’alarme ne sonne pas, tandis qu’un niveau bas signifie que le contact est fermé et que l’alarme est active
      La configuration GPIO/contact/résistance/VCC agit comme un circuit de pull-up qui tire un côté du circuit vers un niveau logique haut, et la résistance limite le courant quand le contact se ferme
      Si le microcontrôleur prend en charge l’activation d’une résistance pull-up interne sur le pin GPIO, on peut aussi connecter directement le pin au contact sans matériel supplémentaire
      À l’inverse, s’il prend en charge une résistance pull-down interne, on peut inverser le montage en connectant VCC au contact et le GPIO directement de l’autre côté. Il faut consulter la documentation du microcontrôleur pour savoir quelles fonctionnalités sont disponibles et quelles sont les limites de courant
    • J’utilise un capteur ultrasonique et ESPHome pour surveiller le niveau d’un puisard de relevage
      Selon les informations que vous voulez obtenir pour la surveillance de la fosse septique, cela peut aussi être une option utile
  • J’ai créé une horloge de pointage domicile-travail avec ESPHome et M5StickC
    Quand j’enregistre une arrivée ou un départ, Home Assistant envoie l’heure dans un Google Sheet, et cela fonctionne de manière très fiable

  • Autre point intéressant : l’ESP32 prend en charge la détection tactile capacitive sur certains pins, ce qui permet de transformer une surface conductrice en bouton de maison connectée ou en dispositif d’entrée
    C’est aussi bien pris en charge par ESPHome : https://esphome.io/components/binary_sensor/esp32_touch.html

  • J’ai un petit projet que j’aimerais tenter
    Je voudrais interroger l’heure d’arrivée des bus à l’arrêt près de chez moi via l’API locale des transports, et afficher les horaires des 3 principaux bus soit sur un grand écran unique, soit sur 3 petits écrans, un par bus
    Il n’a pas besoin d’être en haute résolution, mais j’aimerais qu’il soit assez grand et lumineux pour que la famille puisse le voir d’un coup d’œil même de loin. Par exemple, avec un afficheur 7 segments montrant 3 chiffres pour le numéro du bus et 4 chiffres pour les minutes restantes avant l’arrivée
    Il faut que la mise à jour soit possible en Wi‑Fi, et ça ne me dérange pas d’y brancher un appareil basse consommation comme un Arduino/Raspberry Pi
    Ce serait encore mieux si ça pouvait fonctionner avec des piles AA
    Je sais faire la première partie, mais pas du tout la seconde, et je n’ai jamais soudé. J’aimerais bien qu’une personne qui s’y connaît m’indique la direction à prendre

    • ESPHome est un bon point de départ, car c’est un framework pratique pour assembler plusieurs composants en couches
      Il suffit de combiner des éléments comme le composant display qui dessine sur une grille de pixels https://esphome.io/components/display/, un moteur de rendu de texte, le pilote de LED adressables https://esphome.io/components/light/neopixelbus, la plateforme addressable_light qui permet de créer une matrice d’affichage par-dessus https://esphome.io/components/display/addressable_light, ou encore des panneaux LED 8x32 bon marché https://www.google.com/search?q=8x32+ws2812b
      Si tu as besoin de plus d’espace, tu peux en fabriquer plusieurs ou chaîner les panneaux
      Bien sûr, pas besoin de réinventer la roue : tu peux aussi suivre un guide comme celui-ci : https://community.home-assistant.io/t/led-matrix-with-esphom...
      En particulier si tu pars sur la réutilisation de matériel existant comme Ulanzi, il n’y a pas besoin de beaucoup de soudure ; l’essentiel est d’avoir la bonne connexion de données et une alimentation correcte
    • Si tu es déjà à l’aise avec Arduino, tu peux simplement l’utiliser comme framework
      On peut programmer un ESP32 avec Arduino, en conservant les bibliothèques familières et la gestion du Wi‑Fi
      Adafruit vend des matrices RGB, ainsi que des cartes ESP32 capables de les piloter directement ; en pratique, c’est presque du plug-and-play, donc il faut très peu de connaissances matérielles
      Si tu veux construire quelque chose toi-même mais que tu as besoin d’un guide, tu peux regarder ce projet, qui documente à la fois le matériel et le logiciel d’un afficheur de texte connecté en Wi‑Fi similaire à ce que tu veux : https://github.com/BlueAndi/esp-rgb-led-matrix
  • Je ne l’utilise pas personnellement, mais ça me semble être une excellente idée
    J’ai déjà conçu une carte de capteurs et écrit moi-même le firmware, donc il faudrait que je voie si je peux configurer facilement ESPHome pour le faire tourner sur cette carte
    Cela dit, parmi les fonctions déjà présentes dans mon firmware, celle dont j’ai absolument besoin est la mise à jour OTA en mode pull
    Aujourd’hui, il me suffit de copier le firmware dans un dossier, et tous les capteurs de la maison se mettent automatiquement à jour vers cette version via un serveur HTTP
    Avec ESPHome, il faut pousser la mise à jour séparément sur chaque capteur, ce qui devient fastidieux quand on en a des dizaines

    • J’ai fait presque la même chose, mais la dernière fois que j’ai regardé, il n’y avait pratiquement rien pour aider à créer un firmware personnalisé pour une nouvelle carte avec plusieurs capteurs, à part lire le code d’ESPHome
      Écrire directement un firmware qui communique avec un backend simple me paraissait plus facile et plus rapide
      Je me demande aussi quelle place prend le code pour un appareil ESP32. Si on veut de l’OTA sur un appareil avec 4 Mo de flash, la limite réelle du programme est en pratique d’environ 1 Mo
      Même un programme simple qui ne fait qu’appeler GPIO, ADC, UART, Wi‑Fi, HTTPS, un serveur HTTPS, les interruptions, FreeRTOS, MQTT, NVS, les infos de la puce, les logs, l’OTA et des fonctions de la bibliothèque standard dépasse déjà cette limite de 1 Mo. Rien qu’un scanf prend 30 Ko
      En désactivant complètement les logs à la compilation, on peut descendre à un programme d’environ 800 Ko, mais on est déjà assez proche de la limite sans même avoir de vraie logique applicative
      J’y regarderai de nouveau la prochaine fois que j’aurai besoin d’un appareil de supervision à distance
    • Il y a un bouton update all dans l’interface web, donc c’est déjà assez pratique
      S’il y a des appareils que tu ne veux pas mettre à jour, tu peux temporairement ajouter un mot-clé inattendu dans le fichier YAML pour faire échouer la compilation et la mise à jour
    • Ça pourrait réduire les bugs et le besoin de correctifs
      J’ai pas mal d’appareils ESP avec des sondes de température un peu partout dans la maison, et j’envisageais justement de les migrer vers ESPHome pour réduire la quantité de code à maintenir
    • Ça vaut le coup d’essayer. ESPHome est très pratique
      J’apprécie surtout le fait qu’on puisse faire le flash initial depuis le navigateur, puis les mises à jour ensuite en sans-fil
    • Cette fonctionnalité est prévue pour la prochaine version