Skip to content

Raspberry 3 mit Batterie und PiUPS im Hutschienengehäuse.

SergeoLacruz edited this page Jan 24, 2017 · 2 revisions

Pi 3 mit PiUPS

Der Raspberry 1 ist in die Jahre gekommen. Da muss ein neuer her. Ich habe mir also die folgenden Teile besorgt:

  • Raspberry Pi3
  • Hutschienengehäuse dafür
  • PiUPS+

Der Pi3 passt nicht genau in das Gehäuse von Pollin. Man muss die Löcher etwas nacharbeiten. Ist aber keine Problem. Daneben sitzt der Akku. Dieser sorgt zusammen mit der PiUPS+ dafür dass der Pi bei Stromausfall sauber runter gefahren wird. Anderenfalls gibt es gelegentlich Probleme beim reboot.

Darüber sitzt noch eine Platine die ich für Erweiterungen vorgesehen habe. Bisher habe ich hier lediglich einen Enocean Empfänger drauf.

Darüber gesteckt ist noch eine kleinere Platine welche hinter der Frontplatte sitzt. Hier sind zwei Schalter für Strom und Batterie sowie zwei LEDs welche an zwei GPIOs des Pi hängen. Die kann man für irgendetwas benutzen, oder auch nicht.

Bei diesem Aufbau sieht man leider die LEDs der USV nicht mehr .daher habe ich hier einen kleinen Halter gefeilt und gebohrt der vier Lichtleitstäbe über den LEDs hält. Diese gehen bis oben unter die Frontplatte. Dann kann man den Status der USV stets gut sehen.

Pi 3 mit PiUPS Pi 3 mit PiUPS

Noch ein paar Worte zur Software.

Zur PiUPS+ wird ein Paket geliefert welches auf dem Pi installiert werden muss. Wie man das macht ist in der PiUPS+ Doku gut beschreiben. Der Deamon sorgt dafür das bei Stromausfall nach einer Wartezeit ein shutdown ausgeführt wird. Kommt der Strom innerhalb dieser Wartezeit wieder, findet keine Shutdowm statt. Das funktioniert einwandfrei. Aber mehr kann er nicht. Trotzdem hätte ich gerne den Powerstatus in der Visu angezeigt. Der Daemon kommuniziert mit der Hardware über die I2C Schnittstelle. Wie er das tut ist nicht dokumentiert und einen Quelltext gibt es auch nicht. Die einzige Möglichkeit, die ich gefunden habe geht über die Logdatei. Der Daemon schreibt eine Logdatei unter /var/log. Darin findet sich bei jeder Statusänderung eine Meldung z.B.: 2016-12-18 22:02:41 [NOTICE] Status changed from 1 (primary power) to 2 (battery power) 2016-12-18 17:00:25 [NOTICE] Status changed from 5 (primary power,battery low) to 1 (primary power) Wenn man das Log eine Weile beobachtet findet man folgende Stati: 0: () 1: primary power 2: battery power 4: battery low 5: primary power, battery low 9: primary power, charging Gelegentlich taucht ein Status 0 auf, den ich aber nicht zuordnen konnte. Die anderen gehen ganz gut obwohl die Erkennung der leeren Batterie nicht ganz zuverlässig ist.

Den Status in Smarthome.py einzubringen ist jetzt recht einfach. In der PiUPS+ Konfigurationsdatei gibt es einen, leider nicht dokumentierten, Parameter namens StatusChangedCmd. Der tut genau das was man vom Namen erwartet. Er ruft bei jeder Statusänderung das angegebene Kommando auf. Bei mir sieht das so aus:

StatusChangedCmd="/usr/local/bin/powerd"

Powerd ist ein Shellscript:

#!/bin/bash
piupslog=/var/log/piupsmon.log
m=`tail -1 $piupslog | awk '{ for(i=1; i<NF; i++){ if ($i=="to") print $(i+1) }}'`
knxtool groupswrite ip:localhost 5/1/0 $m

Das Scrip benutzt awk um die letzte Zeile der Logdatei zu zerlegen. Es sucht darin nach dem Wort „to“ und nimmt die folgende Zahl als Status. Dieser wird auf den Bus geschrieben. Die Das Kommando groupswrite muss man natürlich an die jeweilige Installation anpassen.

Die KNX Adresse kann dann wie gehabt über ein Item in die Visu wandern.

Pi 3 mit PiUPS