Intégration École Directe

L'école de votre enfant utilise peut-être Ecole Directe pour communiquer les notes, planning et autres infos. Cet article présente comment intégrer Ecole Directe dans Home Assistant.
Intégration École Directe

Sommaire

Introduction

L'établissement de mes enfants utilisant École Directe et suite à des demandes récurrentes sur le forum de HACF, je me suis lancé dans le développement de cette intégration pour Home Assistant. Et j'en profite pour remercier les utilisateurs qui m'ont aidé à développer, tester et améliorer cette intégration. Aujourd'hui, elle est assez mûre pour que je rédige ce tutoriel. Je vais vous expliquer comment l'installer et la configurer.

Installation

Installation via l'interface utilisateur et HACS

Depuis HACS (Home Assistant Community Store version 2.0.1), appuyez sur les 3 boutons en haut à droite, puis cliquez sur Dépôts personnalisés

Ajoutez l'adresse https://github.com/hacf-fr/hass-ecoledirecte avec pour type Intégration, et faire AJOUTER.

Faites une recherche ecole directe, l'intégration apparaît dans la liste. Cliquez sur les 3 points à droite, puis sur Télécharger.

Laisser le choix de la dernière version et cliquez sur Télécharger. Il faut ensuite redémarrer Home Assistant.

Installation manuelle

Copier le répertoire ecole directe de la dernière release dans le répertoire custom components de votre répertoire config. Redémarrer Home Assistant.

Version pre-relase

Dans HACS, vous avez la possibilité de télécharger les versions béta. Ouvrez l'intégration, cliquez sur les 3 points à droite, puis Retélécharger.

Appuyez sur Besoin d'une version différente ?, puis choisissez la version souhaité.

Cliquez sur Télécharger, et pour finir redémarrer HA.

Configuration

Cliquer sur ce bouton :

Ou aller dans :

Paramètres > Appareils et services > Intégrations > Ajouter une intégration, et chercher "Ecole Directe"

Utiliser votre identifiant et mot de passe :

Le fichier ecoledirecte_qcm.json permet de sauvegarder les questions et respectives réponses pour la double authentification requise par Ecole Directe. Il est créé automatiquement dans le répertoire /homeassistant (ou /config pour les versions plus anciennes) de Home Assistant. L'option "Envoi de notifications" permet d'envoyer une notification sur tous vos appareils lorsqu'il y a une nouvelle question dans le fichier qcm.

Ensuite, il faut aller vérifier les réponses dans le fichier /homeassistant/ecoledirecte_qcm.json

Il faut laisser seulement la bonne réponse pour chaque question :

Retournez faire l’authentification, et cette fois, ça doit passer !

:tada:

Retrait des tags HTM

Il est possible de retirer les tags HTML (et donc le formatage).

⚠️
À utiliser avec précautions, car si vous activez cette option, ça va supprimer le formatage, mais aussi les liens, iFrame, etc.

Par défaut, cette option est désactivée. Pour l’activer, suivez ces instructions :
Allez sur l’intégration et cliquez sur « Configurer » :

Cochez l’option, puis validez :

image

Ensuite, il faut recharger l’intégration :

image

Carte avec les tags :

Carte sans les tags :

image

Entités disponibles

Cette intégration fournit plusieurs entités, le plus souvent préfixées avec ecole_directe_PRENOM_NOM (où PRENOM et NOM sont remplacés). Les entités disponibles dépendent de l'établissement et du niveau de l'élève.
Les entités sont mises à jour toutes les 30 minutes, même s'il n'y a pas de mise à jour dans les données fournies par Ecole Directe.

Entité Description
sensor.ecole_directe_PRENOM_NOM informations basique de l'enfant
[...]_homework devoirs
[...]_grades notes
[...]_evaluations evaluations
[...]_timetable_today emploi du temps du jour
[...]_timetable_tomorrow emploi du temps du lendemain
[...]_timetable_next_day emploi du temps du jour ouvré suivant (ex: si on consulte le vendredi, il doit y avoir l'emploi du temps du lundi )
[...]_timetable_period emploi du temps de la semaine en cours
[...]_timetable_period_1 emploi du temps de la semaine suivante
[...]_timetable_period_2 emploi du temps de la semaine suivante suivante
[...]_absences absences
[...]_retards retards
[...]_sanctions sanctions
[...]_encouragements encouragements

Cartes pour le dashboard

Pour les cartes, j'ai fait en sorte qu'il soit possible d'utiliser les cartes de Pronote : https://github.com/delphiki/lovelace-pronote

Devoirs

Voici le code yaml à utiliser avec l'entité sensor.ecole_directe_prenom_nom_homework.

type: custom:pronote-homework-card
entity: sensor.ecole_directe_prenom_nom_homework
display_header: true
display_done_homework: true
reduce_done_homework: true
current_week_only: false

Notes

Pour les notes, vous pouvez utiliser le code ci-dessous.

type: custom:pronote-grades-card
entity: sensor.ecole_directe_prenom_nom_grades
grade_format: full
display_header: true
display_date: true
display_comment: true
display_class_average: true
compare_with_class_average: true
compare_with_ratio: null
display_coefficient: true
display_class_min: true
display_class_max: true
display_new_grade_notice: true
max_grades: null

Évaluations

type: custom:pronote-evaluations-card
entity: sensor.ecole_directe_prenom_nom_evaluations
display_header: true
display_description: true
display_teacher: true
display_date: true
display_comment: true
child_name: null
display_coefficient: true
max_evaluations: null
mapping_evaluations:
  '1': D
  '2': C
  '3': A
  '4': A+

Emploi du temps

Pour l'emploi du temps, vous pouvez utiliser toutes les entités sensor.ecole_directe_prenom_nom_timetable_XXXXX avec la carte custom:pronote-timetable-card.

type: custom:pronote-timetable-card
entity: sensor.ecole_directe_prenom_nom_timetable_period
display_header: true
display_lunch_break: true
display_classroom: true
display_teacher: true
display_day_hours: true
dim_ended_lessons: true
max_days: null
current_week_only: false

Automatisations et notifications

Il y a des événements qui sont déclenchés sous certaines conditions. Ils peuvent être utilisés comme déclencheur dans des automatisations.

Voici les différents événements :

Evénement Description
new_formulaires nouveau formulaire
new_homework nouveau devoir
new_grade nouvelle note
new_absence nouvelle absence
new_retard nouveau retard
new_sanction nouvelle sanction
new_encouragement nouvel encouragement
new_qcm nouveau qcm

Il est possible de créer une automatisation à partir de l'événement "ecole_directe_event" de type "new_qcm.

Exemple:

alias: Ecole Directe - notification nouvelle question QCM
description: Notification en cas de nouvelle question QCM dans le fichier qcm
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_qcm
action:
  - service: notify.persistent_notification
    data:
      message: >
        Nouvelle question : {{ trigger.event.data.question }} Il faut vérifier
        le fichier qcm
      title: Nouvelle question qcm Ecole Directe
mode: queued
max: 10

notification nouvelle question QCM

alias: Ecole Directe - notification nouvelle note
description: Notification en cas de nouvelle note sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_grade
action:
  - service: notify.xxxxxxx
    data:
      message: >-
        {{ trigger.event.data.data.subject }} : {{
        trigger.event.data.data.grade_out_of }} ({{
        trigger.event.data.data.comment }})
      title: Nouvelle note pour {{ trigger.event.data.child_name }}

notification nouvelle note

alias: Ecole Directe - notification nouvelle évaluation
description: Notification en cas de nouvelle évaluation sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_evaluations
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.subject }} : {{ trigger.event.data.data.name }}
      title: Nouvelle évaluation pour {{ trigger.event.data.child_name }}
mode: single

notification nouvelle évaluation

alias: Ecole Directe - notification nouvelle absence
description: Notification en cas de nouvelle absence sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_absence
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.display_date }} - {{ trigger.event.data.data.commentaire }}
      title: Nouvelle absence pour {{ trigger.event.data.child_name }}
mode: single

notification nouvelle absence

alias: Ecole Directe - notification nouveau retard
description: Notification en cas de nouveau retard sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_retard
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.display_date }} - {{ trigger.event.data.data.commentaire }}
      title: Nouveau retard pour {{ trigger.event.data.child_name }}
mode: single

notification nouveau retard

alias: Ecole Directe - notification nouvelle sanction
description: Notification en cas de nouvelle sanction sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_sanction
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.display_date }} - {{ trigger.event.data.data.commentaire }}
      title: Nouvelle sanction pour {{ trigger.event.data.child_name }}
mode: single

notification nouvelle sanction

alias: Ecole Directe - notification nouvel encouragement
description: Notification en cas de nouvel encouragement sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_encouragement
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.display_date }} - {{ trigger.event.data.data.commentaire }}
      title: Nouvel encouragement pour {{ trigger.event.data.child_name }}
mode: single

notification nouvel encouragement

alias: Ecole Directe - notification nouveau devoir
description: Notification en cas de nouveau devoir sur Ecole Directe
trigger:
  - platform: event
    event_type: ecole_directe_event
    event_data:
      type: new_homework
condition: []
action:
  - service: notify.persistent_notification
    data:
      message: >
        {{ trigger.event.data.data.subject }} pour le {{
        trigger.event.data.data.date }} 
      title: Nouveau devoir pour {{ trigger.event.data.child_name }}
mode: single

notification nouveau devoir

Conclusion

Voilà, vous avez intégré École Directe dans HA. N'hésitez pas à partager vos cartes, automatisations ou autre dans les commentaires. Si vous avez des idées (ou des bugs), n'hésitez pas à me les soumettre aussi.

Bonne année scolaire !!!