Je teste le capteur ouverture Porte/Fenêtre Zigbee Moes ZSS-GWM-C

Le marché des capteurs Zigbee a vu une augmentation importante des prix des modèles les plus répandus. Même les Sonoff et les Aqara, qui étaient les moins chers, deviennent coûteux si on veut en mettre dans toutes ses pièces. Pour ceux qui cherchent à équiper leur maison sans se ruiner, il est essentiel de trouver des alternatives abordables tout en maintenant une bonne qualité.

J’ai commandé cet équipement Zigbee encore pas cher pour le tester. Notez que ce test n’est pas « sponsorié », aucun produit testé n’est offert par telle ou telle marque ou tel ou tel distributeur de matériel. C’est acheté avec mon argent à moi, parfois financé par des reventes comme ce qui se trouve dans mon vide-grenier.


Certification Zigbee 3.0
Lire la suite

Je teste le capteur de niveau Zigbee par ultrasons ME201WZ de chez MORAY

Qu’est-ce que ce capteur et à quoi sert-il ?

Je vous présente le capteur de niveau Zigbee par ultrasons ME201WZ de Moray, un outil que j’ai testé pour surveiller le niveau de liquide dans ma cuve. Ce petit appareil utilise la technologie ultrasonique pour mesurer la distance avec précision, ce qui permet de connaître le niveau d’eau (ou d’un autre liquide) dans un réservoir. Ce que j’apprécie, c’est sa facilité d’installation, sa robustesse et son faible besoin d’entretien. Normalement, il est conçu pour fonctionner avec l’application Tuya Smart ou Smart Life via Zigbee, mais moi, j’ai voulu l’intégrer directement dans Zigbee2MQTT pour plus de liberté. Il est alimenté sur secteur (version 220V, sans panneau solaire).

Capteur Moray ME201WZ

Où l’acheter et à quel prix ?

Ce capteur vient de chez Domadoo, un revendeur français que j’apprécie pour sa fiabilité. Il existe plusieurs versions de ce capteur, mais j’ai opté pour la version 220V, sans panneau solaire, pour des raisons pratiques. Voici les options que j’ai trouvées :

  • Domadoo : 45,99 € pour la version 220V.
  • AliExpress : environ 50,39 € pour la version 220V (attention aux contrefaçons, je recommande la prudence).
  • Domadoo : 59,99 € pour la version avec panneau solaire.

Première étape : je vérifie le contenu du colis

Une fois le capteur reçu, j’ai pris le temps de tout déballer pour m’assurer que rien ne manquait. Tout était bien là : le capteur, les vis de fixation, et un petit manuel. Voici quelques photos que j’ai prises pour vous montrer le déballage :

Déballage capteur

Capteur Moray

Contenu colis

Deuxième étape : j’appaire le capteur à Zigbee2MQTT

Avant de fixer le capteur sur ma cuve, j’ai décidé de l’appairer à mon réseau Zigbee. J’ai vite remarqué que le bouton d’appairage se trouve sous le capteur, donc il vaut mieux faire cette étape avant l’installation physique.

Bouton d’appairage

Petite surprise : brancher le capteur au secteur ne déclenche pas automatiquement l’appairage. Il faut appuyer sur le bouton pendant 5 secondes (sans forcer !) jusqu’à ce que la LED clignote rapidement. Honnêtement, ça m’a pris trois essais pour y arriver – patience est le mot d’ordre ! Mais au final, Zigbee2MQTT a bien détecté le capteur. Voici ce que ça donnait dans l’interface :

Détection Zigbee2MQTT

Interface Zigbee2MQTT

Troisième étape : j’installe le capteur sur ma cuve

Ma cuve ressemble à celle ci (mais sous terre):

Cuve

Elle a deux couvercles, et j’ai décidé de fixer le capteur sur l’un d’eux. Ma cuve est enterrée, et au-dessus, j’ai un puits qui facilite l’accès. Pour installer le capteur, j’ai commencé par mesurer le diamètre du couvercle afin de choisir la bonne scie cloche :

Mesure diamètre

Scie cloche

J’ai retiré le bouchon du puits et fixé le capteur directement dessus. Voici un petit reportage photo de l’installation :

Puits

Installation 1

Installation 2

Installation 3

Installation 4

Installation 5

Installation 6

Installation 7

Installation finale

Pour m’assurer que tout fonctionnerait correctement, j’ai mesuré la profondeur de la cuve (1,5 m) et la hauteur actuelle de l’eau (1,2 m). Ces données allaient me servir pour la configuration.

Quatrième étape : je configure les niveaux de référence

Le manuel explique comment configurer les paramètres du capteur. J’ai noté mes mesures directement dessus pour m’y retrouver :

Manuel avec mesures

J’ai essayé de configurer les paramètres dans Zigbee2MQTT, mais j’ai rencontré des soucis (peut-être un problème de format avec les virgules ou les points). Du coup, j’ai tout paramétré dans Home Assistant, et là, tout s’est bien passé :

Configuration Home Assistant

Une fois configuré, le capteur a commencé à renvoyer des données cohérentes, et les calculs semblaient justes.

