Ich habe leider öfter das Problem gehabt, dass sich das Image auf der SD-Karte zerstört hat, sobald eine Spannungsspitze oder ein Stromausfall war. Damit ich dies verhindern kann habe ich mir die Raspi UPS HAT bestellt.
Hier Beschreibe ich kurz wo ich sie bestellt habe und wie man sie richtig anschließt und installiert.
Bestellung
Bestellt habe ich mir die Raspi UPS HAT bei AliExpress und folgendem Händer:
Lieferzeit betrug 1 Monat und kam per Einschreiben.
Bilder

In Betrieb nehmen
Die Batterie wie auf den Bildern zu sehen mit Hilfe des Klebestreifens auf der Platine befestigen und mit dem Stecker verbinden. Dann das Board auf den Raspberry stecken und die Micro-USB Stromversorgung in die Buchse des Raspi UPS HAT stecken.
Nun sollten die LED´s Anfangen zu leuchten, aber der Raspberry bleibt dunkel.
Damit der Raspberry startet muss man den Knopf über der SD-Karte, an der UPS HAT drücken.
Installation und Einstellung
Software aktualisierenuser@computer:$ sudo apt-get update
sudo apt-get upgrade
Danach mittels raspi-config die I2C-Funktion aktivierenuser@computer:$ sudo raspi-config
Nun installieren wir python-smbususer@computer:$ sudo apt-get install python-smbus
Danach wiringPiuser@computer:$ sudo apt-get install git
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
Danach laden wir uns UPS-HAT-sample-code-via-i2c-by-Joachim herunteruser@computer:$ wget http://www.linuxblognf.de/wp-content/uploads/2017/03/UPS-HAT-sample-code-via-i2c-by-Joachim.zip
unzip UPS-HAT-sample-code-via-i2c-by-Joachim.zip
Und probieren ob wir die Batterieladung und Spannung auslesen könnenuser@computer:$ sudo python UPS-HAT-sample-code-via-i2c-by-Joachim.py
Angezeigt werden dann folgendes
Voltage: 4.15V Battery: 95% ----------- |######### |+ -----------
Eigenes Script in Python was die Batterie überwacht und ab 10% das System herunter fährt
import struct import smbus import sys import time #Pfad zum Log-File logfile = '/var/log/Raspi_UPS_HAT.log' #Funktion zum Auslesen der Spannung def readVoltage(bus): address = 0x36 read = bus.read_word_data(address, 2) swapped = struct.unpack("<H", struct.pack(">H", read))[0] voltage = swapped * 78.125 /1000000 return voltage #Funktion zum Auslesen der Kapazitaet def readCapacity(bus): address = 0x36 read = bus.read_word_data(address, 4) swapped = struct.unpack("<H", struct.pack(">H", read))[0] capacity = swapped/256 return capacity #Aufzeichnen von Ereignissen def log(msg): file = open(logfile,"a") file.write("%s: %s\n" % (time.strftime("%d.%m.%Y %H:%M:%S"), msg)) file.close bus = smbus.SMBus(1) # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1) while 0<1: if readCapacity(bus) <= 10: log("Batterie nur noch bei 10%. Fahre das System runter") os.system('shutdown now -h') elif readCapacity(bus) <= 90: log("Stromausfall") log("Spannung:%5.2fV" % readVoltage(bus)) log("Battery:%5i%%" % readCapacity(bus)) time.sleep(60) else : time.sleep(600)
Ich habe das Script bei mir “ UPS-HAT-checked-and-shutdown.py“ genannt.
[Edit:26.03.2017 19:26]Habe das Script noch einmal überarbeitet. Wenn Strom da ist wird es nur alle 10 Minuten abgefragt und sobald er Weg ist aktualisiert er jede Minute.
Des Weiteren habe ich die Reihenfolge der If-Anweisung korrigiert, damit er auch wirklich runter fährt.
Damit das Script automatisch startet müsst ihr eine Bash-Datei für die /etc/init.d schreiben und das Script anmelden.
[Edit:16.03.2020 18:00]Wenn das Script bei Euch nicht funktionieren sollte, dann achtet auf das richtige Einrücken. Durch das kopieren des Scripts, kann es dazu kommen, dass Python damit Probleme hat.
- Umzug der Seite auf einen neuen Server bei einem anderen Anbieter - März 7, 2020
- Festplatten, USB-Sticks oder SD-Karten unter Linux löschen - Oktober 15, 2018
- Bootfähigen USB-Stick mit ISOHybrid und DD - September 24, 2018