Ich arbeite viel mit dem Raspberry zur Steuerung und Zustandserfassung. Bisher immer mit Fremdtools direkt auf dem Raspberry. Datenaustausch habe ich meist über eine Datenbank gemacht.
Bis ich kürzlich mal auf die Schnelle ein paar Termeraturen erfassen wollte. Auf der Suche nach einer schnellen Lösung, die sich ohne großen Installationsaufwand realisieren lässt, und auch von Linux nicht so viel Ahnung haben, bin ich zu diesem Projekt gekommen.
Herausgekommen ist eine Delphi-Klasse und ein paar Python-Scripte, die per Shell-Script immerhalb von Sekunden als Service auf eine Raspi installiert sind.
Dieses Konzept möchte ich euch hier zur Verfügung stellen.
Im Wesentlichen besteht das Ganze seitens dem Raspberry aus 2 Python-Scripten.
Das 1. liest laufend alle installierten DS18x20-Temperatursensor und über mittelt laufend die aktuellen Temperaturen per UDP an einen Host.
Das 2. steuert die GPIO-Ports. Zum einen empfängt es ebenfalls über UDP Befehle um einen GPIO-Port auf high oder low zu setzen, und zum anderen könenn andere GPIO-Ports z.B. an einen Taster/Schalter angeschlossen werden, dessen Zustand dann per UDP an eine Host gesendet werden.
Seitens Delphi gibt es die Klasse TRaspiList bzw TRaspi, welche nehmen ein paar Parametern die Liste der GPIO-Ports und DS18x20-Temperaturfühler je Raspi darstellt. Weiterhin beinhaltet die Klasse TRaspi noch eine Thread für den Datenaustausch per UDP.
Das Ganze ist erstmal experimentell und auch relativ schnell von mir erstellt. Die Temperatursensoren funktionieren sehr gut. Auch das Schalten von GPIO-Ports funktionniert sehr gut. Beim Erfassen er GPIO-Eingänge gibt es noch Handlungsbedarf, da diese noch nicht sooo zuverlässig übertragen. Möglicherweise stelle ich das doch teilwiese um auf
TCP.
Aber in meiner kleinen Demo kann man damit schon was anfangen.
Zur Zeit funktionieren folgende Peripherie:
- DS18x20 - 1-Wire-Temperaturfühler
- Zustandanzeige per LED an einem GPIO
- Schalten von 220V mittel Relais an GPIO
- Taster/Schalter an GPIO z.B: Öffnungskontakt Servertür, etc
- PIR an GPIO - Bewegungsmelder
Hinzufügen möchte ich noch:
- Raumklimaerfassung über BMP o.ä.
- Abrufen von Kamerabildern
- evtl. Abrufen von Linux-System-Informationen
- Lesen von 433 MHz-Empängern
- Senden von 433 MHz
Wer das also mal ausprobieren will, und/oder mit einem Raspberry rumspielen will, sei gerne dazu eingeladen. Wer gerade hinsichtlich der Linux-Python-Scripte etwas dazu beitragen will, sei ebenfalls herzlich eingeladen.
Auch die Delphi-Units sind erstmal fix zusammengeklöppelt und sind inhaltlich allenfalls im Alpha-Stadium. Also nicht zuviel erwarten.
Wer es testen möchte, hier noch der Hinweis: In den Python-Scripten müssen noch
IP-Adresse und GPIO-Ports angepasst werden, damit das funktioniert. Gleichermaßen natürlich im der Demo.
Im angehänten Archiv befinden sich 3 Archive:
- Pi2Delphi_Units.rar (Beinhaltet 2 Units)
- RaspberryDemo.rar (Ganz einfaches Beispielprogramm, Pi2Delphi-Units sind enhalten)
- p2dinst.tar.gz (Das muss auf dem Raspberry z.B: im Verzeichnis /home/pi enpackt werden und mit "sudo sh instpi2delphi.sh" installiert werdnen)