Cinquième étape : je vérifie la connexion Zigbee

Comme ma cuve est à environ 15 mètres de la maison, j’avais un peu peur que la connexion Zigbee soit instable. Après avoir laissé le réseau se stabiliser, j’ai constaté un LQI (indicateur de qualité du signal) autour de 150, ce qui est plutôt correct.

LQI Zigbee

Cependant, en regardant les logs, j’ai remarqué des déconnexions occasionnelles (environ une par heure). Ça m’a intrigué, alors j’ai décidé d’investiguer.

Log déconnexion

Mise à jour quelques jours plus tard : Pour améliorer la connexion, j’ai ajouté un répéteur Zigbee Aeotec Range Extender Zi WG001. Ce matériel est top, je le recommande ! Le LQI est monté à 248, ce qui est excellent. Mais, curieusement, les déconnexions persistaient. Elles ne durent que quelques secondes et ne semblent pas perturber le fonctionnement, alors j’ai décidé de ne pas m’en préoccuper pour l’instant. Peut-être un bug logiciel ? Je surveillerai les futures mises à jour.

LQI 248

Déconnexion persistante

Sixième étape : je vérifie les données récupérées

Maintenant que tout est en place, je reçois trois informations utiles du capteur :

Données capteur

  • Liquid depth : la hauteur d’eau dans la cuve (depuis le fond jusqu’au niveau d’eau).
  • Liquid level percent : le pourcentage de remplissage par rapport à la capacité maximale.
  • Liquid state : une indication sous forme d’état (bas, normal, haut).

En réalité, le capteur ne mesure que la distance par ultrasons. Les autres valeurs sont calculées à partir de la configuration que j’ai entrée. C’est simple, mais efficace.

Dernière étape : j’intègre les données dans mon dashboard

Pour rendre l’affichage plus visuel, j’ai décidé d’ajouter les données de mon capteur à mon dashboard Home Assistant. J’ai utilisé la carte Lovelace Fluid Level Background Card, que j’ai installée via HACS. Voici à quoi ça ressemble :

Dashboard Home Assistant

Installation HACS

Configurer cette carte n’est pas forcément intuitif, alors je partage mon code YAML pour vous aider :

type: custom:fluid-level-background-card
entity: sensor.niveau_eau_citerne_liquid_level_percent
card:
  show_name: false
  show_icon: true
  show_state: true
  type: glance
  entities:
    - entity: sensor.niveau_eau_citerne_liquid_depth
      name: Profondeur
      icon: mdi:arrow-up-bold
    - entity: sensor.niveau_eau_citerne_liquid_level_percent
      name: Niveau
      unit: "%"
      icon: mdi:water-percent
    - entity: binary_sensor.flotteur_pompe_arrosage
      name: Flotteur
      icon: mdi:water-percent
  state_color: false
  columns: 3
  title: Niveau d'eau dans la citerne
full_value: 100
severity: []
fill_entity: sensor.niveau_eau_citerne_liquid_depth
tap_action:
  action: more-info

À noter : le capteur binary_sensor.flotteur_pompe_arrosage est un flotteur on/off que j’utilise depuis plus de 5 ans. Il fonctionne toujours parfaitement, et j’en parle dans un autre article : Pompe Jardin et Arrosage Sonoff 4CH Pro et ESP Easy.

J’améliore de la détection de fin de cuve [Optionnel]

Comme exprimé précédemment, j’ai depuis plusieurs années un capteur de niveau (flotteur) on/off qui est une grosse bille dans un flotteur qui envoie ON ou OFF à un Sonoff. Celui-ci coupe l’alimentation de la pompe dès que le flotteur change de position (passe à Sec)

C’est très empirique mais mon idée est d’aligner le seuil de détection calculé du nouveau capteur au changement d’état du flotteur, ainsi une panne de l’un ou l’autre permettrait toujours de sécurisé la pompe en la coupant.

Pour cela, j’ai ouvert tous les robinets et lancé le « vidage » de la cuve pour détecté le seuil de bascule du flotteur. Voici le résultat :

Les observations me donnent que le point de bascule du flotteur est à 14h06, la pompe s’arrête au même moment.
A 14h06, le pourcentage est à 44% et la hauteur à 0m53.

Je suis donc retourné dans la configuration du capteur dans Zigbee2MQTT pour changer la valeur de Mini set que j’ai passé à 45%.

Ainsi, le statut de Liquid state est passé sur low, c’est sur cet état que je peux ajouter une coupure de l’alimentation de ma pompe d’arrosage.

Je vais également modifier ma carte sur le dashboard.

Soit le code yaml complet :

type: custom:fluid-level-background-card
entity: sensor.niveau_eau_citerne_liquid_level_percent
card:
  show_name: false
  show_icon: true
  show_state: true
  type: glance
  entities:
    - entity: sensor.niveau_eau_citerne_liquid_depth
      name: Profondeur
      icon: mdi:arrow-up-bold
    - entity: sensor.niveau_eau_citerne_liquid_level_percent
      name: Niveau
      unit: "%"
      icon: mdi:water-percent
    - entity: binary_sensor.flotteur_pompe_arrosage
      name: Flotteur
      icon: mdi:water-percent
  state_color: false
  columns: 3
  title: Niveau d'eau dans la citerne
