Come creare una Blueprint per la ricarica dei dispositivi in Home Assistant

Come creare una Blueprint per la ricarica dei dispositivi in Home Assistant

di Antonio Mario Longo

29 Dicembre 2020

Home Assistant

Antonio Mario Longo

Le blueprint, come abbiamo visto nell'articolo precedente, sono dei progetti che potremo condividere con i vari utenti dei gruppi Telegram, Facebook o altri canali social.

Questi elementi non sono altro che dei codici yaml che seguono la scia delle automazioni.

Per rendere il tutto più semplice partiremo da un automazione che ricaricherà il nostro tablet o dispositivo android, quando la batteria scenderà sotto una determinata percentuale azionando l'interruttore smart associato al nostro caricabatterie.

Al contrario se la batteria raggiungerà il valore di carica del 100% interromperà il flusso di corrente in modo tale da evitare che il dispositivo rimanga sotto carica anche a batteria completamente carica.

Tutto ciò in Home Assistant si può tradurre nella seguente automazione:

automation:
- alias: automazione ricarica_batteria
  trigger:
    platform: numeric_state
    entity_id: sensor.batteria
    above: 1
  action:
   - choose:
     - conditions:
         - condition: numeric_state
           entity_id: sensor.batteria
           above: 99
       sequence:
         - service: switch.turn_off
           data:
             entity_id: switch.presa_carica_batteria
     - conditions:
         - condition: numeric_state
           entity_id: sensor.batteria
           below: 20
       sequence:
         - service: switch.turn_on
           data:
             entity_id: switch.presa_carica_batteria

Ma se vogliamo renderla ancora più utile condividendola con altri utenti possiamo iniziare a pensare a realizzare una blueprint.

Tutte le entità in blueprint sono denominate inputs che l'utente finale potrà scegliere tra quelli disponibili nel proprio sistema di domotica. Procedete creando un file yaml con un nome di vostro gradimento, ex: Ricarica_dispositivi_Android.yaml

Premessa:

Di seguito verrà proposta una blueprint che necessita dell'integrazione Mobile App opportunamente impostata o un sensore di percentuale di carica dello smartphone impostato con qualsiasi altra integrazione a vostro piacere. 

Suddivideremo la creazione della blueprint in 4 fasi:

  1. Nome e Descrizione
  2. Inputs
  3. Trigger
  4. Action

NOME E DESCRIZIONE

Ogni bluprint che si rispetti inizia solitamente con queste righe:

blueprint:
  name: Gestione Batteria Android
  description: 'Controlla La ricarica dei dispositivi Android Collegati a una presa smart'

Analizziamo il contenuto:

  • La prima riga indica cosa implementerete in Home Assistant, quindi indica la creazione della bluprint.
  • Con il tag name presente nella seconda riga, invece darete il nome al progetto che comparirà in Home Assistant.
  • Con la terza riga invece potrete inserire una descrizione della blueprint, in modo tale che qualsiasi utente possa avere un' idea più chiara di ciò che effettivamente la blueprint svolge.

INPUTS 

La seconda  fase, prevede degli inputs ovvero delle variabili da adoperare per poter svolgere l'automazione una volta creata.

  domain: automation
  input:
    batteria:
      name: Batteria
      description: Inserire il sensore della Batteria del telefono che si vuol gestire in maniera  automatica
      selector:
        entity:
          domain: sensor
          device_class: battery
    carica_percentuale_max:
      name: Percentuale di Carica Massima
      description: 'Spostare il cursore per indicare la percentuale massima da raggiungere per spegnere la presa smart collegata al carica batteria. (default: 100%)'
      selector:
        number:
          min: 20
          max: 99
          unit_of_measurement: '%'
          mode: slider
          step: 1
      default: 99
    carica_percentuale_min:
      name: Percentuale Carica Minima

Ovviamente il dominio della blueprint sarà quello delle automazioni e successivamente specificheremo il nome da dare agli inputs creando delle vere e proprie entità come nell'esempio del codice sovrascritto 

  • batteria: indicherà la carica della batteria rimanente
  • percentuale_minima_batteria che denoterà la soglia minima di batteria sotto la quale l'automazione creata dovrà azionare il carica batterie
  • percentuale_massima_batteria: al contrario spegnerà il carica batterie una volta che la batteria raggiungerà la percentuale di carica desiderata
  • carica_batteria: corrisponderà al nostro interruttore smart che accende e spegne il carica batterie.

Per ognuno di questi input è opportuno dare una descrizione con il tag description in modo tale da rendere il codice più comprensibile all'utente finale o per chi un domani vorrà modificare la blueprint. Inoltre tutti gli input sono seguiti dal tag selector, ovvero il tasto dal quale visivamente potrete scegliere l'entità per l'utilizzo nell'automazione.

