Come integrare UPS APC in Home Assistant con notifiche e automatismi
di Luigi Duchi
09 Settembre 2019
Guide
Ormai da tantissimi tempo ho un UPS della nota marca APC per proteggere gli apparati più sensibili all'interruzione di corrente elettrica da eventuali blackout.
Per chi non lo conoscesse, APC è un marchio che fa parte del gruppo Schneider Electric, marchio noto (se non il più noto) nel settore degli UPS (per gli amici "Gruppi di continuità").
SCHNEIDER propone sia soluzioni consumer che professionali per alimentare anche intere strutture in caso di interruzione di corrente elettrica.
Ma cos'è un UPS?
Fondamentalmente è un apparecchio costituito da almeno tre parti principali: un primo convertitore alternata/continua (convertitore AC) che, grazie a un raddrizzatore e a un filtro, converte la tensione alternata della rete elettrica in tensione continua; una batteria, o più batterie, in cui viene immagazzinata l'energia fornita dal primo convertitore; un secondo convertitore continua/alternata (convertitore CA o inverter) che, prelevando energia dal raddrizzatore o dalle batterie in caso di mancanza di rete elettrica, fornisce corrente al carico collegato.
ovviamente potrete trovare il modello più adatto alle proprie esigenze a seconda del carico che volete collegare.
Vi consiglio di iniziare la vostra ricerca da QUI
Personalmente possiedo il modello ES 700
... con il quale alimento telecamere, modem, switch PoE da 16 porte al quale a sua volta ho connesso anche gli Access Point alimentati (PoE) e naturalmente il Raspberry dove gira il mio Home Assistant, più altre cose di poco conto.
Per un carico totale di circa il 17%, mi garantisce circa 23 minuti di autonomia in caso di blackout.
Le batterie iniziano ad essere un pò vecchiotte probabilmente con batterie nuove potrebbe fare meglio....
L'UPS ha una potenza in uscita di 405Watts/700VA - otto uscite totali - quattro con backup di batteria e filtrate contro sovratensioni, quattro solo filtrate, protezione della linea dati (RJ45) - Include Software di Shutdown e Polizza Protezione dell'apparato.
In dotazione c'è anche il cavo che da un lato ha un plug che va ad innestarsi nella presa rj45 chiamata data port e dall'altro lato termina con un usb maschio.
Incluso nella scatola un software che permette eventualmente di far spegnere un PC o un NAS ad esso connesso (mediante la porta usb e il cavo sopracitato) in caso di mancanza di corrente.
...e qui è venuta la mia idea malsana...
Sarà possibile monitorare lo stato dell'UPS tramite Home Assistant?
La risposta è ovviamente SI (altrimenti non mi sarei messo a scrivere questa guida direte voi heheheheh.)
Vi ricordo che io utilizzo Home Assistant installato su RASPBIAN.
Credo comunque che non manchi la possibilità di fare la stessa cosa con hass.io, magari con qualche plugin.
VEDIAMO COME FARE
- per prima cosa connettete tramite usb il Raspberry all'UPS mediante il cavo trovato in confezione.
- aprite il terminale e digitate il comando:
sudo apt-get -y install apcupsd
- una volta installato il programma lanciate il comando lsusb per vedere che l'ups sia visualizzato correttamente
L'output che dovreste ricevere dovrebbe essere una cosa del genere:
Bus 001 Device 006: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
- fate un backup della configurazione con il seguente comando:
sudo cp /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf.bak
- successivamente andate a modificare la configurazione con il comando:
sudo nano /etc/apcupsd/apcupsd.conf
- levate i cancelletti alle voci indicate nelle foto qui sotto (le uniche bianche) ed eventualmente compilate nello stesso modo:
Salvate e uscite.
A questo LINK potrete trovare delucidazioni a riguardo nel caso i vostri parametri siano diversi
- Effettuare il backup di un altro file con il comando:
sudo cp /etc/default/apcupsd /etc/default/apcupsd.bak
- Successivamente modificate il seguente file con il comando:
sudo nano /etc/default/apcupsd
- Modificate il seguente valore ISCONFIGURED=no in ISCONFIGURED=yes come da foto
salvate e uscite.
- avviate il servizio con il comando:
sudo service apcupsd start
- verificate il corretto funzionamento con il comando:
sudo apcaccess
- se riceverete un errore provate a riavviare il servizio con il comando:
sudo /etc/init.d/apcupsd restart
- successivamente dopo aver atteso qualche secondo digitate nuovamente:
sudo apcaccess
se tutto è andato a buon fine dovreste vedere nel terminale tutti i dati dell'ups.
- andate in configuration.yaml e aggiungete al voce apcupsd: e successivamente salvate
- andate in sensor.yaml ed aggiungete il seguente sensore:
- platform: apcupsd
resources:
- model
- status
- loadpct
- bcharge
- timeleft
Questi sensori monitorano il modello dell'ups, lo stato, il carico connesso all'ups, la carica della batteria e il tempo di durata in caso di mancanza di corrente.
Potrete anche aggiungere altri sensori che potrete trovare QUI nella pagina ufficiale del component, ma diciamo che quelli elencati sono quelli degni di nota.
Salvate e riavviate il Raspberry con il comando sudo reboot
Adesso avrete a disposizione tutte le entità.
Come aggiungere una card a LOVELACE
- create una cartella chiamata photo nella posizione /home/homeassistant/.homeassistant
all'interno mettete una foto che volete faccia da sfondo alla vostra card.
- aggiungete la seguente stringa al file ui-lovelace.yaml
- title: UPS
Cards:
- type: picture-elements
title: UPS
image: /local/batteriacarica.jpg
elements:
- type: state-label
entity: sensor.ups_status
style:
top: 1%
right: 80%
color: rgb(255, 255, 255)
transform: translate(0%,-50%)
pointer-events: none
text-shadow: 1px 1px black
font-family: Trebuchet MS
font-size: 90%
font-weight: bold
border-right-style: solid
border-color: rgb(34, 154, 210)
background-color: rgb(54, 65, 78)
opacity: 0.8
- type: state-label
entity: sensor.ups_battery
style:
top: 85%
right: 80%
color: rgb(255, 255, 255)
transform: translate(0%,-50%)
pointer-events: none
text-shadow: 1px 1px black
font-family: Trebuchet MS
font-size: 90%
font-weight: bold
border-right-style: solid
border-color: rgb(34, 154, 210)
background-color: rgb(54, 65, 78)
opacity: 0.8
- type: state-label
entity: sensor.ups_load
style:
top: 85%
right: 60%
color: rgb(255, 255, 255)
transform: translate(0%,-50%)
pointer-events: none
text-shadow: 1px 1px black
font-family: Trebuchet MS
font-size: 90%
font-weight: bold
border-right-style: solid
border-color: rgb(34, 154, 210)
background-color: rgb(54, 65, 78)
opacity: 0.8
- type: state-label
entity: sensor.ups_time_left
style:
top: 85%
right: 30%
color: rgb(255, 255, 255)
transform: translate(0%,-50%)
pointer-events: none
text-shadow: 1px 1px black
font-family: Trebuchet MS
font-size: 90%
font-weight: bold
border-right-style: solid
border-color: rgb(34, 154, 210)
background-color: rgb(54, 65, 78)
opacity: 0.8
- type: state-label
entity: sensor.ups_model
style:
top: 1%
right: 10%
color: rgb(255, 255, 255)
transform: translate(0%,-50%)
pointer-events: none
text-shadow: 1px 1px black
font-family: Trebuchet MS
font-size: 90%
font-weight: bold
border-right-style: solid
border-color: rgb(34, 154, 210)
background-color: rgb(54, 65, 78)
opacity: 0.8
- il risultato sarà una cosa del genere:
Ovviamente l'immagine cambierà in funzione di quella che avete inserito nella vostra cartella photo.
Possiamo anche farci mandare una notifica telegram in caso di mancanza di corrente oppure quando la corrente ritorna (ovviamente dovrete avere tutti gli apparati di rete alimentati dall'UPS nel caso vada via la corrente)
- Per fare questo innanzitutto dovete aver configurato le notifiche telegram vi rimando a questa guida per farlo.
- inserite due foto nella cartella creata prima chiamata photo.
una per la mancanza di corrente l'altra per quando la corrente ritorna.
- andate a creare queste 2 automazioni:
- alias: Notifica quando va via la corrente
initial_state: true
hide_entity: True
trigger:
platform: state
entity_id: sensor.ups_status
to: 'ONBATT'
action:
service: notify.telegram
data:
questa per quanto riguarda la mancanza di corrente
- alias: Notifica quando torna la corrente
initial_state: true
hide_entity: True
trigger:
platform: state
entity_id: sensor.ups_status
to: 'ONLINE'
action:
service: notify.telegram
data:
message: "corrente elettrica ripristinata"
data:
photo:
- file: /home/homeassistant/.homeassistant/photo/ritornocorrente.jpg
caption: "corrente elettrica ripristinata"
questa per quando la corrente torna.
Il risultato sarà una cosa del genere:
Anche per questa guida è tutto, vi lascio al solito video di fine articolo. Buona visione!
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.