[Article] Intégration Ecole Directe

Salut Giga77,

J’ai également ce problème, aucun sensor ne fonctionne. Voiçi les log après ré-installation de l’intégration :

Enregistreur: homeassistant.components.sensor
Source: helpers/entity_platform.py:366
intégration: Capteur (documentation, problèmes)
S'est produit pour la première fois: 30 janvier 2025 à 10:54:10 (6 occurrences)
Dernier enregistrement: 14:46:48

Error while setting up ecole_directe platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 366, in _async_setup_platform
    await asyncio.shield(awaitable)
  File "/config/custom_components/ecole_directe/sensor.py", line 73, in async_setup_entry
    sensors.append(EDMoyenneSensor(coordinator, eleve))
                   ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ecole_directe/sensor.py", line 375, in __init__
    self._state = self.coordinator.data[self._name]["moyenneGenerale"]
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'moyenneGenerale'

Merci pour ton aide.

Bonjour,
Même souci également

Hello
Nouvelle version béta : 0.3.23

En espérant que ça corrige les problèmes de moyennes. :sweat_smile:

Oui @Giga77 merci cela fonctionne bien, encore merci pour ta réactivé et ton support!

Perso, j’utilise pas les moyennes (« mes » profs ne mettent pas a jour ces informations) mais comme cela fessait crasher tout ecole_direct, c’était pénalisant.

Par la suite, est-il possible de mettre de genre de fonctionnalité dans des Try/Except (si c’est possible) pour le rendre le code plus robuste ?

Bonne journée

1 « J'aime »

Oui, ça doit être possible.
Crée une issue : GitHub · Where software is built

Bonjour,
Je remercie le développeur pour cette excellente intégration. Cependant, depuis l’avant-dernière mise à jour, je rencontre toujours des difficultés à récupérer les intégrations ( plus aucune entité) . Voici mes logs ; si vous pouvez m’aider, cela serait apprécié. Il semble que le problème soit lié à la « moyenne ».

2025-02-10 19:29:28.246 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up ecole_directe platform for sensor: 'moyenneGenerale'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 366, in _async_setup_platform
    await asyncio.shield(awaitable)
  File "/config/custom_components/ecole_directe/sensor.py", line 73, in async_setup_entry
    sensors.append(EDMoyenneSensor(coordinator, eleve))
  File "/config/custom_components/ecole_directe/sensor.py", line 375, in __init__
    self._state = self.coordinator.data[self._name]["moyenneGenerale"]

En vous remerciant.

Met a jour l’intégration, un fix est sortie pour ce souci

Cdt

1 « J'aime »

Bonjour @Giga77 dans la dernière version (0.3.25) dans le manifest tu passes de version 0.3.22 à 0.0.0. Est-ce bien normal ?

Salut
ç’est une question à mettre dans Github :wink:
Oui, ç’est normal, tu remarqueras que j’ai aussi rajouté un fichier release.yaml qui met automatiquement à jour la version dans le fichier manifest.yaml

Pour améliorer (légérement) l’affichage des notifications, on peut changer le titre pour n’afficher que le prénom de l’enfant.

Car souvent, on a pas 2 enfants avec le même prénom dans la famille et on a pas besoin de voir son nom de famille dans la notif, … , …

On peut utiliser la directive split comme dans cette exemple :

title: "{{ trigger.event.data.child_name.split(' ')[0] }} nouvelle note"
1 « J'aime »

Bon, si ça intéresse du monde j’ai réussi à générer un sensor compatible avec la carte moyennes de pronote en utilisant un template

Ca encore en chantier mais ça produit quelquechose d’utilisable

template:
  - sensor:
      - name: "Moyennes Ecole Directe vers Pronote"
        state: "2"
        attributes:
          nickname: "{{ states('sensor.ecole_directe_xxx_yyy') }}"
          averages: >
            {% set sensor_list = ['sensor.ecole_directe_xxx_yyy_francais',
              'sensor.ecole_directe_xxx_yyy_anglais_lv1']
            %}
            {% set data = namespace(averages=[]) %}
            {% for sensor in sensor_list %}
              {% set value = {'average' : states(sensor),
                'class' : state_attr(sensor, 'moyenneClasse'), 
                'max' : state_attr(sensor, 'moyenneMax'),
                'min' : state_attr(sensor, 'moyenneMin'),
                'out_of' : '20',
                'default_out_of' : '20',
                'subject' : state_attr(sensor, 'nom'),
                'background_color': '#180EEB'}
               %}
              {% set data.averages = data.averages + [value] %}
            {% endfor %}
            {{ data.averages }}
        unique_id: "pronote_xxx_yyy_averages"
