Configurazione Raspberry Pi2 per gestire e monitorare un UPS APC tramite collegamento USB (APCUPSD)

da | Set 9, 2016

Questa guida vi mostrerà come collegare un UPS APC ad un Raspberry con Raspbian e consentire al gruppo di continuità di fare le seguenti cose:
– inviare email quando l’alimentazione di rete manca
– inviare email quando l’alimentazione di rete è stata ripristinata
– Monitorare lo stato dell’UPS tramite Web Server

NOTA BENE: Io davanti a tutti i comandi inserisco il “sudo” perchè utilizzo un utente che non ha i diritti di root. Se all’interno della raspberry siete loggati come root potete anche omettere il “sudo”.

PRE-REQUISITI

– Hardware: Raspberry Pi2
– Sistema operativo : Raspbian GNU/Linux 8.0 (jessie)
– UPS: L’UPS deve essere un APC. Io in questa guida sto usando un APC Smart-UPS C 1000 con il cavo USB in dotazione.
– Server di posta del provider di servizi Internet o il proprio server di posta locale.

CONFIGURAZIONE DEMONE APCUPSD

1) Assicurarsi che il cavo USB dell’UPS APC sia colegato alla Raspberry.

2) Accedere al Raspberry in SSH con Putty

3) Per verificare che il Raspberry veda l’UPS sulla porta usb lanciare il seguente comando

apcraspberry-01
Se è tutto corretto dovremmo vedere un immagine come quella sovrastante.

4) Il repository di Debian contiene già il demone apcupsd per gestire gli UPS APC. Quindi per installarlo lanciare il seguente comando:

5) Una volta installato, è necessario configurare il demone in base alle proprie esigenze. Apriamo il file di configurazione digitando:

6) Nell’editor, scorrere verso il basso fino al tag UPSNAME e inserire il nome dell’UPS, ad esempio:

7) Scorrere il file di configurazione verso il basso fino al tag UPSCABLE e modificare il parametro del tipo di cavo utilizzato per la connessione al gruppo di continuità.
Nel mio caso, usando un cavo USB fornito con il gruppo di continuità, ho modificato la linea in questo modo:

8) La successiva linea di modificare è la linea UPSTYPE. Anche in questo caso, se si utilizza un cavo USB specificare come di seguito:

9) Se all’interno del file troviamo dopo la riga UPSTYPE la riga DEVICE /dev/ttyS0, commentare con l’aggiunta del cancelletto all’inizio della riga in questo modo:

10) Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

11) Ora abbiamo bisogno di dire al sistema che il demone dell’UPS è stato messa a punto ed è sostanzialmente pronto ad andare. Digitare quindi:

12) Nel file individuare la riga con ISCONFIGURED e inserire YES come mostrato di seguito:

13) Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

14) Per applicare le modifiche riavviamo il demone dell’UPS con il seguente comando:

oppure se volete riavviate anche la Raspberry

15) Per controllare che la Raspberry comunichi correttamente con l’UPS lanciamo il seguente comando dalla console SSH:

apcraspberry-02
Come potete notare dalla figura sovrastante questo comando ci fornirà tutte le informazioni relative all’UPS e quindi darà la certezza del corretto funzionamento del demone apcupsd

Di seguito le info fornite dal comando apcaccess

CONFIGURAZIONE WEB SERVER PER MONITORARE

Oltre all’utilizzo del comando apcacces status è possibile monitorare le condizioni dell’UPS utilizzando una pagina web.
Di seguito illustrerò gli step da seguire per la configurazione.

1) Per prima cosa dobbiamo installare (se non presente) il web server Apache con il seguente comando dalla console SSH:

apcraspberry-02a
Per verificare che sia tutto ok richiamare da un browser http:\\IP_RASPBERRY dovremmo visualizzare una pagina web come quella mostrata nell’immagine sovrastante.

NOTA BENE: al momento della stesura di questa guida ho installato un Apache/2.4.10 (Raspbian)

2) Installiamo anche il PHP con il seguente comando:

3) Installiamo il modulo apcupsd-cgi con il seguente comando:

4) Apriamo il file di configurazione di apache:

5) Scorriamo il file fino alla seguente descrizione

apcraspberry-03

6) Al fondo del paragrafo inserire queste righe di codice

apcraspberry-04

