Pronote dans HA - les notes, devoirs, absences et emploi du temps des enfants

Je ne sais pas si il marche, je n’ai pas eu l’occasion de le tester:

alias: PRONOTE Edt Lina Cours du prochain jour annulé > Notification
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_0_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_1_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_2_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_3_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_4_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_5_annulation
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.pronote_edt_lina_prochainjour_cours_6_annulation
    from: 'off'
    to: 'on'
condition:
  - condition: time
    after: '00:01:00'
    before: '23:59'
action:
  - variables:
      idcours: '{{ trigger.entity_id.split(''_'')[6] }}'
  - service: notify.persistent_notification
    data:
      message: >
        Lina, un cours a été annulé ou déplacé le
        {{state_attr('sensor.pronote_edt_lina_prochainjour','edt_prochainjour')[idcours]['date']}}
        : 
        {{state_attr('sensor.pronote_edt_lina_prochainjour','edt_prochainjour')[idcours]['heure']}}
        {{state_attr('sensor.pronote_edt_lina_prochainjour','edt_prochainjour')[idcours]['cours']}} 
mode: single

Tu n’as copié que pronote.py dans local-packages?

@Elekrea @emy :
Je ne sais pas si je l’ai signalé sur ce forum, mais j’ai fait une mise à jour de la doc et du repo sur GitHub

Et la dernière version fournie des exemples pour des notifications nouvelles notes, cours annulé aujourd’hui et prochain jour :stuck_out_tongue_winking_eye:
Il se trouve dans le fichier automation.yaml

Après ce sont des notifications interne à HA - mais ensuite il suffit d’adapter pour le mobile ou telegram ou tout autre type de notifications

non j’ai copié aussi pycryptodome-3.14 comme Defre l’a expliqué :

cp -R /usr/lib/python3.9/site-packages/pycryptodome-3.14.1.dist-info /config/python_scripts/local-packages

Oui je me suis aidée de ton fichier automation.yaml merci beaucoup d’ailleurs!!
Par contre j’ai des erreurs pour les notification cours annulé aujourd’hui et prochain jour :

Error while executing automation automation.edt_lina_cours_aujourd_hui_annule_notification: UndefinedError: 'dict object' has no attribute 'entity_id'
PRONOTE Edt Lina Cours aujourd'hui annulé > Notification: Error executing script. Error rendering template for variables at pos 1: UndefinedError: 'dict object' has no attribute 'entity_id'

Ah mais oui !
En fait tu ne peux pas executer les actions de l’automatisation car ça fait appel à une variable qui est récupérer que quand l’auto s’exécute vraiment…
Bref pour tester tu vas dans le json et tu changes un annulation en le mettant à true
Ou tu attends patiemment une vrai annulation

Merci, j’arrête de chercher des erreurs qui n’existent pas :blush:
Maintenant je vais essayer de faire une programmation comme toi du réveil le matin!

Oui, j’avais vu, c’est pour cela que j’ai tenté de le mettre en place. Encore merci.
Cependant, j’ai bien les notifications qui sont envoyées, mais je ne vois toujours pas la note…
J’ai essayé ta syntaxe et celle d’@emy, sans succès, que ce soit sur le tel ou dans les notif persistantes, je n’ai que le message que je tape « à la main » et pas de retour pour « {{states(‹ sensor.note ›)}} » …
Je vous remets ce que j’ai entré, si des fois vous voyez quelque chose d’anormal ?

alias: Nouvelle Note pour Elisa
description: Notification sur nouvelle note
trigger:
  - platform: state
    entity_id: sensor.note
    attribute: note
condition: []
action:
  - device_id: ac04f0522564e9940d21b5ced6ec8593
    domain: mobile_app
    type: notify
    title: Elisa a une nouvelle note
    message: '{{states(''sensor.note'')}}'
  - device_id: f1725cc590ab8b60a360e8ee61f19999
    domain: mobile_app
    type: notify
    title: Elisa a une nouvelle note
    message: '{{states(''sensor.note'')}}'
  - device_id: fd6e95afc8ef70719c9c261d476763fd
    domain: mobile_app
    type: notify
    title: Elisa a une nouvelle note
    message: '{{states(''sensor.note'')}}'
  - service: notify.persistent_notification
    data:
      message: |
        Nouvelle note : {{states('sensor.note')}}
mode: single

