Bonjour à tous,
De fil en aiguille avec mes corrections sur la carte, j'ai fini par packager tout ça proprement. Je partage le résultat, ça peut servir à d'autres.
GitHub - Pulpyyyy/ha-birdnet: Home Assistant integration and Lovelace card for BirdNET-Pi / BirdNET-Go over MQTT · GitHub
C'est une intégration et sa carte Lovelace. L'idée est de remplacer le template sensor à déclencheur et la pile stack-in-card + mushroom + markdown par quelque chose qui s'installe et se configure dans l'interface.


Ce que ça apporte par rapport au montage YAML
- Le journal du jour survit aux redémarrages. Il est persisté sur disque, remis à zéro à minuit, et exclu du recorder pour ne pas gonfler la base. Plafond à 500 détections par jour au lieu des 20 que gardait le template.
- Les doublons sont ignorés. BirdNET analyse des fenêtres qui se chevauchent et republie parfois la même détection au même horodatage. Sur certaines journées ça gonflait les compteurs.
- Seuil de confiance et espèces ignorées se règlent dans l'interface, plus dans du Jinja.
- Une entité
event pour les automatisations, qui ne se déclenche qu'une fois par détection retenue.
- Le parseur accepte indifféremment le modèle Apprise de BirdNET-Pi, le format de BirdNET-Go (à finir de tester), et les scripts maison du tuto.
La carte
Elle est livrée avec l'intégration et s'ajoute toute seule aux ressources Lovelace, rien à déclarer.
Photo en fond avec le nom, le nom latin, l'heure et la fiabilité en incrustation, puis le journal du jour : une ligne par espèce, heure, nombre de détections, meilleure fiabilité avec une jauge. Éditeur visuel, et trois mises en page selon la place disponible.


Deux points sur lesquels j'ai passé du temps :
L'écoute du clip. Le bouton en haut à droite joue l'enregistrement sur lequel BirdNET s'est basé. Le lien d'écoute ne pointe pas directement sur le Pi : Home Assistant sert de relais. Sans ça, l'extrait est injouable dès qu'on accède à HA en HTTPS (contenu mixte) ou depuis l'extérieur, puisque le navigateur ne peut pas joindre une adresse privée.
Le responsive. La carte se mesure elle-même via les container queries, elle s'adapte donc à la largeur de sa colonne et non à celle de l'écran. Au-delà de 520 px le journal passe sur deux colonnes, trois au-delà de 760.
L'interface et l'éditeur sont traduits en français, anglais, allemand, espagnol et italien.
Installation
HACS → Intégrations → menu ⋮ → Dépôt personnalisé, catégorie Integration, puis Paramètres → Appareils et services → Ajouter une intégration → BirdNET.
Le modèle Apprise à coller côté BirdNET-Pi est dans le README, c'est celui de ce fil avec quelques champs en plus.
Migration depuis le montage du tuto
La carte sait lire un capteur existant qui expose bird_events, vous pouvez donc l'essayer avant de basculer. Et inversement, le nouveau capteur expose un attribut bird_events au même format pour ne pas casser une carte markdown en place. Les deux peuvent tourner en parallèle le temps de la bascule, MQTT étant du pub/sub. Il y a un MIGRATION.md dans le dépôt.
Précautions
C'est frais, testé sur une seule installation, la mienne. Le relais audio en particulier suppose l'arborescence /By_Date/<date>/<Espèce>/ de BirdNET-Pi — si votre installation range les clips ailleurs, ça ne marchera pas et je suis preneur du retour.
Merci à @JOBE pour le tuto d'origine, c'est lui qui m'a donné le format du payload et la logique du tableau. Et à @KipK dont le guide sur les cartes embarquées dans une intégration m'a évité de m'arracher les cheveux sur l'enregistrement de la ressource Lovelace.
Pensez à nettoyer l'ancien trigger qui n'est plus nécessaire
Retours et issues bienvenus.