Integrare un UPS a Home Assistant tramite “Network UPS Tools”

6 minuti di lettura
Scopi della guida:
  • Integrare le letture di uno o più gruppi di continuità (UPS) alla domotica Home Assistant (al fine di intercettare eventuali cadute di tensione e altro) 
  • Livello di difficoltà: bassa
  • Categoria d’integrazione: Local Push
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
  • Home Assistant configurato e funzionante
  • Network UPS Tools installati e funzionati (spiegato meglio in guida)
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.0

NUT + Home Assistant

Abstract

La possibilità di integrare sulla domotica gestita tramite il noto HUB personale Home Assistant le letture istantanee di un gruppo di continuità (UPS) è tra le cose più utili – e forse primarie – che si possano attuare.

Un gruppo di continuità è, in pratica, un pacco batterie che consente a determinati elettrodomestici (solitamente a basso consumo) di non subire uno spegnimento repentino in caso di black-out. Nulla come la domotica merita questo tipo di salvaguardia, e non per vezzo: per utilità. Si pensi banalmente al tema dei furti in appartamento trattato sulla scheda in cui spieghiamo come scegliere un UPS domestico.

Integrare un UPS al proprio HUB significa conoscerne istantaneamente lo stato di carica delle batterie e molti indicatori, tra i quali, primariamente, il fatto che ci si trovi sotto alimentazione di rete o, in caso di black-out, sotto batterie. Questo è utile perché offre la possibilità all’utente di definire delle automazioni che, in assenza di corrente (qualsiasi sia il motivo di questo outage) venga allertato tramite notifiche, inneschi degli allarmi e tanto altro ancora.

A tale scopo, Home Assistant dispone, tra le decine di componenti di integrazione, di uno specifico chiamato “Network UPS Tools (NUT)” il quale consente di integrare qualsiasi UPS collegato a un server NUT. Va da sé che, prima di utilizzare questo componente, ci si debba dotare di tale server.

Ma vediamo una cosa alla volta.

Si parte

Cos’è NUT

NUT, acronimo di Network UPT Tools, è un insieme di strumenti software che consente a un generico computer (Raspberry? Mac? Intel NUC? qualsiasi, in pratica) di interfacciarsi a uno o più gruppi di continuità UPS dotati di una interfaccia a scelta tra USB, seriale oppure una qualche connessione di rete (che sfrutti SNMP, Eaton, MGE XML/HTTP via TCP/IP).

Va da sé che per integrare a Home Assistant un UPS tramite NUT sia necessario installarne e configurarne la parte server, prima di attuare la presente guida.

Qualche guida a tal proposito:

  • in caso si disponga un Raspberry Pi con sistema operativo Raspbian (oppure comunque un computer con sistema operativo Linux), la guida è questa;
  • in caso si disponga di Home Assistant installato in modalità HASSIO, la guida è questa.

Solo e unicamente dopo aver installato e configurato con successo il proprio server NUT sarà possibile effettuare l’integrazione come descritto nella presente guida.

N.b. Network UPS Tools non è l’unico componente di integrazione disponibile su Home Assistant per integrare UPS: ne esistono svariati (eg. apcupsd per gli UPS a marca APC). Semplicemente, NUT è uno “strato di standardizzazione” tra i più comunemente utilizzati (e coi quali gli UPS sono più compatibili), ragion per cui abbiamo realizzato questa guida.

Integrazione Home Assistant

Ora che abbiamo dato per assodata la presenza sulla nostra rete LAN di un proprio server NUT che dialoga correttamente col nostro/i UPS, siamo pronti ad attuare l’integrazione presso il nostro HUB. Solitamente il server NUT e Home Assistant sono in esecuzione sullo stesso computer (questo è sicuramente vero nel caso di HASSIO); ciononostante, tale server potrebbe anche essere in esecuzione su un computer diverso. Non è un problema.

Detto ciò, presso l’interfaccia web Lovelace UI di Home Assistant clicchiamo su “Impostazioni” > “Integrazioni” e poi su “+“. Nell’elenco, cerchiamo NUT:

Home Assistant - Network UPS Tools - Integrazione - 1

 

Trovata l’integrazione, cliccarci sopra. Si aprirà una finestra di dialogo come segue:

Home Assistant - Network UPS Tools - Integrazione - 2

Nei vari campi indicheremo:

Host l’indirizzo IP del server NUT (localhost, se è in esecuzione sullo stesso computer di Home Assistant)
Porta La porta del server, solitamente 3493
Nome utente Il nome utente definito in fase di configurazione del NUT
Password La password relativa all’utente definito in fase di configurazione del NUT

Completati i campi, cliccare su “INVIA“.

Se tutto andrà come deve, Home Assistant riporterà un successo, indicando quale UPS è stato riconosciuto in base alla connessione con il server NUT (in questo caso un Tecnoware Era Plus 1100, come quello portato a mo’ d’esempio nelle guide di installazione del NUT).

Home Assistant - Network UPS Tools - Integrazione - 4

Cliccando su “FINITO“, l’integrazione elencherà i possibili sensori (in base al modello di UPS) includibili a Home Assistant:

Home Assistant - Network UPS Tools - Integrazione - 3

