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

Salut @delphiki !

Tout d’abord merci pour cette intégration qui s’améliore de jour en jour.

J’ai créé une automatisation qui annonce la journée de mes enfants via Telegram et une annonce vocale sur un HomePod tous les matins en envoyant le contenu des calendriers à gpt.

Je me base sur les entités timetable générées par l’intégration. Ça fonctionne bien sauf pour les cours annulés ou modifiés dont je ne crois pas qu’il est fait mention dans ces tables.

Aurais-tu un moyen simple d’ajouter dans les tables calendrier une mention quand un cours est annulé ?

Merci.

Bonne journée !

Pour ces infos, j’ai fait cette automatisation :

alias: Pronote Manon notif emploi du temps aujoud'hui
description: Pronote Manon notif emploi du temps aujoud'hui
trigger:
  - platform: state
    entity_id:
      - sensor.pronote_xxx_manon_timetable_today
    attribute: canceled_lessons_counter
    to: null
condition:
  - condition: template
    value_template: >
      {% set items = state_attr('sensor.pronote_xxx_manon_timetable_today',
      'lessons') %}

      {{ true if items | selectattr('canceled', '==', true) | list or items |
      selectattr('canceled', '==', false) | selectattr('status', '!=', none) |
      list else false }}
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.pronote_xxx_manon_timetable_today
        state: "0"
action:
  - service: notify.mobile_app_iphone_aurel
    data:
      title: Pronote Manon
      message: >-
        {% set items =
        state_attr('sensor.pronote_xxx_manon_timetable_today','lessons') %}
        {%- for item in items  -%}
          {%- if item.canceled == True -%}
            {{ item.lesson }} : {{ item.status }}, aujourd'hui de {{ item.start_time }} à {{ item.end_time}}{{"\n"}}
          {%- endif -%}
          {%- if item.canceled == false and item.status != None -%}
            {{ item.lesson }} : {{ item.status }} le {{as_timestamp(item.start_at) | int | timestamp_custom('%d/%m/%Y', true)}} de {{ item.start_time }} à {{ item.end_time}}{{"\n"}}
          {%- endif -%}      
        {%- endfor -%}
mode: single

Le résultat :

Hello,
Je pense qu’en remontant ce fil, tu devrais pouvoir trouver une carte qui fait ce que tu veux.
Effectivement pour le moment il n’y a pas de cartes officielles pour afficher les différents éléments.

@MattG tu passes par le sensor timetable ou le calendar ?

@herveaurel , merci, je vais essayer de m’en inspirer.
@delphiki , j’utilise pour l’instant l’instance calendar qui est pratique à interroger puisqu’un service permet le fetching des événements facilement.

Si vous êtes intéressés, je pourrai partager mon automatisation quand je l’aurai mise au propre et qu’elle fonctionnera comme je le souhaite.

Pour l’instant ça permet ça :

« Agenda

Bonjour ! Aujourd’hui, Marilou a commencé avec les arts plastiques et finira par l’histoire-géographie à 12h30. Quentin a eu latin ce matin et terminera avec les arts plastiques à la même heure. Camille, quant à lui, a débuté par la technologie et aura espagnol, sa deuxième langue, en dernier cours. Il fait un peu frais pour la saison avec 10.6°C. Prenez un manteau chaud ! Bonne journée à tous. »

1 « J'aime »

Je ne me suis pas repenché sur la beta du Calendar pour le moment j’avoue, j’essayerai d’avancer dessus rapidement, parce que c’est vrai que tous les cours sont intégrés dans le calendrier, qu’ils soient annulés ou non.

La problématique que j’ai avec le Calendar, c’est la façon de gérer les événements.
Actuellement, les événements sont générés à la volée à partir des cours récupérés à l’instant T (donc de l’instant T à J+15), c’est la façon de faire la plus simple d’implémenter le calendrier rapidement. Sauf que c’est glissant, demain vous ne verrez plus dans le calendrier les événements d’aujourd’hui.
Une autre façon de faire, c’est de « stocker » les événements au fur et à mesure, mais ça demande de comparer les données pour les mettre à jour (si un cours est annulé, modifié, etc.), donc plus de taff à ce niveau là (sauf si on fait un système annule et remplace pour les jours présent + futurs).

Et simplement ajouter « cours annulé » à une des propriétés de l’événement ? Je vois que location n’est pas utilisé… ou ajouter un champs « notes » ? Je ne sais pas si c’est possible.

Il n’y a pas beaucoup de choix dans les propriétés disponibles malheureusement, je pourrais mettre ça dans le titre à la rigueur.
Le champ location effectivement, il faut que j’y renseigne la salle de cours.

Si tu veux juste occulter les cours annulés, tu peux ajouter un
if event.canceled is False dans calendar.py
comme ceci:

    async def async_get_events(
        self,
        hass: HomeAssistant,
        start_date: datetime,
        end_date: datetime,
    ) -> list[CalendarEvent]:
        """Return calendar events within a datetime range."""
        return [
            async_get_calendar_event_from_lessons(event, hass.config.time_zone)
            for event in self.coordinator.data['lessons_period']
            if event.canceled is False
        ]

Les cours annulés ne s’y afficheront plus.

Bonsoir,
Petite question pour égayer la carte des notes on ne peut pas y récupérer la couleur de la matière (dito emploi du temps et devoirs) ?

Comme promis, voici une première version d’un Blueprint permettant de créer une automatisation qui annonce (par telegram et vocalement sur une enceinte via un service tts) les prochaines 18h.
Il est bloqué sur 5 agendas (3 enfants pronote, 1 pour les parents, 1 jours fériés) mais je peux retravailler pour sélectionner le nombre d’agenda ultérieurement si ça intéresse quelqu’un.
Attention, service de conversation OpenAI est requis.

Hello,

la dernière MAJ m’a fait sauter les notes, moyennes et évaluations.

D’autres sont-ils dans le même cas ?

Merci

Après un restart HA ce matin je constate la même chose.

Ok c’est peut-être pas la mise à jour alors, j’ai constaté ça ce matin car j’ai fait l’update ce matin. ça me rassure :slight_smile:

Pourtant, sur le site Pronote, tout y est. (@delphiki)

Salut à tous
pareil pour moi.

Bonjour,

Lisant cela j’ai redémarré HA.
Remontée d’infos (relativement) ok.

Hello,

Je vais tester dans mon coin, mais vous n’avez pas d’erreur dans vos logs ?
La seule chose qui change, c’est que j’ai retiré un paramètres pour la comparaison des notes, mais à ce moment là, les notes sont déjà chargées, donc ça ne devrait pas être impactant :thinking:

Je viens de redémarrer HA et effectivement, je n’ai qu’une note pour mon fils, et plus de notes pour ma fille. J’essaye de regarder ça dans la journée.

2 « J'aime »

C’est parce que nous avons changé de trimestre. Il n’y à pas d’erreurs. L’intégration récupére les notes, évaluations, absences,… pour le trimestre en cours.

1 « J'aime »

Chez nous pas d’impact. Mais on est organisé en semestres…

Avez vous une incohérence entre Pronote et HA ou juste perdu les notes des deux cotés?

pas sûr mais je crois qu’il suffit d’ajouter
device_class: timestamp
et préciser après state :

as_timestamp(states('sensor.pronote_camille_next_alarm')) | timestamp_custom('%A %Hh%M') 

pour que le format soit lisible par pronote.

1 « J'aime »