Home Assistant, création d’un Blueprint

Dans un de mes premier article sur Home Assistant, j’avais vu comment créer une automatisation en utilisant un blueprint, ensuite, j’ai montré, en utilisant en exemple l’allumage d’une lampe, comment créer une automatisation manuellement. Il est temps de montrer comment créer son propre blueprint. Le blueprint, via une interface graphique, va te permettre de sélectionner tes différents éléments pour la mise en place de l’automatisation sans avoir à aller coder dans les fichiers YAML.

La première question à laquelle je vais répondre est : « Pourquoi créer son Blueprint ? »

La réponse est des plus simple, j’ai fait un exemple pour allumer une lampe après la détection d’un mouvement entre deux heures, j’imagine qu’il n’y a pas qu’une lampe chez toi, le blueprint va te permettre de mettre tes automatisation en place plus rapidement, que ce soit pour des lampes, des capteurs, des interrupteurs …

Pour cet article, je vais reprendre l’exemple de l’automatisation créée précédemment :

- id: Light-with-mvt 
  alias: Lumière avec mouvement 
  trigger:
  - platform: state
    entity_id: binary_sensor.lumi_lumi_sensor_motion_81807f04_ias_zone
    from: 'off'
    to: 'on'
  condition:
  - condition: time
    after: "19:00:00"
    before: "07:00:00"
  action:
  - service: light.turn_on
    target:
      entity_id: light.lumi_lumi_light_aqcn02_c4865d04_level_light_color_on_off
    data:
      color_temp: 200
      brightness_pct: 25
  - wait_for_trigger:
      platform: state
      entity_id: binary_sensor.lumi_lumi_sensor_motion_81807f04_ias_zone
      from: "on"
      to: "off"
  - delay:
      seconds: 60
  - service: light.turn_off
    target:
      entity_id: light.lumi_lumi_light_aqcn02_c4865d04_level_light_color_on_off
  mode: restart
  max_exceeded: silent

Je ne vais pas revenir dessus, tu peux retrouver les informations sur cette page. D’ailleurs, je te conseille d’aller jeter un petit coup d’oeil, je me concentrerai seulement sur la partie de blueprint.

Explication

Je commence par fournir le blueprint, que je viendrai expliquer :

blueprint:
  name: Lumière activée par le mouvement entre 2 heures
  description: Allume la lumière quand un mouvement est détecté entre deux heures.
  domain: automation
  input:
    motion_entity:
      name: Capteur de mouvement
      selector:
        entity:
          domain: binary_sensor
          device_class: motion
    light_target:
      name: Light
      selector:
        target:
          entity:
            domain: light
    no_motion_wait:
      name: "Temps d'attente"
      description: Temps après le dernier mouvement pour éteindre la lumière.
      default: 120
      selector:
        number:
          min: 0
          max: 3600
          unit_of_measurement: seconds
	time_after:
	  name: "Heure du début"
	  description: "Heure à laquelle commence l'allumage de la lumière"
	  selector:
	    time:
	time_before:
	  name: "Heure de fin"
	  description: "Heure à laquelle se termine le déclenchement l'allumage de la lumière"
	  selector:
	    time:

mode: restart
max_exceeded: silent

trigger:
  platform: state
  entity_id: !input motion_entity
  from: "off"
  to: "on"

condition:
  - condition: time
  after: !input time_after
  before: !input time_before

action:
  - service: light.turn_on
    target: !input light_target
  - wait_for_trigger:
      platform: state
      entity_id: !input motion_entity
      from: "on"
      to: "off"
  - delay: !input no_motion_wait
  - service: light.turn_off
    target: !input light_target

Le fichier doit commencer par blueprint, afin de clairement faire comprendre à Home Assistant ce qu’il est. Ensuite, on lui donne un nom (name), une description (description) et un domaine (domain) :

blueprint:
  name: Lumière activée par le mouvement entre 2 heures
  description: Allume la lumière quand un mouvement est détecté entre deux heures.
  domain: automation

Dans la seconde partie, tu devras indiquer les entrées. Les entrées sont ce que tu devras saisir pour la mise en place de ton automatisation (capteur, zone, équipement, heure…). Pour chaque entrée, il faudra lui donner un nom (qui sera utilisé pour récupérer l’entrée), un sélecteur (selector) qui permet de définir ce qui sera affiché sur la création de l’automatisation pour cette entrée et les options de ce selector. Dans cette partie, nous ne renseignons pas les entités ou groupes :

input:
    motion_entity:
      name: Capteur de mouvement
      selector:
        entity:
          domain: binary_sensor
          device_class: motion
    light_target:
      name: Light
      selector:
        target:
          entity:
            domain: light
    no_motion_wait:
      name: "Temps d'attente"
      description: Temps après le dernier mouvement pour éteindre la lumière.
      default: 120
      selector:
        number:
          min: 0
          max: 3600
          unit_of_measurement: seconds
	time_after:
	  name: "Heure du début"
	  description: "Heure à laquelle commence l'allumage de la lumière"
	  selector:
	    time:

Dans la seconde partie du code, nous retrouvons nos déclencheurs, nos actions et nos conditions, les informations qui sont habituellement saisie sont remplacées par une phrase de ce type : !input no_wait_motion. Cela permet de signifier que cette entité sera l’entrée avec se nom (dans notre cas no_wait_motion).

Conclusion

La création d’un blueprint n’est pas plus compliqué que la création d’une automatisation, elle est à privilégier surtout si l’on sait que plusieurs automatisations y feront référence.

2 commentaires :

  1. Bonjour
    Et maintenant qu’on la crée, on le met ou ce bluePrint?

    • Si tu es passé par la méthode graphique, il est automatiquement mis dans blueprint/automation.
      Si tu es passé par file editor, tu dois l’enregistrer dans blueprint/automation, le dossier est déjà créé.
      Après, si il est bien créé, en rechargeant les blueprint (dans configuration), il devrait apparaître dans ta liste, en général, je redémarre mon ha (radical).
      Si il est pas vu, c’est qu’il doit y avoir une erreur.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.