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

Après un rapide check, il semble que ton ENT ne soit pas géré dans pronotepy :cry:
Aurais-tu les moyens de récupérer des logins / pass pour se connecter direct à pronote ?
En fait, moi c’est ce que j’ai - parce que pendant le confinement l’ent ne fonctionnait plus et ils avaient envoyé à tout le monde les logins passe pour se connecter et pronote sans passer par l’ENT…
Mais tu peux essayer de faire la récupération d’identifiant - avec le lien qui se trouve sous le login sur la page de login de pronote
Tu vois ce lien ?

Merci au moins je comprends mieux par contre pour la doc je suis tombé la dessus, je pense que tu faisais référence à cette doc :
https://pronotepy.readthedocs.io/en/stable/api/pronotepy.ent/
https://pronotepy.readthedocs.io/en/stable/api/pronotepy.clients/

par contre dans les exemples, je ne vois pas le département de l’essonne …
Pour la modification de l’URL ça donnerait ça sinon mais la syntaxe est mauvaise avec le ent callable :
client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html?login=true', username, password, ent:Callable)

Merci oui effectivement j’hésitais à faire une récupération de l’identifiant sous le lien direct pronote mais j’hésitais à le faire au cas ou ma fille perd l’accès … les 2 ne sont pas liés ? via le ent (j’ai le login et mot de passe) pour ensuite me connecter à pronote donc ça devrait encore fonctionner ?

Merci, j’avais pensé a un truc du genre , mais J’ai essayé plusieurs syntaxe , toujours avec un resultat aléatoire

{%- if (state_attr('sensor.edt_note', 'note')[loop.index-1]['note']|float) > (state_attr('sensor.edt_note', 'note')[loop.index-1]['moyenne_classe']|float) -%}

ou alors

{%- if (state_attr('sensor.edt_note', 'note')[loop.index-1]['note']|float) is greaterthan (state_attr('sensor.edt_note', 'note')[loop.index-1]['moyenne_classe']|float) -%}

selon moi pas de risque ! j’ai même changé les mots de passe des comptes pronote et je peux toujours accéder avant le compte que j’ai sur l’ENT
Donc tu peux essayer de récupérer un compte et un mot de passe pronote via le lien ! bonne chance !

Bon je crois que c’est mort il ne reconnaît aucune adresse mail donc je ne peux pas le réinitialiser du coup :frowning: merci en tout cas pour ta patience et tes réponses

Il faudrait demander au dev de la lib pronotepy d’ajouter ton ENT
je suis sûr que ça doit être loin d’un copier/coller dun autre ent
Essaye via une issue dans GitHub

Fais un essai comme ceci:

import pronotepy
from pronotepy.ent import ent_essonne
client = pronotepy.ParentClient('http://notes.xxxxx.xxxxxx.fr/pronote/parent.html',
                          username='xxxx.xxxxx',
                          password='xxxxx',
                          ent=ent_essonne)
if client.logged_in:
    client.set_child('xxxxx xxxxx')

L’adresse Client, c’est celle de ta page pronote.
Je ne suis pas sûr pour ton cas,
il faudrait en savoir un peu plus sur ton process de connexion.

Pas vu le message à temps, j’ai un taf un peu prenant, mais Elektra à tout bien expliqué.
Merci à toi pour cette intégration dans HA. Pour ma part, j’ essai de rapatrier d’autres infos de pronote.
Bon courage pour la suite!

La commande que tu mets ici, c’est pour installer le script catt (Cast All The Things) qui sert a caster quasi n’importe quoi sur un écran équipé d’un Chromecast sans devoir passer par le services officiel « cast lovelace »;
Très efficace au passage.

Merci, je viens de faire la demande :

1 « J'aime »

Désolé je n’avais pas vu le message donc cette fois j’utilise l’URL pronote pour les parents avec login et mot de passe parent ?