Selezionare dunque quelli di proprio interesse (suggeriamo di includerli tutti).
Terminata questa operazione, presso il menu “Integrazioni” di Home Assistant sarà apparsa una nuova voce:

Home Assistant - Network UPS Tools - Integrazione - 5

Tanti saranno i dispositivi quanti gli UPS “conosciuti” dal server NUT; il numero di entità varierà invece in base al modello/i di UPS (e alle selezioni effettuate nel passo precedente).

A scopo esemplificativo, mostriamo l’elenco delle entità relative al Tecnoware Era Plus 1100 usato com esempio nelle altre guide:

Home Assistant - Tecnoware Eria Plus 1100

Automazione

Arrivati a questo punto ci saremo dotati di diverse entità (principalmente di tipo “Sensor“) che potremo utilizzare sia per la consultazione sia per l’automazione legata allo stato dell’USP (o degli UPS).

Le tre entità che riteniamo più importanti sono essenzialmente:

  • sensor.NOME_UPS_status_data
  • sensor.NOME_UPS_battery_charge
  • sensor.NOME_UPS_load

Le quali ci danno la misura di cosa sia succedendo sul piano elettrico.

Lo stato della prima entità sostanzialmente prevede tre possibili valori:

  • OL (on-line, cioè alimentato a rete)
  • OB (on-battery, ovvero erogazione tramite batteria in corso per assenza di alimentazione di rete)
  • Unknow (quando ci sono problemi di comunicazione verso NUT).

Va da sé che quando si passa da OL a OB significa che è “saltata la corrente”, viceversa quando ritorna.

La seconda entità riporta quanta carica di batteria rimane: arrivati a 0%, l’UPS si spegne. Infine, la terza ci dice quale % di carico l’UPS stia supportato, in caso di erogazione a batterie.

NOTIFICA BLACK-OUT (e ritorno)

Definire un’automazione che per esempio invii una notifica all’app Home Assistant Companion degli inquilini a fronte di un black-out (o del ritorno alla normalità) è quanto di più elementare:

automation:
  - alias: "Notifica power outage"
    trigger:
      platform: state
      entity_id: sensor.NOME_UPS_status_data
    condition: []
    action:
      service: notify.mobile_app_NOME_SMARTPHONE-TABLET
      data_template:
        data:
          push:
            badge: 1
        title: Domotica
        message: >
          {% if trigger.to_state.state == 'OB' %}
          ATTENZIONE: Assenza di tensione elettrica in casa!
          {% elif trigger.to_state.state == 'OL' %}
          Fornitura elettrica domestica ristabilita.
          {% else %}
          UPS fuori linea.
          {% endif %}

Ovviamente nei blocchi condition e action si potrà impostare quello che meglio si crede, come l’attivazione di un allarme o molto altro.

NOTIFICA BATTERIA BASSA UPS

E se volessimo esser notificati, mentre siamo in blackout, dell’abbassarsi – criticamente – della batteria?

automation:
  - alias: "Notifica batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 15
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Attenzione, capacità residua dell'UPS inferiore al 15%."
SPEGNIMENTO CONTROLLATO RASPBERRY PI

Ipotizziamo che, come capita sovente, il nostro Home Assistant sia in esecuzione su Raspberry Pi e che esso sia alimentato dall’UPS in questione. In caso ci si avvicini allo 0% di batteria residua, vorremo che esso venga spento in modo controllato per evitare danni e corruzione dei dati.

Su HASSIO, definiremmo un’automazione di questo tipo:

automation:
  - alias: "Shutdown per batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 5
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Raspberry Pi in spegnimento controllato per batteria UPS insufficiente."
      - service: hassio.host_shutdown

mentre su Home Assistant Core installato su sistema operativo Raspbian, definiremmo un’automazione accompagnata da uno “Shell Command“.

automation:
  - alias: "Shutdown per batteria UPS bassa"
    trigger:
      platform: numeric_state
      entity_id: sensor.NOME_UPS_battery_charge
      below: 5
    condition: []
    action:
      - service: notify.mobile_app_NOME_SMARTPHONE-TABLET
        data:
          data:
            push:
              badge: 1
          title: Domotica
          message: "Raspberry Pi in spegnimento controllato per batteria UPS insufficiente."
      - service: shell_command.shutdown_pi_cmd

shell_command:
  shutdown_pi_cmd: '/usr/bin/sudo /sbin/shutdown now'

Inoltre è necessario eseguire da terminale il seguente comando:

sudo nano /etc/sudoers 

e appurare che esista la seguente riga (altrimenti, aggiungerla) nel file che apparirà:

homeassistant ALL=(ALL) NOPASSWD:ALL

Dopodiché salvare, uscire (ctrl+x, y, invio) e riavviare.

CAMBI DI STATO

A prescindere, è possibile utilizzare un’automazione che invii notifiche (o faccia altro, chiaro) a fronte della ricezione di qualsiasi cambio di stato dell’UPS (o degli UPS) configurato/i su NUT:

automations:
  - alias: 'Cambio di stato UPS'
    trigger:
      platform: event
      event_type: nut.ups_event
    condition: []
    action:
      service: notify.mobile_app_NOME_SMARTPHONE-TABLET
      data:
        data:
          push:
            badge: 1
        title: Domotica
        message:  "{{ trigger.event.data.notify_msg }}"


Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel