Aufbauanleitungen

Aus FreeSol-Wiki

Vorbemerkung

Auf dieser Seite sind detailliertere Bestelllisten und Aufbauanleitungen für die einzelnen Arbeiten zusammengestellt.

Für Eilige ist auch ein Schnelleinstieg beschrieben.

Pakete und Bestelllisten

Allgemeines

  • Alle Preise sind Bruttopreise.
  • Versandkosten sind in der Regel nicht angegeben.

Grundpaket: FreeSol-Logger für S0-Solarenergieerfassung

Das Grundpaket enthält alle Hardware-Komponenten, die zum Aufbau und zur Programmierung eines FreeSol Loggers notwendig sind, wenn ein S0-Signal vorhanden ist. Sinnvollerweise startet man mit dem Grundpaket so wie im Schnelleinstieg in vier Schritten beschrieben.

Bestellliste Grundpaket.png

Anmerkungen:

  • Das NetIO-Board kann auch als Bausatz für ca. 20 EUR bezogen werden, Bestellnummer 810 058)
  • Die Pos. 5 wird nur benötigt, wenn man den Heartbeat des Boards auslesen will, was bei der Fehlersuche helfen kann.
  • Der Pocket AVR Programmer für 13 EUR bei Watterott hat leider nicht funktioniert. Zwar kann ich kleine Programme aufspielen, aber er scheint an der 64k-Grenze zu scheitern. Eine Diskussion mit dem Support hat das Problem leider nicht lösen können, im Moment deshalb auf Eis.
  • Der Programmieradapter in Position 10 ersetzt Positionen 8+9. Er ist inzwischen erfolgreich getestet, hat jedoch immer einige Wochen Lieferzeit aus Hongkong. Über Ebay z.B. hier: http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=370532286436
  • Pos. 11: Die Kontroll-LED gibts natürlich auch in anderen Farben oder im 10er-Pack
  • Pos. 12: Die 220-Ohm Widerstände gibts nur in der 100-Stück-Packung, weil sie so billig sind. Man braucht einen für die Kontroll-LED, und kann zur Absicherungen gegen unbeabsichtigtes Verpolen einen weiteren in die Leitung zwischen S0- und Masse klemmen.
  • Pos. 13: Der Entstörkondensator wird nur optional zur Reduzierung von Störimpulsen benötigt und sollte ca 12 nF haben.

Erweiterungspaket S0-Zähler: Zum Erzeugen eines nicht vorhandenen S0-Signals

Dieses Paket wird dann benötigt, wenn nirgends in der Anlage ein S0-Signal vorhanden ist. Alternativ könnte man versuchen, das S0-Signal günstiger zu erzeugen, z.B. durch Auslesen einer am Zähler blinkenden LED oder durch Anbringen einer Lichtschranke am Drehrad des Ferraris-Zähler.

Bestellliste S0-Zaehler.png

Anmerkungen:

  • Weil nicht vernachlässigbar habe ich hier Versandkosten separat aufgeführt.
  • Der Zähler langt z.B. für meine 11 kW-Anlage, für kleinere Anlagen gibts dort noch etwas günstigere Modelle

Erweiterungspaket SML-Lesekopf: Zum Einlesen von SML-Signalen aus einem Bezugs-Einspeisezähler

Mit diesem Paket wird zusätzlich zu der erzeugten Energie der Solaranlage auch ein SML-fähiger Zweirichtungszähler (Bezugs-/Einspeisezähler) ausgelesen. Die Daten werden ebenfalls vom Logger erfasst und zwischengespeichert. Für die Visualisierung udn dauerhafte Speicherung empfiehlt sich die kostenfreie Zusatzsoftware FreeSol EV aus dem Downloadbereich. Bestellliste SML-Zaehler.png

Anmerkungen:

  • Pos. 31: Wir brauchen davon nur einen Phototransistor
  • Pos. 33+35: Packung mit je 100 Stück
  • Pos. 39: Kann man zerschneiden statt Kabel an einen Stecker hinzulöten
  • Pos. 40: Mit dem Steckboard kann man die Schaltung zunächst bequem oder dauerhaft fliegend aufbauen und muß gar nicht löten.
  • Falls kein USB-to-Seriell-Adapterkabel vorhanden ist und der SML-Zähler auch mal am PC ausprobiert werden soll (nur bei Einsatz des AVR-Boards benötigt man diesen Adapter nicht), kann man sowas ebenfalls bei Pollin mitbestellen (Best.-Nr. 721 034, 4,95 EUR). Dieses Kabel ist optional auch schon im Grundpaket aufgelistet, da man dort damit die serielle Schnittstelle auslesen kann.
  • Als Variante kann man einen aufgebauten ähnlichen Volkszähler-SML-Schreib-Lesekopf verwenden (18 EUR Bauteile inkl. Verstand + 5 EUR Lötservice).

Erweiterungspaket Powerline: Netzwerkübertragung über Stromkabel

Dieses Paket weird dann benötigt, wenn sich am Anschlußort des FreeSol-Loggers kein Netzwerkanschluß befindet und die daten über die Stromleitung übertragen werden müssen. Aufgrund der Kosten für Hardware und Stromverbrauch (6 W Dauerbetrieb entspricht 12 EUR pro Jahr) sollte man versuchen, dies zu vermeiden. Bestellliste Powerline.png

Anmerkungen:

  • Pro Adaper ca. 3.4 W Dauerleistung

Hardwarearbeiten und Aufbau

Bereitstellung eines S0-Signals

Ein S0-Signalpuls enthält die Information, dass eine bestimmte Menge Energie (meist eine Wattstunde "Wh") erzeugt wurde. Dieses Signal bildet die Basis für die FreeSol-Datenerfassung.

Wenn der vorhandene Stromzähler oder der Wechselrichter bereits ein freien S0-Ausgang besitzen, kann man diesen nutzen. Ist noch kein Signal vorhanden, muss man einen S0-Zähler einbauen. Ist ein Signalausgang vorhanden, aber bereits anderweitig belegt, kann man das Signal mit einer kleinen selbst gebastelten Zusatzplatine aufspalten und damit mehrere S0-Eingänge bedienen.

Für die Bereitstellung des S0-Signals sind also fünf mögliche Fälle zu unterscheiden, die in den folgenden Unterkapiteln im Detail beschrieben sind.

Stromzähler mit freiem S0-Ausgang

Im günstigsten Fall ist ein Stromzähler mit freiem S0-Ausgang vorhanden. Hier sind keine weiteren Schritte nötig: Der S0+ (plus) Ausgang des Stromzählers wird direkt mit dem Eingang (PIN1 des EXT-Steckers) des Freesol-Boards verbunden. Der S0- (minus) Ausgang des Stromzählers wird direkt an die Masse des Freesol-Boards gelegt. Dazu den GND-Ausgang an der blauen Schraubleiste verwenden, an der auch die 5V-Versorgungsspannung anliegt. Wer sicherheitshalber einen Kurzschlußschutz gegen Verschaltungsfehler beim Anschließen einbauen will, baut noch einen 200-Ohm-Widerstand ein, sit aber nicht nötig. Der PIN1 ist intern über einen Pullup-Widerstand auf 5V hochgezogen und wird bei Anliegen eines S0 Signals auf Masse gezogen und dabei ein Puls im Freesol-Board generiert.

Werden Störimpulse im Logger sichtbar (merkt man vor allem, falls Nachts punktuell Erträge angezeigt werden), kann man diese mit einem zusätzlichen 10 nF-Kondensator zwischen S0- und S0+ herausfiltern.

Stromzähler mit belegtem S0-Ausgang

Auch noch kostengünstig lösbar ist der Fall, dass ein Stromzähler oder Wechselrichter mit S0-Ausgangssignal vorhanden ist, der Signalausgang aber belegt ist (z.B. durch einen anderen Datenlogger wie den Photon Logger). Der Einsatz von FreesSol kann hier durchaus trotzdem Sinn machen, weil der Photon-Datenlogger die Tagesdaten typischerweise erst am Mittag des Folgetags zur Verfügung stellt und während des laufenden Tages keinerlei Informationen anzeigt. Auch lassen sich die Photon-Daten nicht als öffentliche Webseite zur Verfügung stellen. Mit dem FreeSol-Logger hingegen kann man zusätzlich die laufenden Tagesdaten und aktuellen Leistungswerte ansehen.

Für den Einbau eines weiteren Loggers muß jedoch das S0-Signal in zwei Signale verdoppelt werden. Hierzu steht eine kleine Schaltung zur Verfügung, die mit wenig Aufwand und Kosten aufgebaut werden kann.