full_value: 100
severity:
  - value: 20
    color: red
  - value: 45
    color: orange
  - value: 50
    color:
      - 3
      - 169
      - 244
fill_entity: sensor.niveau_eau_citerne_liquid_depth
tap_action:
  action: more-info

Ainsi, quand le niveau sera inférieur à 45%, j’aurais cette image :

et dès que le niveau remonte un peu, entre le bleu et le rouge, j’ai mis le orange:

Mon verdict sur ce capteur

Pour conclure, je trouve ce capteur vraiment pratique si vous avez besoin de surveiller le niveau d’une cuve. L’installation physique est ultra-simple – le plus long, dans mon cas, a été de tirer une alimentation électrique jusqu’à la cuve. Une fois en place, il fait le job sans complications.

Il existe une version avec panneau solaire, mais je ne l’ai pas testée. J’avais peur qu’elle manque de puissance pour maintenir une connexion Zigbee stable, surtout sans batterie (elle ne fonctionnerait probablement que le jour). La version 220V me convient parfaitement.

Avant, je me contentais d’un flotteur on/off pour surveiller ma cuve. Avec ce capteur, j’ai maintenant des mesures précises du niveau d’eau, et pour moins de 50 €, je trouve ça très intéressant. C’est un bon investissement pour un appareil Zigbee bien conçu.

Mode d’emploi (pour référence)

Recto manuel
Verso manuel

Je teste le Thermomètre Zigbee Sonoff SNZB-02P

Le marché des thermomètres Zigbee a vu une augmentation importante des prix des modèles les plus répandus. Même les Sonoff et les Aqara qui étaient les moins chers deviennent coûteux si on veut en mettre dans toutes ses pièces.

J’ai commandé cet équipement Zigbee encore pas cher pour le tester. Notez que ce test n’est pas « sponsorié », aucun produit testé n’est offert par telle ou telle marque ou tel ou tel distributeur de matériel. C’est acheté avec mon argent à moi, parfois financé par des reventes comme ce qui se trouve dans mon vide-grenier.


Certification Zigbee 3.0
Lire la suite

Je teste le détecteur de fumée Zigbee Onenuo (228WZ)

Le marché des capteurs Zigbee a vu une augmentation importante des prix des modèles les plus répandus.

J’ai commandé cet équipement Zigbee encore pas trop cher pour le tester. Notez que ce test n’est pas « sponsorié », sur cette page, aucun produit testé n’est offert par telle ou telle marque ou tel ou tel distributeur de matériel. C’est acheté avec mon argent à moi, parfois financé par des reventes comme ce qui se trouve dans mon vide-grenier.


Certification Zigbee 3.0

Je vérifie bien le modèle reçu

Le transport a un peu abimé le carton mais c’est intact dedans. Le modèle est bien un 228WZ.

Où acheter le produit ?

Il est entre 12 à 15€ sur Aliexpress. Méfiez vous des fausses versions, regardez que c’est bien un Onenuo

Description du produit

Le produit est composé du détecteur de fumée de 9cm de diamètre avec un support amovible au dos à visser au plafond. Un jeu de vis est fourni.

Je vais ajouter des piles (non fournies) 2x aaa

J’intègre ce boitier à Zigbee2MQTT

J’ai bien mis Zigbee2MQTT en mode appairage au moment où je place les piles mais cela n’a pas lancé l’appairage comme sur certains produits. J’appuie sur le bouton opposé à la led pendant 5s et la led se mette à clignoter en bleu. L’appairage se lance et, très rapidement, le module est intégré !


Il est bien reconnu en 288WZ et l’image correspond bien au module. Les données sont bien remontées et fonctionnent :

Il n’y a pas de paramètre de configuration.

Je renomme le détecteur

Je vais dans Home Assistant

J’y retrouve mon équipement.

C’est juste parfait, en quelques secondes, j’ai un détecteur totalement fonctionnel. Il est parfaitement intégré !

La qualité du produit est vraiment pas terrible, je ne sais pas s’il détectera réellement quelque chose, je vais le placer non loin d’un autre dans la cuisine, lieu privilégié de création de fumée.

Pour archive : le mode d’emploi

Je teste le détecteur de fumée Zigbee Heiman (HS1SA-E)

Le marché des capteurs Zigbee a vu une augmentation importante des prix des modèles les plus répandus.

Suite à un nombre trop important de faux positif de mon vieux Mijia Honeywell (JTYJ-GD-01LM), j’ai regardé ce qu’il existait en détecteur de fumée abordable pour le remplacer.

J’ai commandé cet équipement Zigbee encore pas trop cher pour le tester. Notez que ce test n’est pas « sponsorié », aucun produit testé n’est offert par telle ou telle marque ou tel ou tel distributeur de matériel. C’est acheté avec mon argent à moi, parfois financé par des reventes comme ce qui se trouve dans mon vide-grenier.


Certification Zigbee 3.0

Je vérifie bien le modèle reçu

Image du modèle reçu

Où acheter le produit ?

Il est disponible à 27.99€ chez Domadoo, ne cherchez pas plus loin à ce prix.

Il est entre 28 et 32€ sur Aliexpress.

Description du produit

Le produit est composé du détecteur de fumée, plutôt petit avec un support à coller ou visser au plafond. Un jeu de vis est fourni.

Détecteur de fumée

Je repère la languette jaune qui doit isoler la pile

Languette jaune isolant la pile

Je retire le socle (dévisser de quelques degrés) et je tire sur la languette.

J’intègre ce boitier à Zigbee2MQTT

J’ai bien mis Zigbee2MQTT en mode appairage au moment où je retire la languette mais cela n’a pas lancé l’appairage comme sur certains produits. Je trouve donc le petit trou sur le côté pour appuyer dessus quelques secondes jusqu’à ce que la led se mette à clignoter en vert. L’appairage se lance et, très rapidement, le module est intégré !

Appairage réussi
Module intégré

Il est bien reconnu en HS1SA et l’image correspond bien au module. Les données sont bien remontées et fonctionnent :

Données du module

Il n’y a pas de paramètre de configuration.

Je renomme le détecteur

Renommage du détecteur

Je teste le fonctionnement sur Zigbee2MQTT

Quand l’équipement est au repos, j’ai ces valeurs :

Valeurs au repos

J’appuie sur le bouton de test, j’obtiens :

Valeurs après test

Donc Smoke et Test passent à Vrai. J’imagine que si c’était un vrai déclenchement, seul Smoke passerait à Vrai.

Je vais dans Home Assistant

J’y retrouve mon équipement.

Équipement dans Home Assistant

C’est juste parfait, en quelques secondes, j’ai un détecteur totalement fonctionnel. Il est parfaitement intégré !

Pour archive : le mode d’emploi

Je configure le WiFi pour la coexistence avec Zigbee sur mon routeur Synology RT6600

Introduction

En configurant mon routeur, je me rends compte que la coexistence entre le WiFi et le Zigbee peut être problématique, car ces deux technologies utilisent la même bande de fréquence 2.4 GHz. Une configuration appropriée est donc essentielle pour minimiser les interférences.

Comprendre le problème

Spectre de fréquences

  • Le WiFi utilise la bande 2.4 GHz avec des canaux de 20/22 MHz de largeur.
  • Le Zigbee utilise également la bande 2.4 GHz mais avec des canaux plus étroits de 5 MHz.
  • Les canaux WiFi 1, 6 et 11 sont les seuls canaux non-chevauchants en 2.4 GHz.

Ma situation

Comme j’utilise le canal Zigbee 11, qui se situe dans la partie inférieure du spectre 2.4 GHz, je dois configurer mon WiFi en conséquence pour minimiser les interférences.

Configuration recommandée pour mon RT6600

1. Configuration du WiFi 2.4 GHz

  1. Je me connecte à l’interface d’administration SRM (Synology Router Manager).
  2. Je vais dans « WiFi Settings » puis l’onglet « Radio ».
  3. Pour la bande 2.4 GHz, je configure :
    • Canal : 6 ou 1 (j’évite le canal 11). Je vais préférer le 1.
    • Largeur de canal : 20 MHz (pour minimiser les chevauchements).
    • Puissance : Moyenne ou Faible si mes appareils sont proches.

2. Optimisation de la bande 5 GHz

  1. J’active la bande 5 GHz.
  2. J’utilise Smart Connect pour diriger automatiquement les appareils compatibles vers la bande 5 GHz.
  3. Je configure des SSID distincts pour 2.4 GHz et 5 GHz si je souhaite un contrôle plus précis.

3. Mesures complémentaires

  • Je place mon coordinateur Zigbee à au moins 2 mètres du routeur WiFi.
  • J’évite les obstacles métalliques entre les appareils.
  • Je surveille régulièrement les performances du réseau.

Vérification des performances

Indicateurs de problèmes potentiels

  • Déconnexions fréquentes des appareils Zigbee.
  • Latence élevée dans les réponses des appareils.
  • Difficultés à ajouter de nouveaux appareils Zigbee.
  • Taux d’utilisation du canal Zigbee élevé.

Solutions de dépannage

  1. Si les problèmes persistent :
    • J’essaie de changer le canal WiFi (j’alterne entre 1 et 6).
    • Je réduis la puissance de transmission WiFi.
    • J’envisage de déplacer physiquement le coordinateur Zigbee.

Conclusion

En configurant correctement mon RT6600, je m’assure d’une coexistence harmonieuse entre WiFi et Zigbee. La clé est de maintenir une séparation spectrale suffisante entre les canaux WiFi et Zigbee, tout en optimisant la puissance et le placement des appareils.

Surveillance continue

Je surveille régulièrement les performances de mon réseau, j’ajuste les paramètres si nécessaire, je maintiens le firmware du RT6600 à jour et j’utilise des outils d’analyse de spectre si disponibles.

Je récupère le solde de son compte bancaire et les dernières opérations (en test)

Objectif

Mon objectif était de connecter mon compte bancaire à Home Assistant pour suivre mon solde et mes transactions en temps réel. Pour cela, j’ai utilisé l’API de Powens (anciennement Budget Insight), une plateforme qui permet gratuitement d’accéder aux données bancaires de manière sécurisée et conforme à la réglementation DSP2.

