Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente Ultima revisione Entrambe le parti successive la revisione | ||
power_pack_pro [2018/08/22 23:35] flane |
power_pack_pro [2019/06/26 15:14] flane |
||
---|---|---|---|
Linea 3: | Linea 3: | ||
\\ | \\ | ||
<WRAP center round info> | <WRAP center round info> | ||
- | Questa quida è riferita esclusivamente alla versione **[[http://www.dx.com/p/geekworm-power-pack-pro-v1-1-ups-hat-expansion-board-for-raspberry-pi-473416#.W33Bo-gzaLJ|Pro v1.1]]** di questa scheda. La versione 1.0 ha infatti diversi problemi che ne pregiudicano un possibile utilizzo come UPS | + | Questa guida è riferita esclusivamente alla versione **[[http://www.dx.com/p/geekworm-power-pack-pro-v1-1-ups-hat-expansion-board-for-raspberry-pi-473416#.W33Bo-gzaLJ|Pro v1.1]]** di questa scheda. La [[https://it.aliexpress.com/item/Raspi-UPS-HAT-Extension-Board-Raspberry-Pi-3-Power-Source-Board-Raspberry-Pi-Battery-Adapter-EU/32799563777.html?spm=a2g0y.search0104.3.3.63887018RifhMr&ws_ab_test=searchweb0_0,searchweb201602_1_10152_5724111_10151_10065_10344_10068_10342_5724211_10343_10340_10341_5724311_10696_5724011_10084_10083_10618_10304_10307_10820_10821_10302_10843_10059_100031_10103_5725011_10624_10623_10622_10621_10620_5724911,searchweb201603_51,ppcSwitch_5&algo_expid=71a1ec7d-be1a-4f89-ada4-9315f34fc46f-0&algo_pvid=71a1ec7d-be1a-4f89-ada4-9315f34fc46f&priceBeautifyAB=0|versione 1.0]] ha infatti diversi problemi che ne pregiudicano un possibile utilizzo come UPS |
</WRAP> | </WRAP> | ||
\\ | \\ | ||
- | Si tratta di una scheda di espansione progettata appositamente per Raspberry Pi, che permette di utilizzare il Raspberry Pi alimentato tramite batteria al litio, svolge quindi una funzione di UPS per il Raspberry.\\ | + | Si tratta di una scheda di espansione progettata appositamente per Raspberry Pi, che permette di utilizzare il Raspberry Pi alimentato tramite batteria al litio, svolgendo quindi una funzione di UPS per il Raspberry.\\ |
\\ | \\ | ||
<WRAP center round help> | <WRAP center round help> | ||
Per problemi a riguardo discutiamone qui: [[http://www.flanesi.it/forum/viewtopic.php?f=21&t=2158|Script RPI Power Pack Hat Pro V1.1 with MeterN]] | Per problemi a riguardo discutiamone qui: [[http://www.flanesi.it/forum/viewtopic.php?f=21&t=2158|Script RPI Power Pack Hat Pro V1.1 with MeterN]] | ||
</WRAP> | </WRAP> | ||
+ | |||
{{ :img_metern:power_ups:power_ups1.jpg?nolink |}} | {{ :img_metern:power_ups:power_ups1.jpg?nolink |}} | ||
+ | |||
+ | <WRAP center round info> | ||
+ | Per approfondimenti sulla scheda: [[http://www.raspberrypiwiki.com/index.php/Power_Pack_Pro|Power Pack Pro WIKI]] | ||
+ | </WRAP> | ||
+ | |||
\\ | \\ | ||
<WRAP center round important> | <WRAP center round important> | ||
Linea 47: | Linea 53: | ||
**Script for RPI Power Pack Hat Pro V1.1 with MeterN**\\ | **Script for RPI Power Pack Hat Pro V1.1 with MeterN**\\ | ||
**upshat.py rev. 1.1**\\ | **upshat.py rev. 1.1**\\ | ||
+ | \\ | ||
+ | Il contenuto dello script è:\\ | ||
+ | <code python /var/www/MyScripts/ups/upshat.py>#!/usr/bin/python | ||
+ | # | ||
+ | # Script for RPI Power Pack Hat Pro V1.1 with MeterN | ||
+ | # | ||
+ | # upshat.py rev. 1.1 | ||
+ | # | ||
+ | # enable I2C via raspi-config | ||
+ | # sudo apt-get install i2c-tools | ||
+ | # sudo apt-get install python-smbus | ||
+ | # sudo apt-get install python-requests | ||
+ | # ln -s /var/www/MyScripts/ups/upshat.py /usr/bin/ups | ||
+ | # i2cset -y 1 0x62 0x0A 0x00 Wake-up the device I2C function; MODE register address 0x0A set to 0x00 | ||
+ | # | ||
+ | # | ||
+ | # History | ||
+ | # | ||
+ | # 29-04-2018: Rilascio versione v1.0 | ||
+ | # | ||
+ | # - Versione iniziale | ||
+ | # | ||
+ | # 29-05-2018: Rilascio vesrione v1.1 | ||
+ | # | ||
+ | # - Aggiunto controllo per mancata lettura | ||
+ | # Modifica nome file temporaneo svincolato da n. di misuratore | ||
+ | # | ||
+ | # | ||
+ | # Lo script legge tramite bus i2C il valore di tensione e capacita della batteria | ||
+ | # della scheda RPI Power Pack Hat Pro V1.1 | ||
+ | # https://www.banggood.com/Geekworm-Power-Pack-Pro-V1_1-Lithium-Battery-Power-Source-UPS-HAT-Expansion-Board-For-Raspberry-Pi-p-1205973.html?rmmds=search&cur_warehouse=CN | ||
+ | # Lo script effettua un controllo ogni 60s 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 avviso per capacita residua < 5% e successivo spegnimento del Raspberry-Pi | ||
+ | # | ||
+ | # Le letture vengono salvate nel file temporaneo /dev/shm/ups.txt pronte per | ||
+ | # essere poi lette e formattate tramite reqsdm e visualizzate in MeterN | ||
+ | # | ||
+ | # A seguire le righe da aggiungere a /var/www/comapps/reqsdm.php per leggere la tensione | ||
+ | # (con il comando reqsdm bat_ten) e la capacita della batteria (con il comando reqsdm bat_cap) | ||
+ | # | ||
+ | # } 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 "*%)"'); | ||
+ | # | ||
+ | |||
+ | import struct | ||
+ | import smbus | ||
+ | import sys | ||
+ | import os | ||
+ | import time | ||
+ | import requests | ||
+ | |||
+ | # Inserire il token per l'invio dei messaggi con RPInotify - Lasciare vuoto se non si utilizza il servizio di notifica | ||
+ | TOKEN = "" | ||
+ | |||
+ | # | ||
+ | # da qui in poi non sono necessarie modifiche | ||
+ | # | ||
+ | file = "/dev/shm/ups.txt" | ||
+ | control20 = 0 | ||
+ | control95 = 0 | ||
+ | controlNOK = 0 | ||
+ | |||
+ | sys.stdout=open(file,"w") | ||
+ | print "ups_1(0*V)" # Tensione | ||
+ | print "ups_2(0*%)" # Capacita | ||
+ | sys.stdout.close() | ||
+ | |||
+ | while True: | ||
+ | def readVoltage(bus): | ||
+ | "This function returns as float the voltage from the Raspi UPS Hat via the provided SMBus object" | ||
+ | address = 0x62 | ||
+ | read = bus.read_word_data(address, 2) | ||
+ | swapped = struct.unpack("<H", struct.pack(">H", read))[0] | ||
+ | voltage = swapped * 305.0 /1000000 | ||
+ | return voltage | ||
+ | |||
+ | def readCapacity(bus): | ||
+ | "This function returns as a float the remaining capacity of the battery connected to the Raspi UPS Hat via the provided SMBus object" | ||
+ | address = 0x62 | ||
+ | read = bus.read_word_data(address, 4) | ||
+ | swapped = struct.unpack("<H", struct.pack(">H", read))[0] | ||
+ | capacity = swapped/256 | ||
+ | return capacity | ||
+ | |||
+ | bus = smbus.SMBus(1) # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1) | ||
+ | |||
+ | sys.stdout=open(file,"w") | ||
+ | print "ups_1({0:0.2f}*V)".format(readVoltage(bus)) # Tensione | ||
+ | print "ups_2({0:0.0f}*%)".format(readCapacity(bus)) # Capacita % | ||
+ | sys.stdout.close() | ||
+ | |||
+ | # Controllo lettura NO OK | ||
+ | if readVoltage(bus) == 0 and controlNOK == 0: | ||
+ | MSG = "RPI UPS Hat - Lettura UPS Hat NON FUNZIONANTE - Necessario comando i2cset -y 1 0x62 0x0A 0x00" | ||
+ | req = requests.post('https://api.rpinotify.it/message/' + TOKEN + '/', data={'text': MSG}) | ||
+ | controlNOK = 1 | ||
+ | |||
+ | # Notifiche con RPINotify | ||
+ | if TOKEN != "" and readVoltage(bus) > 0: | ||
+ | if readCapacity(bus) > 20: | ||
+ | control20 = 0 | ||
+ | controlNOK = 0 | ||
+ | |||
+ | if readCapacity(bus) <= 20 and control20 == 0: | ||
+ | MSG = "RPI UPS Hat - ATTENZIONE Batteria residua 20%" | ||
+ | req = requests.post('https://api.rpinotify.it/message/' + TOKEN + '/', data={'text': MSG}) | ||
+ | control20 = 1 | ||
+ | #print(req.text) | ||
+ | |||
+ | if readCapacity(bus) > 95: | ||
+ | control95 = 0 | ||
+ | |||
+ | if readCapacity(bus) <= 95 and control95 == 0: | ||
+ | MSG = "RPI UPS Hat - Funzionamento a batteria - Batteria residua 95%" | ||
+ | req = requests.post('https://api.rpinotify.it/message/' + TOKEN + '/', data={'text': MSG}) | ||
+ | control95 = 1 | ||
+ | |||
+ | # Shutdown system | ||
+ | if readCapacity(bus) < 5 and readVoltage(bus) > 0: | ||
+ | #print "System will shutdown now,bye!" | ||
+ | os.system("sudo poweroff") | ||
+ | sys.exit(1) | ||
+ | time.sleep(60)</code> | ||
+ | \\ | ||
+ | <WRAP center round tip> | ||
+ | [[http://www.flanesi.it/forum/download/file.php?id=541|QUI]] è possibile scaricare lo script v 1.1 | ||
+ | </WRAP> | ||
\\ | \\ | ||
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\\ | 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:\\ | 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\\ | + | - capacita < 95% notifica il funzionamento a batteria\\ |
- | 2 avviso per capacita residua < 20%\\ | + | - 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.\\ | + | - 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.\\ | Le letture vengono salvate nel file temporaneo /dev/shm/ups.txt pronte per essere poi lette tramite reqsdm e visualizzate in MeterN.\\ | ||
Linea 64: | Linea 203: | ||
Come prima cosa è necessario attivare la funzione i2c dell'hat con il comando: | Come prima cosa è necessario attivare la funzione i2c dell'hat con il comando: | ||
<code>i2cset -y 1 0x62 0x0A 0x00</code> | <code>i2cset -y 1 0x62 0x0A 0x00</code> | ||
- | Questo comando va eseguito solo la prima volta ed eventualmente nel caso che per qualche motivo scollegate la batteria dalla scheda.\\ | + | <WRAP center round important 80%> |
+ | Questo comando va eseguito __solo la prima volta__ ed eventualmente __successivamente solo nel caso che per qualche motivo scollegate la batteria dalla scheda__. | ||
+ | </WRAP> | ||
\\ | \\ | ||
Per abilitare l'avvio automatico al boot del servizio: | Per abilitare l'avvio automatico al boot del servizio: | ||
Linea 84: | Linea 225: | ||
ott 07 11:54:23 raspberrypi systemd[1]: Started RPI UPS Hat Service.</code> | ott 07 11:54:23 raspberrypi systemd[1]: Started RPI UPS Hat Service.</code> | ||
- | Potete ora controllare la tensione e la capacità della batteria (nel formato MeterN) digitando da terminale: | ||
- | <code>reqsdm bat_ten | ||
- | reqsdm bat_cap</code> | ||
\\ | \\ | ||
- | Infine per avere in metern un indicatore con la tensione della batteria ed uno con la capacità della batteria: | + | ===== Configurazione MeterN ===== |
- | {{ :img_metern:power_ups:power_ups9.png?direct |}} | + | |
- | E' inoltre necessari oeditare il file /var/www/comapps/reqsdm.php per aggiungere i comandi per la lettura dei valori di capacità e tensione della batteria he potranno essere utilizzati da MeterN.\\ | + | E' necessario editare il file **/var/www/comapps/reqsdm.php** per aggiungere i comandi per la lettura dei valori di capacità e tensione della batteria che potranno essere utilizzati da MeterN.\\ |
- | Per fare ciò sarà necessari oeditare il file reqsdm.php: | + | \\ |
+ | Per fare ciò sarà necessario editare il file reqsdm.php: | ||
<code>sudo nano /var/www/comapps/reqsdm.php</code> | <code>sudo nano /var/www/comapps/reqsdm.php</code> | ||
ed aggiungere opportunamente le seguenti righe: | ed aggiungere opportunamente le seguenti righe: | ||
- | <code> } elseif ($argv[1] == 'bat_ten') { | + | <code php /var/www/comapps/reqsdm.php> } elseif ($argv[1] == 'bat_ten') { |
$outstr = exec('cat /dev/shm/ups.txt | grep "*V)"'); | $outstr = exec('cat /dev/shm/ups.txt | grep "*V)"'); | ||
} elseif ($argv[1] == 'bat_cap') { | } elseif ($argv[1] == 'bat_cap') { | ||
$outstr = exec('cat /dev/shm/ups.txt | grep "*%)"');</code> | $outstr = exec('cat /dev/shm/ups.txt | grep "*%)"');</code> | ||
- | Queste permetteranno di leggere la tensione (con il comando reqsdm bat_ten) e la capacita della batteria (con il comando reqsdm bat_cap) | + | Queste permetteranno di leggere la tensione (con il comando reqsdm bat_ten) e la capacita della batteria (con il comando reqsdm bat_cap)\\ |
+ | \\ | ||
+ | Infine per avere in MeterN un indicatore con la tensione della batteria ed uno con la capacità della batteria: | ||
+ | {{ :img_metern:power_ups:power_ups9.png?direct |}} | ||
+ | \\ | ||
+ | Questo è il risultato a batteria completamente carica: | ||
+ | {{ :img_metern:power_ups:power_ups10.png?nolink |}} | ||