Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

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:\\
-capacita < 95% notifica il funzionamento a batteria\\ +  - capacita < 95% notifica il funzionamento a batteria\\ 
-avviso per capacita residua < 20%\\ +  ​- ​avviso per capacita residua < 20%\\ 
-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 |}}
  
  
  • power_pack_pro.txt
  • Ultima modifica: 2019/06/26 15:26
  • da flane