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

Et 1 utilisateur de + ! :wink:

Par contre, pourrais-tu me dire en quel version de la lib pronotepy tu es stp ?
car dans la dernière la 2.4.0 la gestion des absences a été modifiée et il faut mettre les parenthèses
Donc c’est juste pour être sur que mon script pronote.py est bien fonctionnel avec la dernière version (c’est le cas chez moi)

Aussi, je vois que tu est sur HassOS : pourrais-tu décrire en quelques étapes l’installation sur HassOS stp ?
Je pourrais l’ajouter à la documentation de l’intégration

Merci

Je m’occupe du petit rex au retour des vacances , la c’est départ pour une petite semaine …

je suis sur pronotepy 2.4.0 et sans ()
avec ton code et avec le mien sur docker, ca marche

Ok ! Ça voudrait dire que sur ton docker tu as une version plus basse de pronotepy- où sinon je ne comprends rien :crazy_face:

Effectivement une erreur de ma part…sur docker j’ utilise 2.4.0
Avec ça je collecte les absences par période…

        periods = client.periods
        jsondata['absences'] = []
        for period in periods:
            for absence in period.absences:
                jsondata['absences'].append({
                    'pid': period.id,
                    'periodName': period.name,
.....

Sur l’ autre 2.2.0…je ne peut pas installer 240 curieusement

Salut, pour info bapt, pa dis qui avais finis le pull request du script de bain.

J’ai fait une correction sur ma proposition pour ne pas afficher les cours annulés, je trie à l’inverse le tableau sinon ça décalait lors de la suppression :

lessonsToBeRemoved=sorted(lessonsToBeRemoved, reverse = True)
    for lessonIndex in lessonsToBeRemoved:
        del jsondata['edt_aujourdhui'][lessonIndex]

@Dathosim j’ai vu que tu avais fait un commit pour le sensor que j’avais proposé mais tu n’as pas appliqué la modification dans pronote.py pour remplir le tableau.
Et petit truc, tu as laissé un print non commenté en fin de fichier.

Comment tu sait quelle lecons a effacer? De mon experience il n’y a pas de logique de la part des utilisateurs pronote (prof/etc.) et j’ai vu tout les combinaisons, cours>chngement>annulé / cours>annulé>changement/cours>annulé>autre cours…avec les données offerts par pronote c’est impossible de savoir quelle ordre s’applique et en résultat on ne sait pas la réalité. Ce qui est curieux est que l’appli pronote le sait…mais comment??

En vérifiant la date de début, si on a plusieurs cours à la même heure, on peut faire en sorte de n’afficher que celui qui n’est pas annulé.
Depuis plus d’un mois que j’utilise le script, j’ai l’impression d’avoir eux pas mal de cas d’annulation, changement (malheureusement) et ça fonctionne bien.

Malheureusement ça ne marche pas 100% car j’ai plusieurs (plus de 5) cas avec deux entrées en même créneau et de temps en temp c’est soit l’annulation qui compte, soit celui qui est changé / ajouté… Avec les données de pronote je ne peut pas savoir laquelle est la vérité.
Peut-être dans votre école les prof sont plus correcte en changent les leçons, chez nous … bizarre.

@cbroissa-github @vingerha : je viens de trouver quelque chose de très intéressant !

Dans la doc de la lib pronotepy

https://pronotepy.readthedocs.io/en/stable/api/pronotepy.dataClasses.html?highlight=Lesson#pronotepy.dataClasses.Lesson

Sur les lesson (c’est à dire les cours) on a un attribut num - et il est dit que le cours affiché dans pronote est celui qui a le plus grand num !
Il faudrait donc boucler dans les cours (lessons) ayant la même heure de début est afficher que celui qui a le plus grand num !

Je vais tenter de faire ça un de ces 4
Mais si quelqu’un veut s’y coller :stuck_out_tongue_winking_eye:

Merci et je vais voir comment l’extrahir car dans mon cas…je n’ais pas des numeros … et ça pourrait vraiment aider!
EDIT: alors, comme attendu très facile a ajouter pour l’extrait…ensuite il faut juste appliquer une simple logique pareil comme Dathosim à déjà fait pour les cours annulé.

J’ai quelquechose de neuve… parent avec 2 enfants sur le même école, on peut acceder par utilisant l’url …/parent (au lieu de …/eleve) mais ensuite q’un des enfants est visible. Est-ce qu’il y a quelq’un entre vous qui connait une solution avec pronotepy?
Je sais…on peut utiliser deux scripts pour chaq’un des enfants er l’idées ici c’est d’utiliser le compte des parents.

Tu peux utiliser le même script et passer un paramètre (exemple le nom de l’enfant) et ensuite récupérer le nom passer en paramètre pour initialiser la connexion avec ses variables différentes

Entretemps j’ai trouvé la solution dans pronotepy aidé par ces devs (merci)
En fait ce que je veux est un peut (petit) plus complex car je veux itérer sur tous ces enfants…
Alors, en tant que parent, on peut extrahir tous ces enfants, p.e.

client=pronotepy.ParentClient.....
for x in client.children:
  nom[i]=x.name

ensuite on peut utiliser

client.set_child(nom[i])
....et tous ce que on veut extrahir comme normal

le nom d’enfant doit être comme « NOM Prénom »

Ah oui ça marche mais que dans le cas ou les enfants sont dans le meme établissement :wink:

Oui et finalement j’ai décidé que je ne vais pas depenser plus de temps car avec ma solution on peut facilement ajouter un deuxième enfant et la situation avec 3+ dans le même étab…très rare. Pour ta solution, facile aussi car on ajoute et ajoute etc…Notre temps (non paié)… c’est mieux de le faire ailleurs :slight_smile:

Bonjour,

petite question de mise en forme , j’ai vu que dans le json on récupère un attribut background background_color . Je voudrais mettre toute la ligne du cours ( heure début / fin, matiere et salle ) avec ce background . J’ai essayé de positionner l’attribut bgcolor sur la ligne tr, mais je n’arrive pas a afficher une quelconque couleur que ce soit en fixant une valeur ou en essayant de recuperer la valeur du json .

exemple avec une valeur fixe

        {%-for attr in states.sensor.edt_aujourdhui.attributes.edt_aujourdhui -%}
        <tr bgcolor="#43B061">
            <td>
            {%- if state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['annulation'] == false -%}
                <span>
                {{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure']}}
                </span>
            {%- else -%}
                <span>
                {{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure']}}
                </span>
            {% endif %}</td>
            <td>{{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure_fin']}}</td>
            <td>
            {{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['cours']}}
            {% if not state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['status'] == None %}<span>{{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['status']}}</span>
            {% endif %}</td>
            <td>{{state_attr('sensor.edt_aujourdhui', 'edt_aujourdhui')[loop.index-1]['salle']}}</td>
        </tr>
        {% endfor %}

J’ai toujours un tableau blanc
Note pour mes essais , j’ai enlevé toute la partie card_mod
Est ce que vous voyez un moyen de faire ceci ou c’est une cause perdue ?

Hello :wave:
Bonne idée j’ai essayé rapidement aussi de le faire mais beaucoup d’attribut dès balises styles ajoutes dans le markdown sont supprimés au moment de l’affichage par HA :weary:
Y’a sûrement une technique en passant par des ID et en générant le css dynamiquement…
Mais si quelqu’un a une idée :bulb: - je suis preneur aussi !

Bonjour,
J’arrive un peu après la bataille mais cela peut encore être utile.
J’ai tenté d’intégrer le très bon travail de @Dathosim dans appdaemon.
un rapide tuto est ici : GitHub - myfp31/Pronote2HomeassistantAppdaemon.: How to integrate Pronote2Homeassistant with HA OS & AppDaemon

Bonne journée

1 « J'aime »