Schaltung S0-Verdopplung.jpg

Die im Bild gezeigte Schaltung spaltet das S0-Signal eines Stromzählers in drei Signale auf. Noch einige Hinweise:

  • Im Kern besteht die Schaltung aus einem Optokoppler CNY17 pro benötigtem Ausgang, der das Signal etwas verstärkt und galvanisch trennt.
  • Beim Kauf des Optokopplers CNY17 habe ich (anders als im Bild angegeben) die Typvariante 3 gekauft, diese hat eine höhere Verstärkung.

Stromzähler mit blinkender LED als Pulssignal

Als Alternative lassen sich andere Pulssignale so umwandeln, dass sie wie S0-Signale verwendet werden können. Hier kommen entweder LEDs infrage, die mit einer bestimmten Rate (Pulse/KwH) synchron zur Stromerzeugung blinken. Für die Verwendung von Blinksignalen einer LED kann man entweder das Signal mit einem Transistor an den Eingang des Boards gelegt werden oder in der Schaltung aus dem nächsten Kapitel die Lichtschranke durch die LED ersetzen. Bei Problemen gerne Rückfragen.

Lichtschranke für Drehrad eines Ferraris-Zählers

Es gibt verschiedene Ansätze, mit Hilfe selbergebauter Photodioden-Empfänger das S0-Impulssignal durch Beobachtung des Drehrads am S0-Geber zu generieren. Man verwendet Infrarot-Dioden, weil diese weniger durch Tageslicht beeinflußt sind und Silberrad und rote Markierung wohl das Infrarotlicht unterschiedlich reflektieren. Jede volle Umdrehung generiert einen Puls, Zähler haben oft 75 Umdrehungen/kWh.

Es gibt eine kommerzielle Lösung, die allerdings aus einem SMD-Bausatz zum selber Löten besteht, den ich nicht aufbauen kann. (EM 100-IR von ELV.)

Ich habe selbst mit solchen Lösungen noch wenig Erfahrung bis auf einen ersten Versuch: einen entsprechender Sensor habe ich vorne am Glas über der Drehscheibe des analogen Drehstromzählers aufgeklebt. Eine Bauanleitung mit Schaltplan zu dem Sensor für den analogen Drehstromzähler findet sich hier, eine Stückliste mit Bestellnummern von Conrad hier. Die Testschaltung hat zwar funktioniert, den Dauerbetrieb kann ich aber nicht beurteilen. Ich wäre hier jedoch über alle Berichte oder Interessenten für einen Test dankbar.

Kein S0-Signal vorhanden

Im schlechtesten Fall liefern weder der bisherige Stromzähler noch der Wechselrichter ein S0-Signal. In diesem Fall muß in der Regel ein Stromzähler mit S0-Signal eingebaut werden. Hierbei folgende Hinweise:

  • Der S0-Stromzähler wird an derselben Position eingebaut, an der ein Stromzähler die gesamte (=Einspeisung + Eigenverbrauch) Energie aus der Solaranlage mißt.
  • Den Einbau muß ein Installateur durchführen.
  • Ich würde den bestehenden Stromzähler nicht austauschen, sondern in Serie geschaltet mitlaufen lassen. An den Anlagen hängen als geeichte Zähler meist alte günstige mechanische Drehstromzähler, deren Eichgültigkeitsdauer 16 Jahre beträgt. Die elektronischen Zähler haben keine so langen Eichdauern, günstige Zähler sind sogar ungeeicht. Insofern ist in der Regel wohl eine Lösung mit zwei Zählern in Reihe günstiger, da man ja den Loggerzähler auch ohne Eichung betreiben kann.
  • Die elektronischen S0-Zähler liefern in der Regel 1000 Zählerpulse pro kWh.

Internetzugang am Aufstellort des AVR-NetIO-Boards bereitstellen

Mit Netzwerkkabeln

Im einfachsten Fall kann man an den Aufstellort des Loggers ein netzwerkkabel vom Router aus ziehen. Dies schafft eine sichere Verbindung, spart die Anschaffungskosten für Powerlinegeräte und benötigt außerdem keine Energie (2 Powerlineadapter à 3 Watt kosten ca 6 EUR Strom pro Jahr).

Mit Powerline Adapter

Ein Internetzugang mittels Powerline ist nur dann einzurichten, wenn an den Austellort des NetIO-Boards kein Netzkabel gelegt werden kann.

Powerline ist ein Verfahren, um innerhalb eines Hauses eine Internetverbindung an einen Punkt zu verlegen, an den man keineNetzwerkleitung verlegen kann oder will. Dabei werden die beiden Anschlußpunkte mittels zweier in die Steckdose gesteckterAdapter verbunden, der Internetverkehr wird dann über das Stromnetz übertragen. Wichtig ist dabei, dass sich beide Adapter möglichst "nahe" zueinander im Stromnetz befinden, am besten im selben Sicherungskreis, auf jeden Fall wohl im selben Stromzählerkreis.

Für die eigene Anlage habe ich zwei Geräte vom Typ "Allnet 1685 Ethernet Bridge" im Einsatz, diese gibt es für ca 45 EUR bei Amazon. Die Leistungsaufnahme eines einzelnen Geräts liegt nach meiner Messung bei ca. 3,4 Watt. Die Geräte werden einfach in die Steckdosen gesteckt, falls notwendig sollte man sich aber gleich zwei kurze Netzwerkkabel mit kaufen.

Per Wlan

Falls sowieso ein Router mit Wlan vorhanden ist und das WLAN am Loggerort empfangbar ist, könnte auch WlLAN verwendet werden.

Achtung: Das Wlan darf dann nachts nicht abgeschaltet werden, da der Logger beim Botten eine Verbindung zum Zeitserver braucht.

Dies dürfte insbesondere dann Sinn machen, wenn mehrere Internetanschlüsse benötigt werden (z.B. für den Wechselrichter oder weitere Datenlogger). In einem Posting habe ich einen Hinweis auf einen WLAN-Access Point (Typ: Longshine Wireless 54 Mbit/s Access Point "LCS-WA5-45", es gibt weitere Typen in dieser Preisklasse) mit einem einzelnen Internet-Anschluß für ca 20 EUR gefunden, der damit das Problem sogar günstiger als die Powerline-Verbindung nutzt. Ich habe diese Lösung allerdings noch nicht ausprobiert, für Feedback zu Erfahrungen wäre ich dankbar. Energieverbrauch laut Hersteller 6,1 Watt.

Per Mobilfunkt

Schließlich ist auch noch eine Anbindung direkt ins Mobilfunknetz. Da diese Router aber eher 100 EUR kosten und einen zusätzlichen Mobilfunkdatenvertrag erfordern, gehe ich hier nicht weiter darauf ein.

Aufbau und Anschluß des Loggers an den S0-Zähler

Die Komponenten

Die für den Aufbau notwendigen Komponenten finden sich in der Bestellliste für die Grundversion. Anders als im Bild und in der Aufbauanleitung beschrieben habe ich in der Bestellliste eine vierpolige statt der eigentlich nur benötigten zweipoligen Buchsenleiste angegeben, weil diese dann gleich noch für weitere optionale Signalanschlüsse der Zusatzpakete mitverwendet werden kann.

Auch wenn das Board in der Standardversion bei den meisten Usern (auch bei mir) ohne Probleme im Dauerbetrieb läuft, berichten einige User von Stabilitätsproblemen [1]. Der User HofeBY hat hierfür kleinere Verbesserungsvorschläge an der Hardware des Boards vorgeschlagen, die diese offensichtlich beheben. [2]. Details sind hier im Wiki nochmal auf einer eigenen Seite beschrieben.

Chip auswechseln

Da das Freesol-Programm für den mitgelieferten Prozessor zu groß ist, muß dieser gegen eine größere Version ATMega1284P-PU ausgetauscht werden. Der IC sitzt in einem Sockel und kann deshalb auch von einen Laien leicht gewechselt werden. Wichtig ist lediglich, die richtige Richtung beim Einstecken zu beachten, die durch eine kleine halbrunde Kerbe an der kurzen Gehäuseseite (Oberseite) angezeigt wird. Diese muß beim neuen Chip an derselben Stelle wie beim alten sein, ggf. findet man auf der Platine am richtigen Eck des Sockels auch einen Aufdruck "1" beim ersten Pin.

  • Chip vorsichtig mit Schraubenzieher aus der eingelöteten Fassung raushebeln
  • Neuen Chip einsetzen.
  • Achtung, beim Einbau gibt es zwei Orientierungen: Markierungskerbe muss auf derselben Seite sein (Auch der Sockel hat an dieser Seite eine Markierung)
  • Beim Einbau Chip am besten leicht schräg aufsetzen, zuerst die unteren Beinchen einsetzen und dann die oberen reindrücken.
  • Kontrolle: Sind alle Beinchen in der Fassung?

