1 points par GN⁺ 2023-08-17 | 1 commentaires | Partager sur WhatsApp
  • Un projet de sonnette DIY intégrée localement à Home Assistant avec ESP32-CAM et ESPHome, destiné aux utilisateurs qui veulent éviter les sonnettes connectées dépendantes du cloud
  • La configuration de base repose sur Home Assistant, l’add-on ESPHome et l’application mobile Home Assistant companion app ; une pression sur le bouton déclenche l’envoi d’un instantané de la caméra dans une notification sur le téléphone
  • Le matériel comprend une ESP32-CAM, un bouton-poussoir momentané, un anneau de 8 LED RGB en option, un câble Micro USB de 10 m et un boîtier imprimé en 3D ; la LED intégrée peut remplacer le flash
  • Selon la variante d’ESP32-CAM, le brochage et le comportement des résistances de rappel vers le bas peuvent différer ; pour l’entrée bouton sur GPIO14, il faut ajouter un câblage avec une résistance de rappel vers le bas de 10 kΩ vers GND
  • Le boîtier en PLA a été utilisé pour l’exemple d’impression, mais le PETG ou l’ABS conviennent mieux pour l’étanchéité ; en raison de l’ouverture pour la caméra, l’installation doit se faire à un emplacement protégé de la pluie

Configuration de la sonnette locale et prérequis

  • Cette sonnette connectée vise une configuration respectueuse de la vie privée et s’intègre à Home Assistant via ESPHome
  • Pour commencer, les éléments suivants sont nécessaires
    • Une instance Home Assistant en cours d’exécution
    • L’add-on ESPHome
    • L’application mobile Home Assistant companion app pour recevoir les notifications lors de l’appui sur le bouton
  • L’exemple de montage utilise un anneau lumineux de 8 LED RGB, mais il peut être omis pour simplifier, en utilisant la LED intégrée de l’ESP32-CAM comme flash
  • La version ESP32-CAM AI-Thinker peut ne pas disposer de toutes les résistances de pull-up/pull-down comme un ESP32 classique
    • La fonction INPUT_PULLDOWN d’ESPHome a été essayée sur GPIO14, mais n’a pas fonctionné
    • Il existe de nombreuses variantes chinoises d’ESP32-CAM, avec des différences possibles selon les cartes

Composants et fichiers publics

  • Les principaux composants sont les suivants
    • ESP32-CAM
      • Une carte dotée d’un bouton flash/download/io0 est recommandée afin de faciliter le premier flashage avec ESPHome
      • Les cartes sans ce bouton doivent être flashées à l’aide d’un adaptateur FTDI
    • Bouton-poussoir momentané
    • Anneau lumineux de 8 LED RGB
    • Câble Micro USB de 10 m
  • Les fichiers d’impression 3D et de configuration sont publiés

Impression du boîtier et assemblage

  • Le boîtier s’imprime en trois pièces
    • Corps principal
    • Plaque de fixation de l’ESP32-CAM
    • Plaque arrière faisant aussi office de support mural
  • Les parties avant et arrière du boîtier doivent être imprimées avec des supports
  • L’exemple d’impression utilise du PLA, mais pour l’étanchéité, un filament PETG ou ABS avec 20 à 30 % de remplissage est recommandé
  • Après impression, deux inserts filetés M2.5 sont ajoutés
    • Insérés dans le cache avant pour pouvoir visser le support de fixation de l’ESP32-CAM
    • Insérés en bas de la plaque arrière pour permettre de fixer la façade avec une vis M2.5 de 10 mm

Flasher l’ESP32-CAM avec ESPHome

  • Pour démarrer l’ESP32-CAM en mode flashage, maintenir le bouton flash/download/io0 enfoncé tout en la connectant à l’ordinateur avec le câble Micro USB
  • Dans Home Assistant, ouvrir l’add-on ESPHome et créer un nouvel appareil
    • Le chemin est Settings -> Add-ons -> ESPHome -> Open Web UI
    • Le nouvel appareil peut par exemple être nommé Doorbell
    • Choisir ESP32 comme type d’appareil et cocher use recommended settings
  • Coller le code de configuration du dépôt GitHub sous captive_portal: dans la configuration YAML générée
  • Cliquer sur Save puis Install, puis choisir Plug into this computer
  • Flasher le firmware depuis le navigateur avec ESPHome Web
    • Google Chrome est utilisé comme navigateur le plus fiable pour flasher le firmware de l’ESP32-CAM
    • Après compilation du firmware, il est possible de cliquer sur Download Project; cela peut prendre quelques minutes
  • Une fois le nouveau firmware flashé, Home Assistant détecte le nouvel appareil et les entités souhaitées peuvent être ajoutées au tableau de bord

Automatisation des notifications du bouton

  • Lorsqu’on appuie sur le bouton de la sonnette, une automatisation prend un instantané de la caméra et l’envoie au téléphone
  • Créer une nouvelle automatisation dans Home Assistant
    • Le chemin est Settings -> Automations -> + Create Automation
    • Créer une nouvelle automatisation à partir de zéro et sélectionner Edit in YAML dans le menu en haut à droite
  • Coller le YAML d’automatisation du dépôt GitHub, puis adapter le nom d’entité de l’appareil, par exemple le téléphone mobile, à l’environnement utilisé
  • Après enregistrement et redémarrage de Home Assistant, la nouvelle automatisation est activée

Câblage et contraintes d’installation

  • Il existe plusieurs variantes de cartes ESP32-CAM ; il faut donc vérifier le brochage réel de la carte
  • Le câblage se fait par soudure à l’arrière du PCB inférieur, celui qui comporte le port Micro USB
  • Ajouter une résistance de rappel vers le bas de 10 kΩ entre GPIO14 et GND
    • Sans cette résistance, il a été observé que GPIO14 flottait fréquemment à l’état high
    • Il est recommandé de protéger la résistance avec de la gaine thermorétractable
  • En raison de l’ouverture de la caméra intégrée, la structure n’est pas entièrement étanche et doit être installée à un emplacement protégé de la pluie
  • L’alimentation est fournie via le câble Micro USB de 10 m inclus dans la liste des composants

