(Zurück zum Inhaltsverzeichnis)
Update: 21.12.2021
Die alte Software der PIUSV+ von CW2 (piupsmon-0.9.deb) ist mittlerweile in die Jahre gekommen
und läuft auf Buster/Bullseye unter 64Bit nicht mehr.
Aber es gibt eine Alternative für die Monitor-Software der PIUSV+.
Das eröffnet die Möglichkeit, die PIUSV+ weiter zu nutzen.
Allerdings gibt es die Software nur als Sourcecode.
Aber nicht abschrecken lassen, es ist leichter als gedacht.
Am besten man erstellt sich erstmal einen Ordner im Homeverzeichnis für die Sourcen:
mkdir src und wechselt mit cd src dorthin,
Die Sourcen findet man hier: https://github.com/dehapama/piupsmonitor-raspberrypi
Nach dem Aufruf von git clone https://github.com/dehapama/piupsmonitor-raspberrypi.git
findet man folgenden Ordner vor: piupsmonitor-raspberrypi
Dort findet man im Verzeichnis src den Sourcecode.
Zum compilieren benötigt man noch eine Library die man mit
sudo apt install libi2c-dev installieren muss.
Ab hier bin ich, im Gegensatz zum README.md, einen etwas anderen Weg gegangen.
1. Compilieren
cd src
gcc -O -o piupsmonitor piupsmonitor.c -li2c
piupsmonitor.c: In function ‘read_version’:
piupsmonitor.c:233:14: warning: implicit declaration of function ‘i2c_smbus_read_i2c_block_data’ [-Wimplicit-function-declaration]
233 | int result=i2c_smbus_read_i2c_block_data(device,TWI_CMD_GETVERSION,sizeof(version)-1,(__u8*)&version);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
piupsmonitor.c: In function ‘read_status’:
piupsmonitor.c:306:14: warning: implicit declaration of function ‘i2c_smbus_read_byte_data’ [-Wimplicit-function-declaration]
306 | int result=i2c_smbus_read_byte_data(device,TWI_CMD_GETSTATUS);
| ^~~~~~~~~~~~~~~~~~~~~~~~
piupsmonitor.c: In function ‘set_power_off_timer’:
piupsmonitor.c:333:3: warning: implicit declaration of function ‘i2c_smbus_write_byte_data’ [-Wimplicit-function-declaration]
333 | i2c_smbus_write_byte_data(device,TWI_CMD_SHUTDOWN,settings.power_off_timer);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Display More
Das sind nur 3 Warnungen, das Programm funktioniert trotzdem.
2. Konfiguration
Wenn man seine Konfiguration weiter nutzen möchte, kann man mit
sudo cp /etc/piupsmon/piupsmon.conf /etc/piupsmonitor/piupsmonitor.conf
seine eigene Konfiguration einfach kopieren, sie sind bis auf den Namen kompatibel.
Und der neue Ordner ist Voraussetzung für den ersten Test bzw. den weiteren Betrieb.
3. Erster Test
Erstmal vergewissern, das der LogLevel in /etc/piupsmonitor/piupsmonitor.conf auf LogLevel=NOTICE steht.
Dann ein:
sudo src/piupsmonitor
Opening device... OK
2021-12-21 08:38:09 [NOTICE] Redirection log messages to /var/log/piupsmonitor.log
Sieht schonmal gut aus, Abbruch mit ^C und in der Log-Datei sollte dann das stehen:
cat /var/log/piupsmonitor.log
2021-12-21 08:38:09 [NOTICE] ShutdownTimer: 600
2021-12-21 08:38:09 [NOTICE] PowerOffTimer: 15
2021-12-21 08:38:09 [NOTICE] ShutdownCmd: /usr/local/bin/allOff.sh
2021-12-21 08:38:09 [NOTICE] StatusChangedCmd:
2021-12-21 08:38:09 [NOTICE] LogLevel: NOTICE
2021-12-21 08:38:09 [NOTICE] LogLevel: 1
2021-12-21 08:38:09 [NOTICE] ButtonPressedCmd: init 0
2021-12-21 08:38:09 [NOTICE] LogFile: /var/log/piupsmonitor.log
2021-12-21 08:38:09 [NOTICE] PID-File: /var/run/piupsmonitor.pid
2021-12-21 08:38:09 [NOTICE] Version 0
Display More
Zu dem Eintrag ShutdownCmd: /usr/local/bin/allOff.sh komme ich später noch.
Jetzt kann man das Programm an seinen Bestimmungsort kopieren:
sudo cp src/piupsmonitor /usr/sbin/
4. Einrichten systemd
Auch hier bin ich einen anderen Weg gegangen:
sudo cp etc/systemd/system/piupsmonitor*.service /lib/systemd/system/
Danach kann man wieder dem README.md folgen:
sudo systemctl daemon-reload
sudo systemctl enable piupsmonitor.service
sudo systemctl start piupsmonitor.service
sudo systemctl enable piupsmonitor-poweroff.service
Lt. dem README sollte man noch die Übertragungsrate des I2C--Busses in der /boot/config.txt heruntersetzen.
dtparam=i2c_baudrate=40000
Nach einem reboot sollte das Monitorprogramm laufen. Überprüfen kann man das mit:
sudo systemctl status piupsmonitor.service
● piupsmonitor.service - Daemon to monitor the PiUPS+ (PiUSV+) module for the raspberry pi
Loaded: loaded (/lib/systemd/system/piupsmonitor.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-12-21 11:38:33 CET; 1 day 22h ago
Main PID: 383 (piupsmonitor)
Tasks: 1 (limit: 780)
CPU: 14min 25.642s
CGroup: /system.slice/piupsmonitor.service
└─383 /usr/sbin/piupsmonitor -p /run/piupsmonitor.pid
Dez 21 11:38:33 raspi20 systemd[1]: Started Daemon to monitor the PiUPS+ (PiUSV+) module for the raspberry pi.
Dez 21 11:38:33 raspi20 piupsmonitor[383]: 2021-12-21 11:38:33 [NOTICE] Redirection log messages to /var/log/piupsmonitor.log
Display More
Jetzt kann man mal probehalber die Versorgungsspannung unterbrechen,
der Raspberry sollte (mit Akku) weiterlaufen. Die rote LED auf der PIUSV+ sollte jetzt blinken.
In der Log-Datei erscheinen dann diese Einträge:
2021-12-21 10:48:40 [NOTICE] Change in Battery Low: 1
2021-12-21 10:48:40 [NOTICE] Status changed from 01 to 05
2021-12-21 10:48:40 [NOTICE] Change in Primary Power Supply: 0
2021-12-21 10:48:40 [NOTICE] Change in Secondary Power Supply: 1
2021-12-21 10:48:40 [NOTICE] Status changed from 05 to 06
2021-12-21 10:48:41 [NOTICE] Shutdown Timer: 1/600
2021-12-21 10:48:42 [NOTICE] Shutdown Timer: 2/600
2021-12-21 10:48:43 [NOTICE] Shutdown Timer: 3/600
2021-12-21 10:48:44 [NOTICE] Shutdown Timer: 4/600
2021-12-21 10:48:45 [NOTICE] Shutdown Timer: 5/600
2021-12-21 10:48:46 [NOTICE] Shutdown Timer: 6/600
2021-12-21 10:48:47 [NOTICE] Shutdown Timer: 7/600
2021-12-21 10:48:48 [NOTICE] Shutdown Timer: 8/600
2021-12-21 10:48:48 [NOTICE] Change in Primary Power Supply: 1
2021-12-21 10:48:48 [NOTICE] Change in Secondary Power Supply: 0
2021-12-21 10:48:48 [NOTICE] Change in Battery Low: 0
2021-12-21 10:48:48 [NOTICE] Change in Battery Charge: 1
2021-12-21 10:48:48 [NOTICE] Status changed from 06 to 09
Display More
Das hektische Blinken der gelben LED nach dem wiedereinschalten der Betriebsspannung zeigt an, das der AKKU wieder geladen wird.
5. Die Zeile ShutdownCmd: /usr/local/bin/allOff.sh
Es handelt sich hier um ein kleines Bash-Script das die PIUSV+ komplett ausschaltet.
Wenn man den Raspberry herunterfährt geht zwar der Raspberry aus, die PIUSV+ bleibt aber an.
Ist keine gute Idee wenn man den Raspberry im Gartenhäuschen oder im Auto betreibt
denn dann saugt die PIUSV+ den Akku leer.
Um das zu verhindern, kann man mit Hilfe dieses Scripts die PIUSV+ komplett abschalten.
Quelle: https://raspicarprojekt.de/showthread.php…id=6359#pid6359
Hier nochmal zur Sicherheit, da das Projekt nicht weiterentwickelt wird.
Dazu legen wir mit einem Texteditor die Datei mit diesem Inhalt an:
#!/bin/bash
#Skript zum programmatischen Abschalten der PiUSV+
#gpio-tools müssen installiert sein
#Autor: raspiuser, 2015-08-10
#Benutzung auf eigenes Risiko !
echo "$(date +%Y-%m-%d" "%H:%M:%S) [NOTICE] Programmatic system shutdown!" >> /var/log/piupsmon.log
systemctl stop piupsmonitor # arch linux oder raspios
#/etc/init.d/piupsmon stop # raspbian
#systemctl poweroff & #arch linux
#init 0 & #raspbian
i2cset -y 1 0x18 0x10
Display More
Dann noch ein sudo chmod 0755 /usr/local/bin/allOff.sh
Nach dem Herunterfahren des Raspberrys sollten die LEDs der PIUS+ noch
ein paar Sekunden an sein und dann ausgehen
Diese Anleitung endstand mit Hilfe eines 3B+ unter Bullseye64,
unter Buster64 liess sich das Programm kompilieren, aber ich habe im Moment keinen RPi4B zum testen frei.
Die Test hole ich aber noch nach. Oder Jemand Anderes mit einer PIUSV+
MfG
Jürgen
Edit 01: Buster32 auf RPi4B-4G funktioniert, auch mit der Option: arm_64bit=1
Edit 02: sudo systemctl status piupsmonitor.service korrigiert