PiFace Integration in openHAB

openHAB bieten eine Menge Möglichkeiten Geräte zu steuern oder Schnittstellen zu bedienen. Dazu gehört auch das PiFace Board eines Raspberry Pi, im vorliegenden Fall ein B-Modell. Da das PiFace das schalten von beliebigen Verbrauchern, ggf. über ein Entkopplungsrelais, bietet lag es nahe den Raspberry und das PiFace Modul wieder zu beleben.

Konfigurationen auf dem Raspberry Pi

Neben Konfigurationen die auf der openHAB Installation vorgenommen werden müssen auch auf dem Respberry Konfigurationen Veränderungen durchgeführt werden. Zu den vorbereitenden Arbeiten gehört dabei auch die Installation der entsprechenden Treiber, Python und der piface Module. Die einzelnen Schritte sind sehr gut in ohpiface_install.txt zusammen gefasst. An selbiger Stelle finden sich auch die notwendigen Pythonskripte. Die Quelle ist auch auf der Dokumentationsseite zum PiFace Binding dokumentiert, nur habe ich initial diesen Link konsequent übersehen.

Im Wesentlichen muss das SPI Modul aktiviert (raspi-blacklist.conf) aktiviert, das Modul geladen und die Pythonmodule installiert werden. Das SPI Treibermodul kann manuell mittels

geladen werden, um zu prüfen, ob beim Laden Fehler auftreten. Ist dies nicht der Fall, so sind auch im Weiteren keine Fehler zu erwarten. Wenn die Bibliotheken installiert und die Rechte vergeben sind (inkl. Schritt 7) bleiben nur noch die Konfigurationsdatei und das Pythonskript in /home/pi abzulegen und das Startupskript in /etc/init.d/ zu kopieren. Zuletzt dann noch den init.d neu starten oder den Raspberry einfach neu starten. Soll openHAB beim Start automatisch starten kann man im crontab auch die folgende Zeile eintragen:

Diese Zeile wird beim Reboot ausgeführt und startet openHAB. Ggf. müssen natürlich die Pfade angepasst werden.

Konfigurationen auf der openHAB Installation

Auf der openHAB Installation, egal ob Raspberry PI, Linux, Windows etc., muss zuerst das piface Addon aus dem Archiv in das Addon-Verzeichnis kopiert werden. Ist dies getan muss wenigstens ein Wert der PiFace-Konfiguration in der openhab.cfg angepasst werden, nämlich die IP unter der der Raspberry mit dem PiFace zu erreichen ist. Der entsprechende Eintrag hierzu ist:

Alle anderen Werte können auf Default verbleiben. Eventuell kann der Watchdog-Intervall mit dem Eintrag

verkürzt werden, wenn ein Ausfall der Erreichbarkeit des PiFace schnell erkennbar sein soll. Sind diese beiden Konfigurationen vorgenommen kann openHAB gestartet werden. Idealer Weise erscheinen keine Fehlermeldungen. Falls Meldungen über Timeouts angezeigt werden ist vermutlich die IP des Raspberry falsch oder das ohpiface Skript (siehe /etc/init.d des vorigen Kapitels) ist nicht gestartet worden und Anfragen des openHAB Bindings werden somit nicht beantwortet.

Traten keine Fehler auf oder wurden diese beseitigt können die Items in der openHAB Konfiguration angelegt und in der Sitemap sichrbar gemacht werden. Die Standardkonfiguration der Items sieht dabei wie folgt aus:

Zu beachten ist auch, dass das Binding nur die Typen Switch und Contact unterstützt! Ein Switch ist zum Setzen/Aktivieren eines der acht Ausgänge des PiFace sinnvoll, der Contact liest von einem der Eingänge (hier 1). Letztendlich existiert noch ein Watchdog der auf Null fällt, wenn das PiFace nicht erreichbar ist. Der entsprechende Schalter dient hier nur zur Anzeige des Zustandes, nicht jedoch zum Schalten.

Im letzten Schritt werden die einzelnen Intems noch in die Sitemap eingetragen, um im Userinterface sichtbar zu werden.

Auf eine Betätigung des des Schalters „Switch 1“ sollte nun eine LED angehen und ein klicken zu hören sein, da die Ausgänge 0 und 1 parallel auf die Relais des PiFace geschaltet sind. Diese beiden Ausgänge lassen sich daher sehr gut zum Testen nutzen.

Eine Regel um sie alle zu schalten…

Neben dem einzelnen Schalten der Ausgänge ist es nun ein Leichtes alle Eingänge oder Untergruppen davon gemeinsam zu schalten. Werden die Ausgänge mit den obigen Benennungen weitergeführt und ein weiterer Switch „PifaceSwitchAll“ eingeführt, so können mit der folgenden Regel alle Ausgänge gleichzeitig ein- oder ausgeschalten werden.

