Linux-Projekte für den Raspberry Pi,
die mit Python realisiert wurden
Vorgestellt von J. Hoppe



Vorgeschichte + Ausblick



Angefangen hat alles schon, als ich noch im Kindergartenalter war, so die Erzählungen. Da gab es bei den LEGO-Bausteinen so einen durchsichtigen, den konnte man von innen beleuchten. Dazu wurden zwei kleine Kabel, mit Steckerchen auf jeder Seite, angeschlossen und an eine Batterie (ich glaube so eine 4,5 Volt Flachbatterie) angeschlossen. Hochinteressant (in dem Alter!). Irgendwann gab es keine volle Batterie zu Hause, da kam ich auf die vermeindlich gute Idee, das Ding mit den Kabeln an eine Steckdose anzuschließen (Schukosteckdosen gab es zu der Zeit bei uns noch nicht, Kindersicherungen: völlig unbekannt). Was soll ich sagen? DANACH ging das Licht nie wieder!

Alles was mit Technik zu tun hatte, hat mich damals schon fasziniert. Da gab es (als Schulanfänger) so eine kleine Quasi-Uhr mit Aufziehwerk. Wenn man da einen Knopf gedrückt hat, sind die Zeiger gelaufen, bis man einen anderen Knopf gedrückt hat. Habe ich dann wohl auseinandergenommen um zu sehen, wie das ganze funktioniert. Danach hatte ich Teile übrig und nichts ging mehr.....
Kennt ihn noch jemand, den TRIX Metallbaukasten? Hatte ich! Sogar mit Elektromotor. Wen wundert's, der ging nicht sehr lange.

In meiner Lehrzeit kam ich dann mal irgendwann mit IC's in Kontakt. Ich war begeistert, was konnte man damit alles machen! Damals gab's nur 'freifliegende' Verdrahtungen. Kein Experimentierboard, keine Pertinax- oder Lochraster-Platine, nichts. Die Drähte wurden einfach von Pin zu Pin, von IC zu IC gelötet. Fertig! Gab schöne Sachen dabei: Klatschschalter, elektronische Würfel, Digitaluhr (mit Ziffern­anzeige­röhren und Weckfunktion. Ach ja: DIE war auf einer Lochrasterplatte zusammengebaut), später kam dann noch ein Frequenzmesser dazu, und und und ......

Meinen ersten 'Rechner' habe ich mir dann auch irgendwann zugelegt: Einen TI 57. Na ja, kein Rechner im heutigen Sinne. Eher das, was man heutzutage einen Taschenrechner nennt. Der hatte schon 7-Segment LED-Anzeigen! War aber programmierbar und hatte etliche Speicherregister. Damit habe ich meine ersten Programmierschritte gewagt.

In der ersten Arbeitsstelle kamen dann die Personalcomputer auf. Tolle Dinger. Wir hatten dort so einen PET (wer den noch kennt) mit integriertem Bildschirm und Kassettenrecorder für Programme. Wenig später habe ich in irgendeiner Zeitung dann den Sinclair ZX 80 gesehen. Den ersten Rechner für unter 500 D-Mark! DEN MUSSTE ICH HABEN! Was man als Zubehör dafür benötigte? Einen Fernseher, an den der Rechner per Antennenkabel angeschlossen wurde und einen separaten Kassettenrekorder, um Programme speichern und laden zu können. Hatte einen Hauptspeicher von 4KB (in Worten: vier Kilobyte). Darin war aber auch noch der Grafikspeicher enthalten. Man kam damit vielleicht auf ein paar Dutzend Programmzeilen. Dann war Schluss. Ach ja, er konnte nur ganze Zahlen verarbeiten. Kommazahlen war nicht! Als Zusatz konnte man einen externe Speichererweiterung anstecken. Die hatte ganze 64kB. Damit konnte man dann aber auch recht lange Programme erstellen. Nach geraumer Zeit gab es das EPROM vom Nachfolger (ZX81), auch für den ZX 80 zu kaufen. Der konnte dann viel mehr, auch Gleitkomma!

Über Spectrum und QL bin ich dann über die Jahre zum ersten DOS-Rechner gekommen. Glaube es war der Amstrad 1620 mit 8086 Prozessor und 640k (ja, kilo!) Hauptspeicher. Sogar eine Festplatte mit 20 MB (MegaByte) war integriert! Ein Bildschirm war genauso dabei wie ein Floppy-Laufwerk (5“ mit 360k maximaler Speichergröße). Hat damals so um die Zweieinhalbtausend D-Mark gekostet. Muß wohl so um die Mitte der 80-er Jahre gewesen sein.
Ach ja, der mitgelieferte Monitor war natürlich schwarz/weiß, bzw. 'Amber'.