NOTA BENE: questa configurazione è stata fatta con Apache/2.4.10 (Raspbian) quindi per versioni successive bisogna verificare i comandi per attivare le opzioni dello ScriptAlias.

7) Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

8) Riavviamo Apache con il comando:

9) A questo punto per attivare il modulo CGI in Apache lanciare il seguente comando:

10) Riavviamo Apache con il comando:

11) Se abbiamo fatto tutto correttamante richiamando il seguente link dovremmo vedere lo stato dell’UPS

http://IP_DEL_RASPBERRY/cgi-bin/apcupsd/multimon.cgi

apcraspberry-05
Qui possiamo vedere la situazione generale dell’UPS

apcraspberry-06
Cliccando su LocalHost accediamo al menù che ci mostra graficamante le seguenti informazioni:

Battery Capacity
Battery Voltage
Utility Voltage
Output Voltage
Run Time Remaining
UPS Load

CONFIGURAZIONE DELLE NOTIFICHE VIA EMAIL

Per impostazione predefinita, apcupsd è configurato per utilizzare sendmail per inviare e-mail, ma sendmail è abbastanza rognoso.
C’è un modo migliore per inviare le mail utilizzando un’applicazione simile chiamata SendEmail.

Perché usare SendEmail al posto di sendmail?
Ebbene, SendEmail è un client SMTP di facile utilizzo da riga di comando.
La differenza fondamentale è che SendEmail è un client e non un server.
Questo significa che per utilizzare SendEmail è necessario un server di posta di terze parti da utilizzare come relay.
Si può utilizzare un server di posta sulla rete locale come Postfix o simili oppure appoggiarsi al server SMTP del proprio ISP.

NOTA BENE: Io utilizzerò il server SMTP Exim installato sul Raspeberry.

1) Per iniziare installare SendEmail con il seguente comando:

2) Ora abbiamo bisogno di configurare il demone apcupsd. Se diamo un occhiata all’interno della directory /etc/apcupsd, noteremo diversi file importanti come elencati di seguito:
changeme – segnala quando la batteria dell’UPS deve essere sostituita.
commfailure – avvisa se il Raspberry perde la comunicazione con l’UPS.
commok – avvisa se la comunicazione tra il Raspberry e l’UPS viene ripristinata.
onbattery – avvisa se l’UPS va in modalità batteria a causa di mancanza di corrente elettrica.
offbattery – avvisa se l’UPS ritorna alla modalità di rete dopo una mancanza di corrente elettrica.

3) Modifichiamo il messaggio onbattery lanciando il seguente comando:

4) Noterete che ci sono alcune linee di questo file che definiscono alcune variabili seguiti da un messaggio e poi finalmente un comando che invia una e-mail utilizzando l’applicazione sendmail.
Dal momento che non stiamo usando sendmail, abbiamo bisogno di modificare una serie di settori. Sostituire il contenuto di tutto il file di testo con il seguente:

apcraspberry-07

All’interno di questo dovete sostituire i seguenti parametri:

Riga 7: SYSADMIN= [email protected] Inserire al posto della mail [email protected] la mail dove intendete ricevere gli allarmi. Potete inserire più destinatari separandoli con una virgola come mostrato di seguito:
[email protected],[email protected],[email protected]

Riga 9: HOSTNAME=UPS-Cantina Inserire al posto di UPS-Cantina il nome del vostro UPS
Riga 10: MSG=”UPS-Cantina Power Failure” Inserire al posto di UPS-Cantina Power Failure il soggetto che intendete dare alla mail
Riga 13 a 23: Inserire il testo del massaggio della mail
Riga 25: Al posto della mail [email protected] inserite l’indirizzo mail con il quale intendete inviare. Al posto di 192.168.100.170:25 inserite l’IP\Nome del server SMTP seguito da :porta (:25)

5) Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

6) A questo punto è possibile verificare lo script semplicemente eseguendolo. Eseguire il file con il comando:

apcraspberry-08
Se l’email è stata inviata correttamente dovremmo vedere una schermata come quella sovrastante con le seguenti righe:

7) A questo punto controlliamo la mail e verifichiamo che sia stata recapitata. Dovrebbe avere le seguenti caratterstiche:

Soggetto Email: Mancanza di Corrente su UPS-Cantina

Contenuto Email:

=============================
POWER FAILURE ON UPS-Cantina
=============================