Parents ou enfants, ça fonctionne pareil. Juste le code qui change un peu. Si tu veux, je te mets l’exemple élève.
Est-ce que tu as plusieurs mode de connection à l’ent de ton collège? Educonnect ? Aten ?
Ton adresse d’accueil pronote ressemble à quoi ?

@umustseeit : en fait ENT Essonne est déjà intégré à protonepy :wink:
A la différence de ce que je t’avais dit…
bien vu @sosordinet !

https://github.com/bain3/pronotepy/blob/master/pronotepy/ent.py#L545

Oui merci stp je veux bien l’exemple élève comme ça je le copie/colle sur le script pronote.py
Pour les modes connections via ent essonne je me connecte via cette URL:

https://www.moncollege-ent.essonne.fr/

Une fois connectée je vais sur mes applis puis sur Connecteur Pronote CLG et cela me connecte via une URL ci-dessous :

https://0911145a.index-education.net/pronote/eleve.html?identifiant=5sPFWuJ6WMRcuEVQ

pour l’ accès direct pronote:

https://0911145a.index-education.net/pronote/eleve.html?login=true

Merci encore pour ton aide

Merci du coup si on peut me dire quoi modifier dans le script svp ça serait top !

Essai comme ceci. En tout cas c’est bien ton ENT qui est cité dans la doc.


import pronotepy
from pronotepy.ent import ent_essonne
import os
from datetime import date
from datetime import timedelta 
import json

eleve="xxxxxxxx"

index_note=0 
limit_note=11 #nombre max de note à afficher + 1 
longmax_devoir = 125 #nombre de caractère max dans la description des devoirs

#Connection à Pronote 
client = pronotepy.Client('https://0911145a.index-education.net/pronote/eleve.html',
                          username='xxxxx.xxxxxx',
                          password='xxxxxxxx',
                          ent=ent_essonne)

#Si on est bien connecté
if client.logged_in:

Merci du coup, j’ai ce message d’erreur qui est différent :

➜ ~ python3 /config/python_scripts/pronote.py
Traceback (most recent call last):
File « /config/python_scripts/pronote.py », line 19, in
client = pronotepy.Client(‹ https:// ›+prefix_url+‹ .index-education.net/pronote/eleve.html?login=true ›, username, password, ent=ent_essonne)
File « /usr/lib/python3.9/site-packages/pronotepy/clients.py », line 283, in init
super().init(pronote_url, username, password, ent)
File « /usr/lib/python3.9/site-packages/pronotepy/clients.py », line 78, in init
self.logged_in = self._login()
File « /usr/lib/python3.9/site-packages/pronotepy/clients.py », line 91, in _login
self.username = self.attributes[‹ e ›]
KeyError: ‹ e ›

j’avais modifié le script en prenant l’exemple que tu m’as donné j’ai peut-être fait une erreur mais je ne sais pas ou:

import pronotepy
from pronotepy.ent import ent_essonne
import os
from datetime import date
from datetime import timedelta 
import json

#Variables a remplacer (ou laisser comme ça pour tester la démo)
eleve="toto" #nom de votre enfant - ne sert que pour le nom du fichier json
prefix_url = "0911145a" # sert au prefix de l'url https://PREFIX.index-education.net/pronote/
username="toto" #utlisateur pronote  - a remplacer par le nom d'utilisateur pronote de l'élève
password="Toto" # mot de passe pronote - a remplacer par le mot de passe du compte de l'élève

index_note=0 
limit_note=11 #nombre max de note à afficher + 1 
longmax_devoir = 125 #nombre de caractère max dans la description des devoirs

#Connection à Pronote 
client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html?login=true', username, password, ent=ent_essonne)

Le ?login=true c’est pour forcer la connexion sur pronote. Il faut que tu l’enlève.
Prends l’exemple que je t’ai donné pour essayer.

Super merci beaucoup ça marche, merci aussi pour ta patience car j’avais pas vu mon erreur !
Du coup, j’ai bien le fichier json cette fois qui se crée bien dans www

Reste plus qu’à créér mes sensors et ma tâche planifiée :slight_smile:

Merci encore !