Hallo zusammen,
Ich hatte schon in einem anderen Post (
http://solarlog.ingmars-bastelecke.net/forum/index.php/topic,85.0.html) berichtet, dass ich die Daten eines Strahlungssensors mitloggen möchte. Dazu habe ich jetzt einen Prototyp erstellt (
http://78.47.21.53/), der aus zwei Komponenten besteht: Erstens einer Erweiterung des solar-loggers, die das Auslesen des Strahlungssensors ermöglicht und die Daten in eine SQLlite Datenbank schreibt. Und zweitens einem Ruby Server, der neben Webseiten auch RESTful Webschnittstellen für den Up- und Download der Seiten bereitstellt. Die Webseiten enthalten eine Javascript Bibliothek, die Daten interaktiv im Browser darstellt. Zum Aufbau:
- Anlage
Hardware: die Wechselrichter und der Strahlungssensors sind über ein I-7561 mit einer Fritz!Box verbunden, die eine 756 kbit DSL Verbindung hat. Als Speicherplatz dient ein alter 512 MB Memorstick
Software: Auf der Fritz!Box läuft der modifizierte Solarlogger und schreibt die Daten in eine lokale SQLite Datenbank auf dem Memorystick. Unabhängig davon läuft ein Shell-Script, das die Daten in der lokalen SQLite Datenbank über die Webschnittstelle mit dem Webserver synchronisiert. Das Script wird per cron halbstündig aufgerufen. Neben der sqlite3 Kommandozeile benötigt es curl zur Kommunikation mit der Webschnittstelle.
- Server
Hardware: Hetzner root server
Software: auf dem Server läuft eine MYSql Datenbank. Die Ruby Webanwendung wird über einen Apache Webserver mit Modrails (passenger) zur Verfügung gestellt.
Ich denke, dass dieser Aufbau eine gute Entkopplung der verschiedenen Aspekte bietet: der solarlogger konzentriert sich auf das Auslesen der Geräte und das Schreiben der Daten in eine lokale Datenbank. Für mich hat das auch den Vorteil, nur wenig in C programmieren zu müssen (meine Kenntnisse sind etwas angestaubt ;-)). Die Synchronisation mit der Aussenwelt läuft separat. Dadurch kann bspw. das Logging weiterlaufen, auch wenn die DSL Verbindung mal nicht besteht. Die Berechnungen auf den Rohdaten können auf dem Server geschehen. Dieser kann dann sowohl die Rohdaten als auch die berechneten Daten per Webschnittstelle zur Verfügung stellen.
Für mich stellt sich jetzt die Frage, wie es weitergeht: Sind meine Änderungen auch für andere interessant und sollen sie ins Projekt integriert werden? Der Code steht auf github (
http://github.com/mbarchfe) zur Verfügung. Er ist in einem Prototyp Zustand und müsste bei der Aufnahme ins Projekt weiter generalisiert werden. Beispielsweise sind die vom WR ausgelesenen Felder noch fest codiert. Die Änderungen am solar-logger sind im Repository solar-logger-sqlite zu finden. Dort sind meine Änderungen ausgehend von Version 0.2.1 zu finden. Der Ruby Server ist im Repository solar-logger-server.
Noch etwas zur Ruby-Server-Komponente: diese muss natürlich nicht auf einer Server-Hardware im Internet laufen. Ich sehe mehrere Möglichkeiten, ohne auszukommen:
Zum einen kann der Server auf dem heimischen PC installiert werden. Auch ohne Apache und Mysql und nur mit Ruby und SQLite. Der PC muss dann auch nicht durchlaufen sondern kann eine Synchronisation mit der Fritz!Box zu beliebigen Zeiten starten. Wahrscheinlich könnte der Server sogar auf der Fritz!Box laufen, denn Ruby steht dort auch zur Verfügung.
Auf der anderen Seite kann ich mir auch vorstellen, den Server als Service zu betreiben. Der Aufwand dafür ("Mandantenfähigkeit") wäre nicht allzu groß. Bestände den Interesse, einen solchen Service zu nutzen? Dann wären insbesondere Fragen des Daten-Backups und Datenschutzes zu stellen.
Gruß
Markus