Merci d’avance.

@emy : je te conseille tout de même de tester tes automatisations sur les notes ou annulation de cours en modifiant le fichier Json à la main :wink:

@Elekrea : Essaye comme ce que je disais à @emy de modifier le fichier Json à la main en ajoutant une note
Aussi tu peux vérifier avec le developper tools la valeur du sensor et voir si elle change bien avant et après modification du json
Enfin, ensuite tu peux débugger l’automatisation - bouton horloge à côté du stylo dans la liste des automatisations

NB : peux-tu copier la partie configuration du sensor.note extrait de configuration.yaml stp ?

ça doit être du au copier / coller de la configuration modèle que j’ai donné dans le fichier automation.yaml sur Github
Il faut que tu créé via l’interface une nouvelle automatisation et ensuite que tu copie/colle qu’une partie de ce que je donne dans le GitHub (1 seule automation)

Oui j’ai fait 3 automatisations différentes:



J’ai chargé un backup mais j’ai toujours la même erreur

Que disent les logs ? La réponse est surement dedans ?

J’ai ajouté une note « test » dans le Json et le sensor la fait bien apparaitre dans le dev’ tools
Je n’avais pas trop de doute là-dessus, vu que je reçois bien une notif’ quand il y a une nouvelle note. Il n’y a que la note qui n’apparait pas dedans. (j’ai juste le texte que j’ai entré à la main qui apparait, à savoir "Nouvelle note : ")

Je vais tester le debug pour voir s’il me remonte quelque chose.

Le sensor :

- platform: rest
  name: note
  scan_interval: 10
  json_attributes:
    - note
  value_template: >
    {% if value_json.note.0 is defined %}
    {% else %}
        None
    {% endif %}
  resource: http://192.168.1.178:8123/local/pronote_Elisa.json

J’ai fait une nouvelle automatisation « test » :

alias: Nouvelle Note pour Elisa (Dupliquer)
description: Notification sur nouvelle note
trigger:
  - platform: state
    entity_id: sensor.note
    attribute: note
condition: []
action:
  - service: notify.persistent_notification
    data:
      message: |
        {{states('sensor.note')}}
mode: single

Et quand je l’exécute, dans le debug j’ai :

Executed: 3 mars 2022, 13:52:41
Result:

params:
  domain: notify
  service: persistent_notification
  service_data:
    message: ''
  target: {}
running_script: false
limit: 10

Donc « message » est vide…

Moi je ne mettrai pas l’attribut note / en tous les cas moi je ne l’a pas et ça marche

Aussi, tu peux :

  • Essayer en ajouter un texte au début du message :
action:
  - service: notify.persistent_notification
    data:
      message: |
        Votre nouvelle note : {{states('sensor.note')}}
  • Me donner un aperçu de ce que donne le résultat du sensor via developper tools stp ?

J’ai enlevé l’attribut « note ».
J’ai ajouté du texte au début.
J’ai été ajouter une nouvelle note « test » à la main dans le Json.
Résultat : toujours une notification vide. Ou du moins, juste avec le texte que j’ai ajouté…
le sensor dans le dev tools :


note: 
- date: 03/03/2022
  date_courte: 03/03
  cours: TEST
  note: '4'
  sur: '5'
  note_sur: "4\_/\_5"
  coeff: '0.25'
  moyenne_classe: 4,48
  max: '5'
  min: '4'
- date: 03/03/2022
  date_courte: 03/03
  cours: FRANCAIS
  note: '4'
  sur: '5'
  note_sur: "4\_/\_5"
  coeff: '0.25'
  moyenne_classe: 4,48
  max: '5'
  min: '4'
- date: 02/03/2022
  date_courte: 02/03
  cours: PHYSIQUE-CHIMIE
  note: '9'
  sur: '20'
  note_sur: "9\_/\_20"
  coeff: '1'
  moyenne_classe: 10,85
  max: '20'
  min: 2,5
- date: 02/03/2022
  date_courte: 02/03
  cours: MATHEMATIQUES
  note: '10'
  sur: '10'
  note_sur: "10\_/\_10"
  coeff: '1'
  moyenne_classe: 7,63
  max: '10'
  min: '2'
- date: 26/02/2022
  date_courte: 26/02
  cours: ANGLAIS LV1
  note: 9,5
  sur: '10'
  note_sur: "9,5\_/\_10"
  coeff: '0.5'
  moyenne_classe: 7,54
  max: '10'
  min: '0'