Il selettore può, nel nostro caso, contenere un entità oppure un numero.

Nel caso di un'entità potrete essere molto specifici indicando il gruppo di appartenenza, utilizzando il tag domain (sensor, light, switch, media_player...) inoltre, potrete anche specificare la device_class nel caso di sensori (per il sensore batteria, infatti nella blueprint dell'esempio è stata scelta  la device class battery).

Le entità possono esser date anche attraverso dei numeri, i quali nella blueprint in esame, indicano la percentuale della batteria. Una novità introdotta nelle blueprints è lo slider, ovvero un selettore che va da un punto minimo a un punto massimo espresso con i tag min e max, calcolando i vari spostamenti con un unità di misura denominata step, che indicherà di quante posizioni si muoverà lo slider ogni volta che verrà spostato.  Nell'esempio della blueprint sopra indicata abbiamo un minimo punto di carica massima che va da 20 a un massimo di 99, ed uno step pari a 1, mentre per il punto di carica minima avremo uno slider che andrà da 1 a 30 sempre con uno step pari a 1.

Inoltre lo slider permette di impostare dei valori di default che ovviamente possono essere cambiati a nostro piacimento. Il valore di default interviene qualora gli slider non vengano variati dalla posizione iniziale.

TRIGGER

Allo stesso e identico modo delle automazioni i trigger scatenano l'evento, infatti le piattaforme utilizzate per i trigger delle blueprint sono le stesse. 

trigger:
  - platform: homeassistant
    event: start
  - platform: event
    event_type: automation_reloaded
  - platform: numeric_state
    entity_id: !input batteria
    above: !input carica_percentuale_max
  - platform: numeric_state
    entity_id: !input batteria
    below: !input carica_percentuale_min

Analizzando la parte dei trigger nel codice, noteremo che l'automazione creata dalla blueprint si scatenerà all'avvio di Home Assistant e ogni qual volta l'automazione creata verrà ricaricata dal sistema. Inoltre i fattori scatenanti, saranno anche i valori dati dall'entità numerica carica_percentuale_max e carica_percentuale_min, ovvero quando sono sopra o sotto una soglia richiamata con i tag above e below.

ACTION

Anche le azioni riprendono i servizi delle automazioni, richiamando le entità precedentemente scelte nella sezione input.

action:
  - choose:
    - conditions:
        - condition: numeric_state
          entity_id: !input batteria
          above: !input carica_percentuale_max
      sequence:
        - service: switch.turn_off
          data:
            entity_id: !input carica_batteria
    - conditions:
        - condition: numeric_state
          entity_id: !input batteria
          below: !input carica_percentuale_min
      sequence:
        - service: switch.turn_on
          data:
            entity_id: !input carica_batteria

Nel caso dell'automazione soprastante la blueprint fa eseguire all'automazione due scelte dettate dalle condizioni di carica della batteria. Le scelte sono indicate dal comando choose. Le due condizioni si basano sul valore letto dal sensore batteria. Infatti se la percentuale di carica della batteria, che lo smartphone trasmette a Home Assistant, è superiore al valore che abbiamo scelto e impostato tramite lo slider di carica_percentuale_max, il nostro sistema spegnerà l'interruttore smart collegato al carica batteria dello smartphone. Al contrario quando il sistema leggerà che la batteria è al di sotto della soglia della percentuale minima impostata con carica_percentuale_min azionerà l'interruttore in modo tale da ricaricare lo smartphone.

Conclusioni e Note

Terminata la fase di creazione della nostra blueprint, non dovrete far altro che copiare il file che potrete semplicemente scaricare da questo link , nel percorso config/blueprints/automation/Ricarica dispositivi

Un'ultima nota. Affinché l'automazione venga eseguita nel modo corretto è quella di non impostare mai il valore di carica_percentuale_max uguale a 100 poichè l'automazione non leggerà mai dallo smartphone un valore superiore a 100, quindi consiglio sempre di dare un valore inferiore (ex:99).

Qui di seguito troverete il video dimostrativo dell'articolo spero che sia di vostro gradimento

Vi ricordo inoltre di seguirci sui nostri canali 

Telegram: https://t.me/vincenzocaputoblog

Youtube: https://www.youtube.com/c/VincenzoCaputo77

Facebook: https://www.facebook.com/caputovince/

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Antonio Mario Longo

Antonio Mario Longo

Nato a Foggia nel Settembre 1984 perito elettrotecnico di sistemi e automazione, lavoro nel settore aereonautico su macchine a controllo numerico per la produzione di particolari in fibra di carbonio, appassionato di informatica (nata dai primi 8086) e automatismi per le nuove case del futuro.

Disqus loading...