Genauso lassen sich natürlich beliebige Gruppen der Ausgänge zusammen schalten, die Zusammenstellung hängt hier primär vom Anwendungsfall und denangeschlossenen Verbrauchern ab.

8 Comments on PiFace Integration in openHAB

  1. Hallo Matthias,
    entlich habe ich mal eine Seite mit einer IP Adresse für das Pyface gefunden. Leider ohne Erfolg. SPI Modul geladen – unter dev spidev0.x vorhanden – phyton installiert – ohpiface gestartet. Trotzdem Timeout Kannst Du mir helfen?

    Gruß Dieter

      • @Matthias Die Installation an sich hat funktioniert. Der Server startet automatisch mit dem booten des R.pi. Dies kann mit dem Stop Befehl sudo ./ohpiface Stop kontrolliert werden. Auch der Start läuft ohne Meldung. Allerdings kann habe ich so noch keine IP Adresse des OHPiface Servers die ich in openhab.cfg eintragen kann. Mir ist nicht ganz klar wo diese Adresse festgelegt wird. Es wird immer nur beschrieben, dass hier die Adresse eingetragen des Piface Servers einzutragen ist, jedoch nicht wie ich diese Adresse erhalte. Genau hier vermute ich mein Problem.

        • @Dieter: Die IP ist doch die IP des Raspberry, der Prozess hat doch keine eigene IP! Eventuell meinst Du aber garnicht die IP, sondern den PORT? Dann musst Du „netstat -anb“ bemühen und nach der Zeile schauen wo rechts der OhPiface Prozess angegeben ist.

          • @Matthias:o.k. werde ich am Wochenende probieren. Ich hatte bei der Fehlersuche in der Datei ohpiface.py eine Zeile mit einer IP Adresse gefunden. Daher war ich der Auffassung das der Prozess eine eigene IP hat. Danke für den Hinweis.

  2. @Matthias: Der ohpiface Prozess taucht nicht in der netstat Liste auf. Ein nochmaliges Starten des Prozesses bringt jedoch die Fehlermeldung. Laufwerk bereits vorhanden. Beim ersten Stop erfolgt eine entsprechende Quittierung. Beim zweiten Stop, das kein dienst vorhanden ist. -b als option kennt netstat nicht. Daher habe ich nur die Option -an angegeben. Wenn ich in ohpiface.py debug = True setze so erscheint beim Start des Servers noch die Ausgabe der IP Adresse. Sonst jedoch keine weiteren Fehlermeldungen. Fehlermeldung Openhab:
    2016-03-06 17:11:11.684 [ERROR] [.piface.internal.PifaceBinding] – Failed to send command (14) to 10.45.66.7:15432 (attempt 2)

    java.net.SocketTimeoutException: Receive timed out

    at java.net.PlainDatagramSocketImpl.receive0(Native Method) ~[na:1.7.0_40]

    at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:145) ~[na:1.7.0_40]

    at java.net.DatagramSocket.receive(DatagramSocket.java:786) ~[na:1.7.0_40]

    at org.openhab.binding.piface.internal.PifaceBinding.sendCommand(PifaceBinding.java:298) [bundlefile:na]

    at org.openhab.binding.piface.internal.PifaceBinding.sendCommand(PifaceBinding.java:268) [bundlefile:na]

    at org.openhab.binding.piface.internal.PifaceBinding.sendWatchdog(PifaceBinding.java:233) [bundlefile:na]

    at org.openhab.binding.piface.internal.PifaceBinding.execute(PifaceBinding.java:98) [bundlefile:na]

    at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) [org.openhab.core_1.8.0.jar:na]

    at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) [org.openhab.core_1.8.0.jar:na]

  3. Hallo, habe selbiges Problem, mit dem binding, gibt es irgendwelche Tricks dafür?

    Nutze neustes raspbian
    Rpi3 und
    Pi Face digital 2

    Würde mich über Lösungsvorschläge freuen

    Mit freundlichen Grüßen
    Matthias

    • Servus,

      Deinen Kommentar hatte ich wohl übersehen, daher kurz noch eine (unbefriedigende) Rückmeldung: Ich bin mit Openhab bisher nicht warm geworden, da ich eigentlich immer nur irgendwelchen Fehlermeldungen nachgeforscht und über, für mich, nicht nachvollziehbar dokumentierte Einstellungen geforscht habe. Daher habe ich Openhab beiseite gelegt und kann daher auch nicht mehr weiterhelfen.

      vg Matthias

Schreibe einen Kommentar zu Matthias Stübner Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


8 + zwanzig =