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

Oui je ne cesse de customiser, comme tout le monde, j’adapte autant que je peux.
Mais pour pouvoir faire ça il faudrait un tuto d’utilisation des données, et savoir quelles données aller chercher et comment.

Certains sont dans un esprit de partage mais certains gardent secrètement leurs cartes apparemment, de peur de se faire copier ?! :rofl:

Considérant que Pronote ça ne touche pas tout le monde à la base,
Il faut avoir des enfants scolarisés,
Il faut ensuite avoir un intérêt d’intégrer ça dans la domotique,
Il faut ensuite avoir assez de connaissances pour essayer d’aller chercher la tonne de variables que comporte cette intégration,
Il faut ensuite disposer d’assez de temps pour faire quelque chose de potable…
Ça restreint beaucoup les possibilités m…

Au final si c’est pour qu’il y ait seulement 10 personnes qui utilisent cette intégration, c’est bête d’avoir fait tant d’efforts pour ça, non?

C’est juste. Ce travail de fourmis entre concatenation de datas venant d’ailleurs et production personelle le site @Sigalou @herveaurel, le tiens celui de @delphiki il ya quand meme pas mal de chose. Ce que je veux dire que sous HA il y a un passage obligatoire par de la « programmation » il faut faire cette effort sinon ca va etre compliqué. Je me le dis a moi meme.

@Sigalou a publié, moi j’ai tout mis sur mon git, ca fait deja pas mal je trouve.
Le taf de l’intégration est monstrueux et beaucoup de cartes sont partagées.

Ce que je deteste le plus c’est le j’ai trouvé et je ne partage pas alors que la personne est venue pour poser des questions.
Honnetement ici il y a pas mal de gens qui partage. Je t’invites a te rendre sur stackoverflow tu verras c moins friendly :rofl::rofl::rofl:

Chacun fait avancer l’histoire à son rythme, toutes les expériences sont bonnes à suivre. :kissing_heart:

1 « J'aime »

regarde ma réponse : Quelqu'un a une Wallbox (Plus ou Max ou autre)? - #12 par Sigalou

Lol mais sympa il a repondu derriere…ceux dont je parles s’eclipsent à jamais :rofl:

oui, tout le monde peut être maladroit et apprendre. C’est cool quand les mecs jouent le jeu

1 « J'aime »

Bonsoir,
J’aimerais connaître la syntaxe pour faire disparaître d’une table les devoirs du jour lorsque la journée de cours est terminée, je suis sur une carte comme ci-dessous :

<div>Lina - {{ states('sensor.devoirs_lina_next_day') }}</div> <table> 
{% from 'easy_time.jinja' import weekday %}
{% set items = state_attr('sensor.pronote_xxx_lina_homework','homework') %}
{% for i in range(0, items | count, 1) %}
{% if i == 0 %}
<tr><td colspan="2"><b>{{ weekday(items[i].date.weekday()+1, language='fr') | capitalize }}</td></tr>
{% endif %}
{% if items[i].date > items[i-1].date %} 
<tr><td colspan=2><p><b>{{ weekday(items[i].date.weekday()+1, language='fr') | capitalize }}</p></td></tr> 
{% endif %}
<tr>
{%- if items[i].done == true -%}
<td>  
<mark>
{{ items[i].subject }}</mark></td>
{% else %}
<td>  
<span>
{{ items[i].subject }}</span></td>
{%- endif -%}
<td>{{ items[i].description }}</td>
<td></td>
</tr>
{% endfor %}

Sur un écran de taille réduite je n’ai pas assez de visibilité
image

Nouvelle release, version 0.12.0 : les options !
Le détail de la release est ici : Release 0.12.0 - Options! · delphiki/hass-pronote · GitHub

Capture d’écran du 2023-10-20 00-29-01

Pour les non-anglophones :point_down:

  • Ajout d’options pour la configuration :
    • Définissez un surnom pour votre enfant qui sera ajouté dans les sensors et les events (child_nickname)
    • Changez l’intervale de rafraichissement des données (par défaut 15 minutes) (:warning: attention à ne pas le mettre trop bas sous risque de ban)
    • Heure de calcul de la pause repas (voir ci-dessous) (ne toucher que si vous savez ce que vous faites)
  • Nouveaux attributs pour la pause repas (qui n’existe pas dans pronote et est donc calculée en fonction de l’heure dans les options) :
    • Les lessons ont 2 noveaux attributs: is_morning and is_afternoon
    • Les sensors d’emploi du temps (timetable) today, tomorrow et next_day ont 2 nouveaux attributs: lunch_break_start_at et lunch_break_end_at
  • Suppression des ids inutiles dans le sensor evaluation

