[Tuto] Je récupère le solde de son compte bancaire et les dernières opérations

Bonjour à tous,

J’ouvre ce fil pour vous donner l’accès à mon nouveau tuto « Je récupère le solde de son compte bancaire et les dernières opérations »

Compte-tenu du temps pluvieux, je me suis dit que c’était le moment de vous donner une occupation de fin de semaine.

Le tuto est donc publié, il est assez détaillé mais je dois encore le reparcourir pour vérifier l’absence de boulettes, raison pour laquelle je ne l’ai pas encore rendu public.

Pour y accéder, on va vous demander un mot de passe qui est : sigalou

Evidemment, je compte sur vous pour me signaler sur cette discussion si vous y êtes arrivé ou pas, les points de blocage que je peux améliorer, les éventuelles erreurs ou imprécisions …

Quand tout cela sera au point, je ferai une publication sur le blog de HACF en remerciement de votre vote lors du dernier concours, merci encore, c’est très touchant.

A très vite dans cette discussion donc.

7 « J'aime »

Hello @Sigalou ,

Merci c’est super détaillé (mais pas simple à priori).

J’ai tout de suite une première question qui me vient : est-ce que donner l’accès à ses comptes à une société Powens n’est pas risqué ?

Si j’ai bien compris, il expose via leurs APIs les données de tes comptes et ils y ont donc accès en clair.

EDIT: si un jour tu veux transformer ça en une intégration, tu as des tutos pour démarrer ici : Développer pour Home Assistant - Introduction.

2 « J'aime »

Salut,
je me posais la même question. Je suis pas trop chaud …

2 « J'aime »

Salut

Merci pour la publication de la recette mais comme d’autres avant moi, donner l’accès à mon compte en banque à un site tiers c’est juste pas possible ! Il n’y a aucune garantie de quoi que ce soit en terme de sécurité, dommage parce que cela me plaisait bien :wink:

Vincèn

1 « J'aime »

question à se poser, en cas de piratage de compte quel est la réaction de la banque dans le cas ou tu as autorisé une application tierce à accéder à tes comptes, la banque à normalement un devoir de vigilance mais comme c’est toi qui a autorisé …
Je ne connaissais pas cette société, peut-être que c’est prévu dans les conditions générales en accord avec la banque.

« Les protocoles d’open banking garantissent que les données sont transmises en toute sécurité entre les différentes parties impliquées »

Mais je ne suis quand même pas trop chaud

1 « J'aime »

Oui, les amis, j’entends votre remarque mais vous pensez pouvoir récupérer comment les infos de votre banque sans passer par un opérateur d’agrégation ??

Je me suis bien renseigné sur cette question depuis que je me spécialise en cybersécurité.
Pour votre parfaite information, l’agrégation bancaire désigne le processus par lequel un service ou une plateforme récupère et centralise les données bancaires d’un utilisateur en provenance de plusieurs comptes ou établissements financiers. Ce service repose sur l’accès aux données via des API bancaires sécurisées. Ces API sécurisées sont maintenant encadrées par la directive européenne DSP2 – Directive sur les Services de Paiement 2.
Sans DSP2, je comprendrais vos doutes, mais depuis sa publication, les agrégations banquaires sont sûres.
Si votre banque n’est pas proposée dans la liste des banque disponibles, c’est qu’elle ne fournit pas de certification DSP2. Si elle est proposée, vous pouvez foncer.

Notez enfin que si vous suivez bien le déroulé des autorisations données, vous n’autorisez aucun transfert de fonds, uniquement de la consultation. Vous prenez plus de risque en payant sur Temu qu’en agrégeant votre compte bancaire.

Dernière chose, si votre banque vous donne accès à une API, vous pouvez vous y connecter directement sans passer par un agrégateur. Je suis chez Axa banque, ils n’ont pas ouvert d’API directement aux particuliers, il faut être certifié DSP2 pour se connecter dessus. Et évidemment un particulier ne peut pas se payer un certificat DSP2 juste pour consulter ses comptes.

Je reste à votre dispo pour toute autre question.

3 « J'aime »

Très bien parfait !

Quelques axes d’améliorations :

  • utiliser les helpers via l’UI par rapport à cette partie
  • pour les captures d’écrans où il y a besoin de surligner, je vous suggère d’utiliser l’outil ShareX

Une remarque dans cette partie pourquoi ne pas spécifier un scan d’interval plus grand (par exemple 1h, ou 2h ou 4h ou 6h ou 24h ?); ça évite de créer l’automatisation qui mets à jour à midi … Je comprends qu’au cas où l’automatisation peut servir plus tard si besoin, mais c’est ré inventer la roue alors que l’option « scan_interval » est prévue pour ?

… et je rejoins les commentaires au dessus qui invite à créer une intégration :slight_smile:

Je sais le faire pour la plupart des sensors dont les entrées, mais pour les templates, je ne sais pas faire, enfin, je n’ai jamais tenté. C’est documenté quelque part ? tu sais ?

J’ai expliqué dans le tuto que je ne souhaite pas utiliser scan_interval car c’est un intervale de temps et non un horaire. Ainsi, si je veux faire ma mise à jour à midi, je ne peux pas le faire avec scan_interval. J’enverrai un message pour dire que le salaire est tombé, que le solde est négatif ou autre quand je détecterai un truc qui m’interesse. si j’utilise scan_interval, j’ai le risque d’une mise à jour à 3h du mat, un message pour dire que le solde est négatif à cette heure c’est pas super WAF ! Voilà la raison.

Pour l’intégration, je pense que ce n’est pas assez automatisé pour en faire une intégration, mais je vais y réflechir.

Salut Sigalou
dans les entrées tu choisis un template, modeliser un capteur et dans modèle de l’état tu copies le code correspond à la partie state: de ton capteur.

Comme il le précise dans son tuto il à choisi cette méthode car elle correspond à son besoin, libre à toi d’adapter à ton gout :wink:

Par principe, en cybersécurité, plus tu rajoutes d’éléments, et quels que soient ces « éléments » (un bout de code, une appli, des accès à une API et j’en passe), tu abaisses le niveau de sécurité de l’ensemble.
Avec le DSP2, ça t’offre une forme de garantie que le risque est maitrisé. Pas qu’il n’existe pas.

Powens utilise l’API pour récupérer des infos de ton compte. Donc, par définition, la surface d’exposition aux risques de tes infos/détails bancaires s’accroit et le risque associé augmente.

On peut considérer que le risque est plus faible que l’intérêt que tu y vois et que l’on peut y trouver. Mais, néanmoins, dire DSP2 = 0 risque d’ouvrir les accès à Powens, je n’irai pas jusque-là.

4 « J'aime »

Salut,

Comme la plupart, je suis pas chaud pour « donner » l’accès a mon compte a un tiers . Même si il offre des garantis de securité.

Je considère que HA et pour la maison principalement, et j’y vois peu d’intérêt pour suivre mon compte.

Je passe par application de ma banque, et personnellement ca me suffit.

Mais je trouve malgré tous ton travail intéressant.

3 « J'aime »

Merci, je vais tester. C’est tellement simple le yaml quand tu y es habitué … mais je dois me forcer à me mettre à l’interface graphique car ce sera l’avenir.

Je suis partagé là dessus car quand tu veux mettre ce que tu fais à disposition des autres faire un fichier yaml en tant que package avec tous les sensors, automatisations et scripts c’est tellement plus rapide pour tout le monde.

1 « J'aime »

Absolument d’accord. Il manque une possibilité d’exporter/importer

Hello,

Merci pour ce tuto !
J’ai une erreur d’unité sur le sensor solde_banque
Une idée de ce qu’il faut faire pour résoudre ?


Enregistreur: homeassistant.components.sensor
Source: helpers/entity_platform.py:609
intégration: Capteur ([documentation](https://www.home-assistant.io/integrations/sensor), [problèmes](https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+sensor%22))
S'est produit pour la première fois: 19:19:44 (1 occurrences)
Dernier enregistrement: 19:19:44

Error adding entity sensor.solde_banque for domain sensor with platform rest

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 635, in state numerical_value = int(value) ValueError: invalid literal for int() with base 10: '' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 638, in state numerical_value = float(value) ValueError: could not convert string to float: '' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 609, in _async_add_entities await coro File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 928, in _async_add_entity await entity.add_to_platform_finish() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1383, in add_to_platform_finish await self.async_added_to_hass() File "/usr/src/homeassistant/homeassistant/components/rest/entity.py", line 43, in async_added_to_hass self._update_from_rest_data() ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/src/homeassistant/homeassistant/components/rest/sensor.py", line 186, in _update_from_rest_data self.async_write_ha_state() ~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1023, in async_write_ha_state self._async_write_ha_state() ~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1148, in _async_write_ha_state self.__async_calculate_state() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1085, in __async_calculate_state state = self._stringify_state(available) File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1029, in _stringify_state if (state := self.state) is None: ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 642, in state raise ValueError( ...<5 lines>... ) from err ValueError: Sensor sensor.solde_banque has device class 'None', state class 'None' unit '€' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: '' (<class 'str'>

L’erreur que tu rencontres indique que le capteur sensor.solde_banque ne parvient pas à récupérer une valeur numérique via l’intégration REST.

Donne nous la manière dont tu génères solde_banque

Si c’est comme Linxo et cie (et Powens est un concurrent de Linxo), ils n’ont accès aux informations qu’en lecture. Toutes les opérations d’écriture demandent une nouvelle authentification / validation auprès de sa banque directement.

Merci en tout cas de nous avoir fait découvrir Powens. Je vais pouvoir créer un script custom pour récupérer les informations.

J’avais oublié d’indiquer « Bearer » avant le token.

Cela fonctionne bien : merci ! Mais j’ai un problème de formatage avec la carte.
Je suis preneur de tes conseils pour résoudre cela !