[Article] Intégration Pronote : cours, devoirs, notes, etc (archive)

Je me réponds tout seul, j’ai trouvé le bug.

Dans : /usr/local/lib/python3.13/site-packages/pronotepy/ent/ent.py

modifier :

https://cas.monbureaunumerique.fr/login?selection=EDU&service=https://example.com/

par :

https://cas.monbureaunumerique.fr/login?selection=EDU&service=

@delphiki je ne sais pas si tu peux corriger le bug direct dans l’intégration ou si c’est à faire obligatoirement dans pronotepy.

Julien

PS: testé et fonctionnel
PS2 : j’ai soumis une pull request sur le github de pronotepy

4 « J'aime »

EDIT : au temps pour moi je n’avais pas configuré le dashboard, tout fonctionne!

Petite mise à jour rapide de l’intégration, version 1.15.4, pour intégrer le correctif dans pronotepy qui permet de gérer la dernière version de Pronote qui vient de sortir.

6 « J'aime »

Merci pour ta réactivité toujours super cette intégration

1 « J'aime »

Merci pour la mise à jour !

Est-ce que tu peux faire quelque chose au niveau de l’intégration pour corriger les soucis d’auth avec login / mdp ? Ou est-ce 100% dépendant de pronotepy ? (voir mon analyse ci-dessus)

Merci !

1 « J'aime »

Hello Massimo,

J’ai mis ça en place l’an dernier chez moi.

La limite est qu’il faut s’assurer d’avoir impérativement l’intitulé des cours exact pour que cela fonctionne donc mise à jour chaque année. On pourrait peut être faire plus propre mais ça fonctionne.


alias: Moyennes Camille
description: ""
mode: single
triggers:
  - entity_id:
      - sensor.pronote_xxxxxxxxxxx_camille_averages
    trigger: state
conditions: []
actions:
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'FRANCAIS' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_francais_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'HISTOIRE-GEOGRAPHIE' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_histoire_geo_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'PHYSIQUE-CHIMIE' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_physique_chimie_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'MATHEMATIQUES' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_mathematiques_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'ESPAGNOL LV2' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_espagnol_lv2_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'ANGLAIS LV1' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_anglais_lv1_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'ED.PHYSIQUE & SPORT.' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_ed_physique_sport_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'TECHNOLOGIE' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_technologie_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'ARTS PLASTIQUES' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_arts_plastiques_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'SCIENCES VIE & TERRE' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_sciences_vie_terre_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'EDUCATION MUSICALE' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_education_musicale_camille
    action: input_number.set_value
  - data:
      value: >-
        {% set ns = namespace(moyenne=0) %} {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%}
          {% for i in range(0, items | count, 1) if items[i].subject == 'LCA LATIN' %}
             {% set ns.moyenne = items[i].average | replace (',','.')|float(0) %}
          {% endfor %}
          {{ ns.moyenne }}
    target:
      entity_id: input_number.moyenne_lca_latin_camille
    enabled: true
    action: input_number.set_value
  - data:
      value: >-
        {% set items =
        state_attr('sensor.pronote_xxxxxxxxxxx_camille_averages','averages')%} {%
        set ns = namespace(nombre=0, moyenne_generale=0) %}
          {% for i in range(0, items | count, 1) %}
             {% set ns.moyenne_generale = items[i].average | replace (',','.') | float(0) + ns.moyenne_generale %}
             {% set ns.nombre = ns.nombre + 1 %}
          {% endfor %}
        {% set ns.moyenne_generale = ns.moyenne_generale / ns.nombre %}   {{
        ns.moyenne_generale }}  
    target:
      entity_id: input_number.moyenne_generale_camille
    action: input_number.set_value

À ta dispo pour en parler.

Matt.

2 « J'aime »

Bonjour,

Depuis cette semaine, le sensor [sensor.pronote_xxx_yyy_averages] est unavailable dans mon HA.
Est-ce pareil chez vous ? il a fallu que je réinstalle l’intégration Pronote.
Je viens de mettre à jour en 1.15.4 c’est idem !

Idem pour les sensors : pronote_xxx_yyy_information_and_surveys, pronote_xxx_yyy_timetable_ical_url

Merci pour votre aide.

Alors non pas chez moi, je viens de regarder à l’instant.
La version de mon intégration est 1.15.4

Par contre j’avais l’intégraiton complètement KO depuis quelques temps et j’ai tout désinstallé puis ré intégré et c’est reparti tout comme il faut

1 « J'aime »

Merci pour ta réponse, ce que je trouve bizarre c’est que dans HACS, j’ai bien version 1.15.4, mais quand je vais dans Paramètres/Intégration/Pronote, je vois version 0.15.4.
J’ai l’impression que ma version n’est pas bien installée.
Tu vois quoi comme version dans Intégration ?

Hello,

Pour le numéro de version, c’est ma faute, tu es bien dans la bonne version, c’est le fichier de config que j’ai mal renseigné :slight_smile:

1 « J'aime »

Tout pareil :stuck_out_tongue_winking_eye: que toi pas de soucis là

Salut @delphiki,
Bain3 a validé ma PR pour corriger les URLs pour certains ENT.
Pourrais-tu stp faire un update de l’intégration pour y inclure ce changement ?
Merci !

1 « J'aime »

Bonjour,
Je reviens avec mon problème : 3 sensors qui ne fonctionnent pas. (unavailable).
J’ai tout désinstallé Pronote et tout réinstallé. Mais maintenant je n’arrive plus à configurer le compte avec le json du QrCode : ça me met : « Unknown error occurred »
Quelqu’un peut il m’aider ? Merci,

Hello all’s petite question au grand dev @delphiki les cartes manquantes pour la choses sont prévues ? Si besoin je peux mettre ma pierre a l’édifice au cas où :wink:

Hello,

Est-ce que quelqu’un pourrait m’aider pour recuperer mon sensor pronote_xxx_xxx_averages qui ne fonctionne toujours pas (unavailable), même après réinstall ?
Je m’en sers bcp ce celui là pour calcul de la moyenne générale.

Merci d’avance,

Salut tu récupères quoi comme info?

Salut MattG
je suis très intéressé par ta procédure afin de calculer et d’afficher la moyenne pronote mais étant nouveau sur HA , j’aurai aimé que tu m’explique la procédure excate a suivre afin que je puisse la mettre en place et que cela fonctionne .
je te remerci d’avance.

Hello @titof2375,
Je récupère tous les sensors Pronote (soit 18 au total), mais 3 de ceux là sont notés en indisponible/unavailable, il s’agit de « pronote_xxx_yyy_information_and_surveys », « pronote_xxx_yyy_averages », et « pronote_xxx_yyy_timetable_ical_url ».
Si tu as une idée pour solutionner ça, je suis preneur :wink:

Je précise aussi que je vois cela dans les attributs (le restored et supported features 0 me posent question) :
- restored: true
- friendly_name: pronote_xxx_yyy_averages
- supported_features: 0

Autre question, comment mettre à jour pronotepy vers 2.14.2 ? c’est peut être ça le pb, ou ça ne concerne pas HA ?

Alors es que t’on enfants a des notes de valider dans Pronote ?