Nell'immagine Solarstretch 3.1 ho aggiunto un file /var/www/MyScripts/ups/upshat.py per gestire la scheda aggiuntiva per il Raspberry RPI Power Pack Hat Pro V1.1, che svolge la funzione di UPS.
ATTENZIONE che solo la versione 1.1 pro di questa scheda ups funziona correttamente. La versione 1.0 aveva qualche problemino che non ne permetteva un corretto utilizzo come UPS.
Evidenzio che in realtà un problemino è rimasto anche nella versione 1.1. In caso di spegnimento (comando poweroff o spegnimento automatico a fine batteria con script) è infatti necessario spegnere manualmente l'ups mediante il pulsante integrato e poi riaccenderlo con lo stesso pulsante per riattivare l'RPI.
Ecco quindi che in caso di assenza prolungata di alimentazione che comporti il totale scaricamento della batteria, al ritorno dell'alimentazione sarà quindi necessario riattivare manualmente il Raspberry.
Script for RPI Power Pack Hat Pro V1.1 with MeterN
upshat.py rev. 1.1
Come riportato nello script stesso, lo script legge tramite bus i2C il valore di tensione e capacita della batteria della scheda RPI Power Pack Hat Pro V1.1
Lo script effettua un controllo ogni 60s (per non stressare troppo il Raspi) sulla capacita della batteria ed invia delle notifiche push sul cellulare tramite il servizio gratuito RPINotify (Telegram) nei seguenti casi:
1 capacita < 95% notifica il funzionamento a batteria
2 avviso per capacita residua < 20%
3 con capacita residua < 5% esegue lo spegnimento del Raspberry-Pi per evitare possibili danneggiamenti della scheda SD in seguito ad un improvviso spegnimento per fine batteria.
Le letture vengono salvate nel file temporaneo /dev/shm/ups.txt pronte per essere poi lette tramite reqsdm e visualizzate in MeterN. Il contenuto del file è formattato come di seguito:
Codice: Seleziona tutto
ups_1(4.17*V)
ups_2(100*%)
UTILIZZO DELLO SCRIPT
Come prima cosa è necessario attivare la funzione i2c dell'hat con il comando:
Codice: Seleziona tutto
i2cset -y 1 0x62 0x0A 0x00
Questo comando va eseguito solo la prima volta ed eventualmente nel caso che per qualche motivo scollegate la batteria dalla scheda.
Per abilitare l'avvio automatico al boot del servizio:
Codice: Seleziona tutto
sudo systemctl enable upshat.service
sudo reboot
A riavvio avvenuto è possibile controllare lo stato del servizio:
Codice: Seleziona tutto
sudo systemctl status upshat.service
Se il servizio è stato correttamente avviato si avrà una risposta del tipo:
Codice: Seleziona tutto
root@raspberrypi:~# sudo systemctl status upshat.service
● upshat.service - RPI UPS Hat Service
Loaded: loaded (/etc/systemd/system/upshat.service; enabled)
Active: active (running) since sab 2017-10-07 11:54:23 CEST; 1min 19s ago
Main PID: 674 (python)
CGroup: /system.slice/upshat.service
└─674 /usr/bin/python /home/pi/ups/UPS-HAT.py
ott 07 11:54:23 raspberrypi systemd[1]: Started RPI UPS Hat Service.
Potete ora controllare la tensione e la capacità della batteria (nel formato MeterN) digitando da terminale:
Codice: Seleziona tutto
reqsdm bat_ten
reqsdm bat_cap
Infine per avere in metern un indicatore con la tensione della batteria ed uno con la capacità della batteria:
Non ho la certezza di aver lasciato in /var/www/comapps/reqsdm.php i comandi per l'ups, in caso non ci fossero basta aggiungere le righe:
Codice: Seleziona tutto
} elseif ($argv[1] == 'bat_ten') {
$outstr = exec('cat /dev/shm/ups.txt | grep "*V)"');
} elseif ($argv[1] == 'bat_cap') {
$outstr = exec('cat /dev/shm/ups.txt | grep "*%)"');
per leggere la tensione (con il comando reqsdm bat_ten) e la capacita della batteria (con il comando reqsdm bat_cap)
NOTA IMPORTANTE
Nell'immagine Solarstretch 3.1 è erroneamente rimasta la vecchia versione 1.0 dello script
E' quindi necessario sostituire il file /var/www/MyScripts/ups/upshat.py ed il file /etc/systemd/system/upshat.service
con quelli scaricabili dal seguente link (sono necessari i permessi di root), e mi raccomando di assegnare gli stessi proprietari e permessi ai file se necessario.
Quindi riavviate il raspberry con:
Codice: Seleziona tutto
sudo reboot
upshat_v1.1