[Article] Pronote pour Home Assistant : cours, devoirs, notes, etc

Bonjour tout le monde,

mes sensors de moyenne générale ne se mettent à jour que si je recharge l’intégration, suis-je le seul dans ce cas ?

2 « J'aime »

Effectivement je suis dans le même cas

1 « J'aime »

Bonjour, de mon côté, c’est très difficile depuis la rentrée. Je parviens à faire la connexion via le QR code (la connexion par login mdp ne fonctionne pas) pour mes 2 enfants, mais au bout d’un ou deux jours (je n’ai pas encore noté la fréquence), j’en perds un (pas un enfant, hein ! mais juste le compte). L’autre reste encore et au bout d’un certain temps il disparait aussi. Lorsque je regénère le QR code et que je refais la procédure, tout revient à la normale, mais ça ne dure pas…

voici les logs dans HA au cas où ça pourrait aider à comprendre

Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
    return Padding.unpad(cipher.decrypt(data), 16)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
    raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 392, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
    client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
    return get_client_from_qr_code(data)
  File "/config/custom_components/pronote/pronote_helper.py", line 129, in get_client_from_qr_code
    ).token_login(
      ~~~~~~~~~~~^
        pronote_url=qr_code_url,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
        client_identifier=qr_code_client_identifier,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
    return cls(
        pronote_url,
    ...<6 lines>...
        device_name=device_name,
    )
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
    super().__init__(
    ~~~~~~~~~~~~~~~~^
        pronote_url,
        ^^^^^^^^^^^^
    ...<7 lines>...
        device_name,
        ^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
    self.logged_in = self._login()
                     ~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
    dec = e.aes_decrypt(bytes.fromhex(challenge))
  File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
    raise CryptoError(
        "Decryption failed while trying to un pad. (probably bad decryption key/iv)"
    )
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')

Bonjour,

Depuis la rentrée 2025-2026, j’ai remarqué que la plateforme Pronote applique un droit à la déconnexion le soir et le week-end, présenté comme étant “pour le bien” des élèves.

Or, cette mesure complique considérablement la stabilité du site ainsi que le suivi des notes, devoirs et cours.

Rencontrez-vous le même problème ?
Ne serait-il pas possible d’ajouter une mémoire temporaire sur HA, afin de conserver les informations avant qu’elles ne soient perdues en soirée et durant le week-end ?

Car je ne sais pas si c’est lié, mais mon compte Parents Pronote est souvent bloqué :

Merci d’avance pour vos retours.

1 « J'aime »

Bonjour,

je n’ai pas ce problème.

Quelle fréquence de mise à jour des données avez-vous paramétré ? Pour ma part j’ai mis 30 minutes, j’ai 2 enfants paramétrés. Pour l’instant pas constaté de ban de mon IP.

Je suis à 15mn également avec 2 enfants. Aucun soucis de ce côté. Juste le problème de la moyenne générale qui ne se met pas à jour toute seule. Pronote fonctionne sur le web et sur le tél les soirs et w-e.

Bonjour,

rencontrez vous aussi des problèmes pour récupérer les moyennes de l’enfant dans chaque matières?

De mon coté, je n’ai aucune valeurs…

de mon coté, la moyenne generale n’est pas correcte, je pense que c’est une moyenne calculée il y a 1 ou 2 semaines, pourtant l’entité sensor.pronote_nom_prenom_overall_average est mise a jour régulièrement

Bonjour et merci énormément pour votre travail incroyable,

J’ai ajouté l’intégration avec le QRCode parent. Je vois bien les devoirs, emploi du temps, etc.
Par contre, je n’ai ni note ni moyenne (les sensor average et grades sont unavailable).

En me connectant sur pronote en web, je vois bien les notes dans l’onglet “Mes Notes’”. Il y en a 8 dans le Semestre 1. Je ne comprends pas pourquoi elles ne sont pas remontées dans l’intégration.

Est-ce que quelqu’un a déjà rencontré ce problème par hasard?

Merci beaucoup pour votre aide,

1 « J'aime »

Boulet, 2nde édition… :wink: Je vois bien l’argument mais comment retirer manuellement un event ?

Hello @delphiki

Si on regarde le sensor tomorrow_s_timetable le vendredi, il va renvoyer les données du lundi sans prendre en considération le weekend.

J’aimerais pouvoir utiliser ce sensor pour gérer l’ouverture du volet de ma fille qui a du mal à se reveiller, mais que l’automatisation ne se déclenche pas pendant les vacances.

Je pourrais ajouter une intégration pour les vacances effectivement, mais autant utiliser ce qui est déjà existant

Bonjour, j’ai un probleme avec l’entité sensor.pronote_nom_prenom_next_alarm, il m’a calculé 04h55 alors qu’elle commence à 08h55 et j’ai paramétré 120 min dans l‘integration pronote

C’est une histoire de fuseau horaire. Ma fille commence demain à 8h25, j’ai mis 80min pour le calcul et le sensor m’affiche 2025-10-02T05:05:00+00:00. En réalité c’est 7h05 et pas 5h05.

Je suis dans le même cas, authentification refusée:

Failed setup, will retry: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')

Pourtant je n’ai pas changé de mot de passe ni rien.

Quoi qu’il en soit, je pense qu’il serait bon de pouvoir, dans l’UI, refaire la config du QR code sans devoir tout effacer car risque de casser les dashboards et autres si jamais les entités ne sont pas recréées à l’identique.

Qu’en penses-tu ?

Je colle le log (en espérant ne pas spammer):

This error originated from a custom integration.

Logger: custom_components.pronote.coordinator
Source: helpers/update_coordinator.py:392
integration: Pronote (documentation, issues)
First occurred: 06:50:09 (203 occurrences)
Last logged: 11:39:09

Unexpected error fetching XNOMX XPrénomX (via compte parent) data
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
    return Padding.unpad(cipher.decrypt(data), 16)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
    raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 392, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
    client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
    return get_client_from_qr_code(data)
  File "/config/custom_components/pronote/pronote_helper.py", line 129, in get_client_from_qr_code
    ).token_login(
      ~~~~~~~~~~~^
        pronote_url=qr_code_url,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
        client_identifier=qr_code_client_identifier,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
    return cls(
        pronote_url,
    ...<6 lines>...
        device_name=device_name,
    )
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
    super().__init__(
    ~~~~~~~~~~~~~~~~^
        pronote_url,
        ^^^^^^^^^^^^
    ...<7 lines>...
        device_name,
        ^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
    self.logged_in = self._login()
                     ~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
    dec = e.aes_decrypt(bytes.fromhex(challenge))
  File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
    raise CryptoError(
        "Decryption failed while trying to un pad. (probably bad decryption key/iv)"
    )
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')
1 « J'aime »

ah merci . Oui c’est surement de l’UTC (2 heure de moins que la france). Ce serait bien de mettre l’heure locale….

1 « J'aime »

bonjour à tous, je me permet ce petit message car j’ai réinstallé HA ce jour et j’en ai profité pour réinstaller pronote sur la version,
merci à tous de faire avancer les choses.
l’an dernier, je n’avait acces qu’aux devoirs(le principal donc c’était pas trop gênant…)
cette année, j’ai accès à tout mais en guise de devoirs, il m’est indiqué “pas de devoirs à faire”
alors que sur pronote, il y a bien des taches à effectuer….j’ai bien entendu essayé les différentes entités, mais rien ne fonctionne. merci pour l’aide si elle est possible.

Bonjour, merci encore pour ce super boulot. Je n’ouvre quasiment plus Pronote maintenant :winking_face_with_tongue:

Petit problème cependant sur les calendars Pronote de mes enfants. Je constate que même pendant un cours leurs calendars sont désactivés alors qu’ils devraient être activés si j’ai bien compris.

Je m’en sers pour programmer le passage de leur téléphone en mode DND en fonction du statut de ces calendars.

Hello,

une personne a fait la modif et la PR. Je viens de commenter que c’est la modif que j’ai testé et c’est ok.

Hello,

Je confirme, j’ai le même phénomène :

Ici, on voit que le nombre est 4 alors qu’il y a 5 moyennes différentes. Les moyennes par matières sont bonnes mais la moyenne générale n’est pas bonne. Elle est calculée sans la dernière MAJ. Dans Pronote c’est bien à jour.

Salut, j’imagine que DND=mode ne pas déranger. Comment tu fais pour le modifier via HA ?

1 « J'aime »