J’ai créé un compte Powens

Je me suis inscrit sur le site de Powens pour créer un compte. Powens propose une solution d’agrégation bancaire qui permet de récupérer des informations financières via des API. C’est parfait pour mon projet domotique.

Qui est Powens ?

Powens (anciennement Budget Insight) est une plateforme leader dans le domaine de l’agrégation bancaire et de l’Open Banking. Grâce à des API conformes à la réglementation DSP2 (Directive sur les Services de Paiement), Powens permet aux développeurs et aux entreprises d’accéder de manière sécurisée aux données bancaires des utilisateurs (avec leur consentement). Leur technologie est utilisée par des fintechs, des banques et des applications de gestion financière pour offrir des services innovants comme l’analyse des dépenses, la catégorisation des transactions ou la gestion de budget.

Dans mon cas, j’utilise une infime partie du potentiel de Powens via leur sandbox, un environnement de test qui me permet de me connecter à mon compte bancaire pour récupérer des informations comme le solde et les dernières transactions. Cette utilisation génère très peu de trafic et reste dans le cadre des offres gratuites proposées par Powens pour les développeurs et les petits projets. Cela me permet d’intégrer ces données dans mon système domotique sans coût supplémentaire, tout en bénéficiant de la puissance et de la fiabilité de leur plateforme.

Je trouve que c’est une très bonne initiative de la part de Powens de permettre cela. En offrant un accès gratuit à leur sandbox, ils permettent aux bidouilleurs en domotique comme moi d’expérimenter et de créer des solutions personnalisées. Ces bidouilleurs, souvent passionnés et influents dans leurs cercles professionnels ou personnels, peuvent ensuite recommander des plateformes solides et sérieuses comme Powens à des services plus larges ou à des entreprises. C’est une stratégie gagnant-gagnant : Powens gagne en visibilité et en crédibilité, tandis que les utilisateurs bénéficient d’un outil fiable et performant.

J’ai ajouté un workspace

Une fois connecté, j’ai créé un nouveau workspace. Un workspace est un espace de travail qui regroupe mes configurations et mes applications. J’ai nommé le mien sigalou-domotique pour garder une trace claire de mon projet.

J’ai ajouté un domaine

Ensuite, j’ai ajouté un domaine à mon workspace. Cela permet de configurer l’environnement pour les requêtes API. J’ai choisi le domaine sigalou.

La configuration a pris quelques minutes. Une fois terminée, j’ai noté que les commandes API devaient être envoyées à l’adresse suivante : https://sigalou-sandbox.biapi.pro.

J’ai ajouté une application

L’ajout d’une application est obligatoire pour établir la connexion avec mon compte bancaire. Cette application génère des identifiants uniques (client ID et client secret) qui seront utilisés pour authentifier les requêtes API.

Cette application m’a fourni un client ID et un client secret. Je les ai notés soigneusement, car ils seront nécessaires pour créer un utilisateur API.

J’ai installé Postman pour Windows

Pour interagir avec l’API Powens, j’ai utilisé Postman, un outil très pratique pour envoyer et tester des requêtes API. Postman permet de simuler des appels API et de visualiser les réponses en temps réel.

J’ai ajouté un utilisateur via l’API

Pour créer un utilisateur, j’ai envoyé une commande POST à l’URL suivante : https://sigalou-sandbox.biapi.pro/2.0/auth/init. J’ai utilisé le client ID et le client secret récupérés précédemment.

Dans le corps de la requête (Body / raw / JSON), j’ai ajouté :

{
« client_id »: « icileclient_id_récupéré_plus_haut »,
« client_secret »: « icileclient_secret_récupéré_plus_haut »
}

Dans la réponse, j’ai relevé le id_user et le auth_token, qui seront utilisés pour les prochaines étapes.

J’ai obtenu un code temporaire

Ce code temporaire est nécessaire pour établir la connexion avec mon compte bancaire. Pour l’obtenir, j’ai envoyé une commande GET à l’URL suivante : https://sigalou-sandbox.biapi.pro/2.0/auth/token/code?type=singleAccess.

J’ai utilisé le auth_token récupéré précédemment dans l’en-tête d’autorisation (Authorization / Bearer Token). Dans la réponse, j’ai relevé le code temporaire.

J’ai lancé la Webview pour connecter mon compte bancaire

Pour établir la connexion avec mon compte bancaire, j’ai construit l’URL de la Webview en remplaçant les placeholders par mes identifiants :

https://sigalou-sandbox.biapi.pro/2.0/auth/webview/connect?redirect_uri=https%3A%2F%2Fintegrate.budget-insight.com%2Fdemos%2Fconnect%2Fcallback&client_id=xxxx&code=yyy

J’ai remplacé xxxx par mon client ID et yyy par le code temporaire. J’ai laissé le redirect_uri tel quel, comme indiqué dans la documentation.

Une fois la connexion établie, j’ai pu accéder à mes données bancaires.

J’ai testé la récupération du solde du compte

