Im Rahmen desPronote-Integration, Damit morgen Vormittag automatisch ein Alarm ausgelöst werden kann oder die Aktualisierung von Pronote so eingestellt werden kann, dass sie nicht an den Schulferientagen aktualisiert wird, muss ich wissen, ob wir uns in Schulferien befinden und ob es morgen Schule gibt.

Ein Arbeitstag?
Um herauszufinden, ob wir ein Arbeitstag sind oder nicht, installieren Sie einfach die Erweiterung Workday
Nichts ist einfacher, alles ist in die Dokumentation.
Ich füge sie zweimal hinzu. Um morgen zu haben, fügen wir mit einer Verschiebung von 1 hinzu.



Deaktiviert = Nicht-Arbeitstag
In den Schulferien?
Um herauszufinden, ob wir in den Schulferien sind oder nicht, muss die API des Bildungsministeriums abgefragt werden. Das verwendete Skript ist V1, es hat eine V2.0, wenn ich etwas Zeit habe, werde ich später auf die V2.0 wechseln.
- V1: https://data.education.gouv.fr/api/v1/console/datasets/1.0/search/
- V2.0: https://data.education.gouv.fr/api/explore/v2.0/console
Für diese Sensoren verwendete Ressource (Danke an den Autor):
- https://github.com/papo-o/home-assistant-config/blob/master/integrations/vacances_scolaires.yaml
- https://pon.fr/home-assistant-vacances-scolaires/
Hinzufügung eines Sensors ‚Schul-_-Urlaub‘
In meiner Datei sensors.yaml, füge ich diesen Sensor hinzu:
- platform: rest scan_interval: '00:30:00' name: Ferien_Schulen json_attributes_path: "$.records[0].fields" json_attributes: - start_date - end_date - Beschreibung resource_template: |- {% set location = 'Aix-Marseille' %} {% set rows = '1'%} {% set heute = now().strftime('%Y-%m-%d')%} {% set dayOfYear = now().strftime('%ich') %} {% set year = now().strftime('%Y') | int %} {% set lastYear = year - 1 %} {% set nextYear = Jahr + 1 %} {% if dayOfYear > '244' %} {% set schoolYear = (year | string) + "-" + (nextYear | string) %} {%- else -%} {% set schoolYear = (lastYear | string) + "-" + (year | string) %} {%- endif %} https://data.education.gouv.fr/api/records/1.0/search/?dataset=de-en-kalender-schule&facet=start_date&facet=end_date&rows={{rows}&refine.location={location}&sort=-end_date&q=end_date={{heute}} value_template: |- {% set heute = now().strftime('%Y-%m-%d')%} {% for record in value_json.records -%} {% if heute >= record.fields.start_date and heute <= record.fields.end_date %} {%- if record.fields.description %}{{record.fields.description}} bis {{ as_timestamp(record.fields.end_date) | timestamp_custom('%d-%m-%Y') }} {% endif %} {% else %} {%- if record.fields.end_date > heute and record.fields.description %} nächste: {{record.fields.description}} {{ as_timestamp(record.fields.start_date) | timestamp_custom('%d-%m-%Y') }}{% endif %} {% endif %} {%- endfor %}
Natürlich muss die Akademie gewechselt werden: ‚Korsika‘, ‚Polynesien‘, ‚Neukaledonien‘, ‚Guyana‘, ‚Aix-Marseille‘, ‚Amiens‘, ‚Besançon‘, ‚Bordeaux‘, ‚Clermont-Ferrand‘, ‚Créteil‘, ‚Dijon‘, ‚Grenoble‘, ‚Lille‘, ‚Limoges‘, ‚Lyon‘, ‚Montpellier‘, ‚Nancy-Metz‘, ‚Nantes‘, ‚Nice‘, ‚Orléans-Tours‘, ‚Paris‘, ‚Poitiers‘, ‚Reims‘, ‚Rennes‘, ‚Straßburg‘, ‚Toulouse‘, ‚Versailles‘, ‚Mayotte‘, ‚Réunion‘, ‚Martinique‘, ‚Saint Pierre et Miquelon‘, ‚Wallis et Futuna‘, ‚Caen‘, ‚Rouen‘, ‚Guadeloupe‘, ‚Normandie‘
Ergebnis dieses Sensors

Diese Informationen müssen es ermöglichen, zwei Informationen in Form von binary_sensor zu extrahieren, die in Automatisierungen oder Skripten verwendet werden können.
Hinzufügen von zwei binären Sensoren für Schulferien heute und Schulferien morgen
Aktualisiert am 03/10/2023, dank der Einschlägige Bemerkung von Giga77, ich korrigiere den Code unten und ersetze
states.sensor.vacances_scolaires.attributes["start_date"]
durchstate_attr('sensor.vacances_scolaires', 'start_date')
In meiner Datei templates.yaml, füge ich diese Sensoren hinzu:
- binary_sensor: - name: Ferien_Schulen_heute einzigartig_id: binary_sensor.vacances_Schulen_heute state: |- {% set heute = now().strftime('%Y-%m-%d')%} {% if heute < state_attr('sensor.vacances_scolaires', 'start_date') oder heute > state_attr('sensor.vacances_scolaires', 'end_date') %} false {% else %} true {% endif %} - binary_sensor: - name: Ferien_Schulen_einzigartigemorgen_id: binary_sensor.urlaub_schule_demain state: |- {% set morgen = (as_timestamp(now()) + (24*3600)) | timestamp_custom('%Y-%m-%d', True) %} {% if morgen < state_attr('sensor.vacances_scolaires', 'start_date') or morgen > state_attr('sensor.vacances_scolaires', 'end_date') %} false {% else %} true {% endif %}
Ergebnis dieser Sensoren (getestet an einem freien Tag)


Ein binary_sensor zum Erlauben des Pronote-Updates
Es ist nicht sinnvoll, Pronote während der Ferien oder an arbeitsfreien Tagen zu aktualisieren.
Ich habe einen binary_sensor erstellt, der es ermöglicht, Pronote zu aktualisieren oder nicht.
In meiner Datei templates.yaml, füge ich diesen Sensor hinzu:
- binary_sensor: - name: zu genehmigen_aktualisiert_pronoteUnique_id: binary_sensor.autorisieren_aktualisiert_pronote state: "{{ is_state('binary_sensor.vacances_scolairesheute', 'off') and is_state('binary_sensor.ouvrable_hui', 'on')}"
![]()

Hinzufügen einer Bedingung zum Starten des Updates
Wie in der Tutorial zur Pronote-Integration, wird eine Automatisierung hinzugefügt, um das Pronote-Update regelmäßig zu starten, und mit der neuen Entität binary_sensor.erlauben_update_pronote, wir werden das Update nur zulassen, wenn binary_sensor.erlauben_update_pronote=on

Hier ist der vollständige YAML-Code für die Automatisierung
alias: Aktualisiert Pronote Beschreibung: "" trigger: - platform: time_pattern hours: /4 Bedingung: - Bedingung: state entity_id: binary_sensor.autorisieren_aktualisiert_pronote state: „On“-Aktion: - Dienststelle: shell_command.update_pronote data: {} Modus: single
An Werktagen außerhalb der Schulferien wird die Genehmigung aktiviert und Pronote wird alle 4 Stunden aktualisiert.
