Relance du projet Pronote pour Jeedom

c’est une béta :slight_smile:

Correction poussée.
Elle apparaitra demain

2 « J'aime »

Salut

Maj, Relance des dépendances et du démon

inscription du qrcode = OK

fonctionnement = OK

très jolie présentation :slight_smile:

quelques points :

  • La photo ne remonte pas, mais c’était déjà le cas sur la version précédente
  • La valeur : nombre de devoir, fait, non fait sont à 0
  • On ne peut plus appliquer son propre widget sur les commandes, comme pour les listes, j’avais un widget qui rendait la liste défilante avec un ascenseur et c’était bien pratique quand les listes sont un peu longues

Merci et bon we

PS : serait il possible d’ajouter une possibilité d’avoir une taille de police de caractère paramétrable, en mode affichage tablette le widget est difficilement lisible pour les vieux :slight_smile:

Bonjour,

Merci pour le retour !

Je conseille de supprimer l’équipement et de le recréer.

Pour la photo, je me suis battu longtemps pour la récupérer mais pronote la sécurise et je ne trouve pas de solution pour l’avoir. Mais je cherche si quelqu’un a une idée, je suis preneur (N.B. Pronotepy: utilise l’interface mobile pour Wrapper les infos).

Pour les devoirs non fait la vraie erreur est de ne pas avoir supprimé les commandes : « Nombre de devoir fait » & « Nombre de devoir non fait ».
Par contre tu trouveras :
« Nombre de devoir pour le prochain jour »
« Nombre de devoir non fait pour le prochain jour »
« Nombre de devoir fait pour le prochain jour »

Que me veux tu faire je garde les devoirs fait et non mais pour quel période ? aujourd’hui et prochain jour ?

Pour le widget perso, je vais regarder pour le permettre, mais comment vois-tu la configuration ? Une coche pour utiliser mon widget ?

Slt, ok je vais refaire un autre équipement alors pour faire un transfert car j’ai des scénarios qui pointent vers certains commandes

Pour le widget, oui pourquoi pas une case a cocher.

Comment tu gères l’affichage pour avoir toutes une liste quand elle est un peu grande ?

Pour les devoirs, je ne sais pas, les 2 seraient pratique suivant l’usage que l’on en fait.

A+

Même en refaisant un équipement à 0, les parties devoir à 0 est toujours présent, je les supprime manuellement

je vais faire un remplacement de commande, ca m’évitera de faire le transfert d’équipement

après « pour le prochain jour » c’est peut être suffisant

La photo c’est pas très grave, au pire tu peux la gérer dans ton plugin, on l’ajoute à la mano

Bonjour et merci @Aldarande pour ton plugin.

Je l’utilise depuis le mois octobre environ, principalement pour des envois de notifications pour l’heure du premier cours du lendemain et le matin même.

La dernière mise à jour m’a un peu surpris. Je n’ai pas tout de suite penser à redimensionner la tuile et j’ai supprimé et recréé l’équipement.
Mais après avoir agrandi la tuile… Je voulais juste te dire qu’elle est magnifique ! Et en plus elle marche dans la version mobile ! Félicitions !

Sinon comme @Nemeraud, la Liste des devoirs est vide (pas la Liste des devoirs pour demain) mais comme dit plus haut je ne m’en sers pas trop.

Super travail !

Pierre

1 « J'aime »

Oups :
Je provisionne nb_devoir_F alors que Jeedom connait Nb_devoir_F
Je laisse le champs, on verra plus tard si il reste nécessaire.

1 « J'aime »

Je rejoins les autres pour féliciter le travail, le widget est magnifique !
Quelques commentaires :

  • La moyenne générale ne semble pas correspondre à la moyenne générale de la période en cours (ni celle de l’année à première vu), à creuser je pense : c’est erroné pour mes deux enfants dans deux établissements différents.
  • y aurait-il un possibilité pour choisir sur quel onglet (devoirs, notes, absences…) ça s’affiche par défaut ? Ou retenir le dernier sélectionné ? Par exemple je souhaiterais le laisser sur les notes.
  • Une idée mais je sais même pas si tu récupères les données : avoir des flèches pour faire défiler l’agenda sur les 5 prochains jours

Encore bravo !

Bonjour,

