|
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')!