Pour récupérer le solde de mon compte, j’ai envoyé une commande GET à l’URL suivante : https://sigalou-sandbox.biapi.pro/2.0/users/1/accounts, où 1 est mon id_user.

Dans la réponse, j’ai récupéré le solde de mon compte, qui était de 599.84€ lors de mon test.

J’ai testé la récupération des dernières transactions

Pour récupérer les dernières transactions, j’ai envoyé une commande GET à l’URL suivante : https://sigalou-sandbox.biapi.pro/2.0/users/1/transactions?limit=10, où 1 est mon id_user.

La réponse contenait un JSON avec mes 10 dernières transactions.

J’ai transformé les requêtes API en capteurs Home Assistant

Pour intégrer ces données dans Home Assistant, j’ai créé deux capteurs REST : transactions_banque et solde_banque. Voici le code utilisé :

- platform: rest
  name: "transactions_banque"
  resource: https://sigalou-sandbox.biapi.pro/2.0/users/1/transactions
  params:
    limit: 25
  headers:
    Authorization: !secret token_banque
  scan_interval: 31536000  # Désactive les mises à jour automatiques (1 an)
  json_attributes:
    - first_date
    - last_date
    - transactions
    - total
  value_template: "{{ now().strftime('%d/%m/%Y %H:%M:%S') }}"  

- platform: rest
  name: "solde_banque"
  resource: https://sigalou-sandbox.biapi.pro/2.0/users/1/accounts
  headers:
    Authorization: !secret token_banque
  scan_interval: 31536000  # Désactive les mises à jour automatiques
  value_template: "{{ value_json.balance }}"
  unit_of_measurement: "€"

Ces capteurs sont à placer dans le fichier sensors.yaml.

Pour que le token soit correctement envoyé, j’ai ajouté cette ligne dans le fichier secrets.yaml :

token_banque: Bearer a8N5q1aUVEa33wl0dCJM...

Une fois configurés, les capteurs sont apparus dans Home Assistant :

Observations sur ces capteurs :

  • Le rafraîchissement est réglé à 3153600 secondes (environ 1 an), car j’ai prévu d’actualiser les données via une automatisation quotidienne à midi. Cela me permettra de recevoir des notifications en fonction du solde ou des dernières transactions.
  • Les capteurs peuvent être simplifiés. J’avais initialement inclus des données comme first_date et last_date, mais je les ai finalement retirées car elles n’étaient pas utiles en production.
  • Le paramètre limit: 25 peut être ajusté en fonction de la taille de l’écran et de la carte choisie sur le dashboard.

J’ai ajouté des templates pour calculer ce dont j’ai besoin

Dans le fichier templates.yaml, sous sensor, j’ai ajouté ces templates :

- name: "transactions_a_venir_montant"
  state: >-
    {% set transactions = state_attr('sensor.transactions_banque', 'transactions') %}
    {% set total = namespace(amount=0) %}
    {% for transaction in transactions if transaction.coming %}
      {% set total.amount = total.amount + transaction.value %}
    {% endfor %}
    {{ total.amount }}
  unit_of_measurement: "€"
 
- name: "solde_disponible"
  unique_id: sensor.solde_disponible
  unit_of_measurement: "€"
  state: >-
    {% set solde = states('sensor.solde_banque') | float %}
    {% set depenses = states('sensor.transactions_a_venir_montant') | float %}
    {{ (solde + depenses) | round(2) }}
  • Le capteur transactions_a_venir_montant calcule le montant total des transactions à venir (comme les prélèvements programmés).
  • Le capteur solde_disponible calcule le solde réel en soustrayant les transactions à venir du solde actuel.

J’ajoute une automatisation pour rafraîchir les données

Comme je l’ai expliqué plus tôt, j’ai volontairement désactivé le rafraîchissement automatique des capteurs REST en leur attribuant une valeur de scan_interval très élevée (31536000 secondes, soit environ 1 an). Cela me permet de contrôler manuellement quand les données sont actualisées, plutôt que de les rafraîchir toutes les x minutes. Cette approche est plus adaptée à mes besoins, car je prévois d’utiliser ces données pour déclencher des notifications en fonction de mon solde ou des dernières transactions importantes.

Pour gérer cela, j’ai ajouté une automatisation dans Home Assistant qui actualise mes deux capteurs (solde_banque et transactions_banque) tous les jours à midi. Voici le code de cette automatisation :

alias: Mettre à jour Compte bancaire
description: ""
triggers:
  - trigger: time
    at: "12:00:00"
conditions: []
actions:
  - action: homeassistant.update_entity
    data:
      entity_id:
        - sensor.solde_banque
        - sensor.transactions_banque
mode: single

Cette automatisation est simple mais efficace : elle déclenche une mise à jour des capteurs à midi chaque jour. Cela me permet de garder mes données à jour sans surcharger l’API ou mon système avec des requêtes inutiles. De plus, cela me laisse la possibilité d’ajouter d’autres actions plus tard, comme l’envoi de notifications ou l’exécution de scripts en fonction des données récupérées.

Je réalise les cartes et le screen du dashboard

