Super !
Effectivement, ça a l’air de lancer le script.
C’est bon, j’ai trouvé, j’avais oublié ça :
#Connection à Pronote
client = pronotepy.ParentClient('https://'+prefix_url+'.index-education.net/pronote/parent.html?login=true', username, password)
#Si on est bien connecté
if client.logged_in:
client.set_child('Nom + Prénom de l élève')
Merci pour se tuto, ca fait a peu prés un mois que je me suis lancé sur homeassistant, j’ ai installé toute la partie démo, le fichier json se crée bien dans www, mais je ne comprends pas je ne vois pas les capteurs Pronote malgré avoir copier les lignes dans configuration.yaml.
Le capteur sensor.rest se lance au démarrage.
Je passe par duckdns, du coup faut-il encore laisser /local/.
resource: https://*******.duckdns.org:8123//pronote_edt_demo.json
Merci
@sosordinet : Merci pour ton retour !
Bravo pour l’installation - c’est une bonne nouvelle pour ceux qui veulent aussi utiliser ce module
Par contre peux-tu détailler stp ce que tu entend pas « installer le script en ssh »
Est-ce que tu passes par un des 2 addons SSH de HA ?
Est-ce que tu accès par ailleurs avec un client SSH sur ton ordinateur à une commande SSH qui te donne accès au serveur en ligne de commande ?
Je ne sais pas vraiment ce qu’est HASSIO ?
Merci de ton retour
Le script, tu le colles dans un fichier que tu créés sous:
/config/python_scripts/pronote.py
Après effectivement, avec l’addon « Ssh & Web Terminal » (l’autre est moins bien je pense), tu lances la commande :
python3 /config/python_scripts/pronote.py
et cela lancera le script tu as créé précédemment.
Cet addon te permettra effectivement de lancer des commandes sur la machine où est hébergée ton HA
HASSIO est une des versions de Home Assistant (qui, si je en dis pas de bêtises, a été remplacé par HA OS). Comme autres versions, tu as je crois : Home Assistant Container, Home Assistant Supervised ou Home Assistant Core.
Bonjour ,
merci pour ce partage !!! ça fonctionne parfaitement pour moi .
Pouriez vous partager la config des markdown et sensors pour les notes et les devoirs ? Je n’ai pas reussi a les trouver dans le lovelace.yaml et configuration.yaml en exemple sur github .
merci par avance .
C’est copier coller de emploi du temps et changer les attributes pour notes et devoirs…
- platform: rest
name: edt_note_demo
json_attributes:
- note
value_template: >
{% if value_json.note.0 is defined %}
{{ value_json.note.0.date_heure }}
{% else %}
None
{% endif %}
resource: http://192.168.XX.XX:8123/local/pronote_edt_demo.json```
Merci @Dathosim pour la partage. Ça marche très bien.
Vous pouvez partager la partie notifications & réveil svp?
Pour ma part après avoir installé le module pronotepy, je lance le script et j’ai l’erreur suivante :
chris@hass:/usr/share/hassio/homeassistant/python_script$ python3 pronote.py
Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/pronotepy/pronoteAPI.py", line 261, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
File "/usr/local/lib/python3.9/dist-packages/Crypto/Util/Padding.py", line 92, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/share/hassio/homeassistant/python_script/pronote.py", line 16, in <module>
client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html?login=true', username, password)
File "/usr/local/lib/python3.9/dist-packages/pronotepy/clients.py", line 283, in __init__
super().__init__(pronote_url, username, password, ent)
File "/usr/local/lib/python3.9/dist-packages/pronotepy/clients.py", line 78, in __init__
self.logged_in = self._login()
File "/usr/local/lib/python3.9/dist-packages/pronotepy/clients.py", line 130, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.9/dist-packages/pronotepy/pronoteAPI.py", line 263, in aes_decrypt
raise CryptoError('Decryption failed while trying to un pad. (probably bad decryption key/iv)')
pronotepy.exceptions.CryptoError: Decryption failed while trying to un pad. (probably bad decryption key/iv)
chris@hass:/usr/share/hassio/homeassistant/python_script$
Une idée?
merci , je récupère désormais bien les notes dans le sensor sensor.edt_note visible dans l’onglet ‹ outils de développement › .
en revanche, j’ai essayé de les formater dans un tableau , et même avec quelque chose de minimum comme ceci , rien ne remonte
type: markdown
content: |-
<div>Note</div>
<table>
{%-for attr in states.sensor.edt_note.attributes.edt_note -%}
<tr style="background-color:#FF0000">
<td>{{state_attr('sensor.edt_note', 'edt_note')[loop.index-1]['date']}}</td>
<td>{{state_attr('sensor.edt_note', 'edt_note')[loop.index-1]['cours']}}</td>
<td>{{state_attr('sensor.edt_note', 'edt_note')[loop.index-1]['note']}}</td>
<td>{{state_attr('sensor.edt_note', 'edt_note')[loop.index-1]['sur']}}</td>
<td>{{state_attr('sensor.edt_note', 'edt_note')[loop.index-1]['moyenne_classe']}}</td>
</tr>
{% endfor %}
</table>
card_mod:
style:
.: |
ha-card ha-markdown {
padding:0px
}
ha-card ha-markdown.no-header {
padding:0px
}
ha-markdown:
$:
ha-markdown-element: |
div {
background-color:rgb(100, 100, 100);
padding: 12px 12px;
color:white;
font-weight:normal;
font-size:1.2em;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
identifiants parent?
(voir issue #3 GitHub)
Qu’entendez vous par installer le script par SSH?
Effectivement il s’agit des identifiants parents pour moi
Je galeree aussi avec les ‹ card-mod ›…
C’est plus facile avec le code (Lovelace.yaml) e après adapter.
Pour moi le tableau:
...
<table>
<tbody>
{%-for attr in states.sensor.pronote_note.attributes.note -%}
<tr>
<td>{{state_attr('sensor.pronote_note', 'note')[loop.index-1]['date_courte']}}</td>
<td>{{state_attr('sensor.pronote_note', 'note')[loop.index-1]['cours']}}</td>
<td width="25%">{{state_attr('sensor.pronote_note', 'note')[loop.index-1]['note_sur']}}</td>
<td>(moy:{{state_attr('sensor.pronote_note', 'note')[loop.index-1]['moyenne_classe']}})</td>
</tr>
{% endfor %}
</tbody>
</table>
...```
Alors, il faut modifier comme ceci :
#Connection à Pronote
client = pronotepy.ParentClient('https://'+prefix_url+'.index-education.net/pronote/parent.html?login=true', username, password)
Je pense que ceci répond à ta question ?
https://forum.hacf.fr/t/pronote-dans-ha-les-notes-devoirs-et-emploi-du-temps-des-enfants/9120/43?u=elekrea
A priori c’est bon.
Ne pas oublier de lancer le script avec un sudo aussi
J’ai enfin pu créer les sensors.
En revanche lorsque je crée la carte elle est vide.
Le code de la carte emploi du temps aujourd’hui :
type: markdown
content: |-
<div>Emploi du temps d'aujourd'hui </div>
<table>
<tbody>
{%-for attr in states.sensor.edt_clara_aujourdhui.attributes.edt_aujourdhui -%}
<tr style="background-color:#FF0000"><td>
{%- if state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['annulation'] == false -%}
<mark>
{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure']}}
</mark>
{%- else -%}
<span>
{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure']}}
</span>
{% endif %}</td>
<td>{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['heure_fin']}}</td>
<td>
{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['cours']}}
{% if not state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['status'] == None %}<span>{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['status']}}</span>
{% endif %}</td>
<td>{{state_attr('sensor.edt_clara_aujourdhui', 'edt_aujourdhui')[loop.index-1]['salle']}}</td>
</tr>
{% endfor %}
</tbody>
</table>
card_mod:
style:
.: |
ha-card ha-markdown {
padding:0px
}
ha-card ha-markdown.no-header {
padding:0px
}
ha-markdown:
$:
ha-markdown-element: |
div {
background-color:rgb(100, 100, 100);
padding: 12px 12px;
color:white;
font-weight:normal;
font-size:1.2em;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
table{
border-collapse: collapse;
font-size: 0.9em;
font-family: Roboto;
width: 100%;
outline: 0px solid #393c3d;
margin-top:5px;
} caption {
text-align: center;
font-weight: bold;
font-size: 1.2em;
} td {
padding: 5px 10px 5px 10px;
text-align: left;
border-bottom: 0px solid #1c2020;
}
tr {
border-bottom: 0px solid #1c2020;
}
tr:nth-of-type(even) {
background-color: rgb(54, 54, 54, 0.3);
}
tr:last-of-type {
border-bottom: transparent; }*
mark {
background: #009767;
color: #222627;
border-radius: 5px;
padding: 5px;
}
span {
background: #EC4B34;
color: #222627;
border-radius: 5px;
padding: 5px;
}
span {
padding: 5px;
}
tr:nth-child(n+2) > td:nth-child(2) {
text-align: left;
}
et le sensor associé :
edt_aujourdhui:
- id: 3120A11774D175
date_heure: 04/02/2022, 10:37
date: 04/02/2022
heure: '10:37'
heure_fin: '11:30'
cours: MATHEMATIQUES
salle: B11
annulation: false
status: null
background_color: '#E73A1F'
- id: 3105B21474D1EC
date_heure: 04/02/2022, 11:34
date: 04/02/2022
heure: '11:34'
heure_fin: '12:27'
cours: DEVOIRS FAITS & ACCOMPAGNEMENT
salle: null
annulation: false
status: null
background_color: '#C0C0C0'
- id: 31BB8B1774D1A9
date_heure: 04/02/2022, 13:48
date: 04/02/2022
heure: '13:48'
heure_fin: '14:54'
cours: ANGLAIS LV1
salle: B15
annulation: false
status: null
background_color: '#4576BA'
- id: 311AF31774D132
date_heure: 04/02/2022, 15:12
date: 04/02/2022
heure: '15:12'
heure_fin: '16:04'
cours: ESPAGNOL LV2
salle: B18
annulation: false
status: null
background_color: '#6974B6'
friendly_name: edt_aujourdhui_clara
Je m’auto répond le nom du sensor était pas bon. Quel boulet. C’est ça le copié coller