Google Calendar - Lancer une action selon le libellé et l'heure d'un événement

Merci Pulpy
Vu que j’ai déjà le calendrier, je vais arrêter d’investiguer sur la partie config
Et revoir ma copie sur les conditions !

J’ai avancé
Plus d’erreur et ça a l’air de fonctionner … mais reste à circonscrire l’event à une heure donnée !
Voici le code yaml:

alias: Chauffage si travail
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "-0:30:0"
    entity_id: calendar.xxxxxxxxxxxxxx_gmail_com
condition:
  - condition: template
    value_template: "{{ 'Travail' in trigger.calendar_event.summary }}"
action:
  - device_id: 21997295cec9b621e85f1e9276c8ad88
    domain: climate
    entity_id: climate.rez_de_chaussee
    type: set_hvac_mode
    hvac_mode: heat
mode: queued

Ceci dit, il me met la température à « Max » !!!
Y a du boulot quand on débute :wink:

Tu peux créer des ‹ vues › du calendrier

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- cal_id: xxxxxx@gmail.com
  entities:
    - device_id: télétravail
      name: Télétravail
      search: "#Télétravail"

ça crée tout ce qui contient télétravail

Pour le moment je cherche comment modifier un paramètre d’état:
la température max est définie à 30 (max_temp)…
J’ai beau le modifier via l’appli dans l’outil de développement/état, je me retrouve avec 30° quand j’exécute la routine …

Dans ton automatisation tu ne fais qu’une action : passer en mode chauffage. Donc forcément il ne fait rien d’autre

Là c’est les bases de HA qui manquent. La modification se fait via l’appel des services (tu peux t’entrainer dans outil de développement/service). La modification dans état est temporaire.

Merci de ton aide. je vais tatonner et m’instruire.

J’ai trouvé le service à déclarer.

service: climate.set_temperature
data:
  temperature: 20
  target_temp_high: 22
  target_temp_low: 16
  hvac_mode: heat
target:
  area_id: rez_de_chaussee
  device_id: 21997295cec9b621e85f1e9276c8ad88
  entity_id: climate.rez_de_chaussee

Comment je peux l’insérer dans l’action à faire dans le code du dessus ?
Je suppose que je dois le sauvegarder dans un fichier yaml spécifique

Si t’en a marre, n’hésites pas à me renvoyer un RTFM :smiley:

=> EDIT: trouvé. Suffit de le mettre dans la partie action !

Maintenant, me reste à vérifier l’automatisation quotidienne , mais ça, c’est une autre histoire !

1 « J'aime »

Tu peux faire plus simple

service: climate.set_temperature
data:
  temperature: 20
  hvac_mode: heat
target:
  entity_id: climate.rez_de_chaussee

Les valeurs min/max sont à définir une fois pour toutes (customize.yaml cf la doc)
A partir du moment où tu donnes l’entité, pas besoin de préciser son ID (qui est nettement moins facile à retenir)
Quant à la pièce (area), attention marcherai mais pour toutes entités climate qui s’y trouveraient… Dans ton cas, c’est pas forcément gênant 1 radiateur par pièce mais autant le savoir

Il semble que les conditions que j’ai mises ne fonctionnent pas. L’action se fait à chaque fois que je lance le test.
J’ai combiné trois conditions:

  1. avoir « travail » dans le google calendar
  2. être entre 5h et 8h
  3. être à la bonne heure pour lancer l’action
    Si je teste les conditions , la 1ère et la 3ème me renvoient une erreur « trigger is undefined » , ce qui m’empêche d’avancer (notamment pour gérer la 3ème qui est surement mal foutue !)
alias: Chauffage si travail
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "-0:30:0"
    entity_id: calendar.xxxxxxxxxxxx_gmail_com