Après avoir configuré les capteurs et les automatismes, j’ai conçu un dashboard dans Home Assistant pour visualiser mes données bancaires de manière claire et organisée. Voici le résultat final de mes essais :

Voici le code complet de la page, que je vais décomposer pour expliquer chaque partie :

type: sections
max_columns: 4
path: ss
sections:
  - type: grid
    cards:
      - type: entity
        entity: sensor.solde_banque
        name: Solde bancaire
        icon: mdi:bank-transfer
        grid_options:
          columns: full
        card_mod:
          style: |
            ha-card {
              padding: 4px;
              border-radius: 15px;
            }
            .icon ha-state-icon {
              --mdc-icon-size: 50px !important; /* Taille de l'icône */
              margin-bottom: 10px;
            }
      - type: markdown
        content: >
          {% set transactions = state_attr('sensor.transactions_banque', 'transactions') %}
          ## AUJOURD'HUI
          {% for transaction in transactions %}
            {% if not transaction.coming %}
              {% if transaction.date %}
                {% set date_obj = transaction.date | as_datetime %}
                {% set formatted_date = date_obj.strftime('%d/%m/%Y') %}
              {% else %}
                {% set formatted_date = 'Date inconnue' %}
              {% endif %}
              {% if transaction.type == 'card' %}💳 {{ formatted_date }}
              {% elif transaction.type == 'bank' %} 🏦 {{ formatted_date }}
              {% elif transaction.type == 'check' %} 📝 {{ formatted_date }}
              {% elif transaction.type == 'transfer' %}💸 {{ formatted_date }}
              {% else %}⚪ {{ formatted_date }}
              {% endif %}
              <strong>
                {% if transaction.value > 0 %} 🟢 {{ transaction.formatted_value }}
                {% else %} 🔴 {{ transaction.formatted_value }}
                {% endif %}
              </strong>
              <small>{{ transaction.wording }}</small>
            {% endif %}
          {% endfor %}
        grid_options:
          columns: 24
          rows: auto
      - type: vertical-stack
        cards:
          - type: markdown
            content: >
              {% set transactions = state_attr('sensor.transactions_banque', 'transactions') %}
              ## A VENIR {{ states('sensor.transactions_a_venir_montant')|float|round(2) }} €
              {% for transaction in transactions %}
                {% if transaction.coming %}
                  {% if transaction.date %}
                    {% set date_obj = transaction.date | as_datetime %}
                    {% set formatted_date = date_obj.strftime('%d/%m/%Y') %}
                  {% else %}
                    {% set formatted_date = 'Date inconnue' %}
                  {% endif %}
                  {% if transaction.type == 'card' %}💳 {{ formatted_date }}
                  {% elif transaction.type == 'bank' %} 🏦 {{ formatted_date }}
                  {% elif transaction.type == 'check' %} 📝 {{ formatted_date }}
                  {% elif transaction.type == 'transfer' %}💸 {{ formatted_date }}
                  {% else %}⚪ {{ formatted_date }}
                  {% endif %}
                  {% if transaction.value > 0 %} 🟢 {{ transaction.formatted_value }} - {{ transaction.wording }}
                  {% else %} 🔴 {{ transaction.formatted_value }} - {{ transaction.wording }}
                  {% endif %}
                {% endif %}
              {% endfor %}
            grid_options:
              columns: 12
              rows: auto
          - type: entity
            entity: sensor.solde_disponible
            name: Solde disponible
            icon: mdi:bank-transfer
            grid_options:
              columns: full
            card_mod:
              style: |
                ha-card {
                  padding: 4px;
                  border-radius: 15px;
                }
                .icon ha-state-icon {
                  --mdc-icon-size: 50px !important; /* Taille de l'icône */
                  margin-bottom: 10px;
                }
          - type: entities
            entities:
              - entity: sensor.transactions_banque
                name: Dernière mise à jour des données
                format: datetime
    column_span: 3
cards: []
icon: mdi:currency-eur

Décomposition du dashboard

Mon dashboard est structuré en plusieurs sections et cartes pour afficher les informations de manière claire et intuitive. Voici ce que fait chaque carte :

1. Carte « Solde bancaire »

Cette carte affiche le solde actuel de mon compte bancaire. Elle utilise le capteur sensor.solde_banque et inclut une icône stylisée (mdi:bank-transfer) pour une meilleure visibilité. J’ai ajouté un style personnalisé pour arrondir les coins de la carte et agrandir l’icône.

2. Carte « AUJOURD’HUI »

Cette carte affiche les transactions effectuées aujourd’hui. Elle utilise un template Markdown pour formater les données :

  • Les transactions sont classées par type (💳 pour les cartes, 🏦 pour les virements, etc.).
  • Les montants sont affichés en vert (🟢) pour les crédits et en rouge (🔴) pour les débits.
  • La date de chaque transaction est formatée au format jj/mm/aaaa.

3. Carte « A VENIR »

Cette carte affiche les transactions à venir (comme les prélèvements programmés). Elle utilise également un template Markdown :

  • Le montant total des transactions à venir est affiché en haut de la carte.
  • Chaque transaction est listée avec son type, sa date et son montant.

4. Carte « Solde disponible »