1 commentaires

 
GN⁺ 2023-08-17
Avis sur Hacker News
  • Sympa. J’aime aussi l’éclairage.
    On peut aussi fixer un interrupteur reed (comme un capteur classique d’ouverture/fermeture de porte) près de la bobine magnétique qui fait sonner une sonnette stupide, pour envoyer l’information à Home Assistant.
    On branche un interrupteur reed à 0,50 $ sur la sonnette existante, alimenté par la même source que la bobine de la sonnette, et on le raccorde à un port d’entrée/sortie numérique d’un ESP. Quand on appuie sur la sonnette, cela envoie un instantané par e-mail depuis la caméra d’entrée uniquement locale, et joue un enregistrement du carillon de la sonnette sur la chaîne stéréo à l’étage. Au départ, je voulais surveiller la tension de la bobine via une entrée analogique, mais c’était trop instable ; la méthode plus simple avec interrupteur reed détecte le courant de façon très fiable.

    • L’idée de la même source que la bobine de la sonnette est excellente. Je me demande quelles autres sources de tension un peu atypiques on peut exploiter dans une maison. Une unité murale de CVC, une ligne téléphonique analogique, ce genre de choses.
      Une ligne téléphonique POTS (Plain Old Telephone Service) doit fournir environ 48 V CC quand tous les téléphones sont raccrochés. Si un téléphone sur la même ligne décroche, cela tombe dans une plage de 3 à 9 V. Un téléphone décroché consomme généralement environ 20 mA CC en fonctionnement, avec une résistance CC d’environ 180 Ω. Le reste de la chute de tension se produit dans le trajet en cuivre et les circuits de l’opérateur téléphonique, qui comportent généralement une résistance en série de 200 à 400 Ω pour la protection contre les courts-circuits et l’isolation des circuits audio.
      https://www.jkaudio.com/article_03.htm
    • J’ai fait exactement la même chose, et j’ai placé un capteur de contact Zigbee Aqara avec interrupteur reed intégré directement dans la sonnette. Il y avait justement une surface plate au-dessus de la bobine, et ça fonctionne bien.
    • Est-ce qu’il y a un problème d’interrupteurs reed qui restent collés et ne se décollent pas ? Pour cet usage, un capteur à effet Hall a très bien fonctionné chez moi, mais peut-être que je n’ai vu que des interrupteurs reed de mauvaise qualité.
    • Les interrupteurs reed sont excellents pour ce genre d’usage.
      Dans le même esprit, j’en ai déjà fixé un sur le dessus du boîtier d’un relais pour détecter si la bobine était alimentée, sans avoir à toucher directement au circuit de commande ni au circuit de charge.
  • Tout ce que je veux de ce genre d’appareil IoT, c’est l’absence de dépendance au cloud et l’utilisation du PoE. Je préfère tirer des milliards de câbles plutôt que de gérer ces fichues batteries stupides qui meurent sans arrêt. Les batteries deviennent aussi beaucoup trop chères.

    • Pour du DIY IoT, voir les ESP32 PoE :
      non isolé : https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      isolé : https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • Exact. Tirer un câble une fois, c’est pénible, mais au pire la croissance est linéaire. Plus on a d’appareils, plus il faut de câbles, et comme on peut dériver depuis des boîtiers de connexion existants, c’est peut-être même plus proche d’une croissance logarithmique.
      Changer une batterie une fois par an, c’est une petite corvée, mais avec des dizaines d’appareils, ça s’accumule vite et revient périodiquement, donc ce n’est pas mieux qu’une croissance linéaire.
    • Pour ce genre d’usage, je trouve que Zigbee est un excellent protocole. Ça fonctionne en local, ça ne passe pas par le Wi‑Fi, et les capteurs tiennent des années avec une simple pile bouton.
    • Je veux une alimentation solaire. Une sonnette, on appuie dessus peut-être une fois tous les cinq jours, non ? Il suffit de couvrir le boîtier de panneaux solaires et d’ajouter un supercondensateur pour l’alimentation de nuit.
    • Ces batteries sont vraiment pénibles. Les appareils sur batterie ont aussi tendance à être peu fiables. Il faut réappairer quelque chose ou changer une batterie toutes les semaines.
      Quand j’aurai ma propre maison, je pense passer à KNX.
  • C’est un peu hors sujet, mais ma femme a un TDA assez marqué et perd souvent des objets. Tile ne permet de retrouver les objets que dans un certain rayon, et semble tomber souvent en panne.
    C’est peu probable, mais je me demande si quelqu’un a déjà construit un système de localisation intérieure capable de retrouver des objets en 3D à quelques centimètres près dans une maison, avec des balises Bluetooth Low Energy.
    Pour revenir davantage au sujet, l’ESP32 est assez impressionnant. Cela dit, je n’ai pas réussi à maintenir une connexion Wi‑Fi stable avec MicroPython ou CircuitPython, mais l’éventail des possibilités est étonnant. Ma carte est assez ancienne ; acheter une carte plus récente ferait peut-être une différence.

    • DIY AirTags : https://github.com/seemoo-lab/openhaystack
    • J’utilise MicroPython sur une carte ESP32 devkit connectée au Wi‑Fi et à MQTT pour publier des valeurs de capteurs 24 h/24, et ça fonctionne sans problème depuis plusieurs semaines.
    • Ce n’est pas exactement ce que vous demandez, mais avez-vous essayé https://www.room-assistant.io/ ?
    • Avec MicroPython ou CircuitPython, je ne sais pas trop à quoi il fallait s’attendre. C’est pratiquement à proscrire pour les systèmes embarqués qui exigent de la fiabilité.
  • Il est intéressant de voir que, dans certains endroits du monde, l’existence d’une sonnette est tellement importante qu’on en vient à devoir la rendre « intelligente ». Le succès des sonnettes connectées montre bien qu’il y a une demande
    Je n’ai pas de sonnette. Si un visiteur ne sait pas comment me joindre, moi ou quelqu’un d’autre dans la maison, il y a de bonnes chances qu’il n’ait pas vraiment de raison de venir au départ
    Et je ne suis pas le seul. D’après une enquête très peu scientifique faite en me promenant la semaine dernière, la plupart des maisons de ma rue sont dans le même cas, et c’est probablement vrai pour une bonne partie de ma ville

    • Ça paraît assez froid. Quand j’ai acheté ma maison et que j’ai emménagé, des voisins sont venus se présenter, et certains ont même apporté des cadeaux de bienvenue. Je n’aurais pas envie de me couper volontairement de cette vie de quartier
    • Une partie de la demande pour les sonnettes connectées semble venir du problème des visiteurs inconnus. Elles permettent de savoir qui est devant la porte même quand le propriétaire n’est pas chez lui, et de cacher le fait que la maison est vide
    • Les maisons britanniques sont tellement petites qu’en général, frapper suffit
      Les sonnettes ont un côté anachronique. Presque personne dans notre rue n’en a
    • Vous ne commandez jamais de colis sur Internet ? Vous n’avez jamais reçu de courrier recommandé de l’administration fiscale ? Si les sonnettes connectées ont pris, c’est notamment parce qu’elles sont placées à un endroit où l’on peut facilement se raccorder à une alimentation déjà présente à l’extérieur de la maison
    • Ce n’est pas tant que les gens voulaient vraiment rendre leur sonnette « intelligente » ; c’est plutôt que les progrès de l’électronique grand public ont permis d’installer facilement une caméra de sécurité/surveillance à un emplacement prioritaire, l’entrée, en utilisant une alimentation d’environ 20 V déjà câblée à un endroit parfait dans la plupart des maisons
  • D’après les tests que j’ai vus, la sonnette caméra Reolink semble être la seule option commerciale qui corresponde aux exigences de l’auteur. Elle fonctionne en local et peut s’intégrer à Home Assistant
    En revanche, l’interphone nécessite une application séparée. La solution faite maison de l’auteur ne semble pas fournir de communication audio, et, au moins avec le seul protocole de la caméra, il ne semble pas non plus y avoir de moyen d’utiliser directement l’audio bidirectionnel dans Home Assistant

    • Et la UniFi Doorbell ? Elle n’a pas besoin de connexion au cloud, reste en local et peut s’intégrer à HomeAssistant / Scrypted / Homebridge
    • Amcrest fabrique aussi des modèles compatibles avec un fonctionnement uniquement local et intégrés à Home Assistant
  • L’ESP32 est vraiment un terrier de lapin dans lequel on peut s’enfoncer très loin. Il y a déjà énormément de projets qui l’utilisent ou qui sont en développement avec lui, et voilà maintenant une idée de plus à garder en tête

    • Vous fabriquez quoi comme choses ?
  • Super projet. La caméra ESP32 peut avoir une qualité d’image assez médiocre. Ce serait utile d’avoir sur le blog une photo en pleine résolution prise depuis la sonnette

  • Excellent projet. C’est chouette de voir les différentes sonnettes ESP32 que les makers créent
    Ce serait bien d’avoir une vidéo ou des photos d’exemple. J’ai déjà utilisé une ESP32 Cam, et même si c’est impressionnant en soi, ce n’était pas vraiment la qualité que je recherchais. Cela dit, mon usage d’une sonnette connectée se rapproche davantage de la sécurité que du simple « qui est là »

  • Pour l’instant, pour économiser, j’utilise une sonnette PoE assez coûteuse achetée en état AS-IS. C’est un produit Axis Communications
    J’aime beaucoup sa capacité à recevoir des événements ONVIF. Si l’on peut consommer ces événements, on peut en pratique faire ce qu’on veut, ce qui rend ce type de produit très flexible. Par exemple, il existe aussi des moyens de créer des événements personnalisés, comme lorsque quelqu’un couvre l’objectif de la caméra avec la main
    Home Assistant offre un excellent support d’ONVIF. J’aimerais créer une sorte de wrapper autour de scripts, par exemple un booléen porte ouverte/fermée, afin d’obtenir des événements ONVIF natifs

  • Un des commentaires sur ce site pointait les problèmes de performances de l’ESP32. Je n’ai jamais vraiment manipulé d’appareils IoT ni ce genre de cartes, mais comme elles sont relativement bon marché, j’avais envie d’essayer, et en cherchant j’ai découvert que l’ESP32 était fabriqué en 40 nm
    Je me demande s’il existe une version plus récente, fabriquée avec un procédé plus avancé, qui offrirait de meilleures performances avec un budget énergétique similaire

    • Deux cœurs RISC à 240 MHz, c’est déjà assez costaud. Le 40 nm n’est pas mauvais pour un microcontrôleur. Par exemple, la gamme concurrente nRF52 de Nordic est fabriquée en 55 nm
    • Pas vraiment. Il existe des versions plus récentes de la puce, y compris des variantes RISC-V ou Zigbee/Thread, mais il ne faut pas s’attendre à une amélioration spectaculaire des performances ou de la consommation. Dans ce segment de marché, les contraintes de performance sont normales, et c’est le compromis qu’on accepte
      Il existe des familles de SoC qui offrent de meilleurs compromis, mais peu sont aussi accueillantes pour les hobbyistes que l’ESP32. Nordic, peut-être, ou alors passer à de petits ordinateurs monocarte comme le Pi Zero
      Malgré tout, l’ESP32 est largement plus puissant que ce dont la plupart des appareils de domotique ont besoin. On ne commence à atteindre ses limites que sur quelques tâches plus lourdes, comme le streaming vidéo ou le machine learning. Et même là, avec un peu d’ingéniosité, on peut déjà faire beaucoup de choses