1/ le calcul de la note générale est faite par le widget :
moyenne = Σ( (note/sur) × 20 × coeff ) / Σ(coeff)
Si la valeur sur n’est pas transmise par Pronote, je prends « 20 » par défaut. Et 1 pour le coef.
Autre sujet : J’utilise les notes optionnelles dans le calcul
Pronote propose la moyenne des semestres seulement et si je fais leur moyen cela donnera une fausse moyenne.

2/ Je vais regarder si je peux gérer les paramètres du widget pour la police par exemple et la sélection de l’onglet par défaut.

3/ C’est un gros chantier, je vais voir, car j’avais fait le choix de la simplicité.

1 « J'aime »

Merci pour ton retour !
Su les ajouts de fonctionnalité, c’est vraiment du bonus et le gain par rapport au temps de dev n’en vaut pas forcément la chandelle !
Et concernant les moyennes la méthode semble évidemment bonne. L’écart entre l’appli pronote et le plugin est toutefois étonnant :

  • Sur le plugin : 17.8/20 de moyenne
  • Sur pronote : Semestre 1 : 17/20, semestre 2 : 16.5/20

Quelques idées éventuellement pour vérifier :

  • les notes à coefficient 0 : est-ce ce que tu appelle les notes optionnelles ? si oui, tu les comptes avec quel coef ? Y aurait-il un risque que la division pas Σ(coeff) ne les compte pas ? Et si ça correspond à autre chose, y a t il toujours un coef sur ces notes ?
  • les notes ont parfois un coefficient décimal (0.5, 1.5), le code est il adapté à des coef décimaux ?
  • Parfois la note est « abs » et donc non noté pour cause d’absence. La note est elle alors rejetée ?

Merci beaucoup !

Bonjour à tous,

La version 0.9b du plugin ProJote est disponible. Voici les nouveautés :


Photo de profil

Il est maintenant possible d’uploader une photo manuellement depuis l’onglet Affichage de l’équipement. Un nouveau paramètre Photo à utiliser permet de choisir la source :

  • Aucune — affiche les initiales de l’élève (comportement par défaut)
  • Photo Pronote — utilise la photo récupérée depuis Pronote
  • Photo manuelle — utilise votre photo uploadée
  • Automatique — Pronote en priorité, photo manuelle en fallback

Personnalisation du widget

  • Taille de police configurable — de 10 à 16 px (défaut 12 px), toutes les tailles du widget s’adaptent proportionnellement
  • Onglet par défaut configurable — choisissez l’onglet affiché à l’ouverture : Devoirs, Notes, Absences, Retards ou Punitions
  • Largeur par défaut — portée à 360 px (au lieu de 300 px) pour un meilleur rendu du layout deux colonnes
  • Prévisualisation en temps réel — l’onglet Affichage affiche désormais un rendu live du widget à droite des paramètres

Emploi du temps

Le démon collecte maintenant les 4 prochains jours scolaires en un seul appel API, sur une fenêtre de 28 jours (utile pendant les vacances). Un nouveau mode de navigation Flèches (J+1 à J+4) permet de naviguer entre les jours directement depuis le widget. Les commandes edt_J1 à edt_J4 sont disponibles pour vos scénarios. edt_prochainjour reste inchangé.


Sécurité

La clé de chiffrement AES-256 utilisée pour transmettre le mot de passe entre PHP et le démon Python est désormais dérivée de votre clé API Jeedom (SHA-256) au lieu d’être codée en dur.


Correction

  • Les commandes Nb devoir fait / non fait ne se remettaient pas à zéro quand il n’y avait aucun devoir.

Comme d’habitude, retours et rapports de bugs bienvenus dans ce fil.

Aldarande & Claude Code :wink:

3 « J'aime »

Bonjour,

Tout fonctionne parfaitement chez moi depuis… Alors comme je n’interagie pas dans les échanges ____ Merci pour ce super travail et ton investissement.

Lydie

1 « J'aime »

Vous devriez recevoir la mise à jour demain.

N’hésitez pas la tester, car j’aimerais pouvoir renouveler ma demande de passage en stable.

Je crois que précédemment, je ne passai pas par le bon lien.

1 « J'aime »

Je regarde ça ce soir mais que dire… Waouw !!!
Ah si on peut dire merci !!!

Salut,

Sur une box Luna, première installation du Plugin, le demon ne se lance pas avec le message suivant:

0000|ERROR:root:Error: importing module lig.43 - No module named 'pronotepy'
0001|[2026-04-01 22:38:17] ERROR  Impossible de lancer le démon. Vérifiez les logs pour plus de détails (erreurs Python, etc).

L’installation des dépendances semble s’être bien passée:


0000|+ echo '*******************Begin of package installation******************'
0001|*******************Begin of package installation******************
0002|+ touch /tmp/jeedom_install_in_progress_ProJote
0003|+ echo 1
0004|+ echo 2
0005|+ sudo killall apt apt-get unattended-upgr
0006|apt: no process found
0007|apt-get: no process found
0008|unattended-upgr: no process found
0009|+ sudo rm /var/lib/apt/lists/lock
0010|+ sudo rm /var/cache/apt/archives/lock
0011|+ sudo rm /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend
0012|+ sudo sudo dpkg --configure -a --force-confdef
0013|+ sudo apt update
0014|WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0015|Hit:1 https://archive.debian.org/debian bullseye-backports InRelease
0016|Hit:2 https://deb.debian.org/debian bullseye InRelease
0017|Hit:3 https://deb.nodesource.com/node_22.x nodistro InRelease
0018|Get:4 https://deb.debian.org/debian-security bullseye-security InRelease [27.2 kB]
0019|Hit:5 https://deb.debian.org/debian bullseye-updates InRelease
0020|Get:6 https://deb.debian.org/debian-security bullseye-security/main Sources [278 kB]
0021|Get:7 https://deb.debian.org/debian-security bullseye-security/main arm64 Packages [441 kB]
0022|Fetched 746 kB in 2s (300 kB/s)
0023|Reading package lists...
0024|Building dependency tree...
0025|Reading state information...
0026|1 package can be upgraded. Run 'apt list --upgradable' to see it.
0027|+ echo 3
0028|+ sudo apt install -o Dpkg::Options::=--force-confdef -y python3-dev
0029|WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0030|Reading package lists...
0031|Building dependency tree...
0032|Reading state information...
0033|python3-dev is already the newest version (3.9.2-3).
0034|0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
0035|+ echo 4
0036|+ sudo apt install -o Dpkg::Options::=--force-confdef -y python3-venv
0037|WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0038|Reading package lists...
0039|Building dependency tree...
0040|Reading state information...
0041|python3-venv is already the newest version (3.9.2-3).
0042|0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
0043|+ echo 5
0044|+ sudo apt install -o Dpkg::Options::=--force-confdef -y python3-requests
0045|WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0046|Reading package lists...
0047|Building dependency tree...
0048|Reading state information...
0049|python3-requests is already the newest version (2.25.1+dfsg-2).
0050|0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
0051|+ echo 6
0052|+ sudo apt install -o Dpkg::Options::=--force-confdef -y python3-pyudev
0053|WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0054|Reading package lists...
0055|Building dependency tree...
0056|Reading state information...
0057|python3-pyudev is already the newest version (0.22.0-2).
0058|0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
0059|+ echo 7
0060|+ sudo chmod +x /var/www/html/core/class/../../plugins/ProJote/resources/post-install.sh
0061|+ sudo /var/www/html/core/class/../../plugins/ProJote/resources/post-install.sh
0062|[ProJote] Répertoire resources : /var/www/html/plugins/ProJote/resources
0063|[ProJote] Venv cible           : /var/www/html/plugins/ProJote/resources/python_venv/bin/python3
0064|[ProJote] Python système : Python 3.9.2
0065|[ProJote] Création du venv Python...
0066|[ProJote] Venv créé : /var/www/html/plugins/ProJote/resources/python_venv/bin/python3
0067|[ProJote] Mise à jour de pip...
0068|[ProJote] Installation des paquets Python...
0069|Collecting pronotepy
0070|Downloading pronotepy-2.14.6-py3-none-any.whl.metadata (6.1 kB)
0071|Collecting autoslot
0072|Downloading autoslot-2025.11.1-py2.py3-none-any.whl.metadata (5.1 kB)
0073|Collecting cryptography
0074|Downloading cryptography-46.0.6-cp38-abi3-manylinux_2_28_aarch64.whl.metadata (5.7 kB)
0075|Collecting pycryptodome==3.20.0
0076|Downloading pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.4 kB)
0077|Collecting requests
0078|Using cached requests-2.32.5-py3-none-any.whl.metadata (4.9 kB)
0079|Collecting beautifulsoup4
0080|Downloading beautifulsoup4-4.14.3-py3-none-any.whl.metadata (3.8 kB)
0081|Collecting pyserial
0082|Downloading pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
0083|Collecting pyudev
0084|Downloading pyudev-0.24.4-py3-none-any.whl.metadata (4.4 kB)
0085|Collecting cffi>=2.0.0 (from cryptography)
0086|Downloading cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.metadata (2.6 kB)
0087|Collecting typing-extensions>=4.13.2 (from cryptography)
0088|Using cached typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
0089|Collecting charset_normalizer<4,>=2 (from requests)
0090|Downloading charset_normalizer-3.4.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.metadata (40 kB)
0091|Collecting idna<4,>=2.5 (from requests)
0092|Using cached idna-3.11-py3-none-any.whl.metadata (8.4 kB)
0093|Collecting urllib3<3,>=1.21.1 (from requests)
0094|Downloading urllib3-2.6.3-py3-none-any.whl.metadata (6.9 kB)
0095|Collecting certifi>=2017.4.17 (from requests)
0096|Using cached certifi-2026.2.25-py3-none-any.whl.metadata (2.5 kB)
0097|Collecting soupsieve>=1.6.1 (from beautifulsoup4)
0098|Downloading soupsieve-2.8.3-py3-none-any.whl.metadata (4.6 kB)
0099|Collecting pycparser (from cffi>=2.0.0->cryptography)
0100|Downloading pycparser-2.23-py3-none-any.whl.metadata (993 bytes)
0101|Downloading pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB)
0102|━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 3.8 MB/s  0:00:00
0103|Downloading pronotepy-2.14.6-py3-none-any.whl (47 kB)
0104|Downloading autoslot-2025.11.1-py2.py3-none-any.whl (8.1 kB)
0105|Downloading cryptography-46.0.6-cp38-abi3-manylinux_2_28_aarch64.whl (4.3 MB)
0106|━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3/4.3 MB 4.3 MB/s  0:00:00
0107|Using cached requests-2.32.5-py3-none-any.whl (64 kB)
0108|Downloading charset_normalizer-3.4.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (200 kB)
0109|Using cached idna-3.11-py3-none-any.whl (71 kB)
0110|Downloading urllib3-2.6.3-py3-none-any.whl (131 kB)
0111|Downloading beautifulsoup4-4.14.3-py3-none-any.whl (107 kB)
0112|Downloading pyserial-3.5-py2.py3-none-any.whl (90 kB)
0113|Downloading pyudev-0.24.4-py3-none-any.whl (62 kB)
0114|Using cached certifi-2026.2.25-py3-none-any.whl (153 kB)
0115|Downloading cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (216 kB)
0116|Downloading soupsieve-2.8.3-py3-none-any.whl (37 kB)
0117|Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB)
0118|Downloading pycparser-2.23-py3-none-any.whl (118 kB)
0119|Installing collected packages: pyserial, autoslot, urllib3, typing-extensions, soupsieve, pyudev, pycryptodome, pycparser, idna, charset_normalizer, certifi, requests, cffi, beautifulsoup4, pronotepy, cryptography
0120|Successfully installed autoslot-2025.11.1 beautifulsoup4-4.14.3 certifi-2026.2.25 cffi-2.0.0 charset_normalizer-3.4.6 cryptography-46.0.6 idna-3.11 pronotepy-2.14.6 pycparser-2.23 pycryptodome-3.20.0 pyserial-3.5 pyudev-0.24.4 requests-2.32.5 soupsieve-2.8.3 typing-extensions-4.15.0 urllib3-2.6.3
0121|[ProJote] Installation terminée avec succès.
0122|[ProJote] Binaire Python : /var/www/html/plugins/ProJote/resources/python_venv/bin/python3
0123|+ echo 8
0124|+ php /var/www/html/core/class/../php/jeecli.php plugin dependancy_end ProJote
0125|+ echo 9
0126|+ rm /tmp/jeedom_install_in_progress_ProJote
0127|+ echo '*******************End of package installation******************'
0128|*******************End of package installation******************

Jeedom à jour en 4.5.3
Debian 11.11

Julien

Bonjour,

Etonnant car on voit que pronotepy est bien installé sans erreur ligne 120.
Aurais tu plus de logs à me partager pour projote ?

Non, rien de plus, c’est l’ensemble des logs.

Vais redémarrer la box pour voir si c’est mieux…

merci @Aldarande pour le super widget.

Mon fils a besoin que l’on soit dernière lui, mais je crois qu’il y a un problème sur la moyenne. :joy:

1 « J'aime »

Le point positif c’est qu’il est en progrès !

2 « J'aime »