pwrcmdr2

by Bouni -
Project image

Warum?

Unser aktueller bisheriger pwrCMDr bestand aus einem Arduino-Ethernet auf einer selbstgeätzten Platine. Da wir immer wieder Probleme damit haben sollte etwas neues her, das vielleicht etwas mehr Spielraum gibt um Änderungen/Verbesserungen zu integrieren.

Hardware

Board

Wir haben uns für ein RaspberryPi 3 B+ entschieden, das ist ausreichend flott und erfüllt alle unsere Wunschkriterien. Ausserdem ist es sehr viel einfacher zu bekommen als die etwas günstigeren Vertreter von z.B. Aliexpress (BananaPi, etc.)

Formfaktor

Das Raspberry Pi kommt in ein Hutschienengehäuse von Pollin. Dieses hat ausreichend Platz für einen HAT auch wenn wir uns nicht an die genauen Specs halten.

Spannungsversorgung

Wir versorgen das Board mit 24VDC da wir das eh im Schaltschrank verwenden. Das RPi wird über die Stiftleisten mit 5VDC versorgt womit die Notwendigkeit eines USB Netzteils entfällt. Die 5V werden von einem AliExpress DC/DC Wandler generiert der auf dem Board verlötet wird.

Funktionen

Schützsteuerung

Wir haben wieder unsere zweikanalige Schützsteuerung verbaut, diese ist so ausgelegt, dass sie zwei externe Schütze die unsere beiden Stromkreise schalten ein bzw. ausschalten können. Dabei war uns wichtig, dass das auch funktionieren muss wenn der PowerCommander einmal einen Ausfall haben sollte. Deshalb schalten die 4 Relais einfach eine Selbsthaltung der Schütze, parallel dazu gibt es noch extern verbaute Hardware Taster damit sich das Ganze auch wie bereits erwähnt im Notfall schalten lässt.

Ein- und Ausgänge

Das Board verfügt über 4 Relais Ausgänge, dabei lässt sich über einen Lötjumper wählen ob der betreffende Kanal Schliesser oder Öffner sein soll. Des Weiteren hat das Board 8 Digitaleingänge die 24V tolerant sind und mittels Optokopplern getrennt sind.

Sensorik

Es sind ein I2C, ein 1-Wire und ein RS485 Port vorhanden. Über diese wollen wir diverse Sensorik anbinden.

Software

Wir haben Hassio, eine speziell auf das RaspberryPi zugeschnittene Distribution von Home Assistant auf dem RaspberryPi installiert.

Da wir immer wieder Probleme mit Hassio hatten (Micro SD Card corruption) haben wir ein Raspbian Buster installiert und darauf dann Home Assistant via docker-compose. Die Datenbank ist jetzt ein Postgres das auf unserem actse server läuft und entsprechend in der HA config konfiguriert ist. Dies sollte die Schreibzyklen auf die SD Karte möglichst gering halten.

Das hat sehr viele Vorteile für uns:

Ausserdem die einfache Konfiguration via YAML files und das Ermöglichen von Automations und vielen weiteren coolen Features!

So sieht das Interface in seiner ersten Version aus, hier bietet sich noch viel Spielraum für Erweiterungen :-)

Known Bugs

rpi_gpio

Die Eingänge werden über die rpi_gpio integration abgefragt und lösen ein event aus, allerdings kann es passieren, dass, wenn der Kontakt prellt, der State nicht stimmt, was sehr unglücklich ist. Als Workaround haben wir das rpi_gpio Verzeichnis von GitHub nach config/custom_components/rpi_gpio kopiert und die Zeile 75 in der Datei switch.py geändert, dass sie True zurückgibt. Dadurch wird die rpi_gpio integration als custom_component geladen und verhindert das Laden der originalen Integration.

    @property
    def should_poll(self):
        """No polling needed."""
        return True

Es wird zwar gewarnt, dass dies die CPU Last erhöht, allerdings konnten wir keine Nachteile durch diese Methode erkennen.