Leitungen verbinden

  • Anschlussstecker mit den beiden Pins oben links verbinden (bei Pollin gibts nur vierpolige Anschlußstecker, 2 Anschlussdrähte bleiben dann leer. Nicht abzwicken, diese Anschlüsse können für Erweiterungen gebraucht werden.
  • Der schwarze Draht im Bild geht zum Plus-Anschluss des S0-Zählers
  • Mit einem Draht (hier: weißer Draht) den Minus-Anschluss des S0-Zählers mit einem GND-Anschluss des Boards verbinden (z.B. blaue Schraubleiste 6. Klemme von links). Sobald der S0-Anschluß einen Puls gibt, schaltet er durch, somit wird der Pin1 (der intern über einen Pullup-Widerstand auf 5V gehalten wird) kurz auf Masse gezogen und der Prozessor erhält einen Impuls.
  • (Optional:) Der braune Draht im Bild kann oder über einen 220 Ohm Widerstand an eine Kontroll-LED angeschlossen werden, die dann auf 0V/Masse/GND geführt wird (einen der GND-Ausgänge unten an der blauen Schraubleiste verwenden), die Lampe blinkt dann mit dem S0-Signal. Die Kontrollleuchte ist nicht notwendig, zeigt aber, oder der Mikroprozessor die eingehenden S0-Signale richtig verarbeitet.
  • Netzwerkstecker für den Internetanschluß einstecken
  • Spannungsversorgung vom 5V-Netzteil verbinden, dazu den +5V-Anschluß in der blauen Schraubleiste ganz links und den 0V/Masse/GND-Anschluss in die zweite Klemme von links schrauben.
    • Hinweis: +5V-Anschluß des Netzteils am Stecker nachlesen und mit einem Spannungsmessgerät herausfinden. Falls man keines hat, kann man eine Leuchtdiode und einen 220-Ohm Widerstand hintereinanderschalten und mit dem Netzteil verbinden, der Pluspol ist die Seite, die mit dem längeren Beinchen der Leuchtdiode verbunden ist, wenn sie leuchtet
    • Bemerkung: Das Gleichspannungs-Netzteil wird NICHT an den 9V Wechselspannungsanschluß, sondern einfach an der langen Steckerleiste an Anschlüsse "5V" und "Ground" geklemmt. Vorteil ist, dass nicht so viel Energie bei der Umwandlung im Board verloren geht und damit der Spannungswandler auf dem Board im Dauerbetrieb nicht zu heiß wird. Bei 5V-Betrieb habe ich eine Stromaufnahme des Boards von 200 mA gemessen, damit sollte ein kleines Netzteil genügen.
  • Man kann das Board in ein Gehäuse einbauen, das optional im Grundpaket enthalten ist.
  • Falls man alles richtig gemacht hat, sollte nun das Aufspielen der Software mit dem Programmiergerät wie im Kapitel Konfiguration beschrieben funktionieren. Hierzu muss das Netzteil eingesteckt sein.

Aufbau des FreeSol-SML-Lesekopfs

Ein SML-Lesekopf wird im Moment nur zum Empfang von SML-Nachrichten aus einem Bezugs-Einspeisezähler verwendet, für den Photovoltaikzähler ist eine S0-Schnittstelle vorgesehen (vgl. auch FAQ).

Wie in den Bezugsquellen beschrieben gibt es verschiedene Varianten für einen SML-Lesekopf.

Informationen zu den unterstützten SML-Zählertypen und nähere Details zur Entschlüsselung des Protokolls finden sich auch auf der Freesol-Technikseite.

Allgemeine Informationen

Im Zusammenhang mit Stromzählern ist SML ist ein binäres Nachrichtenprotokoll, das über eine serielle Schnittstelle an modernen Stromzählern ausgegeben wird. Die serielle Schnittstelle ist dabei nicht als Stecker, sondern als eine Infrarotleuchtdiode (IR-Diode) ausgeführt.

Der Aufbau der SML-Nachrichten ist in jedem Stromzählertyp verschieden. Die Nachrichten übertragen im wesentlichen die am Stromzähler angezeigten Messdaten. Da CCD-Chips für Infrarot empfindlich sind, kann man mit dem Livebild einer Digitalkamera oder einer Mobiltelefonkamera die sendende Infrarot-Leuchtdiode an der Vorderseite eines Stromzählers leicht identifizieren. In der Regel sitzt diese im rechten von zwei direkt nebeneinanderliegenden Leuchtdiodenfenstern, dort wird dann im Kameradisplay alle 1-3 Sekunden ein Lichtimpuls sichtbar. Dies ist KEIN S0-Puls, die Pulsfrequenz ist unabhängig von der aktuellen Zählerleistung konstant. Jede sichtbare Puls enthält eine komplette SML Nachricht mit ca. 400 Bytes Länge, die mit 9600 Baud übertragen wird.

Zum Entschlüsseln und Anzeigen der Nachrichteninhalte stehen im Download-Bereich ein Programm für den PC sowie ein Programm für das AVR-Board zur Verfügung. Zunächst müssen wir uns jedoch einen geeigneten Lesekopf besorgen, der die IR-Signale in eine elektrische RS232-Schnittstelle umwandelt.

Ein selbstgebauter FreeSol-SML-Lesekopf

An einen Selbstbau sollte man sich nur wagen, wenn man etwas Elektronikkenntnisse mitbringt und auch Fehlersuche in einer Schaltung betreiben kann, oder einfach Spaß am Basteln hat. Reine Nutzer sind wahrscheinlich mit einem fertig aufgebauten Lesekopf von volkszaehler.org schneller und mit weniger Frustration am Ziel.

Eine gute Einführung zum Thema SML findet sich bei volkszaehler.org. Mit einem Volkszähler können ebenfalls Zählerdaten erfasst werden, allerdings werden die Daten nicht im Board selbst gesammelt, sondern in einen PC-gebundenen Server übertragen, was ich mit Freesol vermeiden will, weil ja sonst der PC dauernd laufen muss.

Sehr gut ist auch die Beschreibung eines Bausatzes (gegen Aufpreis auch aufgebaut erhältlich) für einen SML-Lesekopf im Selbstbau. Er dient uns als Anschauungsmaterial für den mechanischen Aufbau, kann aber auch als Variante selber zum Einsatz kommen.

Für das Einlesen der SML-Signale verwende ich den hier aufgeführten Schaltplan, alle Bauteile sind bei Pollin bestellbar. Achtung: Die Spannungsversorgung des Operationsverstärkerchips ist nicht eingezeichnet, es müssen also noch zusätzlich Pin 4 mit +5V und Pin 11 mit GND verbunden werden. SML-Sensorkopf.jpg

Falls kein USB-to-Seriell-Adapterkabel vorhanden ist und der SML-Zähler auch mal am PC ausprobiert werden soll (nur bei Einsatz des AVR-Boards benötigt man diesen Adapter nicht), kann man sowas ebenfalls bei Pollin mitbestellen (Best.-Nr. 721 034, 4,95 EUR).

Für eine dauerhafte Installation könnte der Ringmagnet (Durchmesser 27mm * 16mm * 5 mm für gut 3 EUR, Best.-Nr. R-27x16x05-N42-Ni bei magnetladen.de) wie bei Volkszähler fotografiert in ein geeignetes Gehäuse (eine alte Filmdose oder bestimmte Vitamin-C-Tablettendosen wie "Das gesunde Plus" von dm haben den richtigen Durchmesser) geklebt werden und dort auch ein kleines Stück Platine mit dem Fototransistor und dem Widerstand untergebracht werden.

Für Leute ohne Lötkenntnisse oder Lötkolben läßt sich die Schaltung wahrscheinlich auch dauerhaft auf dem Steckboard aufbauen und betreiben. Den Fototransistor müsste man dann an ein Kabel mit Hilfe einer Lüsterklemme (bei Pollin mitbestellen) verbinden. Hier bei Bedarf gerne nochmal nachfragen.

Die empfohlene Variante: Der fertig montierte SML-Lesekopf von volkszaehler.org

Der oben beschriebene SML-Lesekopf von volkszaehler.org ist mit SMD-Bauteilen aufgebaut, die jedoch etwas schwerer als normale Bauteile zu löten sind. Weitere Infos gibt es hier.

Der Lesekopf unten im Bild hat einen USB-Anschluß für den direkten Betrieb am PC. Inzwischen gbit es auch eine Variante mit RS232-Ausgang, die zusammen mit Freesol funktioniert und direkt an das Board angesteckt werden kann.

Wichtig! Wird immer wieder falsch gemacht

Immer wieder für Verwirrung sorgen die unterschiedlichen Signalpegel, bei einer "echten" RS232 Schnittstelle (Spannung von -15 V bis + 15 V) und einer TTL-Schnittstelle (0 V bis + 5 V). Nähere Informationen dazu finden sich hier. Die RS232-Schnittstelle kommt meist notfalls auch mit Signalen von 0-5V aus und würde deshalb TTL auch verstehen, allerdings ist das TTL-Signal nochmals invertiert.

Im NetIO-Board von FreeSol ist eine echte RS232-Schnittstelle eingebaut, die von einem MAX232-Chip auf dem Board angesteuert wird. Allerdings ist der Ausgang am Board eine Buchse ("weiblich"), während der Ausgang am PC immer ein Stecker ("männlich") ist.

Der Volkszähler-Lesekopf in der RS232-Variante kommt mit einem Stecker und kann deshalb direkt an das FreeSol-Board angesteckt werden. Ein typischer Fehler beim Anschluß des Lesekopfs an den PC ist nun, den Anschluß einfach mit einem gender changer (Verbindung, die von Buchse auf Stecker wechselt, die Leitungen aber 1:1 durchgeführt sind) herzustellen. Dies funktioniert aber nicht, man braucht gekreuzte Leitungen (gekreuzte TxD und RxD (Pin 2+3), aber NICHT gekreuzte DTR (Pin 4) und GND (Pin 5), da der Lesekopft über DTR versorgt wird), also ein sogenanntes Nullmodemkabel.

Der Volkszähler-Lesekopf in der TTL-Variante könnte notfalls auch verwendet werden, weil wie oben ausgeführt die RS232-Eingänge auch TTL verstehen, allerdings muss dazu zunächst der Signalpegel invertiert werden.

Funktionserweiterungen

Täglicher Status-Emailversand, Versand von Störungsmeldungen, Steuerung externer Verbraucher und LCD-Display sind im Moment hier beschrieben.

Konfiguration der Software und Inbetriebnahme des Loggers

Inbetriebnahme des Grundpakets

Überblick

Die Inbetriebnahme besteht aus folgenden Schritten:

  • Installation des Programmiergeräts, um Software auf das Board spielen zu können.
  • Aufspielen der FreeSol-Software und Einstellen der notwendigen Parameter auf dem FreeSol-Board

Installation des Programmiergeräts

Selbstverständlich kann man ein beliebiges Programmiergerät verwenden. Das Setup-Programm ist jedoch bereits auf die Enstellungen für die beiden Programmiergeräte Pololu (18 EUR, sofort lieferbar) und USBASP (3 EUR, 3 Wochen Lieferzeit) angepasst, insopfern empfehle ich eines dieser geräte für Anfänger. Fortgeschrittene können für andere Programmiergeräte die Einstellungen im Setup-Programm selber entsprechend ändern.

Für Neueinsteiger empfehle ich außerdem, strikt in unten beschriebener Weise vorzugehen. Ich kann trotzdem nicht ausschließen, dass diese Dokumentation nicht vollständig ist oder auf anderen Systemen nicht funktioniert (auf meinem System lief Windows 7 64 bit). Falls jemand Abweichungen merkt oder Fragen hat, bitte Feedback.

Für den Pololu-Programmer

(Hinweis: Eine Beschreibung von Pololu zum möglichen Vorgehen findet sich hier, ich habe dabei aber die Variante gewählt, NUR den USB-Treiber und WinAVR mit AVRDUDE zu installieren und nicht das komplette Bundle. )

  1. Deshalb also zunächst wie in der Pololu-Dokumentation beschrieben (OHNE ins USB eingestecken Programmer) den USB-Treiber von dieser Stelle herunterladen und installieren.
  2. Danach den Programmer in den USB-Port einstecken.
  3. Danach habe ich kontrolliert, ob wie bei Pololu beschrieben der Programmer im Gerätemanager (Systemsteuerung -> Gerätemanager) als COM-Port auftaucht und aufgeschrieben, welche Nummer dieser COMport hat (relevant ist dabei der Eintrag 'Pololu USB AVR Programmer Programming Port'), bei mir war dies die 9, siehe Bild unten.
  4. Sinnvollerweise erhöht man im Gerätemanager die Baudrate für die zum Programmer gehörige serielle Schnittstelle auf 115200 (Anschlußeinstellungen/Bits pro Sekunde)
  5. Anschließend habe ich WinAVR installiert wie beschrieben, unter Windows 7 muss dies wohl ins Rootverzeichnis.
  6. In der WinAVR-Konfiguration habe ich im File c:\WinAVR-20100110\bin\avrdude.conf nach dem Abschnitt "1284P" gesucht und ein paar Zeilen weiter den Wert von "chip_erase_delay" auf "55000;" gesetzt. Wer es sich einfacher machen will, kann das geänderte File auch direkt von hier downloaden.
  7. Probeweise sollte man nun ein Kommandozeilenfenster öffnen (Bei "Start" in die Eingabezeile "cmd" eingeben und kontrollieren, dass bei Eingabe des Befehls "avrdude" dieser erkannt wird und eine Hilfeinformation ausgegeben wird.

Der Programmer ist damit für die Programmübertragung vorbereitet, das eigentliche Aufspielen erfolgt zusammen mit der Konfiguration und ist im folgenden Kapitel beschrieben.

Für den USBASP-Programmer
  1. Den Windows-Treiber für den Progger von hier laden und installieren. (Z.B. zum Installieren auf 32-Bit-Systemen das Programm aus dem Unterverzeichnis usbasp-windriver.2011-05-28\libusb_1.2.4.0\installer_x86.exe ausführen. Falls dies nicht richtig funktioniert, im Gerätemanager den nicht funktionierenden Treiber von Hand nachladen, dazu einfach das Gerät USBasp mit dem gelben Dreieck auswählen und unter Treiber / Treiber aktualisieren das Verzeichnis usbasp-windriver.2011-05-28\libusb_1.2.4.0 als Ort des Treibers angeben. Die Windows-Warnmeldung über nicht signierten Treiber dabei ignorieren). Weitere technische Hintergrundinfos zum Progger hier.
  2. Danach den Programmer in den USB-Port einstecken.
  3. Anschließend habe ich WinAVR installiert, unter Windows 7 muss dies wohl ins Rootverzeichnis.
  4. In der WinAVR-Konfiguration habe ich im File c:\WinAVR-20100110\bin\avrdude.conf nach dem Abschnitt "1284P" gesucht und ein paar Zeilen weiter den Wert von "chip_erase_delay" auf "55000;" gesetzt. Wer es sich einfacher machen will, kann das geänderte File auch direkt von hier downloaden.
  5. Probeweise sollte man nun ein Kommandozeilenfenster öffnen (Bei "Start" in die Eingabezeile "cmd" eingeben und kontrollieren, dass bei Eingabe des Befehls "avrdude" dieser erkannt wird und eine Hilfeinformation ausgegeben wird.

Der Programmer ist damit für die Programmübertragung vorbereitet, das eigentliche Aufspielen erfolgt zusammen mit der Konfiguration und ist im folgenden Kapitel beschrieben.

Allerdings erhalte ich beim Schreiben mit dem Setup-Programm folgende Fehlermeldung und der Schreibvorgang dauert sehr lange:

avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
Für andere Programmiergeräte
  • Im Freesol-Setup-Programm alle Parameter erstellen und das eeprom.txt-File auf dem PC abspeichern
  • Dann das eigene Brennprogramm starten, das gewünschte FreeSol-Hexfile für den Flash einladen und das eben erstellte eeprom.txt-File für den EEPROM einladen.
  • Fuses wie folgt einstellen: Low: 0xFF, High: 0xD5, Ext.: 0xFF. Lockbit weglassen oder 0x3F
  • Alles auf den AVR schreiben

Dies scheint aber bei dem Progger üblich zu sein und hat keinen Einfluß auf die Funktion.

Aufspielen der FreeSol-Software und Einstellen der notwendigen Parameter im FreeSol-Board

Ein Windows-Konfigurationsprogramm FreeSol Setup soll beim Aufspielen des Programms auf das Board und dem notwendigen Konfigurieren des Boards helfen. Das Programm geht davon aus, dass alle benötigten Files im Programmverzeichnis liegen.

Ansicht des FreeSol-Setup-Programms nach erstem Programmaufruf und Klick auf den Knopf "Defaultwerte"

Vorgehen dabei wie folgt:

  1. Programmieradapter einzustecken, Netzteil einstecken, um das Board mit Spannung zu versorgen, und das Setup-Programm starten. ACHTUNG: Den Programmieradapter am AVR-Board in die Buchse ISP stecken, KEINESFALLS in die Buchse EXT, da sonst Progger und/oder Board zerstört werden können. Um versehentliches Einstecken zu vermeiden, steckt man am besten sofort irgendeinen anderen Stecker in die EXT Buchse.
  2. Das Programm FreeSol Setup aufrufen und den Reiter "Progger-Einstellungen" anklicken. Dort die richtiger Schnittstelle (nachsehen bei Systemeinstellungen -> Gerätemanager, siehe vorheriges Kapitel) auswählen und "Proggerkommandos auf Defaultwerte setzen". Wenn diese nicht passen (z.B. bei anderem Progger), kann man sie manuell ändert, dies wird auch beim Beenden gespeichert.
  3. Testweise mit dem Knopf "Fuses lesen" probieren, ob die Verbindung zum Chip richtig funktioniert un die Fuses gelesen werden (Anzeige im Konsolenfester).
  4. Danach mit dem Knopf "Fuses schreiben" die Fuses richtig einstellen. (Die Fuses stellen einmalig Hardwareparameter des Chips richtig ein. Muss man einmalig machen, danach nie wieder machen.)
  5. Danach das Hexfile Freesol.hex aus dem FreeSol-Paket (befindet sich im Unterverzeichnis des Zip-Files) in das Verzeichnis des Setupprogramms kopieren und mit dem Knopf "Programm schreiben" auf den Logger hochladen.
  6. Mit dem Knopf "Defaultwerte" eine Vorlage für die Konfiguration erstellen.
  7. Die Werte in der Konfiguration anpassen. Hilfetexte zu den Einstellungswerten der Parametern werden sichtbar, wenn man im Setup-Programm mit der Maus über den Parameternamen fährt. Anpassen sollten man auf jeden Fall:
    • Den Hostnamen (Erscheint auf der Webseite des Loggers)
    • Die Macadresse (kann beliebig wählen, am besten die vom mitgelieferten kleinen Chip nehmen, ist aufgeklebt)
    • Die IP-Adresse des Boards (am besten die nehmen, die dem Board nach erstmaligem Anschluß im Netz zugewiesen wird. Solange man die MAC-Adresse nicht ändert, merken sich die meisten Router freiwillig oder nach entsprechender Einstellung die IP-Adresse und weisen diese beim nächsten Mal wieder zu.
    • Defaultgwateway, Nameserver: Meist wie IP-Adresse, nur letzte Zahl die 1
    • Anlagenleistung in W
    • In der Regel kann der NTP-Server/Zeitserver unverändert gelassen werden (man kann mit dem Windows-Kommando Ping testen, ob der zeitserver erreichbar ist. Arcor macht angeblich mit dem von mir vorgeschlagenen Defaultserver Probleme).
    • Die anderen Parameter kann man zunächst mal unverändert lassen.
    • Achtung, wichtiger Änderung: Der GMX-Mailserver lässt leider keine AUTH LOGIN Verbindungen mehr zu, hier muss nun Starto verwendet werden. IP 81.169.145.133 PORT 25 . Wer keinen Stratoaccount hat, kann mir eine Mail mit Name, Postadresse, Telefon, Wunschname (<wunschname>@freesol.de) und Passwort senden und bekommt von mir eine kostenlose Mailadresse für die Einbindung von Freesol.
  8. Nach Anpassen aller Konfigurationswerte als Filename für "Speichern" "eeprom.txt" einstellen und mit "Speichern" abspeichern. Damit wird die Konfiguration zunächst mal auf die Festplatte gespeichert.
  9. Mit dem Knopf "Konfiguration schreiben" die Konfiguration von der Festplatte auf den Chip übertragen. (Die Konfigurationsparameter, sind anlagenspezifisch, diese werden im Gegensatz zu den Fuses vielleicht öfter mal geändert)

Bei der Fehlersuche am laufenden Programm kann der sogenannte Heartbeat helfen: Jede Minute sendet der Logger über die serielle Schnittstelle die wichtigsten Statusinformationen (Datum, Zeit, S0-Zählerstand, IP, Adresse sowie den Zeitpunkt der Zeitsynchronisierung nach dem letzten Booten). Mit einem geeigneten Terminalprogramm und einem Verbindungskabel zur seriellen Schnittstelle läßt sich der Heartbeat am PC anzeigen.

Test des Loggers und des Programmiergeräts mit einem Dummyprogramm

Für Testzwecke gibt es ein kleines Dummyprogramm, das mit Hilfe des Programmieradapters auf des Board aufgespielt werden kann und das jede Sekunde eine Nachricht ("Loop: Dummyoutput: x Sekunden") über die serielle Schnittstelle (9600 baud, 8 Datenbit, ein Stopbit, Parity none) ausgibt.

Durchführung eines Softwareupgrades auf dem Logger

Solange der Logger problemlos läuft, sind Softwareupdates eigentlich nicht nötig. Wenn man diese trotzdem machen will, z.B. um ein neues Feature zu nutzen, geht man wie folgt vor:

  • Das FreeSol-Setup-Programm und das Hexfile Freesol.hex aus dem aktuellen FreeSol-Paket (Zip-File mit den Sourcen, Hexfile liegt im Unterverzeichnis des Zip-Files) aus dem Downloadbereich herunterladen und ins gleiche Verzeichnis speichern.
  • Den Programmieradaper an den USB-Port des PC und an den Logger Board anschliessen.
  • Das FreeSol-Setup-Programm ausführen. Dann auf einen der Knöpfe "Proggerkommandos auf Defaultwerte setzen" klicken. (Für den Pololu-Progger muss man zuvor natürlich den richtigen COM-Port des Programmieradapters eingeben, notfalls nachsehen in Systemeinstellungen -> Geratemanager).
  • Zum eigentlichen Übertragen des Programms auf das Board einfach im Tab "Hauptseite" auf "Programm schreiben" klicken. Der Programmieradapter blinkt dann eine Zeit lang rot, und danach ist die neue Software drauf.
  • Eine Übertragung der Konfigurationseinstellungen ist nicht nötig. Eine Übertragung der Konfiguratinseinstellungen überträgt gleichzeitig auch die alten Aufzeichnungswerte auf den Logger, weil Logger-Energiedaten und Konfigurationsdaten beide zusammen im Eeprom gespeichert sind. Mit einem neuen Übertragen der Konfigurationsdaten auf den Logger überschreibt man also ggf. die aktuellen Energiedaten durch ältere aus einer Sicherungskopie.

Unterstützte SML-Zähler

  • Im Moment werden folgende SML-Zähler unterstützt:
    • EMH eHz
    • Easymeter Q3C
    • Hager EHZ363Z5
  • Zur Unterstützung anderer Zählertypen bitte wie folgt vorgehen:
    • Lesekopf zunächst direkt an einen Windows-PC anschließen und mit dem Programm Freesol SML live auf den PC auslesen.
    • Sofern dabei der Zähler nicht oder nicht richtig erkannt wird, ist der Zählertyp noch in die Software einzubauen. Dazu sollte ein Mitschnitt der Zählernachrichten (z.B. 1 min lang mit Programm hterm mitschneiden) erstellt und an mich geschickt werden.
  • FreeSol arbeitet bisher nur mit SML-Zählern zusammen, die ihre Signale regelmäßig von selber aktiv senden. Zähler, die zunächst einen Aufwachimpuls brauchen, werden bisher noch nicht unterstützt.
  • Hilfreiche Informationen zum grundsätzlichen Verständnis des SML-Protokolls finden sich bei volkszaehler.org, z.b. http://wiki.volkszaehler.org/software/sml?s
  • Details zur Entschlüsselung der hier unterstützten Zähler finden sich hier.

Inbetriebnahme der SML-Lesefunktion für Bezugs- und Einspeisezähler

  • Den Lesekopf aufbauen und wie beschrieben an den 9-poligen DSUB-Stecker des AVR-Boards anschließen
  • Soweit nötig kann vorher oder im Problemfall der Lesekopf zunächst direkt an einen Windows-PC angeschlossen und mit dem Programm Freesol SML live auf den PC ausgelesen werden. Sofern dabei der Zähler nicht oder nicht richtig erkannt wird, ist der Zählertyp noch in die Software einzubauen, siehe vorhergehenden Abschnitt.
  • Im Setup-Programm des Boards die Variable Ee_fs_ev_url auf einen sinnvollen Wert setzen. Beim Benutzen der Defaulteinstellungen steht sie auf 'frees' (ohne Anführungszeichen). Nachdem aber nicht für jeden die Verbrauchsdaten offenliegen sollten, kann man hier einen eigenen Namen (maximal 6 Zeichen) als Vorsilbe wählen
  • Auf dem Logger werden damit eine Reihe weiterer Webseiten bereitgestellt. Der Name der Webseite bestimmt sich immer aus der gewählten Vorsilbe (hier z.B. 'frees') und einer Ergänzung, die den Inhalt beschreibt. Im Einzelnen gibt es dann z.B.
    • frees_b.js: 5min-Bezugsdaten des aktuellen Tages
    • frees_e.js: 5min-Einspeisedaten des aktuellen Tages
    • frees_bv.js: 5min-Bezugsdaten des Vortages
    • frees_ev.js: 5min-Einspeisedaten des Vortages
    • frees_bt.js: Bezugs-Tagesanfangszählerstände der letzten bis zu 30 Tage
    • frees_et.js: Einspeise-Tagesanfangszählerstände der letzten bis zu 30 Tage
    • frees_ue.js: Tabellarische Auflistung von Bezug, Einspeisung, Eigenverbrauch Gesamtverbrauch der letzten 10 Tage
    • frees_b.svg: Grafik der 5-Minutenwerte des Bezugszählers vom aktuellen Tag
    • frees_bv.svg: Grafik der 5-Minutenwerte des Bezugszählers vom Vortag
    • frees_e.svg: Grafik der 5-Minutenwerte des Einspeisezählers vom aktuellen Tag
    • frees_ev.svg: Grafik der 5-Minutenwerte des Einspeisezählers vom Vortag
    • frees_i.htm: Eine um Informationen zur letzten SML-Auslesung erweiterte Startseite
    • frees_1a.js: Datum, Zeit, Solar akt. Leistung , Solar Tag, Solar Vortag, Bezug akt. Leistung , Bezug Tag, Bezug Vortag, Einspeisung akt. Leistung , Einspeisung Tag, Einspeisung Vortag, in W und Wh (1 min Wert) (ab Version 2.01.05)


  • Bei Verwendung des Windows-Programms FreeSol EV SML müssen folgende Werte in den Einstellungen eingegeben werden:
    • Kurzbezeichnung und Name für alle drei Spalten frei, aber verschieden wählbar.
    • Es muss eine PV-Log-Nummer für alle drei Zähler eingetragen werden, hier einfach drei verschiedene Zahlen reinschreiben. Die Zahlen tauchen in den Namen der abgespeicherten Files wieder auf.
    • Die FreeSol URL muss in allen drei Spalten identisch als Loggeradresse eingegeben werden, z.B. http://meinlogger.dd-dns.de
    • 'Logger aktiv' Häkchen in erster Spalte setzen, 'FreeSol einlesen' Häkchen in allen drei Spalten
    • Anlagenleistung in kW, Komma möglich
    • Jahresleistung in kWh/kWp
    • Als Fileprefix URL muss die gewählte Vorsilbe eingetragen werden, z.B. 'frees'.

Dauerhafte Datenspeicherung in Portalen oder mit Windows-Software FreeSol EV

Die Windows-Software FreeSol EV

Beschreibung

Diese kostenfreie Software aus dem Downloadbereich läuft auf dem heimischen PC und ermöglicht eine Kontaktaufnahme mit dem Logger. Der Logger selbst kann die Energiedaten zwischenspeichern (die 5min-Werte für 2 Tage und die Tageswerte für 30 Tage). Beim Aufruf von FreeSol EV werden die Daten vom Logger heruntergeladen, visualisiert und dauerhaft auf dem PC gespeichert.

Das Programm eignet sich damit für Nutzer, die ihre Daten nicht in ein Portal im Internet einstellen wollen. Außerdem ist es ein sinnvoller Zwischenschritt vor der Einbindung eines Datenportals, um zu sehen, ob der Logger wirklich stabil läuft.

Für die Verwendung von FreeSol EV muss der Logger noch keine im Außenraum erreichbare IP-Adresse haben, falls er sich im selben Netzwerk befindet wie der Computer, auf dem FreeSol EV läuft.

Einrichtung

Zur Einrichtung für die Erfassung eines S0-Solarzählers wie folgt vorgehen:

  • Das Programm FreeSol EV aus dem Downloadbereich herunterladen.
  • Für die Datenfiles ein eigenes Verzeichnis einrichten (hier im Beispiel nehmen wir mal 'c:\User\FreeSol' an)
  • Das Programm aufrufen, auf den Reiter Einstellungen klicken und folgende Einstellungen vornehmen:
    • Den Haken bei "Minutenwerte nur bei ..." setzen
    • Als Speicherort das Datenverzeichnis eintragen, letzter Buchstabe ist ein '\', bei uns also 'c:\User\FreeSol\'
    • Bei den Loggereinstellungen nur die linke Spalte ausfüllen
    • Ins Feld Kurzbezeichnung z.B. 'PV' eintragen
    • Ins Feld Name z.B. 'Solar' eintragen
    • Im Feld PV-Log-Nummer MUSS eine Zahl stehen, entweder die Nummer des Loggers im PV-Log-Portal, oder eine beliebige Zahl, nehmen wir also '1'.
    • Als FreeSol-URL geben wir z.B. die IP-Adresse im internen Netz ein: 'http://192.168.178.32'. Statt der Ziffern kann hier auch eine Klartext-URL stehen. Diese URL bitte in ALLE DREI Spalten eintragen.
    • Häkchen setzen bei 'Logger aktiv' und 'FreeSol einlesen'
    • Anlagenleistung in kWp eingeben, z.B. '11,27'
    • Jahressollertrag eingeben, z.B. '950'
    • Fileprefix URL ist nur für SML-Zähler wichtig, kann leer bleiben.
  • Danach das Programm beenden, die Einstellungen werden damit gespeichert und sollten beim Neuaufruf sichtbar sein.
  • Für den Abruf von Mitutenwerten
    • Auf den Reiter 'Minutenwerte' klicken
    • Der DARUNTER angeordnete Knopf 'Aktualisieren' aktualisiert die Minutenwerte des aktuellen Tags.
    • Der darunter angeordnete Knopf 'Tag und Vortag aktualisieren' aktualisiert die Minutenwerte des aktuellen Tags und den Vortags.
  • Für den Abruf von Tageswerten.
    • Auf den Reiter 'Monatswerte' klicken.
    • Der DARÜBER angeordnete Knopf 'Aktualisieren' aktualisiert die Tageswerte.
    • Ggf den Vormonat auswählen und nochmals auf 'Aktualisieren' klicken. Es werden maximal ca. 40 Tage gespeichert.

Erreichbarkeit des Loggers aus dem Internet

Einrichtung einer Portweiterleitung

  • Ermöglicht es, einen im Heimnetz betriebenen Logger auch von "außen", also aus dem Internet, zu erreichen.
  • Die Portweiterleitung wird im Router eingerichtet, bitte im dortigen Handbuch nachsehen.
  • Nach Einrichtung einer Portweiterleitung kann man von überall im Internet aus auf den Logger zugreifen, wenn man die aktuelle IP-Adresse des Routers kennt.
  • Jede Anfrage von außen (also aus dem Internet) an die IP-Adresse des Routers wird dann automatisch vom Router an den Logger weitergereicht.
  • Zu beachten ist jedoch, dass die IP-Adresse in der Regel täglich oder bei jeder Einwahl wechselt, deshalb ist zusätzlich die Einrichtung einer statischen IP-Adresse sinnvoll.

Einrichtung einer statischen IP-Adresse für den Router im Heimnetz

  • Ermöglicht es zusätzlich, einen im Heimnetz betriebenen Logger aus dem Internet immer unter derselben Adresse zu erreichen.
  • Der Logger lässt sich somit von überall aus ablesen.
  • Allerdings kann damit auch jeder auf die Loggerdaten zugreifen. (Hinweise: Die Bezugs-/Einspeisedaten sind durch Verwendung eines "geheimen" Namens für deren Internetadresse etwas geschützt).
  • Eine statische IP kann man mit Hilfe von kostenfreien sogenannten Dynamic-DNS-Diensten anlegen.
  • dyndns.org verwende ich nicht mehr, da der Deinst inzwischen Aktivierung alle 30 Tage erfordert, dafür jetzt twodns.de .
  • In der Zeitschrift ct vom 11.3.2013 findet sich auf Seite 108 ff ein Überblick über verschiedene kostenfreie Dynamic-DNS-Dienste. Empfohlen werden dabei:
    • afraid.org (höchster Funktionsumfang, aber Anleitung nur in englisch)
    • no-ip.com (einfach und gut, aber Anleitung nur in englisch)(Ergänzung vom 20.5.13: Freie Accounts inzwischen auch nur mit Werbung und Reaktivierung alle 30 Tage)
    • twodns.de (einfach und gut, Anleitung in deutsch) (Mein aktuell verwendeter Dienst)
    • myfritz.net (spezieller Dienst nur für FritzBox-Nutzer)
  • Der Rest des Heimnetzes bleibt (bei richtiger Konfiguration) aus dem Internet natürlich unerreichbar.

Datenportale

Ein eigenes Datenportal

Einrichtung
Überblick
  • Es gibt die Möglichkeit, sich selber einen freien Webspace einzurichten und dort mit Hilfe eines PHP-Skripts einmal täglich die Loggerdaten automatisiert hochzuladen. So sind auch die 5-Minuten-Daten dauerhaft vorhanden, ohne dass täglich gesichert wird.
  • Im Kern funktioniert das Ganze so:
    • Ein PHP-Skript liegt in dem freien Webspace. Der Aufruf des Sktripts erfolgt einfach durch Eingabe des Links auf das Skript in einem Webbrowser. Bei Aufruf greift das Skript auf den Logger zu und kopiert einmalig die aktuellen Vortagesdaten vom Logger in den Webspace.
    • Das PHP-Skript kann nun entweder (z.B. für Testzwecke) manuell aufgerufen werden
    • Für eine dauerhafte Sicherung muss das Skript aber einmal pro Tag aufgerufen werden. Um dies nicht manuell tun zu müssen, wird ein cronjob eingerichtet. Dies ist nicht anderes als ein Befehl auf einem Server, der regelmässig zu einem bestimmten Zeitpunkt ausgeführt wird. In unserem speziellen Fall besteht der Befehl einfach im Aufruf des PHP-Skripts einmal pro Tag zu einer bestimmten Uhrzeit.
Detailbeschreibung
  • Einrichtung eines PHP-Skripts bei www.lima-city.de
    • Kostenfreien Useraccount beantragen
    • Im Rootverzeichnis ein Unterverzeichnis Daten und dort wiederum ein Unterverzeichnis Files einrichten
    • Ins Unterverzeichnis Daten dieses PHP-Skript hochladen, URL dazu anpassen und ggf weitere Filenamen im Array dazufügen
<?
# Version 1.03
$host = "http://meineloggerurl.dyndns.org/";
$files= array('minutesv.js', 'days_hist.js');
$pfad='Files//';

$timestamp = time();
$datum = date("d.m.y",$timestamp);
$daten = file_get_contents($host.$files[0]);

foreach ($files as $value) {
$daten = file_get_contents($host.$value);
$datei_name = date("y",$timestamp).date("m",$timestamp).date("d",$timestamp).$value;
$fp = fopen($pfad.$datei_name, "w");
fwrite($fp, $daten);
fclose($fp);
}

$datei_name = date("y",$timestamp).date("m",$timestamp).date("d",$timestamp).'days_hist.js';
if (file_exists($pfad.'days_hist.js')) {
    $daten = file_get_contents($pfad.$datei_name);
    $teile = preg_split('/\r\n/', $daten );
    $daten2 = file_get_contents($pfad.'days_hist.js');
    $teile2 = preg_split('/\r\n/', $daten2 );
    if ($teile[0]!=$teile2[0]) {
       rename($pfad.'days_hist.js', $pfad.'days_hist.alt');
       $fp = fopen($pfad.'days_hist.js', "a");
       fwrite($fp, $teile[0]."\r\n");
       fwrite($fp, $daten2);
       fclose($fp);
    }
  } else {
    copy($pfad.$datei_name, $pfad.'days_hist.js');
}

?>

<html>
<head><title>FreeSol Datenaktualisiierung</title></head>
<body>
 
<h2>Guten Tag,</h2>
die FreeSol-Datenaktualisierung wurde am <?=$datum;?> durchgeführt.
</body>
</html>
    • Falls auch die SML-Daten gesichert werden sollen, ist die Zeile
$files= array('minutesv.js', 'days_hist.js');

zu ersetzen durch

$files= array('minutesv.js','frees_bv.js','frees_ev.js', 'days_hist.js');
    • eventuell ist 'frees' dabei durch die individuell gewählt Vorsilbe für die vertraulichen Daten zu ersetzen.
    • Im Normalfall langt es sogar, die drei Vortagesfiles (alle Filenamen, die ein 'v' enthalten) zu speichern.
    • Das Einschließen der 'days_hist.js' erzeugt eine ewige 'days_hist.js'.
  • Einen cronjob bei www.my-cronjob.de (empfehle ich inzwischen wieder anstelle von www.cron-job.org, da ich letzteres nachts nicht stabil zum Laufen gebracht habe) einrichten, der das php-Skript einmal am Tag aufruft.
    • ACHTUNG: Die Ausführungszeit des Cronjobs nicht auf Zeiten vor 00.05 Uhr setzen, da sonst falsche Daten abgespeichert werden.
    • ACHTUNG: Die Ausführungszeit des Cronjobs nicht auf Zeiten vor 01.05 Uhr setzen, da sonst am Tag der Sommerzeitumstellung abends (an dem ja der Logger noch auf Winterzeit läuft) die Minutenwerte mit einem falschem Datum abgespeichert werden (bei eingestellter Ausführungszeit 0.05 ist es am Logger noch 23.05 Uhr, sodass dort noch kein Datumswechsel erfolgt ist)
    • ACHTUNG: Logger bootet um 1.17 Uhr
    • Empfohlene Zeit im Moment: 1.05 Uhr
    • Es empfiehlt sich, den Cronjob so einzustellen, dass er auch bei Ausführungsfehlern weiter aktiv bleibt, und entsprechende Benachrichtigungseinstellungen zu setzen.
    • Im Unterverzeichnis 'Files' finden sich dann die täglich gespeicherten Daten, Datum ist den Filenamen vorangestellt.
  • In FreeSol EV folgende Einstellungen vornehmen:
    • Bei 'Einstellungen - Portal-URL' den URL-Pfad zum Datenverzeichnis auf dem Portal angeben. Dieser muss mit einem '/' enden.
    • Die Checkbox 'Portal aktiv?' anklicken
    • Bei Klick auf 'Minutenwerte - Alle aus Portal aktualisieren' werden alle auf dem Portal vorhandenen Daten der Vortagesfiles ('v' in den Endungen enthalten, also minutes_v.js, xxx_bv.js und xxx_ev.js) heruntergeladen und in die Datenbasis eingearbeitet. Existierende Files werden überschrieben.
  • In FreeSol EV zusätzlich folgende Einstellungen für SML-Abruf vornehmen (ab Version 2.29)
    • Filepresfix URL: Wert der Variable Ee_Fs_ev_url eintragen (z.B. 'frees', ohne Hochkomma)
    • Portal-URL eingeben, z.B. 'meineurl.lima-city.de/Daten/'
    • Bei 'Portal aktiv' ein Häkchen setzen
  • Files werden im Portal abgespeichert unter Namen wie 120520minutesv.js . Das File enthält dann die Daten vom 19.5.2012.
Graphikausgabe (mit selber zu installierendem Zusatzprogramm)

Durch Aufrufen eines PHP-Skripts namens FreeSol-Bild.php und einer Reihe von Parametern lässt sich aus den Daten auch sofort eine Grafik erzeugen und im Browser anzeigen. Ein Aufruf lautet dann z.B.:

http://meineurl.lima-city.de/Daten/FreeSol-Bild.php?datum=120524&graphzahl=3&praefix=frees&url=http://meineurl.lima-city.de/Daten/Files/

Die Übergabeparameter sind dabei wie folgt:

  • datum: das Speicherdatum(!) im Filenamen (ist normalerweise ein Tag weiter als die Daten, die Daten vom 23.5.2012 sind also im File mit Namensbestandteil 120524 abgespeichert).
  • graphzahl: 1, falls nur Solardaten vorhanden, Werte 2 oder 3 liefern alle drei Datenquellen Solar, Bezug und Einspeisung
  • praefix: die Präfix für die Filenamen von Bezugs- und Einspeisedaten
  • url: Die URL der Daten

Die Grafik wird von dem Programmpaket JpGraph erzeugt, das im Datenverzeichnis in einem Unterverzeichnis mit Namen 'jpgraph' liegen muss. (PHP5-Version von JpGraph herunterladen, auf dem Heimrechner auspacken, Stammverzeichnisnamen in jpgraph umbenennen und per ftp ins Datenverzeichnis schieben)

Das Ergebnis schaut dann wie folgt aus:

Graphikausgabe (fertig installierter Dienst zur freien Benutzung)

Um den Nutzern, die die Grafikausgabe ohne Zusatzarbeit einfach verwenden wollen, einen bequemen Gebrauch ohne eigene Installation des Tools JpGraph zu ermöglichen, habe ich eine Version der Software sowie das passende PHP-Skript fertig installiert.

Bei Zugriff auf diesen Link unter freesolgrafik.lima-city.de und die Übergabe entsprechender Parameter holt sich das Skript die Daten aus der übergebenen URL, wandelt diese in eine Grafik um und übergibt die GRafik als Ergebnis zurück.

Ein Aufruf schaut dann wie folgt aus:

http://freesolgrafik.lima-city.de/Daten/FreeSol-Bild.php?datum=120524&graphzahl=3&praefix=frees&url=http://meineurl.lima-city.de/Daten/Files/

Die Parameter haben folgende Bedeutung:

  • datum: das Speicherdatum(!) im Filenamen (ist normalerweise ein Tag später die Daten, die das File beinhaltet. Die Daten vom 23.5.2012 sind also im File mit Namensbestandteil 120524 abgespeichert). Um eine Grafik des aktuellen Tags zu erzeugen, kann als Datum der String 'heute' übergeben werden. Die Anfrage muss dazu aber an den Logger selbst gerichtet sein, weil ja im Datenportal die Daten des aktuellen Tages noch nicht vorliegen (also bei "url:" die Adresse des Loggers übergeben).
  • graphzahl: 1, falls nur Solardaten vorhanden, Werte 2 oder 3 liefern alle drei Datenquellen Solar, Bezug und Einspeisung
  • praefix: die Präfix für die Filenamen von Bezugs- und Einspeisedaten
  • url: Die URL der Daten

Das Tool sucht beim oben beschriebenen Aufruf nach den Dateien 120524minutesv.js, 120524frees_bv.js und 120524frees_ev.js, die die Daten vom 23.5.2012 enthalten, und zeigt die drei Fileinhalte in einer Grafik an.

Achtung: Leseberechtigung für das Verzeichnis muss gesetzt sein (Man muss die Datenfiles also direkt per link aus dem Internet aufrufen können).

Zwei Beispiellinks für den Zugriff auf historische Daten finden sich hier:

Ein Beispiellink für den Zugriff direkt auf den Logger (in diesem Fall ist das meiner, Ihr müsst natürlich statt freesol.dd-dns.de Eure eigene URL eingeben) findet sich hier:

Zusammenfassung mehrerer Logger

Mit einem PHP-Skript, das mittels Cronjob regelmässig aufgerufen wird, lassen sich z.B. die minutes.js und minutesv.js Dateien zweier Logger addieren und so mehrere S0-Signale zu einer Quelle zusammenfassen.

Ein passenden PHP-Skript schaut dabei wie folgt aus:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        echo "Addition zweier Minutesv.js Files fuer Freesol"."<br>";
        # Version 1.05 vom 23.11.2012

// Hier anpassen!!! ----------------------------------------------------------------
// URL des ersten Loggers eintragen		
$host1 = "http://ersterlogger.no-ip.org/";
// URL des zweiten Loggers eintragen
$host2 = "http://zweiterlogger.no-ip.org:/";
// oder: $host2 = "http://ersterlogger.no-ip.org:/81";
// Pfad zur Zieldatei eintragen, relativ zum Ort des PHP-Skripts
$pfad='Files//add//';
// Ende Anpassung!!! ---------------------------------------------------------------

$files= 'minutesv.js';

$timestamp = time();
$datum = date("d.m.y",$timestamp);
$daten1 = file_get_contents($host1.$files);
$daten2 = file_get_contents($host2.$files);
echo "Erstes File: ".$host1.$files."<br>";
echo "Zweites File: ".$host2.$files."<br>";

$teile1 = preg_split('/\r\n/', $daten1 );
$teile2 = preg_split('/\r\n/', $daten2 );
$fehler=0;

$datei_name = date("y",$timestamp).date("m",$timestamp).date("d",$timestamp).$files;
$fp = fopen($pfad.$datei_name, "w");

 if ($teile1[0]!=$teile2[0]){
     $fehler=1;
    echo "FEHLER: Filedatums sind unterschiedlich."."\r\n";    
 }else{
     echo $teile1[0]."<br>";
    fwrite($fp, $teile1[0]."\r\n");   
 }

 echo "------------------------------------------<br>";

 for($j=1; $j <=18 ; $j++) {
 
 echo $teile1[$j]."<br>";
 echo $teile2[$j]."<br>";
 
 $teile1[$j]=str_replace("  "," ",$teile1[$j] );
 $teile2[$j]=str_replace("  "," ",$teile2[$j] );
 $segmente1=explode(" ",$teile1[$j] );
 $segmente2=explode(" ",$teile2[$j] );
 
 $anzahlseg=count($segmente1);
 //echo $anzahlseg."<br>";

 echo $segmente1[0]." ";
 fwrite($fp, $segmente1[0]." ");
 for($i=1; $i < $anzahlseg-1; $i++) {
    $ergebnis=$segmente1[$i]+$segmente2[$i];
    echo $ergebnis."  ";
	fwrite($fp, $ergebnis."  ");   
 }
  echo "<br>";
  fwrite($fp, "\r\n");
  echo "------------------------------------------<br>";
 }
 
fclose($fp);
     
        ?>
    </body>
</html>

pv-log.com

  • Zunächst muss der Logger aus dem Internet erreichbar gemacht werden wie hier beschrieben.
  • Auf pv-log.com muss nach Anlegen eines Accounts und Einrichtung einer Anlage mit den üblichen Daten wie Maximalleistung noch folgendes eingegeben werden
    • Bei 'Eigener Bereich - Anlagendaten bearbeiten' unter 'Datenlogger - Hersteller' auswählen: 'FreeSol'
    • Bei 'Eigener Bereich - Anlagendaten bearbeiten' unter 'Datenlogger - Daten-URL' die URL des Loggers eingeben, z.B. 'http://meineanlage.dd-dns.de/'
  • Speichert und visualisiert auch die 5min-Werte dauerhaft
  • Beispielanlage: http://www.pv-log.com/Anlage/51.php

sonnenertrag.eu

Fehlende Informationen

Finden sich im Moment noch bei http://www.freesol.de/software.html

Handy Apps

FreeSol Android - Eine kleine Applikation für das Smartphone

Mit dem App Inventor habe ich mal eine kleine App für das Smartphone versucht. Zeigt nur die Tagesdaten und die aktuelle Leistung, ist mehr als Demonstration dafür gedacht, was man alles machen kann.

Die aktuelle Version 1.07 der App kann man hier oder über den abgebildeten QR-Code herunterladen. Sie benötigt mindestens FreeSol AVR 2.01.05.

Die App zeigt nun zusätzlich auch Bezug und Einspeisung von Tag und Vortag an, wenn das Häkchen bei 'SML sichtbar' gesetzt ist (und ein entsprechender SML-Lesekopf läuft). Außerdem werden Verbrauch und Eigenverbrauch angezeigt sowie drei weitere Kennzahlen:

  • Eigenverbrauchsquote (Eigenverbrauch / Solarerzeugung)
  • Selbstversorgungsquote (Eigenverbrauch / Verbrauch)
  • Erzeugungsquote (Solarerzeugung / Verbrauch)

Ab der Version 1.07 wird auch Grafik dargestellt, diese setzt aber ein eigenes Datenportal voraus.

Zu beachten bei der Eingabe der Konfigurationsparameter:

  • URLS ohne 'http://' und ohne '/' am Ende eingeben.

SolarAnalyzer

Zum Solaranalyzer gibt es eine Schnittstelle.

Für muss die Datenlogger-URL in der App als Datenquelle eingeben. Aus dieser werden dann die Tages- und Vortagesdaten gelesen.

Um den SolarAnalyzer auch für länger zurückliegende Minutendaten zu nutzen, empfiehlt sich die Verbindung mit einem an anderer Stelle beschriebenen eigenen kostenfreien Datenportal. Der Verweis auf diese Zusatzdatenquelle (URL des Webspace) kann in den Anlageneinstellungen der App noch zusätzlich eingetragen werden.

Die Ausführungszeit des Cronjobs nicht auf Zeiten vor ca. 00.05 Uhr setzen, falls es Ungenauigkeiten bei den Uhren gibt.

Ganz herzlichen Dank an Stephan für die Arbeit mit der Schnittstelle!