Cette carte affiche le solde disponible après déduction des transactions à venir. Elle utilise le capteur sensor.solde_disponible et partage le même style que la carte « Solde bancaire ».

5. Carte « Dernière mise à jour des données »

Cette carte affiche la date et l’heure de la dernière mise à jour des données bancaires. Elle utilise le capteur sensor.transactions_banque et formate la date au format datetime.

Je teste le détecteur d’humidité Zigbee pour plante verte (SGS01Z)

Le marché des capteurs Zigbee a récemment connu une augmentation significative des prix pour les modèles les plus courants. Cela peut être dû à une demande croissante ou à des coûts de production plus élevés.

J’ai commandé cet équipement Zigbee encore abordable pour le tester. Notez que ce test n’est pas « sponsorié », aucun produit testé n’est offert par une marque ou un distributeur. J’ai acheté ce matériel avec mon propre argent, parfois financé par des reventes comme celles disponibles dans mon vide-grenier.


Certification Zigbee 3.0

Vérification du Modèle Reçu

Il existe de nombreuses références pour ces capteurs. Le modèle que j’ai reçu n’affiche aucune référence sur le produit, mais j’ai noté « SGS01Z » sur le côté de la boîte.

Boîte du capteur

Description du Produit

Le produit se compose d’une « pique » à planter dans la terre, qui est le capteur, et d’une partie haute contenant l’électronique et le compartiment à piles. Une protection bleue protège l’électronique et les piles des éclaboussures.

Capteur Zigbee

Installation des Piles

J’ai inséré 2 piles AAA (non fournies). La LED bleue clignote, mais l’appairage Zigbee ne semble pas se lancer immédiatement après l’insertion des piles.

Insertion des piles

Intégration avec Zigbee2MQTT

J’ai activé le mode appairage sur Zigbee2MQTT et appuyé pendant 6 secondes sur le bouton, comme indiqué dans le mode d’emploi. L’appairage s’est lancé et le module a été intégré rapidement !

Appairage réussi

Module reconnu

Le module est bien reconnu sous la référence TS0601 et l’image correspond au module. Les données sont correctement remontées et fonctionnent :

Données du capteur

Tests de Valeurs

Sur l’image précédente, le capteur, non planté dans la terre, affiche 9% d’humidité. En le plaçant dans un verre d’eau, il passe à 100%. Dans la terre, il indique 20%, ce qui signifie qu’il est temps d’arroser. Les valeurs semblent correctes.

Intégration dans Home Assistant

J’ai retrouvé mon équipement dans Home Assistant. J’ai désactivé les fonctionnalités inutiles, et voici mon capteur disponible et fonctionnel :

Capteur dans Home Assistant

Capteur fonctionnel

Le capteur est parfaitement intégré !

J’ajoute les informations dans mon dashboard

Mon dashboard principal est composé d’une unique carte picture-elements.

Pour pouvoir utiliser les cartes markdown, j’ai déjà expliqué dans ce tuto comment faire :

Et j’ai fait une carte markdown qui va afficher un logo et un pourcentage. Le logo et la couleur du pourcentage varie en fonction de la valeur.
Voici le résultat :

Voici le code yaml pour réaliser cela :


type: picture-elements
image: /local/xxx.png
elements:  
  - type: custom:mod-card
    card:
      type: markdown
      content: >
        {% set moisture = states('sensor.plante_canape_soil_moisture') | float%} 
        {% if moisture >= 60 %} 💧<br><font color=deepskyblue>**{{ moisture}}%**</font> 
        {% elif moisture >= 20 %} 🌱<br><font color=limegreen>**{{moisture }}%**</font>
        {% elif moisture > 10 %} 🌿<br><font color="#ffa600">**{{ moisture }}%**</font>
        {% else %} ⚠️<br><font color="#db4437">**{{ moisture }}%**</font> 
        {% endif %}
    card_mod:
      style: |
        :host {
          --ha-card-background: transparent !important;
          --ha-card-box-shadow: none;
        }
    style:
      top: 76%
      left: 62%
  - type: custom:mod-card
    card:
      type: markdown
      content: >
        {% set moisture = states('sensor.plante_tele_soil_moisture') | float %}
        {% if moisture >= 60 %} 💧<br><font color=deepskyblue>**{{ moisture}}%**</font> 
        {% elif moisture >= 20 %} 🌱<br><font color=limegreen>**{{moisture }}%**</font>
        {% elif moisture > 10 %} 🌿<br><font color="#ffa600">**{{ moisture }}%**</font> 
        {% else %} ⚠️<br><font color="#db4437">**{{ moisture }}%**</font> 
        {% endif %}
    card_mod:
      style: |
        :host {
          --ha-card-background: transparent !important;
          --ha-card-box-shadow: none;
        }
    style:
      top: 59%
      left: 55%

Mode d’Emploi

Pour archive, voici le mode d’emploi du capteur :

Mode d'emploi 1

Mode d'emploi 2

Installation et Changement de Piles

Capteur Installé sur la Plante à Côté de la TV

  • Piles (2xAAA) changées le 17/04/2025. Le capteur de pile indique 42% avec des piles neuves, ce qui est surprenant.