condition:
  - condition: and
    conditions:
      - condition: template
        value_template: "{{ 'Travail' in trigger.calendar_event.summary }}"
      - condition: time
        after: "05:30:00"
        before: "08:00:00"
      - condition: template
        value_template: >-
          {{ states(trigger.calendar_event.start) | timestamp_custom('%A %B %-d,
          %I:%M %p') == as_timestamp(states('sensor.date_time_iso')) |
          timestamp_custom('%A %B %-d, %I:%M %p')  }}
action:
  - service: climate.set_temperature
    data:
      temperature: 20
    target:
      area_id: rez_de_chaussee
      device_id: 21997295cec9b621e85f1e9276c8ad88
      entity_id: climate.rez_de_chaussee
mode: queued
max: 10

Est-le meilleur moyen de faire fonctionner un calendrier ? Notamment le fait de vérifier l’heure ?

J’entends pas là que quand une tache est planifiée, elle commence un jour/heure que HA sait déterminer (y compris avec un offset)… Du coup, au démarrage de la tache (-30 min), c’est le moment de faire les actions. Démarrage de la tache sera le trigger

platform: calendar
event: start
offset: "-0:30:0"
entity_id: calendar.teletravail

Le prochain déclenchement sera au prochain démarrage de la tache
Dans ton cas, la seule condition c’est que la tache est bien celle de « télétravail » (ce que j’ai fais en filtrant les calendriers, cf message d’hier)

Quand tu déclenches à la main trigger n’est pas le calendrier, donc trigger.calendar_event.start n’existe pas

J’ai besoin de vérifier l’heure (peut être pas celle de la 2ème condition, je suis d’accord) , mais le travail commence, soit à 7h, soit à 8h et je veux déclencher le chauffage 1h30 avant (je m’aperçois qu’il va falloir que je modifie l’offset)
J’ai pas tout compris sur ton filtre, je vais m’y pencher:
La vue, tu la mets où (cad dans quel fichier yaml)

Et ta tache dans le calendrier commencer à 7 ou à 8 …
Donc 1h30 avant le début, quelqu’il soit, c’est suffisant

Dans google_calendars.yaml

le fichier google_calendars.yaml doit-il être déjà présent ? Si oui, je ne l’ai pas, j’ai don cun bug, sinon, je vais le créer avec une vue

Encore merci pour ton temps et ton aide !

il se crée automatiquement quand google calendar est bien configuré je crois

Je ne l’ai pas. Je vois bien le calendrier via chrome sur le PC.
Par contre, il fait planter la page sur le le chrome android !
Je pense que je vais devoir le supprimer et le recharger

EDIT: supprimé, rechargé, même état. Pas de fichier yaml.
Je vais investiguer, mais on a pas beaucoup de trace dispo

EDIT2: En le créant à vide , il a été mis à jour , donc reconnu :slight_smile:
Mais il a disparu du côté gauche de l’aperçu :slight_smile:
Ma foi … on verra ça demain !

J’ai réinstallé HA sur un DD en btrfs sur virtual machine manager et j’ai pu activer le superviseur (et surtout file editor)
Le google agenda est revenue et j’ai fini par me plonger dans la syntaxe yaml (enfin, va falloir approfondir !)
Bref, j’ai fini par faire ma première automatisation fonctionnelle .
Reste à identifier le bon mode pour qu’elle se lance se relance tous les jours : Parallel , Restart ou Queue !

alias: Chauffage_si_Travail_clinique
description: Chauffage si Travail clinique
trigger:
  - platform: calendar
    event: start
    offset: "-1:30:0"
    entity_id: calendar.xxxxxxxxxx_gmail_com
condition:
  - condition: state
    entity_id: calendar.xxxxxxxxxx_gmail_com
    attribute: message
    state: Travail clinique
  - condition: or
    conditions:
      - condition: state
        entity_id: calendar.xxxxxxxxxx_gmail_com
        attribute: message
        state: Travail Clinique
action:
  - service: climate.set_temperature
    data:
      temperature: 20
    target:
      area_id: rez_de_chaussee
      device_id: xxxxxxxxxxxxxxxxxxx
      entity_id: climate.rez_de_chaussee
mode: parallel
max: 10

Deux remarques :

  • A mon avis tu n’as besoin que d’une seule exécution à la fois. Sauf à avoir un calendrier bizarre avec des événements qui se superposent, tu as 1 action par jour. Je crois que single est une option disponible
  • Je ne vois pas bien l’intérêt de la condition double avec le OR… On dirait 2 fois la même chose

OK. Donc single, permet de le lancer tous les jours :slight_smile: .
Pour le OR, c’est pour le tester en prendre en compte la rédaction « Clinique ou clinique »
Question: A quoi sert le max ?

C’est à confirmer mais je pense que c’est pas sensible à la casse…

Quand plusieurs actions, en parallèle notamment on limite à 10

Merci pour les réponses.
J’en ai profité pour faire une deuxième automatisation: le réveil en radio !

alias: Radio_si_Travail
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "-1:15:0"
    entity_id: calendar.xxxxxxxxxxx_gmail_com
condition:
  - condition: state
    entity_id: calendar.xxxxxxxxxxxxx_gmail_com
    attribute: message
    state: Travail clinique
action:
  - service: media_player.play_media
    target:
      entity_id: media_player.chambre_principale
    data:
      media_content_id: media-source://radio_browser/003baf55-9ac9-4352-bceb-375ee4203133
      media_content_type: audio/aac
    metadata:
      title: France Info
      thumbnail: >-
        https://www.francetvinfo.fr/assets/common/images/pwa/launcher-120x120-2e45ada1.png
      media_class: music
      children_media_class: null
      navigateIds:
        - {}
        - media_content_type: app
          media_content_id: media-source://radio_browser
        - media_content_type: music
          media_content_id: media-source://radio_browser/country/FR
mode: single