blueprint: name: Hydro-Québec Flex D (Événements de calendrier) description: | # Gestion des événements de pointe critique "Flex D" via calendrier. Ce blueprint utilise les événements de calendrier créés automatiquement par l'intégration Hydro-Québec pour déclencher vos automatisations lors des périodes de pointe critique. **Prérequis** : Vous devez avoir configuré un calendrier dans les options de votre intégration Hydro-Québec Flex-D (DPC). ## Configuration ### Sélection du calendrier Sélectionnez le calendrier que vous avez configuré dans l'intégration Hydro-Québec pour recevoir les événements de pointe critique. ### Période de pré-chauffage Définissez combien de temps avant le début de chaque pointe (matin et soir) vous souhaitez commencer le pré-chauffage de votre résidence. Vous pouvez configurer des délais différents pour le matin et le soir selon vos besoins de chauffage. ### Actions Définition des actions à effectuer dans Home-Assistant lors de chaque début et fin de périodes. **Important** : Pour éviter qu'une erreur dans une action empêche l'exécution des actions suivantes, il est recommandé d'utiliser des appels d'actions en parallèle. Exemple : au lieu d'une séquence simple, utilisez `parallel:` pour grouper vos actions. **Workflows complexes** : Si vous avez besoin de logiques conditionnelles complexes ou de nombreuses étapes, il est recommandé d'utiliser ce blueprint pour déclencher des automatisations séparées plutôt que d'inclure toute la logique ici. Cela facilite la maintenance et le débogage. ### Métadonnées disponibles Les événements de calendrier incluent des métadonnées accessibles dans vos actions : - trigger.calendar_event.summary : Titre (🔴 Pointe critique) - trigger.calendar_event.description : Contient Critique: Oui, Tarif: DPC, etc. ### Création manuelle d'événements Si l'intégration ne crée pas automatiquement les événements (API indisponible, problème de configuration), vous pouvez les créer en utilisant le service `hydroqc.create_peak_event` avec la date et le créneau (AM ou PM). Vous trouverez plus de détails sur les logiques applicables pour Flex-D dans la [documentation Hydroqc](https://hydroqc.ca/fr/docs/tarification-dynamique/). domain: automation input: hydroqc_calendar: name: Calendrier Hydro-Québec description: Sélectionnez le calendrier configuré dans l'intégration Hydro-Québec pour les événements de pointe critique selector: entity: domain: calendar multiple: false preheat_offset_morning: name: Délai de pré-chauffage (matin) description: "Temps avant le début de la pointe du matin pour commencer le pré-chauffage (format -HH:MM:SS, ex: -02:00:00 pour 2 heures avant, -01:30:00 pour 1h30 avant)" default: "-02:00:00" selector: text: type: text preheat_offset_evening: name: Délai de pré-chauffage (soir) description: "Temps avant le début de la pointe du soir pour commencer le pré-chauffage (format -HH:MM:SS, ex: -02:00:00 pour 2 heures avant, -01:30:00 pour 1h30 avant)" default: "-02:00:00" selector: text: type: text critical_peak_offset: name: Délai avant début pointe critique description: "Temps avant le début officiel de la pointe pour déclencher les actions (permet aux appareils de se stabiliser avant la pointe). Format -HH:MM:SS, ex: -00:01:00 pour 1 minute avant" default: "-00:01:00" selector: text: type: text # ===== ACTIONS ===== pre_heat_start_morning_action: name: Action de pré-chauffage (matin) description: Actions à effectuer avant la période de pointe critique du matin pour pré-chauffer votre résidence. default: - parallel: - action: persistent_notification.create data: title: "🔥 Pré-chauffage Flex-D (matin)" message: "Début du pré-chauffage avant pointe critique du matin. Augmentez le chauffage maintenant." selector: action: {} pre_heat_start_evening_action: name: Action de pré-chauffage (soir) description: Actions à effectuer avant la période de pointe critique du soir pour pré-chauffer votre résidence. default: - parallel: - action: persistent_notification.create data: title: "🔥 Pré-chauffage Flex-D (soir)" message: "Début du pré-chauffage avant pointe critique du soir. Augmentez le chauffage maintenant." selector: action: {} critical_peak_start_action: name: Action début pointe critique description: Actions à effectuer au début de la période de pointe critique pour réduire votre consommation électrique. default: - parallel: - action: persistent_notification.create data: title: "🔴 Pointe critique Flex-D" message: "Début de la pointe critique. Réduisez votre consommation maintenant." selector: action: {} critical_peak_end_action: name: Action fin pointe critique description: | Actions à effectuer à la fin de la période de pointe critique pour rétablir votre consommation normale. **Délai aléatoire par défaut (30 sec - 5 min)** : Évite une surcharge du réseau électrique causée par le redémarrage simultané de milliers d'appareils à la fin de la pointe. Si vous avez plusieurs actions de reprise, ajoutez un délai aléatoire similaire entre chacune pour étaler la consommation. default: - delay: seconds: "{{ range(30, 300)|random|int }}" alias: Délai aléatoire 30 sec - 5 minutes - parallel: - action: persistent_notification.create data: title: "✅ Fin pointe critique Flex-D" message: "Fin de la pointe critique. Vous pouvez rétablir votre consommation normale." selector: action: {} source_url: https://github.com/hydroqc/hydroqc-ha/blob/main/blueprints/flex-d-calendar.yaml mode: parallel trigger: # Pre-heat start morning: configurable offset before morning peak - platform: calendar entity_id: !input hydroqc_calendar event: start offset: !input preheat_offset_morning id: pre_heat_morning_trigger # Pre-heat start evening: configurable offset before evening peak - platform: calendar entity_id: !input hydroqc_calendar event: start offset: !input preheat_offset_evening id: pre_heat_evening_trigger # Critical peak start: configurable offset before official peak start (default 1min before) - platform: calendar entity_id: !input hydroqc_calendar event: start offset: !input critical_peak_offset id: peak_start_trigger - platform: calendar entity_id: !input hydroqc_calendar event: end id: peak_end_trigger # Add condition to filter only peak events (title contains "pointe") and DPC rate condition: - condition: template value_template: "{{ 'pointe' in trigger.calendar_event.summary | lower }}" - condition: template value_template: "{{ 'Tarif: DPC' in trigger.calendar_event.description }}" action: - choose: # Pre-heat morning - CRITICAL ONLY - conditions: - condition: trigger id: pre_heat_morning_trigger - condition: template value_template: "{{ as_timestamp(trigger.calendar_event.start) | timestamp_custom('%H') | int < 12 }}" - condition: template value_template: "{{ 'Critique: Oui' in trigger.calendar_event.description }}" sequence: !input pre_heat_start_morning_action # Pre-heat evening - CRITICAL ONLY - conditions: - condition: trigger id: pre_heat_evening_trigger - condition: template value_template: "{{ as_timestamp(trigger.calendar_event.start) | timestamp_custom('%H') | int >= 12 }}" - condition: template value_template: "{{ 'Critique: Oui' in trigger.calendar_event.description }}" sequence: !input pre_heat_start_evening_action - conditions: - condition: trigger id: peak_start_trigger - condition: template value_template: "{{ 'Critique: Oui' in trigger.calendar_event.description }}" sequence: !input critical_peak_start_action - conditions: - condition: trigger id: peak_end_trigger - condition: template value_template: "{{ 'Critique: Oui' in trigger.calendar_event.description }}" sequence: !input critical_peak_end_action default: