Come creare una Blueprint per la ricarica dei dispositivi in Home Assistant
di Antonio Mario Longo
29 Dicembre 2020
Home Assistant
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:
- Nome e Descrizione
- Inputs
- Trigger
- 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.