L’UPS e’ alimentato a Batteria a causa di mancanza di corrente elettrica.

Non fatevi prendere dal panico! Mantenere la calma…

Stato attuale dell’UPS:

APC      : 001,027,0668
DATE     : 2016-09-09 11:47:51 +0200
HOSTNAME : RASPBERRY
VERSION  : 3.14.12 (29 March 2014) debian UPSNAME  : UPS-Cantina
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2016-09-08 21:30:29 +0200
MODEL    : Smart-UPS C 1000
STATUS   : ONLINE
BCHARGE  : 100.0 Percent
TIMELEFT : 308.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
ALARMDEL : No alarm
BATTV    : 27.2 Volts
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
MANDATE  : 2015-08-08
SERIALNO : XXXXXXXXXXXXXXXXX
NOMBATTV : 24.0 Volts
FIRMWARE : UPS 10.0 / ID=1005
END APC  : 2016-09-09 11:48:18 +0200

8) A questo punto è possibile modificare tutti i messaggi elencati nel punto 2)

changeme – segnala quando la batteria dell’UPS deve essere sostituita.
commfailure – avvisa se il Raspberry perde la comunicazione con l’UPS.
commok – avvisa se la comunicazione tra il Raspberry e l’UPS viene ripristinata.
onbattery – avvisa se l’UPS va in modalità batteria a causa di mancanza di corrente elettrica.
offbattery – avvisa se l’UPS ritorna alla modalità di rete dopo una mancanza di corrente elettrica.

Di seguito riporto il codice da sostituire all’interno di ciascun file

9) Modifica dello script changeme lanciando il comando:

Sosituire il codice presente con il seguente

Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

Per testare lo script lanciare il seguente comando:

Se è tutto ok dovremmo ricevere la mail.

10) Modifica dello script offbattery lanciando il comando:

Sosituire il codice presente con il seguente

Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

Per testare lo script lanciare il seguente comando:

Se è tutto ok dovremmo ricevere la mail.

11) Modifica dello script commfailure lanciando il comando:

Sosituire il codice presente con il seguente

Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

Per testare lo script lanciare il seguente comando:

Se è tutto ok dovremmo ricevere la mail.

12) Modifica dello script commok lanciando il comando:

Sosituire il codice presente con il seguente

Per salvare le modifiche apportate al file di configurazione premere CTRL + X, poi “Y” e poi Invio quindi uscire dall’editor di testo Nano.

Per testare lo script lanciare il seguente comando:

Se è tutto ok dovremmo ricevere la mail.

TEST DI FUNZIONAMENTO ALLARMI

A questo punto per essere sicuri che l’invio delle mail funziona correttamente facciamo i seguenti test:

1) Scolleghiamo l’UPS dalla corrente elettrica -> Dovremmo ricevere la mail POWER FAILURE ON UPS

2) Ricolleghiamo l’UPS alla corrente elettrica -> Dovremmo ricevere la mail POWER RESTORE ON UPS

3) Scolleghiamo il cavo USB dal Raspberry -> Dovremmo ricevere la mail COMMUNICATION LOST ON UPS

4) Ricolleghiamo il cavo USB dal Raspberry -> Dovremmo ricevere la mail COMMUNICATION RESTORE ON UPS

Scritto da Raffaele Chiatto

Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Infrastrutture IT
  • ACT For Cange  Mental Coach
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore Collaboratore

Related Post

