[Article] Intégration Pronote : cours, devoirs, notes, etc (archive)

Je crois avoir un problème avec l’intégration card-mod via HACS
Lors de l’intégration il est précisé :
Ce dépôt sera téléchargé dans '/config/www/community/lovelace-card-mod'

Une fois intégré,
dans le tableau de bord ressource je trouve mes modules javascript:
URL : /hacsfiles/lovelace-card-mod/card-mod.js?hacstag=190927524322

comme précisé, j’ai ajouter les lignes suivantes dans configuration.yalm :
frontend:
extra_module_url:
- /local/card-mod.js

j’ai aussi essayé avec /hacsfiles/lovelace-card-mod/card-mod.js

Quelque soit le chemin précisé dans configuraiton.yalm j’ai toujours cette erreur qui m’empeche de redémarrer HA :

Configuration non valide !
Error loading /config/configuration.yaml: while scanning a simple key
in « /config/configuration.yaml », line 12, column 1
could not find expected ‹ : ›
in « /config/configuration.yaml », line 13, column 1

à savoir que le fichier card-mod.js est situé ici :
~/docker/homeAssistant/www/community/lovelace-card-mod/card-mod.js

Je m’y suis penché aussi et j’ai trouvé aussi une solution. Je ne sais pas si c’est la même façon.

J’ai fait un boucle dans le card-mod.

          {%-for attr in

          states.sensor.pronote_xxxxxx_timetable_period.attributes.lessons

          -%}tr:nth-child({%- set nb = loop.index -%}{{nb}}) {
            text-align: left;
            background: {%- set color = state_attr('sensor.pronote_xxxxxx_timetable_period', 'lessons')[loop.index-1]['background_color'] -%}{{color}};
            
          }{%endfor%}
1 « J'aime »

Hello @herveaurel
J’ai checké ton github mais toujours pas ton super dashboard pronote :grin:
Au plaisir de le voir bientôt :+1:t4:

Je ne mets pas a jour au moindre évènement, mais je le ferai.

C’est exactement ce que je recherche à faire, quand tu auras un peu de temps, tu pourrais nous mettre le code de cette carte. Merci par avance

@herveaurel, @Thomas_Mary

Si ça vous intéresse, j’ai mis à jour le code pour tenir compte de quelques petites bizarreries gracieusement offertes par le collège de mon fils.

Par ailleurs, j’ai cru voir passer des discussions sur la moyenne générale. Pour ma part, j’ai résolu le problème en créant une nouvelle « entrée » de type « Template » dans « Paramètres > Appareils et services ». Voici le code:

{% set data = namespace(avgs=[]) %}
{% for sub in state_attr('sensor.pronote_xxx_averages', 'averages') %}
  {% set data.avgs = data.avgs + [sub.average|replace(',', '.')|float] %}
{% endfor %}

{{ data.avgs|sum / data.avgs|length }}
2 « J'aime »

Le code de ma carte :

Le template avec les macros, à placer dans config/custom_templates/pronote.jinja :
(pensez bien à appeler le service homeassistant.reload_custom_templates pour qu’il soit chargé)

{% macro timetable_markdown(firstname, sensor_id) %}
{% set days = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"] %}
{% set items = state_attr(sensor_id,'lessons') %}
<div>
    {{ firstname }} - {{ days[items[0].start_at.strftime('%w')| int - 1] }} {{as_timestamp(items[0].start_at) | int | timestamp_custom('%d/%m', true)}}
    - Début à {{ as_timestamp(state_attr(sensor_id,'day_start_at'))| int | timestamp_custom('%-Hh%M', true) }}
</div>

<table>
{%- set idx = 0 -%}
{% for item in items %}
{%- set canceled = item.canceled == True -%}
{%- if canceled and item.start_at == items[idx+1].start_at -%}
    {%- continue -%}
{%- endif -%}
<tr>
    <td>
    {{ item.start_time }}<br />
    {{ item.end_time }}
    </td>
    <td>
    {%- if canceled -%}<del>{%- endif -%}
    <b>{{ item.lesson }}</b>
    {%- if canceled -%}</del>{%- endif -%}
    <br />
    Salle {{ item.classroom }}
    </td>
    <td>
    {%- if canceled -%}
        <mark>{{ item.status }}</mark>  
    {%- elif item.status != None -%}
        <span>{{ item.status }}</span>
    {%- endif -%}
    </td>
</tr>
{%- set idx = idx + 1 -%}
{% endfor %}
</table>
{% endmacro %}

{% macro timetable_styles(sensor_id) %}
div {
    background-color:rgb(50, 50, 50);
    padding: 12px;
    color:white;
    font-weight:normal;
    font-size:1.2em;
    border-top-left-radius: 5px; 
    border-top-right-radius: 5px;
}
table{
    font-size: 0.9em;
    font-family: Roboto;
    width: 100%;
    outline: 0px solid #393c3d;
    margin-top:5px;
    border-collapse: collapse;
}
span {
    color: white;
    background-color: rgb(75, 197, 253);
    padding: 4px;
    border-radius: 4px;
}
mark {
    color: white;
    background-color: rgb(250, 50, 75);
    padding: 4px;
    border-radius: 4px;
}
tr:nth-child(even) {
    background-color: #2d2d2d;
}
{%- set items = state_attr(sensor_id, 'lessons') -%}
{%- for item in items -%}
tr:nth-child({{ loop.index }}) td:first-child {
    border-left: 4px solid {{item.background_color}};
}
{%- endfor -%}
tr.canceled td {
    color: orange;
}
td {
    padding: 5px 10px 5px 10px;
    text-align: left;             
    vertical-align: top;
}
{% endmacro %}

Et pour l’utiliser :

type: markdown
content: >-
  {%- from 'pronote.jinja' import timetable_markdown -%}
  {{- timetable_markdown('Prénom de votre enfant', 'sensor.pronote_XXXXX_timetable_next_day') -}}
card_mod:
  style:
    .: |
      ha-card ha-markdown {
        padding:0px
      }
      ha-card ha-markdown.no-header {
        padding:0px
      }
    ha-markdown$: >
      {%- from 'pronote.jinja' import timetable_styles -%}
      {{- timetable_styles('sensor.pronote_XXXXX_timetable_next_day') -}}
1 « J'aime »

Ça doit fonctionner mais vous ne prenez pas en compte les coefficients pour le calcul.
J’ai fait une PR sur le github pour sortir les moyennes générales calculées directement par pronote

Je ne les prends pas en compte parce qu’il n’y en a pas ! (j’ai vérifié sur plusieurs jours et apparitions de notes, j’ai bien le même résultat que dans Pronote).
Dans le collège de mes enfants, en tout cas, les coefficient ne s’appliquent qu’aux notes et il n’y a pas de tel attribut sur les moyennes (qui en revanche les prennent bien en compte de leur côté). Comme je calcule la générale à partir des moyennes par matière, pas de prise en compte des coefficients, de fait.
Si tu as des coeffs sur les moyennes de ton côté, je veux bien le contenu de l’attribut averages du sensor correspondant, que je puisse adapter le code en attendant la publication d’une version de l’extension qui intègrera ta PR :slight_smile:

2 « J'aime »

Ah pas mal !
Je l’ai mis dans le titre du coup

1 « J'aime »

Oui c’est exact. Les moyennes prennent bien en compte les coefficients. Au temps pour moi. :wink:

Fichtre je ne connaissais pas …!
Il faut créer un dossier custom_templates et y déposer le fichier pronote.jinja ?

1 « J'aime »

Lo @herveaurel ,

Est-ce que tu pourrais nous partager ton travail ?
Je suis curieux de voir ce que t’as fait :slight_smile:
Pour information, je débute fraichement HomeAssistant,
Je suis un ancien de chez Jeedom et je n’ai pas encore les réflexes

Les cartes → j’adore le rendu, c’est très propre et réfléchi,
Les automatisations → Je n’ai pas encore abordé cette partie et avoir un peu de matière pour comprendre ne me serait pas du luxe ^^

Merci d’avance,
Bonne soirée, au plaisir,

Lo,

C’est un dossier que je dois créer ? Actuellement ce dossier n’existe pas dans mon arborescence

Merci pour ton retour,
Au plaisir, bonne soirée,

Je mettrais mon Github à jour quand j’aurais tout terminé : :point_right:t3: Mon Github

Là je viens de passer la case « devoirs » en mode scroll aussi comme celle de l’emploi du temps.

3 « J'aime »

Super, merci beaucoup,
Very good job :clap:

1 « J'aime »

Super
Merci a toi :sunglasses::+1:t4:

Merci beaucoup j’ai enlevé la ligne et maintenant cela fonctionne bien :+1:

1 « J'aime »

Yes, par défaut le dossier n’existe pas :slight_smile:

OK j’ai fait ca, mais après reboot, la markdown n’affiche rien.