- date: 25/02/2022
  date_courte: 25/02
  cours: SCIENCES VIE & TERRE
  note: 1,5
  sur: '5'
  note_sur: "1,5\_/\_5"
  coeff: '1'
  moyenne_classe: 1,46
  max: 4,5
  min: '0'
- date: 21/02/2022
  date_courte: 21/02
  cours: HISTOIRE-GEOGRAPHIE
  note: 15,5
  sur: '20'
  note_sur: "15,5\_/\_20"
  coeff: '1'
  moyenne_classe: 11,17
  max: '17'
  min: 4,5
- date: 04/02/2022
  date_courte: 04/02
  cours: SCIENCES VIE & TERRE
  note: NonRenduZero
  sur: '10'
  note_sur: "NonRenduZero\_/\_10"
  coeff: '1'
  moyenne_classe: 4,13
  max: '9'
  min: '0'
- date: 04/02/2022
  date_courte: 04/02
  cours: SCIENCES VIE & TERRE
  note: '2'
  sur: '5'
  note_sur: "2\_/\_5"
  coeff: '1'
  moyenne_classe: 1,56
  max: '4'
  min: '0'
- date: 03/02/2022
  date_courte: 03/02
  cours: FRANCAIS
  note: 13,5
  sur: '20'
  note_sur: "13,5\_/\_20"
  coeff: '1'
  moyenne_classe: 13,69
  max: '18'
  min: '6'
- date: 03/02/2022
  date_courte: 03/02
  cours: ED.PHYSIQUE & SPORT.
  note: '15'
  sur: '20'
  note_sur: "15\_/\_20"
  coeff: '2'
  moyenne_classe: 15,17
  max: '20'
  min: '12'

friendly_name: note

Ok mais le state (au dessus de attribut) dans le dev tools : il est rempli ?
Et bien je pense que non :stuck_out_tongue_winking_eye:
C’est le state qui compte pour déclencher la notif et c’est lui qui est affiché dans la notif

Et pourquoi il est vide parce que je viens de voir que ton sensor dans ta conf a une erreur
Sur le if, y’a rien dans le if : tu fais if et ensuite else…
Donc le state est vide !
Et par contre l’attribut il contient le json

Et voilà :wink:

Bonjour, j’ai une question depuis ce matin je ne cesse pas d’avoir ma notification qui passe de unavalaible à une note que ma fille a obtenu, j’avais fait comme l’avais préconisé @Dathosim et ça marche plutôt bien mais comme j’avais fait mon automatisation lié au changement d’état de la note je reçois pas mal de notif qui se répète constamment souvent la même note ou le statut indisponible m’ai notifié sur mon tél, est-ce qu’il y’a quelque chose qui peut être fait ?
Merci

Salut à tous, merci pour ce code :slight_smile:

Je suis sur HA OS sur un pi4


System Health

version: core-2022.2.9
installation_type: Home Assistant OS
dev: false
hassio: true
docker: true
user: root
virtualenv: false
python_version: 3.9.7
os_name: Linux
os_version: 5.10.92-v8
arch: aarch64
timezone: Europe/Paris

Je n’arrive pas à aller plus loin que la mise en place de la cron :

  • le path n’est pas le bon : /usr/share/hassio/homeassistant/
  • et donc les path pour le JSON n’est pas bon non plus
  • idem pour l’interpréteur Python 3, je ne peux même pas faire un python -v LoL

par contre j’arrive à faire un crontab -e mais la ligne ne reste pas donc même si je trouve le bon path :slight_smile: également un soucis à ce niveau.

[core-ssh config]$ crontab -e
# do daily/weekly/monthly maintenance
# min   hour    day     month   weekday command
*/15    *       *       *       *       run-parts /etc/periodic/15min
0       *       *       *       *       run-parts /etc/periodic/hourly
0       2       *       *       *       run-parts /etc/periodic/daily
0       3       *       *       6       run-parts /etc/periodic/weekly
0       5       1       *       *       run-parts /etc/periodic/monthly

En cherchant un peu je suis tombé sur l’intégration Shell Command : Shell Command - Home Assistant
avec une automation dans ce cas le PATH serait tout simplement /python_script et /www pour les json

Vous êtes sur HA OS ?