Linux-Projekte für den Raspberry Pi,
die mit
Python realisiert wurden
Temperaturwerte der HomeMatic




So, jetzt waren die gesammelten Daten also in der HomeMatic verfügbar. Was aber nun?



Bildquelle: eQ-3/ Homematic

In der Einstellung der HomeMatic CCU2 konnte der SSH-Zugang (Secure Shell) freigegeben werden. (Bei der Version 1 gestaltet sich der Vorgang etwas anders, komplizierter). Dann könnte man z.B. mit dem shell-Befehl 'scp (SecureCoPy)' die Daten transferieren.

Aber damit hätte ich wieder das Problem gehabt, wie ich das Passwort sicher übertragen kann. Im Programm wollte ich das unverschlüsselt nicht hinterlegen!

Also was tun?
Schließlich habe ich herausgefunden, daß es bei der HomeMatic eine 'Service'-Port (8181) genannt '
Remote HomeMatic Script Schnittstelle' gibt, die HTTP-Header empfangen und verarbeiten kann. Also habe ich ein Programm geschrieben, das an diesen Port GET/POST-Header schickt. Dabei hat mir dieser Forumsbeitrag sehr weiter geholfen und mich zunächst erst einmal auf die Idee gebracht.
Das dort dokumentierte PHP-Programm habe ich dann an Python angepasst. Nun war es möglich, 'Scripte' (dazu gibt es bei eQ-3 eine eigene, unvollständige Dokumentation) an die HomeMatic zu senden, die dort verarbeitet wurden und die Ergebnisse der Verarbeitung dann auf dem gleiche Wege als Antwort zurückgeschickt wurden! Ein Passwort ist dazu nicht notwendig. In dieser Antwort ist zusätzlich zwar auch XML enthalten, aber das ließ sich herausfiltern. Die Anwendung läuft inzwischen seit mehren Jahren absolut stabil, ohne den kleinsten Fehler. Mit diesem Hilfsmittel konnte ich also nun die Temperaturdaten, die ich inzwischen auf der HomeMatic gespeichert hatte, auf den Raspberry übertragen.

Das
liest sich aber leichter als es sich verwirkliche ließ. Hatte von HTTP und den Headern keine Ahnung und mußte mir alles mühsam erarbeite, bzw. ausprobieren (hat mich etliche Nachtstunden gekostet). Leider ist die HomeMatic was die ServiceSchnittstelle und HTTP angeht absolut pingelig. Hier muß jedes Komma, jeder Punkt stimmen. Auch die Groß/Kleinschreibung muß exakt passen. Der HTTP-Interpreter der HomeMatic gibt leider keine Fehlermeldungen aus (wohin auch? Es gibt keine Anzeigedisplay!)
Später habe ich herausgefunden, daß sehr wohl Fehlermeldungen vorhanden sind, ABER IM SYSLOG!



Programmentwicklung

Also ging es nun daran, die nun von der HomeMatic auf den Raspberry transferierten Daten zu verarbeiten und am LC-Grafikdisplay anzuzeigen
Zum damaligen Zeitpunkt hieß das noch AUSPROBIEREN (learning by doing). Liniendiagramme mußten entwickelt werden, und die automatische Skalierung, genauso wie Balkendiagramme , ebenso wie eine Auswahl- und Menüstruktur zur Selektion und Anzeige.

Dabei sind die folgenden beiden Grafikanzeigen entstanden:


Der grafische Tages-Verlauf eines in der HomeMatic gespeicherten Temperatursensors wird hier angezeigt.
Durch drücken der Tasten der 'Eingabeeinheit' kann zum vorherigen, bzw. folgenden Temperaturverlauf geschaltet werden



Angezeigt wird hier die Temperaturdifferenz von jedem Innensensor zu dem entsprechenden Außensensor als Balkengrafik. D.h. ist es draußen wärmer als drinnen, gibt es einen ausgefüllten Balken vom Pluszeichen aus nach rechts. Ist es umgekehrt (draußen kühler als drinnen) zeigt ein nicht ausgefüllter Balken nach links.
Je länger der Balken, umso größer die Differenz

Das hat sich im Sommer als SEEEHR praktisch erwiesen um feststellen zu können, wann die Fenster geöffnet/ geschlossen werden konnten/ mußten.


Auch hier wieder die Hinweise:

  • Nein, das Display kann KEINE Farben darstellen! Die in den Abbildungen rosa erscheinenden Linien erscheinen auf dem Display in einem Grauton. Die Farbe wurde bei der Gif-Kodierung der LCD-Rasterdaten anstelle des Grautons in der Farbtabelle kodiert.

  • Die weißen Bereiche um die Grafiken kommen daher, weil diese Darstellungen ursprünglich für ein viel kleineres Display entwickelt wurden, aber sich die Zeit noch nicht ergeben hat, die entsprechenden Anpassungen vorzunehmen (vielleicht war ich auch nur zu faul. Oder 'never touch a running unit = Faß nichts an was läuft, irgendetwas könnte nachher nicht mehr gehen')!