Skip to content

Commit

Permalink
adapt sensors for pronote cards
Browse files Browse the repository at this point in the history
  • Loading branch information
Giga77 committed Mar 26, 2024
1 parent c659bef commit 38543bc
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 77 deletions.
109 changes: 55 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,55 @@
# Integration Ecole directe pour Home Assistant

![Version](https://img.shields.io/github/v/release/hacf-fr/hass-ecoledirecte?label=version) [![HACS: Custom](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/custom-components/hacs)

- [Installation](#Installation)
- [Installation via l'interface utilisateur via HACS](#Installation-via-linterface-utilisateur-via-hacs)
- [Installation manuelle](<#Installation-manuelle>)
- [Configuration](#Configuration)
- [Utilisation](#Utilisation)


## Installation


### Installation via l'interface utilisateur via HACS

1. Depuis [HACS](https://hacs.xyz/) (Home Assistant Community Store), sélectionner `Intégrations`. Puis ouvrez le menu en haut à droite et utiliser l'option `Dépôts personnalisés` pour ajouter le dépôt de l'intégration.

2. Ajoutez l'adresse <https://github.com/hacf-fr/hass-ecoledirecte> avec pour catégorie `Intégration`, et faire `AJOUTER`. Le dépôt apparaît dans la liste.

3. La carte de ce `nouveau dépôt` va s'afficher, cliquez sur celle-ci puis `Télécharger` en bas à droite.

4. Laisser le choix de la dernière version et utiliser l'option `Télécharger`.

5. Il faut ensuite redémarrer Home Assistant.


### Installation manuelle
Copier le répertoire ecole_directe de la dernière release dans le répertoire custom_components de votre répertoire config. Redémarrer Home Assistant

## Configuration

Cliquer sur ce boutton:
[![Open your Home Assistant instance and start setting up a new integration of a specific brand.](https://my.home-assistant.io/badges/brand.svg)](https://my.home-assistant.io/redirect/brand/?brand=ecole_directe)

Ou aller dans :
Paramètres > Appareils et services > Intégrations > Ajouter une intégration, et chercher "Ecole Directe"

Utiliser votre identifiant et mot de passe password :
![Ecole directe config flow](doc/config_flow_username_password.png)

## Utilisation

Cette intégration fournit plusieurs entités, toujours prefixées avec `ecole_directe_PRENOM_NOM` (où `PRENOM` et `NOM` sont remplacé).


| Sensor | Description |
|--------|-------------|
| `sensor.ecole_directe_PRENOM_NOM` | informations basique de l'enfant |
| `[...]_homework` | devoirs |
| `[...]_grades` | notes |

Les entités sont mises à jour toutes les 30 minutes.

# Integration Ecole directe pour Home Assistant

![Version](https://img.shields.io/github/v/release/hacf-fr/hass-ecoledirecte?label=version) [![HACS: Custom](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/custom-components/hacs)

- [Installation](#Installation)
- [Installation via l'interface utilisateur via HACS](#Installation-via-linterface-utilisateur-via-hacs)
- [Installation manuelle](<#Installation-manuelle>)
- [Configuration](#Configuration)
- [Utilisation](#Utilisation)


## Installation


### Installation via l'interface utilisateur via HACS

1. Depuis [HACS](https://hacs.xyz/) (Home Assistant Community Store), sélectionner `Intégrations`. Puis ouvrez le menu en haut à droite et utiliser l'option `Dépôts personnalisés` pour ajouter le dépôt de l'intégration.

2. Ajoutez l'adresse <https://github.com/hacf-fr/hass-ecoledirecte> avec pour catégorie `Intégration`, et faire `AJOUTER`. Le dépôt apparaît dans la liste.

3. La carte de ce `nouveau dépôt` va s'afficher, cliquez sur celle-ci puis `Télécharger` en bas à droite.

4. Laisser le choix de la dernière version et utiliser l'option `Télécharger`.

5. Il faut ensuite redémarrer Home Assistant.


### Installation manuelle
Copier le répertoire ecole_directe de la dernière release dans le répertoire custom_components de votre répertoire config. Redémarrer Home Assistant

## Configuration

Cliquer sur ce boutton:
[![Open your Home Assistant instance and start setting up a new integration of a specific brand.](https://my.home-assistant.io/badges/brand.svg)](https://my.home-assistant.io/redirect/brand/?brand=ecole_directe)

Ou aller dans :
Paramètres > Appareils et services > Intégrations > Ajouter une intégration, et chercher "Ecole Directe"

Utiliser votre identifiant et mot de passe password :

![Ecole directe config flow](doc/config_flow_username_password.png)

## Utilisation

Cette intégration fournit plusieurs entités, toujours prefixées avec `ecole_directe_PRENOM_NOM` (où `PRENOM` et `NOM` sont remplacé).


| Sensor | Description |
|--------|-------------|
| `sensor.ecole_directe_PRENOM_NOM` | informations basique de l'enfant |
| `[...]_homework` | devoirs |
| `[...]_grades` | notes |

Les entités sont mises à jour toutes les 30 minutes.

6 changes: 2 additions & 4 deletions custom_components/ecole_directe/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,14 +103,12 @@ async def _async_update_data(self) -> dict[Platform, dict[str, Any]]:
homework["contenu"] = matiere["aFaire"]["contenu"]

_LOGGER.debug("homeworks_json:%s", homeworks_json)
self.data[f"{eleve.get_fullname_lower()}_homeworks"] = (
homeworks_json
)
self.data[f"{eleve.get_fullname_lower()}_homework"] = homeworks_json
except Exception as ex:
_LOGGER.warning(
"Error getting homeworks from ecole directe: %s", ex
)
self.data[f"{eleve.get_fullname_lower()}_homeworks"] = {}
self.data[f"{eleve.get_fullname_lower()}_homework"] = {}
if "NOTES" in eleve.modules:
try:
self.data[
Expand Down
4 changes: 2 additions & 2 deletions custom_components/ecole_directe/ecole_directe_formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def format_homework(homework):
"description": contenu,
"done": homework.effectue,
"background_color": None,
"files": None,
"files": [],
"matiere": homework.matiere,
"codeMatiere": homework.code_matiere,
"aFaire": homework.a_faire,
Expand All @@ -45,7 +45,7 @@ def format_grade(grade):
try:
return {
"date": grade.date,
"subject": grade.code_matiere,
"subject": grade.libelle_matiere,
"comment": grade.devoir,
"grade": grade.valeur,
"out_of": str(grade.note_sur).replace(".", ","),
Expand Down
4 changes: 2 additions & 2 deletions custom_components/ecole_directe/ecole_directe_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ def get_ecoledirecte_session(data) -> EDSession | None:


def get_homeworks_by_date(session, eleve, date):
"""get homeworks by date"""
# """get homeworks by date"""
json_resp = get_response(
session,
f"{APIURL}/Eleves/{eleve.eleve_id}/cahierdetexte/{date}.awp?verbe=get&v={APIVERSION}",
Expand Down Expand Up @@ -369,7 +369,7 @@ def get_homeworks(session, eleve):
_LOGGER.warning("get_homeworks: [%s]", json_resp)
return None

# Opening JSON file
# # Opening JSON file
# f = open("config/custom_components/ecole_directe/test_homeworks.json")

# # returns JSON object as
Expand Down
28 changes: 13 additions & 15 deletions custom_components/ecole_directe/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,10 @@ def __init__(

identifiant = self.coordinator.data["session"].identifiant

self._name = name
if name == "":
self._name = eleve.get_fullname_lower()
else:
self._name = f"{eleve.get_fullname_lower()}_{name}"
self._state = state
self._child_info = eleve
self._attr_unique_id = f"ed_{identifiant}_{self._name}"
Expand Down Expand Up @@ -118,14 +121,14 @@ class EDChildSensor(EDGenericSensor):

def __init__(self, coordinator: EDDataUpdateCoordinator, eleve: EDEleve) -> None:
"""Initialize the ED sensor."""
super().__init__(coordinator, eleve.get_fullname(), eleve, "len")
super().__init__(coordinator, "", eleve, "len")
self._attr_unique_id = f"ed_{eleve.get_fullname_lower()}_{eleve.eleve_id}]"
self._account_type = self.coordinator.data["session"]._account_type

@property
def name(self):
"""Return the name of the sensor."""
return self._child_info.get_fullname()
return f"{DOMAIN}_{self._name}"

@property
def native_value(self):
Expand Down Expand Up @@ -158,7 +161,7 @@ def __init__(self, coordinator: EDDataUpdateCoordinator, eleve: EDEleve) -> None
"""Initialize the ED sensor."""
super().__init__(
coordinator,
f"{eleve.get_fullname_lower()}_homeworks",
"homework",
eleve,
"len",
)
Expand All @@ -168,12 +171,9 @@ def extra_state_attributes(self):
"""Return the state attributes."""
attributes = []
todo_counter = 0
if (
f"{self._child_info.get_fullname_lower()}_homeworks"
in self.coordinator.data
):
if f"{self._child_info.get_fullname_lower()}_homework" in self.coordinator.data:
json = self.coordinator.data[
f"{self._child_info.get_fullname_lower()}_homeworks"
f"{self._child_info.get_fullname_lower()}_homework"
]
_LOGGER.debug("EDHomeworksSensor attributes json: [%s]", json)
for key in json.keys():
Expand All @@ -188,13 +188,13 @@ def extra_state_attributes(self):
else:
attributes.append(
{
"Erreur": f"{self._child_info.get_fullname_lower()}_homeworks n'existe pas."
"Erreur": f"{self._child_info.get_fullname_lower()}_homework n'existe pas."
}
)

return {
"updated_at": self.coordinator.last_update_success_time,
"homeworks": attributes,
"homework": attributes,
"todo_counter": todo_counter,
}

Expand All @@ -204,9 +204,7 @@ class EDGradesSensor(EDGenericSensor):

def __init__(self, coordinator: EDDataUpdateCoordinator, eleve: EDEleve) -> None:
"""Initialize the ED sensor."""
super().__init__(
coordinator, f"{eleve.get_fullname_lower()}_grades", eleve, "len"
)
super().__init__(coordinator, "grades", eleve, "len")

@property
def extra_state_attributes(self):
Expand All @@ -227,5 +225,5 @@ def extra_state_attributes(self):

return {
"updated_at": self.coordinator.last_update_success_time,
"notes": attributes,
"grades": attributes,
}

0 comments on commit 38543bc

Please sign in to comment.