1 « J'aime »

Bonjour Damien, c’est exactement ce que je cherchais, merci :wink: Sauf que (je suis débutant…) je met ca dans un fichier template.yaml que je charge, mais je ne retrouve pas le sensor… :confused: Il est exécuté que qd il y a de nouvelles notes ? (si je le teste avec l’outil de developpement « modele », il me renvoi bien les moyennes…)
Merci

Bonjour,

Impossible d’utiliser l’intégration depuis peu, voici le message d’erreur :

Mar 21 10:38:46 pi hass[123033]: 2025-03-21 10:38:46.301 DEBUG (MainThread) [custom_components.ecole_directe] async_setup_entry
Mar 21 10:38:46 pi hass[123033]: 2025-03-21 10:38:46.302 DEBUG (SyncWorker_3) [custom_components.ecole_directe] URL: [https://api.ecoledirecte.com/v3/login.awp?v=4.70.0] - Payload: [data={"identifiant":"xxxxxx", "motdepasse":"yyyyyy", "isRelogin": false}]
Mar 21 10:38:46 pi hass[123033]: 2025-03-21 10:38:46.519 CRITICAL (SyncWorker_3) [custom_components.ecole_directe] Error with URL:[https://api.ecoledirecte.com/v3/login.awp?v=4.70.0] - Code 505: Identifiant et/ou mot de passe invalide !
Mar 21 10:38:46 pi hass[123033]: 2025-03-21 10:38:46.521 ERROR (MainThread) [custom_components.ecole_directe] Unable to init ecole directe client
Mar 21 10:38:46 pi hass[123033]: 2025-03-21 10:38:46.521 DEBUG (MainThread) [custom_components.ecole_directe] Finished fetching Roumano data in 0.219 seconds (success: True)

J’ai vérifier, c’est le bon couple user/mdp (que j’ai remplacer dans les logs , au dessus) et je peut me logger à école directe via un navigateur internet

PS topic mis a jour: Je pense que c’est lié a la mise a jour de Home Assistant >= 2025-02.1 où la lib httpx à était mis a jour : Missing query params in url when params option is set · Issue #3433 · encode/httpx · GitHub

Comme c’est un probème, visiblement connu, j’ai mis a jour l’issue dans le github de l’intégration ecole directe : Code 505: Identifiant et/ou mot de passe invalide · Issue #79 · hacf-fr/hass-ecoledirecte · GitHub

Salut @roumano
Intéressant, « httpx » n’est pas utilisé dans l’intégration, mais « requests ».
Je pense plutôt à une modification du coté d’Ecole directe.
Après j’ai identifié des améliorations avec « requests ».

Bonjour à tous,

est ce que l’application fonctionne pour vous ? Je n’arrive pas à me connecter.

Salut
Non, École Directe a changé son API : Code 505: Identifiant et/ou mot de passe invalide · Issue #79 · hacf-fr/hass-ecoledirecte · GitHub

Je travaille sur un fix.

2 « J'aime »

OK Super merci beaucoup, et bon courage

Bonjour,
Pour ma part impossible de me connecter .
Pourtant es identifiants fonctionnent bien sur le site ecole direct … Donc impossibble d’aller plus loint . :frowning_face:

Hello

Nouvelle version béta : 0.3.27
:warning: Cette version n’est pas stable! :warning:

Désolé, Ecole Directe a changé la manière de se connecter dans son API, et j’ai dû adapter l’intégration. Et ils ont encore changé jeudi dernier…

J’ai dû faire pas mal de changement, et ça affecte toutes les requêtes de l’API.
Je vous demanderai de faire des tests et de m’envoyer les logs par MP, svp.

2 « J'aime »

Hello @Giga77
Je teste ça et t’envoie mes logs. Merci pour le support
++