J’ai également commencé à gérer le calcul des heures de réveil via les options, mais pas eu le courage de le finir ce soir, ça sera pour la prochaine release !

6 « J'aime »

Bonjour à tous,

Merci beaucoup @delphiki pour tout ce travail. L’intégration devient de jour en jour plus complète et agréable à utiliser !

Petite question, j’ai mis en place des notifications pour les notes et ça fonctionne super (mon fils n’apprécie par contre pas du tout, il vient de se prendre une soufflante pour son 0 en français ! :rofl:).

Par contre, pour les retards et les absences, que doit-on mettre dans le message à la place de trigger.event.data.data.grade_out_of ?

Merci d’avance pour votre réponse,
Rém’s

Hello,

Pour les retards, tu auras ces infos à dispo :

data:
  date: # la date
  minutes: # le nombre de minutes de retard
  justified: # est-ce que le retard est justifié ou pas
  justification: # la justification le cas échéant
  reasons: # la ou les raisons du retard

Donc par exemple pour récupérer le nombre de minutes, il faudra utiliser {{ trigger.event.data.data.minutes }}

Les données pour une absence :

data:
  from: # début de l'absence
  to: # fin de l'absence
  justified: # est-ce que l'absence est justifiée
  hours: # nombre d'heures d'absence
  days: # nombre de jours d'absence
  reason: # raison de l'absence

Donc de la même façon, si tu veux récupérer le nombre d’heures d’absence : {{ trigger.event.data.data.hours }}

1 « J'aime »

@delphiki Merci pour tout le boulot ! C’est fantastique !
Penses-tu pouvoir mettre les event aussi pour les évaluations ? Voir même pour tout … ?

Sans pouvoir les tester, je partage mes nouvelles autos que je peaufinerai plus tard.

ABSENCE

alias: Pronote notif nouvelle absence
description: ""
trigger:
  - platform: event
    event_type: pronote_event
    event_data:
      type: new_absence
condition: []
action:
  - service: notify.mobile_app_xxx
    data:
      message: >-
        {{ trigger.event.data.child_nickname }} est en absence {{ 
        trigger.event.data.data.justified }} de {{
        trigger.event.data.data.from.strftime('%H:%M') }} à {{
        trigger.event.data.data.to.strftime('%H:%M') }},le {{
        trigger.event.data.data.date.strftime('%d/%m/%Y') }} {{"\n"}}{{
        trigger.event.data.data.reasons }}
      title: Pronote {{ trigger.event.data.child_nickname }} absence
mode: single

RETARD

alias: Pronote notif nouveau retard
description: ""
trigger:
  - platform: event
    event_type: pronote_event
    event_data:
      type: new_delay
condition: []
action:
  - service: notify.mobile_app_xxx
    data:
      message: >-
        {{ trigger.event.data.child_nickname }} a eu  un retard {{ 
        trigger.event.data.data.justified }} de {{
        trigger.event.data.data.minutes }} le {{
        trigger.event.data.data.date.strftime('%d/%m/%Y') }} {{"\n"}}{{
        trigger.event.data.data.justification }} {{"\n"}}{{
        trigger.event.data.data.reasons }}
      title: Pronote {{ trigger.event.data.child_nickname }} retard
mode: single

NOTE

alias: Pronote notif nouvelle note
description: ""
trigger:
  - platform: event
    event_type: pronote_event
    event_data:
      type: new_grade
action:
  - service: notify.mobile_app_xxx
    data:
      message: >-
        {{ trigger.event.data.child_nickname }} a eu {{ 
        trigger.event.data.data.grade_out_of }} en {{
        trigger.event.data.data.subject }} :  {{ trigger.event.data.data.comment
        }} le {{ trigger.event.data.data.date.strftime('%d/%m/%Y') }}
      title: Pronote {{ trigger.event.data.child_nickname }} note
1 « J'aime »

Je viens de faire un PR pour les évaluations car cela me manquait aussi. On verra si elle est validée :slight_smile:
Merci pour les automatisations, ça va me simplifier le travail chez moi :+1:

1 « J'aime »

Bonjour,

Je me présente, tout nouveau membre fraichement sortit du cocon, mes débuts sur HA ne sont pas plus vieux qu’il y a quelques semaines (version 10.1 c’est pour dire).

Alors que je découvrais émerveillé le champs des possibles de cet univers qui se dévoile pas à pas, je fis la découverte de cette intégration Pronote (0.9 si je me souviens). J’en profite pour remercier et féliciter au passage @delphiki ainsi que tous les contributeurs au projet (désolé de ne pouvoir vous nommer, ma mémoire renvoi unavailable data). Formidable de pouvoir dire adieu à la rigidité de l’application.

Toutefois ma contribution en ces lieux n’est pas anodine. En effet ce matin j’ai effectué la maj .12 depuis la .11 et… tout ne s’est pas déroulé comme prévu. Un soucis d’initialisation, j’y reviens après.

Dans le doute je l’ai désinstallée puis réinstallée. La config via QR-code franchement: génial ! Je valide, les capteurs sont créés, je configure les options (en fait j’ajoute seulement le nickname). Je consulte ensuite mon dashboard, ras les tables sont hydratées. Mais c’est ensuite que ça se gâte.

Depuis, l’élément de l’intégration du module est fréquemment indisponible me fournissant un historique de mes capteurs en dents de scie.

Le journal système m’indique ceci à fréquence très soutenue

Logger: homeassistant.components.sensor
Source: runner.py:186
Integration: Capteur (documentation, issues)
First occurred: 10:36:51 (12 occurrences)
Last logged: 11:00:02

Setup of sensor platform pronote is taking over 10 seconds.

Quelqu’un d’autre observe-t’il ce phénomène ou ai-je raté quelque-chose ? A part une notif pour les notes et quelques consultations de donnée en dashboard je n’ai touché à rien susceptible d’interférer.

Du coup je suis pas contre une piste car je bloque complet. Merci

Salut a tous, je viens de voir un commentaire qui m’a plutôt énervé, sur le fait que certains ne dévoile pas les carte ou les codes , a cette personne je te signale que toute les personnes qui sur le forum sont bénévoles, de plus il y a deux intergartion Pronote

C’est la première, qui était bien plus Complexe que celle là @delphiki fait énormément d’efforts pour la rendre plus agréable a tout le monde, pour les carte, si tu cherche un peut c’est tous disponibles et c’est vrais que parfois c’est prise de tête car il y a un grand choix de carte, le problème c’est que chaque personne personnalisé comme ils veulent, tu prend @herveaurel , il a fait des carte qui s’intègre dans sont dashboard, c’est un boulot monstrueux qu’il a fait, sans compter toute les autres personnes qui on fait des modifs de toute les cartes. Si tu veut du play and play va sur jeedom .

1 « J'aime »

Je comprends ton « coup de gueule » et j’en appuie (au moins en partie) le propos, mais je ne suis pas certain que cette dernière phrase soit tout à fait dans l’esprit non plus… :slightly_frowning_face:

Pour être plus complet, HA est tout à fait adapté aussi aux débutants. Mais cette intégration ne dispose pas encore (je me suis laissé dire que certains y travaillaient) de cartes clé en main pour en traduire le résultat dans le dashboard de ceux qui ne souhaitent pas s’investir dans l’apprentissage des subtilités des cartes markdown. Et ils ont bien le droit, mais il faudra dans ce cas simplement prendre un peu son mal en patience. Le travail effectué par @delphiki , @vingerha et les autres, loin d’être inutile ou « gâché », est simplement la première étape nécessaire à ce que des cartes spécifiques à l’intégration soient conçues à leur tour. Bref, ce genre de discussion est un classique des projets de dév essentiellement mus par des bénévoles, et c’est certes malheureux, mais ça ne vaut pas de s’envoyer « voir ailleurs » à mon humble avis.

Sur un tout autre sujet, de mon côté, j’ai une des entités fournies par l’intégration qui s’évertue à rester indisponible alors que mon gamin a donné de sa personne pour me permettre de la tester:
image

Ce qui m’étonne, c’est qu’elle n’est pas affichée comme les autres entités indisponible de l’intégration:
image

Et j’ai vérifié dans ma copie du dépôt de pronotepy, les données sont bien accessibles. J’ai aussi vérifié que l’entité n’était pas désactivée dans HA, et c’est bon. Du coup, je me suis dit que j’allais venir à la pèche aux idées ici :grin:

Edit: bon, en fait, j’ai trouvé dans les journaux (c’est un problème de sérialisation JSON, donc de contenu fourni par l’école et mal digéré par l’intégration). Je ne sais pas pourquoi je n’avais pas vu ça avant, mais je vais plutôt m’orienter vers le github de l’intégration, mes excuses pour le bruit :-/

Sans punition pas de sensor. Tout simplement

Pour la note, ça ne devrait pas être plutôt:
a eu {{ trigger.event.data.data.grade }}
Selon moi, {{ trigger.event.data.data.grade_out_of }} va renvoyer le x/10 ou x/20