Irgendwo habe ich noch ein Angebot aus dieser Zeit für einen der gerade neu auf den Markt gekommenen 80386-er Rechner gefunden. Der sollte damals so ca. 12.000 D-Mark kosten (für diejenigen, die den Umrechnungskurs nicht mehr kennen: das wäre heut so ca 6.000,-- Euro).

Meine Rechner wurden nach und nach immer schneller, mit immer mehr Hauptspeicher und immer größeren Festplatten. Klar, daß ich das Aufrüsten selbst übernommen habe: neues Motherboard, Festplatte, Floppy (3,5“ mit 1,44 MB Kapazität). Hin und wieder mußte wegen höherem Energieverbrauch ein neues Netzteil her, …...

Der erste Rechner (Sinclair) hatte ein eigenes Betriebssystem, das nicht verändert werden konnte . Programmiert wurde im Sinclair-eigenen Basic. Beim ersten DOS-Rechner war schon Windows 3.1 vorhanden. Natürlich nicht Multitaskingfähig. Wenn ich Word 5.0 offen hatte und mal eben eine andere Datei ansehen wollte: erst Word beenden, dann die Textdatei (oder was sonst) öffnen. Mehrere Fenster ? Aber nicht doch!

Nach etlichen Windows-Versionen (95, 98, NT) [später dann auch 2000 und XP] hatte ich zufällig im Radio von einem neuen Betriebssystem gehört. Es nannte sich OS-halbe. Nein, Spaß beiseite es war OS/2 (OS Zwei). Hab's natürlich gekauft und ausprobiert. Schöne Sache. Da gab's sogar eine Sprachsteuerung, die ganz passabel funktionierte. Und wenn ein Programm mal abstürzte, mußte man nicht gleich den gesamten Rechner neu starten, wie sonst bei Windows üblich! Zu der Zeit kam so langsam das Internet auf. OS/2 hatte auch eine Browser, mit dem man dort surfen konnte. Aber kein Vergleich zu heute!

Neue Betriebssysteme waren für mich schon immer hochinteressant. Da gab es so viel neues zu entdecken. Daher habe ich mir dann auch mal SuSE-Linux geleistet. Viele neue Funktionen und Programme. Neue Versionen gab es als Downloads immer UMSONST (Windows???). Aber eines hatten bisher alle Rechner gemeinsam. Bei externen Geräten war man auf das angewiesen, was es auf dem Markt gab. Das wurde zunächst per serieller Schnittstelle oder Parallelport und dann per USB abgeschlossen. Eigene Geräte? War SCHWIERIG bis unmöglich (das änderte sich erst mit dem Raspberry. Aber dazu komme ich später).

Je schneller die Rechner wurden und je mehr Speicher und Festplattenkapazität sie hatten, um so mehr Energie benötigten sie natürlich auch und produzierten dementsprechend Abwärme. Da habe ich manchen Sommertag den Rechner ausgeschaltet, um die Raumtemperatur nicht noch höher werden zu lassen. Also kam mir die Idee, eine abgespeckte PC-Version (evtl. Barebone) zu erwerben. Bei der Suche fiel mein Augenmerk allerdings bald auf den Winzling Raspberry Pi, der noch nicht lange auf dem Markt war. So wurde dann eine Version 1B gekauft, die gerade mal 1-2 Watt Leistung benötigt.
Da ich bereits SuSe Linux und Linux Mint auf dem 'großen' Rechner installiert hatte, waren der Download des Betriebssystems und das Aufspielen auf die SD Karte kein großes Hindernis. Jetzt ging es daran, die Anschlüsse der GPIO zu erkunden.

Zunächst mußte ich mich mit der Programmiersprache Python anfreunden. Diese wurde gewählt, da sie relativ leicht zu erlernen ist und großenteils an Basic/ Visual Basic erinnert, mit denen ich schon vertraut war. Zuerst ging es an die 'basics'. Nach und nach wurden immer mehr (reichlich vorhandene) Module erkundet.
Aus der Python Anfangs-Zeit stammen auch noch einige Programmteile die in diesen Präsentationen verwendet werden. Daher erheben die hier vorgestellten Programme weder Anspruch auf optimale Funktionalität oder Laufzeit, noch wurde die objektorientierte Programmierung konsequent angewendet.



Die dargestellten Projekte haben sich im Laufe der Zeit nach und nach eigentlich 'von selbst' ergeben. Zunächst war es nur die Darstellung von Zuständen und Einzelwerten der Hausautomatisierung (HomeMatic), die (mal wieder) nur über eine Browseroberfläche zu erreichen waren. Erste Erfahrungen mit der SPI-Schnittstelle wurden zunächst mit einem 3-zeiligen LCD Text-Display gemacht. Anschließend wurde ein pixelbasiertes Grafikdisplay angeschloßen. Da dort Text nur als 'Grafik' angezeigt werden konnte, mußten dann die ersten Zeichensätze entwickelt werden. Nach und nach wurden verschiedene Grafiken mit Werten der HomeMatic dargestellt.

Um festzustellen, ob häufig auftretende Kopfschmerzen im privaten Umfeld eventuell mit dem Luftdruck zusammenhängen könnten (oder der schnellen Luftdruckänderung), wurde dann an einem separaten RaspberryPi ein Luftdruckmesser über die SPI-Schnittstelle angeschlossen, der die alle 2 Sekunden gemessenen Werte in einer Datei abspeicherte. In diesen 7x24h laufenden Rechner wurde dann auch gleich ein Syslog-Server integriert. Zur besseren Lesbarkeit der Grafik wurden immer wieder größere LCD-Display erworben und angeschlossen. Dabei waren meist auch Anpassungen der Treiber notwendig.

Nebenbei wurden auch die grafischen Anzeigen von zwei Webseiten mit Wetterwerten in Angriff genommen. Dabei handelte es sich um die Wetterdaten vom BR (Bayerischen Rundfunk) und der (damals) 14-tägigen Wettervorhersage von wetter.com.

Nachdem kürzlich eine PV-Anlage (Solaranlage) mit Stromspeicher installiert wurde, sollten auch diese Daten wieder grafisch dargestellt werden. Zunächst waren das die Zählimpulse des neu installierten Zwei-Wege Zählers (über einen HomeMatic Sensor), danach wurde die optische SML-Schnittstelle des Zählers mit einer selbst entwickelten Leseeinheit ausgelesen, weiterverarbeitet und angezeigt.
Um bei dieser Programmentwicklung die optischen Daten des Stromzählers darstellen und beurteilen zu können, wurde dabei auch gleich das Voltmeter und das Mini-Oscilloskop entwickelt. Hierzu wurde ein 8‑kanaliger AD-Wandler an die SPI-Schnittstelle angeschlossen. Leider arbeitet hier das interpretative Python so langsam, daß mit dem Mini-Oszi nicht mehr als ein paar Hundert Hertz sicher dargestellt werden können.


Vorschau - heutzutage würde man das wohl als Roadmap bezeichnen -


Was

Kurzbeschreibung

Aktueller Stand

Spannungswandler Solar

Wenn die technischen Voraussetzungen geschaffen sind wird der Spannungswandler der Solarzellen (mit eigenem WEB-Server) in Angriff genommen

Projekt wird bereits vorgestellt, ist aber noch nicht ganz fertig (23.01.2017)

Akku-speicher Solar

Wenn die technischen Voraussetzungen geschaffen sind wird der Akkuspeicher der Solaranlage in Angriff genommen

Projekt wird bereits vorgestellt, ist aber noch nicht ganz fertig (23.01.2017)

E-Mail Statusanzeige

Kann das Eintreffen neuer E-Mail Nachrichten auf dem LCD angezeigt werden?

Erste Ergebnisse werden bereits dargestellt. An 'Optik' und Feinschliff wird noch gearbeitet (23.01.2017)

HomeMatic Status/ Meldungen per E-Mail versenden

Können (ohne Add-On in der HomeMatic) Status-/ Alarmnachrichten per E-Mail versendet werden?

Funktioniert seit Oktober 2018.
Ist bereits in die Projekt-Übersicht integriert

HomeMatic Geräte auf LCD darstellen und bedienen

Können einzelne Geräte (Räume) der HomeMatic auf dem LCD an­gezeigt und bedient werden?

In Arbeit (07.08.2017):
Die ersten Vorbereitungen laufen. Per Python-Programm können bereits Licht/ Rollos/ Heizung ausgelesen und z.T. auch schon bedient werden.
Ob eine Adaption an das LC-Display sinnvoll ist, wird sich erst noch erweisen.

HomeMatic Geräte mit LiPo Akku betreiben

Können Stellantrieb und Thermostat der HomeMatic mit LiPo Akkus (3,7V) betrieben werden?

Laut technischer Info von eQ-3 können Gerätedefekte auftreten.
Erste Tests laufen trotzdem (seit EINEM Tag)
LiPo liefert 4.0 Volt. Wird auch im Batteriestatus angezeigt. (25.08.2017)




Die beigefügten Schaltungen und Programm werden als Beispiele zur eigenen Programmentwicklung und zum Verständnis verschiedener Vorgänge zur eigenen Verwendung zur Verfügung gestellt. Die Programm können frei verwendet und/ oder abgeändert werden. Eine Gewährleistung kann dafür aber nicht übernommen werden. Auch übernimmt der Autor keine Haftung für durch diese Programme oder Schaltungen möglicherweise verursachten Schäden.

Die dargestellten Schaltpläne, ohne den sichtbaren Schriftzug 'fritzing', und Auszüge aus Datenblättern sind Eigentum der jeweiligen Hersteller. Eine eventuelle eigene Verwendung muß im Vorfeld mit diesen abgestimmt werden.


Letzte Aktualisierung: 25.08.2017