16 Commenti

  1. L’ho riavviato e l’ho lasciato andare per un pò.

    Sembra che adesso funzioni, ma un log di debug per capire come mai si fosse bloccato nel mandare le mail, sarebbe stato utile.

    CI tenevo pero’ a scriverlo per chiunque leggesse la mia problematica.

    Qualora fosse possibile creare uno script per un log di debug, aiuterebbe a comprendere eventuali malfunzionamenti.

    Grazie

  2. WebMaster

    Prova a controllare le impostazioni di GMAIL magari è li il problema
    Ciao

  3. Ho seguito le info di LEONARDO

    e funzionava fino a pochi giorni fa’.

    adesso non va di nuovo.

    pi@RASPBERRY:~ $ sh /etc/apcupsd/onbattery
    Reading message body from STDIN because the ‘-m’ option was not used.
    If you are manually typing in a message:
    – First line must be received within 60 seconds.
    – End manual input with a CTRL-D on its own line.

    May 17 17:00:32 raspberry sendemail[4742]: Message input complete.
    May 17 17:00:34 raspberry sendemail[4742]: Email was sent successfully!

    Ma se stacco e riattacco l’alimentazione dall’ups, non manda la mail.

    C’è un debug, qualcosa che devo controllare?

    Non vorrei che gmail, essendo che sta mettendo l’autenticazione a 2 fattori per tutti gli account, non spedisce per questo, ma non si spiega perchè con quel comando, la invia.

  4. WebMaster

    Ciao come puoi vedere nel tutorial ho utilizzato il software sendemail per l’invio delle mail. Se lo configuri come descritto puoi utilizzare anche account gmail senza nessun problema.

  5. Ciao,

    sono fermo qui:
    CONFIGURAZIONE DELLE NOTIFICHE VIA EMAIL

    Come faccio a configurare la mail ?

    Vorrei usare qualsiasi cosa, o gmail, oppure anche come hai fatto tu, una mail senza autenticazione.

    Spero tu possa aiutarmi

    Grazie

  6. WebMaster

    Grazie mille!

  7. Un lavoro STRATOSFERICO!!!!!!! Grazie mille!!!!!

    Simone

  8. WebMaster

    Grazie per l’ integrazione

  9. Sperando di fare cosa gradita e aggiungere valore al grande lavoro del blogger Raffaele Chiatto condivido le istruzioni per poter spedire con account gmail.
    L’ultima riga non riuscivo a settarla correttamente.

    )| $APCUPSD_MAIL -u “$MSG” -f [email protected] -t $SYSADMIN -smtp.gtp.gmail.com:587 -o tls=yes -xu [email protected] -xp passwordgmail

    Alla fine, ci sono riuscito, ma ancora non spediva, mancavano un paio di librerie:

    sudo apt-get install libnet-ssleay-perl

    sudo apt-get install libio-socket-ssl-perl

    e con questo funziona tutto,
    MERAVIGLIOSO, GRAZIE !!

  10. So che la discussione è un po datata, ma ci provo lo stesso.
    Non riesco a configurare correttamente onbattery con smtp gmail

  11. nonostante abbia seguito tutto continuo a ricevere dopo il test di invio mail la seguente scritta:
    Dec 27 00:24:16 raspberrypi sendemail[14251]: ERROR => smtp.gmail.com:465 returned a zero byte response to our query.

    in cosa sbaglio?
    grazie sempre!!!!

  12. WebMaster

    Ciao,
    Se inserisci l’SMTP di Google (smtp.gmail.com) dovresti usare la porta Porta 465 (SSL richiesto) oppure la Porta 587 (TLS richiesto).
    Inoltre ricordati che l’SMTP di google richiede l’autenticazione.
    Io nell’articolo che ho scritto utilizzo un SMTP mio interno senza autenticazione.
    Spero di essere stato chiaro
    Ciao

  13. ok grazie!
    quando scrivi di inserire al posto del tuo ip 192.168.100.70:25 il nome server o ip, cosa dovrei mettere precisamente?
    io ho provato a mettere l’smtp di google con la porta 25 ma non riesco a fare il test di invio mail

  14. ok dovrebbe essere compatibile, grazie!
    ora, ho seguito tutta la guida e mi fermo al passaggio dove testo l’invio della mail sh /etc/apcupsd/onbattery
    io ho creato una mail ad hoc su gmail e ho inserito al posto del tuo ip il server smtp.google.com:25
    mi da sempre questo errore :
    Dec 15 23:54:39 raspberrypi sendemail[24502]: Message input complete.
    Dec 15 23:54:39 raspberrypi sendemail[24502]: ERROR => Connection attempt to 192.168.178.40:25 failed: IO::Socket::INET6: connect: Connection refused

    Cosa potrebbe essere che sbaglio?

  15. WebMaster

    Ciao Adriano,
    il demone apcpsd dovrebbe supportare tutti i modelli degli UPS dell’APC
    A questo link http://www.apcupsd.com/manual/manual.html potresti trovare una lista completa
    Ciao

  16. ciao raffaele,
    grazie per la guida non vedo l’ora di testarla

    una curiosità; va bene qualsiasi ups della APC con uscita usb?
    siccome dovrei acquistarne uno volevo sapere qualcosa…

    grazie

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione