Intégration Oze ENT (Environnement Numérique de Travail) - 2nd degré

Bonjour à tous,

Pas vraiment développeur et encore moins expérimenté en python, je viens de créer une première intégration HA pour y récupérer les informations sur les cours de mon fils au collège. Cette intégration devrait pouvoir être réutilisée pour tout établissement utilisant Oze 2nd degré mais je n’ai pas la possibilité de le tester dans un autre contexte que le mien, bien évidemment :slight_smile:

J’écris ici pour vous solliciter pour 2 choses:

  • Trouver d’autres parents d’élèves qui pourraient aider à confirmer le bon fonctionnement de l’intégration dans d’autres établissements que celui sur lequel j’ai pu tester
  • Trouver de l’aide pour perfectionner l’intégration

Sur ce dernier point, dans l’immédiat, j’aimerais ajout un « config flow » à mon intégration. Ma lecture de la documentation HA et mes diverses expérimentations ne m’ont causé que de la frustration. Auriez-vous des exemples de plateforme utilisant un « config flow » ? En attendant, l’intégration doit être paramétrée via configuration.yaml, ce qui ne l’empêche certes pas de fonctionner.

Je vous mets le lien vers le code et une petite capture d’écran ci-dessous:

calendar:
  - platform: oze_calendar
    user: !secret ozeUsername
    password: !secret ozePassword
    url: https://enc.mondepartement.fr/

image

Merci par avance pour vos retours et votre aide !

1 « J'aime »

Bonjour,

tu peux l’installer avec HACS ?
Cela m’intéresse, il ne manque plus que les notes et notifications :wink:

Je ne savais pas qu’ils y a d’autres source que ‹ pronote ›… ce que j’utilise (pronotepy comme base)

Bonjour à tous,
Et oui, le choix de l’ENT dépend du département, et il semble que le couple Hauts-de-Seine/Yvelines se soit un peu singularisé en choisissant Oze plutôt que Pronote !
J’ai pris récemment le temps de me repencher sur l’intégration en repartant du « blueprint » proposé par ludeeus et d’autres développeurs.
Cela m’a permis de faire fonctionner la configuration par l’interface graphique et d’ajouter des sondes pour les devoirs non réalisés, les infos, notifications et mails non lus, et d’autres à venir.
En revanche, j’ai fait l’erreur de m’appuyer sur la branche de dev de HA, dans laquelle il y a des modifications de fonctionnements des entités calendrier qui ne sont pas encore publiées dans la dernière version « officielle » de HA… Donc ce qui fonctionnait en développement chez moi ne fonctionne pas encore dans HA en réalité :-/ Ce sera bon pour la 2022.5 :slight_smile:
Et j’ajoute que cette nouvelle version est installable via HACS !

Je reviendrai mettre quelques infos dès que la 2022.5 sera sortie, puisque l’intégration sera alors pleinement fonctionnelle pour tous !

@Alasta pour les notes, j’y travaillerai probablement tôt ou tard, mais je ne garantis rien (pas d’API REST pour les récupérer, il faudra « parser » la page HTML, ce qui est toujours un peu casse-gueule).

À bientôt !

1 « J'aime »

J’ai vu que votre intégration est specifique pour vos enfants, et je voudrais bien savoir pourquois vour n’opter pas de baser votre taff sur pronotepy qui couvre tants des ENT en France… Notez bien, c’est juste une question pour ma comprehension :slight_smile:

C’est tout simple: j’avais besoin de savoir dans HA quand mon fils terminait ses cours, et lorsque j’ai cherché une intégration HA il n’y en avait aucune qui semblait remplir ce besoin avec Oze.
J’ai commencé par faire un script avec curl qui envoyait ce qui m’intéressait dans mon broker MQTT, mais c’était limité. J’ai regardé du côté des fonctionnalités de calendrier de HA, inutilisables avec MQTT et c’est là que j’ai pondu ma première intégration. Je répondais à mon besoin, comme tant de gens qui proposent finalement des choses aux autres avec du code libre, en somme. Mon besoin étant plus abouti, j’ai donc codé une nouvelle version, plus aboutie à son tour, de mon intégration.
Je découvre pronotepy avec votre message, et après y avoir jeté un oeil, mon impression, hâtive sans doute, est qu’il s’agit d’une bibliothèque conçue d’abord et avant tout pour pronote qui ambitionne apparemment de pouvoir gérer des ENT concurrents (comme oze, donc), mais qui n’est pas encore tout à fait prêt pour cela. Est-il réellement capable d’aller chercher les infos dans oze à ce jour ?
Dans la négative, je pourrais envisager d’essayer de contribuer pour que ce soit le cas, mais j’ai le sentiment, a priori, que ça reviendrait à essayer de faire rentrer un carré dans un rond, et j’en vois mal l’intérêt. En tout cas, ce que j’ai pu voir dans la doc à ce stade ne m’a pas aidé à y voir plus clair.
Bref, si je n’ai pas opté pour pronotepy, … c’est parce que je ne connaissais pas pronotepy et que, même désormais, je ne suis pas sûr que ce serait la solution optimale. Mais je ne demande qu’à changer de point de vue !

OK, compris maintenant … Oze est comme Pronote … j’étais distrait par ‹ ENT › qui est utilisé par pronote pour l’authentification. Dans ce cas à je ne peut rien faire pour t’aider car mes enfants sont sur pronote… Pour le configflow…j’aime par example saniho/apiEnedis: a custom_component to get Enedis data consumption (github.com)

Hello,

Mon fils est sur Oze je peux tester si tu veux.
Je suis sur discord

Guillaume

Salut,

J’ai encore beaucoup de boulot avant que ce soit totalement présentable, mais à ce stade, c’est tout à fait utilisable en ajoutant le dépôt suivant à HACS: GitHub - lesensei/oze_ent: oZe ENT custom integration for Home Assistant

Il y a:

  • Un calendrier pour les classes et un pour les retenues
  • Un capteur binaire pour indiquer si il y a/avait cours le jour courant
  • Des capteurs pour les informations, notifications, emails, devoirs (la valeur est le nombre non lu/non réalisé, mais le détail est dans les attributs)

Bonne soirée à tous !

Hello,

C’est intégré ce jour. Je vais grenouiller un peu ce soir mais pour le moment le calendrier semble vide j’ai ceci :
image

2022-05-17 15:58:59 WARNING (SyncWorker_3) [homeassistant.loader] We found a custom integration oze_ent which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-05-17 15:59:31 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 15:59:31 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 15:59:31 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Guillaume @ CLG HIDDEN_BY_ME HIDDEN_BY_ME' for oze_ent integration not ready yet: None; Retrying in background
2022-05-17 15:59:54 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 15:59:54 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
  File "/config/custom_components/oze_ent/config_flow.py", line 112, in async_step_init
  File "/config/custom_components/oze_ent/config_flow.py", line 123, in async_step_user
  File "/config/custom_components/oze_ent/config_flow.py", line 124, in <dictcomp>
2022-05-17 16:00:25 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:00:25 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:01:04 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:01:04 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:01:20 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:01:20 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:01:20 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Guillaume @ CLG HIDDEN_BY_ME HIDDEN_BY_ME' for oze_ent integration not ready yet: None; Retrying in background
2022-05-17 16:01:42 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:01:42 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:02:03 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:02:03 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:02:10 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:02:10 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:02:49 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:02:49 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:03:40 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:03:40 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 
2022-05-17 16:03:49 ERROR (MainThread) [aioze] Timeout error fetching information from https://api-ozecollege.yvelines.fr/v1/email/messages - 
2022-05-17 16:03:49 ERROR (MainThread) [custom_components.oze_ent] Error fetching oze_ent data: 

Salut @Muilloome ,

Bon, je peux te proposer de paramétrer le composant pour qu’il loggue tout ce qu’il fait, mais en fin de compte, comme je n’ai pas pu tester avec une autre « instance » d’OzE que celle des Hauts-de-Seine, je ne serais pas surpris qu’il y ait des incompatibilités entre ce que j’ai fait et ce qu’il faut faire pour d’autres installations.

Du coup, je commence par tenter le coup: accepterais-tu de modifier le mot de passe d’un compte OzE de ton foyer temporairement, pour que je fasse des tests avec et que je fasse le nécessaire dans le code ? Une fois les modifications effectuées tu re-modifieras le mot de passe, bien évidemment.

Si ça te va, tu peux m’envoyer les infos de connexion en message privé.

Sinon, pour les logs détaillés, voici ce qu’il faut mettre dans configuration.yaml, mais je te préviens ça fait beaucoup de logs :stuck_out_tongue: :

logger:
  default: info
  logs:
    custom_components.oze_ent: debug
    aioze: debug

Bonne soirée !