Merkmale und Technik: Unterschied zwischen den Versionen

Aus FreeSol-Wiki

 
(120 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Vorbemerkung ==
Diese Seite enthält technische Hintergrundinformationen, die für den normalen Aufbau und Betrieb eigentlich nicht benötigt werden. Alle relevanten Aufbauanleitungen finden sich [[Aufbauanleitungen |hier]].
== Technische Merkmale ==
== Technische Merkmale ==
=== Grundversion ===
=== Grundversion ===
Zeile 16: Zeile 19:
* [[Aufbauanleitungen#Erweiterungspaket_S0-Z.C3.A4hler:_Zum_Erzeugen_eines_nicht_vorhandenen_S0-Signals|Bestellliste]]
* [[Aufbauanleitungen#Erweiterungspaket_S0-Z.C3.A4hler:_Zum_Erzeugen_eines_nicht_vorhandenen_S0-Signals|Bestellliste]]
* Das Paket besteht aus einem S0-Zähler und erzeugt S0-Signale, wenn keiner in der Anlage vorhanden ist
* Das Paket besteht aus einem S0-Zähler und erzeugt S0-Signale, wenn keiner in der Anlage vorhanden ist
* Aufgrund der Zählerkosten sollte man zunächst versuchen, die S0-Signale anders zu erzeugen, z.B. mittels einer Photodiode über einer vielleicht vorhandenen LED, die im Takt der Energieerzeugung blinkt, oder mittels einer Lichtschranke am Rad des Ferraris-Zählers.
* Der Zähler muß von einem Elektriker in die Hausinstallation eingebaut werden.
* Aufgrund der Zähler- und Einbaukosten sollte man zunächst versuchen, die S0-Signale anders zu erzeugen, z.B. mittels einer Photodiode über einer vielleicht vorhandenen LED, die im Takt der Energieerzeugung blinkt, oder mittels einer Lichtschranke am Rad des Ferraris-Zählers.


=== Erweiterungspaket SML-Lesekopf ===
=== Erweiterungspaket SML-Lesekopf ===
Zeile 34: Zeile 38:
=== Hintergrundinfos zu Programmiergeräten ===
=== Hintergrundinfos zu Programmiergeräten ===
Für das Aufspielen der FreeSol-Sofware auf den Chip im Board sowie für die anschließende Konfiguration benötigt man einen Programmieradapter. Sofern man noch keinen hat, hat man die Wahl zwischen ganz unterschiedlichen Varianten, die im Detail [http://www.mikrocontroller.net/articles/AVR_In_System_Programmer# hier] beschrieben werden. In der Regel wird man jedoch wohl einen der beiden Programmieradapter aus dem [[Aufbauanleitungen#Grundpaket:_FreeSol-Logger_f.C3.BCr_S0-Solarenergieerfassung|Grundpaket]] wählen.
Für das Aufspielen der FreeSol-Sofware auf den Chip im Board sowie für die anschließende Konfiguration benötigt man einen Programmieradapter. Sofern man noch keinen hat, hat man die Wahl zwischen ganz unterschiedlichen Varianten, die im Detail [http://www.mikrocontroller.net/articles/AVR_In_System_Programmer# hier] beschrieben werden. In der Regel wird man jedoch wohl einen der beiden Programmieradapter aus dem [[Aufbauanleitungen#Grundpaket:_FreeSol-Logger_f.C3.BCr_S0-Solarenergieerfassung|Grundpaket]] wählen.
=== Der Sourcecode der FreeSol-Software für das AVR-NetIO-Board ===
Die FreeSol-Software, die auf den Mikroprozessor geladen werden muss, ist in Basic für den BASCOM-Compiler geschrieben und basiert zum größten Teil auf Quellen des Programmpakets [http://bascom-forum.de/showthread.php?1952-NETIO NETIO+], in dem verschiedene Ethernet-Dienste für das NetIO-Board implementiert sind. Der komplette Sorcecode ist im Downloadbereich verfügbar und kann somit auch selber weiterentwickelt werden.
Die BASCOM-Programmierumgebung kostet für ein Programm in der Größe von FreeSol allerdings ca. 70 EUR.
=== Hinweise zur SML-Entschlüsselung ===
* SML-Zähler senden alle paar Sekunden ein SML-Telegramm, das typisch zwischen 300 und 400 Byte lang ist.
* Das Telegramm ist im Aufbau bei jedem Zähler anders, trotzdem kann man mit ein paar Tricks die wichtigsten Daten auslesen.
* Jedes Telegramm startet mit den 8 Bytes 1B 1B 1B 1B 01 01 01 01. Diese Telegramm-Startsequenz muss man also zunächst suchen.
* Im Telegramm werden dann mehrere Zählerstände übertragen. Jeder Zählerstand gehört zu einer eigenen Zählernummer, typisch verwendet werden 1.8.0 (gekennzeichnet durch die Startsequenz 77 07 01 00 01 08 00) und 2.8.0 (gekennzeichnet durch die Startsequenz 77 07 01 00 02 08 00). Diese Zählerstand-Startsequenzen muss man also, ausgehend von der Position der Telegramm-Startsequenz, als nächstes suchen. Allerdings sind die Zählerstand-Nachrichtenteile für jeden Zähler anders aufgebaut, dies ist in den folgenden Kapiteln beschrieben.
* Die in den folgenden Unterkapitel beschriebenen Zähler werden untertsützt. Es sind jeweils Beispielprotokoll der verschiedenen Zähler aufgeführt und grob entschlüsselt.
* Bei der Verbindungsaufnahme hilft ein Terminalprogramm wie [https://www.heise.de/download/product/hterm-53283 Hterm]
==== Beispiel EMH eHz ====
* Zählerstand 1.8.0=5108,3431 kWh (Bezug)
** gesamter Code: 77 07 01 00 01 08 00 FF 62 82 01 62 1E 52 FF 56 00 '''03 0B 78 A7''' 01
** gliedert sich in
*** Zählernummer: 77 07 01 00 01 08 00
*** unklar: FF
*** Indexhinweis: 62
**** Abhängg von dieser Zahl gehen die vier Zählerstandbytes an der Stelle 18 (bei 62H), 19 (bei 63H) oder 20 (bei 64H) los
*** unklar 82 01 62 1E 52 FF 56 00
*** Zählerstand: '''03 0B 78 A7'''
*** Postfix: 01
** Der Zählerstand berechnet sich dann als (((03H*256)+0BH)*256+78H)*256+A7H nach Verschiebung des Kommas zu 5108,3431 kWh
* Zählerstand 2.8.0=11168,8373 kWh (Einspeisung)
** gesamter Code: 77 07 01 00 02 08 00 FF 62 82 01 62 1E 52 FF 56 00 '''06 A8 3A B5''' 01
** gliedert sich in
*** Zählernummer: 77 07 01 00 02 08 00
*** unklar: FF
*** Indexhinweis: 62
**** Abhängg von dieser Zahl gehen die vier Zählerstandbytes an der Stelle 18 (bei 62H), 19 (bei 63H) oder 20 (bei 64H) los
*** unklar 82 01 62 1E 52 FF 56 00
*** Zählerstand: '''06 A8 3A B5'''
*** Postfix: 01
** Der Zählerstand berechnet sich dann als (((06H*256)+A8H)*256+3AH)*256+B5H nach Verschiebung des Kommas zu 11168,8373 kWh
==== Beispiel Easymeter Q3C  ====
* Zählerstand 1.8.0=975 kWh (Bezug)
** gesamter Code: 77 07 01 01 01 08 00 FF 63 01 90 72 62 01 65 00 A1 14 9C 62 1E 52 FC 69 00 00 00 '''02 45 7C A3 33''' 01
** gliedert sich in
*** Zählernummer: 77 07 01 00 01 08 00
*** unklar: FF 63 01 90 72 62 01 65 00 A1 14 9C 62 1E 52 FC 69 00 00 00
*** Zählerstand: '''02 45 7C A3 33'''
*** Postfix: 01
** Der Zählerstand berechnet sich dann als ((((02H*256)+45H)*256+7CH)*256+A3H)*256 +33H nach Kommaverschiebung zu ca. 975 kWh.
* Der Zähler hat wohl zwei Schnittstellen:
** Die Schnittstelle oben sendet immer von selber (Push-Betrieb). Diese funktioniert bereits im Moment mit dem FreeSol-Programmen und dem Logger, leider ist sie manchmal verplombt.
** Die Schnittstelle vorne ist immer offen, dafür muss dort aber die Information mittels eines Aufweckstriungs abgerufen werden (Pull-Betrieb).
* Weitere Informationen zum Aufweckstring in [http://www.photovoltaikforum.com/freesol-sml-s0-ueber-easymeter-q3c-info-schnittste-p832270.html#p832270 diesem Beitrag] und den darauf folgenden. Der Aufweckstring ist bisher in FreeSol nicht realisiert, bei Interesse und vorhandenem Zähler gerne Kontaktaufnahme im Board.
==== Beispiel Hager EHZ 363Z5 ====
* Zählerkennung: 77 07 81 81 C7 82 03 FF 01 01 01 01 04 48 41 47 01
* Zählerstand 1.8.0=1263 kWh (Bezug)
** gesamter Code: 77 07 01 00 01 08 00 FF 62 82 01 62 1E 52 FF 55 '''00 D6 5B 11''' 01
** gliedert sich in
*** Zählernummer: 77 07 01 00 01 08 00
*** unklar: FF 62 82 01 62 1E 52 FF
*** Markerbyte (es folgen 4 Zahlenbytes): 55
*** Zählerstand: '''00 D6 5B 11'''
*** Postfix: 01
** Der Zählerstand berechnet sich dann als (((00H*256)+D6H)*256+5BH)*256+11H =  14048017
** Das Komma ist dann noch um 4 Stellen nach links zu verschieben: 1404,8017
* Zählerstand 2.8.0=821 kWh (Einspeisung)
** gesamter Code: 77 07 01 00 02 08 00 7F 62 02 01 62 1E 52 7F 54 '''7D 4A 60''' 01
** gliedert sich in
*** Zählernummer: 77 07 01 00 02 08 00 7F 62 02 01 62 1E 52 7F 54 7D 4A 60 01
*** unklar: 7F 62 02 01 62 1E 52 7F
*** Markerbyte (es folgen 3 Zahlenbytes): 54
*** Zählerstand: '''7D 4A 60'''
*** Postfix: 01
** Der Zählerstand berechnet sich dann als ((7DH*256)+4AH)*256+60H =  ((125*256)+74)*256+96 = 8 211 040
** Das Komma ist dann noch um 4 Stellen nach links zu verschieben: 821,1040 kWh
==== Beispiel Itron, Modell HZ1-C50D-R1-Z ====
* Der Zähler sendet kein normales SML-Format, sendet aber selbständig regelmässig alle 1-4 s Daten im Klartext
* Das Format ist fast identisch zu Hager und hier im Grundsatz beschrieben: http://download.hager.com/Hager.de/files_download/aktuelles/ehz/ehz_betriebsanleitung_mid.pdf
* Beispiel: /HAG5eHZ010C_IRWEZA201-0:0.0.0*255(797810-5000896)1-0:1.8.1*255(004077.6755)1-0:2.8.1*255(004210.6062)1-0:96.5.5*255(82)0-0:96.1.255*255(0000134489)!
* Die Schnittstelle muss auf 9600 Baud, 7 Datenbits (!), Parity None, 1 Stopbit eingestellt sein
* Integriert ab Version 2.04.06, Setupt-Prrogramm 1.20 (dort Variable Fs-Zahelertyp auf 1 setzen).
==== Beispiel ED300L ====
* [http://www.photovoltaikforum.com/freesol-f113/sml-und-s0-blinkdiode-klappt--t81410.html#p754941 Hier] gibt es einen erfolgreichen Erfahrungsbericht eines Nutzers.
=== Hinweise zur DLMS-Entschlüsselung ===
==== Allgemeines ====
Die das Kommunikationsprotokoll "Device Language Message specification" (DLMS) wird z.B. in Zählern von Landis und Gyr eingesetzt.
Weiterführende Links:
* http://www.dlms.com/index2.php
* http://www.cyamon.com/DLMSSurvivalKit/dsk1.html
==== Protokollbeispiel ====
in Arbeit


=== Datenstruktur im Eeprom ===
=== Datenstruktur im Eeprom ===
Zeile 102: Zeile 202:
                     |String*47
                     |String*47
                     |Ee_s47_benutzerkennung
                     |Ee_s47_benutzerkennung
                     |Benutzerkennung des Mailkontos, 64bit codiert eingeben, z.B. mit <a href="http://www.php-einfach.de/base64_generator.php">base64_generator</a>. ACHTUNG: Nicht die Mailadresse eingeben, die Benutzerkennung ist eine Nummer. Die Benutzerkennung findet sich als Kundennummer bei gmx.de unter "Mein Account".
                     |Benutzerkennung des Mailkontos. ACHTUNG: Nicht die Mailadresse eingeben, die Benutzerkennung ist eine Nummer. Die Benutzerkennung findet sich als Kundennummer bei gmx.de unter "Mein Account".
|-
|-
                     |11E
                     |11E
                     |String*31
                     |String*31
                     |Ee_s31_passwort
                     |Ee_s31_passwort
                     |Passwort des Mailkontos, 64bit codiert eingeben, z.B. mit [http://www.php-einfach.de/base64_generator.php base64_generator]
                     |Passwort des Mailkontos
|-
|-
                     |13E
                     |13E
Zeile 197: Zeile 297:
                     |Integer
                     |Integer
                     |Ee_fs_dhcp
                     |Ee_fs_dhcp
                     |1: DHVP ausgeschalten, alle anderen Werte : DHCP eingeschalten. Sollte im Normalfall auf 0 stehen.
                     |1: DHCP ausgeschalten, alle anderen Werte : DHCP eingeschalten. Sollte im Normalfall auf 0 stehen.
|-
|-
                     |427
                     |427
Zeile 254: Zeile 354:
                     |Präfix für die Webseiten mit vertraulicher Information (Bezugs- und Einspeisewerte).
                     |Präfix für die Webseiten mit vertraulicher Information (Bezugs- und Einspeisewerte).
|-
|-
                    |FDA
                    |Byte
                    |Ee_fs_zaehlertyp
                    |0: automatisch; 1: Itron . Alle anderen Werte wie 0. Ab Loggerversion 2.04.04 nötig.
|-
|}
=== Erläuterung der Inhalte der Webseiten des Logger ===
Die Eingabe der Netzwerkadresse ohne weitere Fileangaben zeigt auf das Index-File, in dem eine Gesamtansicht                        der wichtigsten Loggereinstellungen zu sehen ist.
In der unteren Tabelle werden dabei für jede Stunde der S0-Zählerstand (mittlere Zeile) sowie die in dieser Stunde eingegangenen S0-Signale angezeigt.
In der Gesamtansicht kann man auf Buttons mit verschiedenen Unteransichten klicken, in denen neben einer grafischen Darstellung der 5-Minuten-Werte des aktuellen Tages (graph1.svg) auch Tages- und Monatswerte (days_hist.js und months.js)sowie Konfigurationsdaten (base_vars.js) in dem für Sonnenertrag.de notwendigen Format zu finden sind. Auch finden sich die 5-Minutenwerte für die grafische Darstellung nochmals in einem extra File (minutes.js).
Weitere verfügbare Filenamen sind:
*minutesv.js: 5-Minutenwerte des S0-Zählers der PV-Anlage vom Vortag
*graph1v.svg: Grafik der 5-Minutenwerte des S0-Zählers der PV-Anlage vom Vortag
Für den einfachen Zugriff auf wichtige Einzelwerte sind noch einige Spezialseiten definiert:
*iframe_1.htm: Datum und Zeit
* iframe_2.htm: Aktuelle Solarleistung (alle 5 min aktualisiert)
* iframe_3.htm: Gesamte erzeugte Solarenergie
* iframe_4.htm: Heute erzeugte Solarenergie
* iframe_5.htm: Datum, Zeit und aktuelle Solarleistung (alle 1 min aktualisiert) (ab Version 2.01.02)
* iframe_6.htm: Zahl der SML-Lesefehler und Gesamtzahl der SML-Nachrichten (d.h. mindestens Anfang und Ende erkannt) (ab Version 2.02.01)
* iframe_7.htm: "Schaltsignal: an" oder "Schaltsignal: aus", abhängg vom Zustand des Pin 4 (ab Version 2.04.07)
Bei zusätzlichem Betrieb eines SML-Zählers für Bezug und Einspeisung sind weitere Webseiten verfügbar, die [[Aufbauanleitungen#Inbetriebnahme_der_SML-Lesefunktion_f.C3.BCr_Bezugs-_und_Einspeisez.C3.A4hler|hier]] beschrieben sind.
=== Steckerbelegung===
Die Abbildung unten zeigt einen Auszug aus dem AVR-NetIO-Schaltplan. Alle Signale werden über den EXT-Stecker geleitet.
Die Numerierung geht so weiter, dass das Pin in der zweiten Zeile links die Nummer drei hat. Die Pins werden von FreeSol im Moment wie folgt verwendet:
{| class="wikitable" border="1"
|- class="hintergrundfarbe6"
|-
!PIN
!Bedeutung
|-
|1
|Eingang: [[Aufbauanleitungen#Leitungen_verbinden|Verbindung zu S0+]] vom Solar-S0-Zähler
|-
|2
|Ausgang: Schaltsignal für [[Merkmale_und_Technik#Steuerung_externer_Verbraucher|externen Verbraucher]], falls genügend Solarstrom da ist.
|-
|3
|Ausgang: schaltet synchron mit S0-Signal. Zur Kontrolle z.B. über 220 Ohm Widerstand und eine LED an GND führen.
|-
|4
|Eingang: falls auf GND gezogen, wird eine [[Merkmale_und_Technik#Versand_von_St.C3.B6rungsmeldungen|Störungsmeldung]] per Email versandt.
|}
|}
Betriebsspannungen 0V und +5V werden aus der blauen Schraubklemmenleiste am Boardrand abgegriffen, die entsprechenden Ausgänge kommen mehrfach vor und sind beschriftet.
Das LCD-Dsiplay wird über die 25-pol-DSUB-Leiste angeschlossen.
<gallery widths=230px  >
Datei:EXT-Stecker.png|Steckerbelegung für die Signalanschlüsse.
</gallery>


=== Funktionserweiterungen des Loggers ===
=== Funktionserweiterungen des Loggers ===
==== Täglicher Status-Emailversand====
==== Täglicher Status-Emailversand====
Das Programm kann einmal täglich eine Statusemail mit dem Ertrag des Tages an eine Emailadresse versenden. Hierzu ist ein kostenfreier GMX-Mailaccount einzurichten. Die Konfiguration des Boards erfolgt über das Windows-Setup-Programm.
Das Programm kann einmal täglich eine Statusemail mit dem Ertrag des Tages an eine Emailadresse versenden. Hierzu ist ein kostenfreier GMX-Mailaccount einzurichten. Die Konfiguration des Boards erfolgt über das Windows-Setup-Programm.
Es ist zu beachten, dass ein gmx-Mailaccount nach 6 Monaten ohne ein Login über die Webseite auf inaktiv gesetzt wird. Dies kann zur Störungen beim Mailversand führen, es ist also darauf zu achten, sich alle 6 Monate einmal einzuloggen.


====Versand von Störungsmeldungen====
====Versand von Störungsmeldungen====
Eine externes Signal kann benutzt werden, um dem Board eine Hardwarestörung mitzuteilen. Als Störungsquellen kommen entweder Störungssignale vom Wechselrichter oder auch Zustandsmeldungen von Blitzschutzelementen in Frage.
Eine externes Signal kann benutzt werden, um dem Board eine Hardwarestörung mitzuteilen. Als Störungsquellen kommen entweder Störungssignale vom Wechselrichter oder auch Zustandsmeldungen von Blitzschutzelementen in Frage.


Im Moment müssen alle Störungen zu einem elektrischen Signal zusammengeführt werden (bei Bedarf könnte ich auch auf mehrere Eingangssignale erweitern). Der zuständige Eingang ist Pin 4 des EXT-Steckers. Ist er unbeschaltet oder liegt er auf 5 V, so liegt keine Störung vor. Falls er auf 0 V gezogen wird und dieses Signal mindestens eine Minute lang anliegt, wird eine Störungsmail an die normale Benachrichtigungsadresse generiert, der Text ist über einen Konfigurationsparameter einstellbar. Falls die Störung weiter besteht, wird eine erneute Mail erst dann verschickt, wenn das Signal mindestens eine Minute lang auf 5V lag. (Technische Umsetzung: Das Signal wird nur einmal pro Minute abgefragt)
Im Moment müssen alle Störungen zu einem elektrischen Signal zusammengeführt werden (bei Bedarf könnte ich auch auf mehrere Eingangssignale erweitern). Der zuständige Eingang ist Pin 4 des [[Merkmale_und_Technik#Steckerbelegung|EXT-Steckers]]. Ist er unbeschaltet oder liegt er auf 5 V, so liegt keine Störung vor. Falls er auf 0 V gezogen wird und dieses Signal mindestens eine Minute lang anliegt, wird eine Störungsmail an die normale Benachrichtigungsadresse generiert, der Text ist über einen Konfigurationsparameter einstellbar. Falls die Störung weiter besteht, wird eine erneute Mail erst dann verschickt, wenn das Signal mindestens eine Minute lang auf 5V lag. (Technische Umsetzung: Das Signal wird nur einmal pro Minute abgefragt)
 
Ab Version 2.04.07 wird der Zustand des Schaltsignals in iframe7_htm angezeigt.


====Steuerung externer Verbraucher====
====Steuerung externer Verbraucher====
Falls die Leistung der Solaranlage über einer mit dem Setup-Programm einstellbaren Schaltschwelle liegt (Messung als 5min-Mittelwert), kann ein Steuersignal zum Anschalten eines externen Verbrauchers gegeben werden. Das Steuersignal bleibt mindestens 5 min lang an, jedoch lässt sich über den Parameter "Schaltdauer" konfigurieren, wie viele 5min-Zyklen der Verbraucher anbleiben soll. Sobald ein weiterer 5min-Zyklus über der Schaltschwelle liegt, wird die Anschaltdauer wieder auf die eingestellte Schaltdauer verlängert.
Falls die Leistung der Solaranlage über einer mit dem Setup-Programm einstellbaren Schaltschwelle liegt (Messung als 5min-Mittelwert), kann von PIN 2 des [[Merkmale_und_Technik#Steckerbelegung|EXT-Steckers]] ein Steuersignal zum Anschalten eines externen Verbrauchers gegeben werden. Das Steuersignal bleibt mindestens 5 min lang an, jedoch lässt sich über den Parameter "Schaltdauer" konfigurieren, wie viele 5min-Zyklen der Verbraucher anbleiben soll. Sobald ein weiterer 5min-Zyklus über der Schaltschwelle liegt, wird die Anschaltdauer wieder auf die eingestellte Schaltdauer verlängert.


Zur sicheren elektrischen Ansteuerung empfehle ich einen [http://www.elv.de/2-4-Kanal-Sendemodul-S4M,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_8211/flv_/bereich_/marke_Funkschalter%20Hc8000%2024,95 Funksender] (Bausatz 9,95 EUR, fertig aufgebaut 17,95 EUR) und eine [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=24978&flv=1&bereich=&marke= Funksteckdose] (22,95 EUR) von ELV.
Zur sicheren elektrischen Ansteuerung empfehle ich einen [http://www.elv.de/2-4-Kanal-Sendemodul-S4M,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_8211/flv_/bereich_/marke_Funkschalter%20Hc8000%2024,95 Funksender] (Bausatz 9,95 EUR, fertig aufgebaut 17,95 EUR) und eine [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=24978&flv=1&bereich=&marke= Funksteckdose] (22,95 EUR) von ELV.


Sofern man nur Kleinspannung schalten will oder ein professioneller Elektriker ist, kann man sich auch mal die [href="http://www.pollin.de/shop/dt/NTU5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_Relaiskarte_K1.html  Pollin-Relaisplatine K1] ansehen. Achtung, Warnhinweis: Keine 230V-Schaltungen bauen, wenn man nicht weiß, was man tut.
Sofern man nur Kleinspannung schalten will oder ein professioneller Elektriker ist, kann man sich auch mal die [http://www.pollin.de/shop/dt/NTU5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_Relaiskarte_K1.html  Pollin-Relaisplatine K1] ansehen. '''Achtung, Warnhinweis:''' Keine 230V-Schaltungen bauen, wenn man nicht weiß, was man tut.


====LCD-Display====
====LCD-Display====
Zeile 342: Zeile 507:


Zur Aktivierung des Displays muss der Konfigurationsparameter fs_lcd auf 2 stehen.
Zur Aktivierung des Displays muss der Konfigurationsparameter fs_lcd auf 2 stehen.
<gallery widths=230px  >
Datei:Display_1.jpg|Foto der Displayanzeige (Danke an DieterN).
Datei:Display_2.jpg|Foto der Displayanzeige (Danke an DieterN).
Datei:Display_3.jpg|Foto der Displayanzeige (Danke an DieterN).
</gallery>
=== Programmversionen ===
==== FreeSol AVR ====
* 2.01
** EHD versteht nun auch Sequenz 63 1 A2, vorher nur 62 82
** Reload Button bei frees_i.htm geht jetzt richtig
* 2.01.06
** Fehler in Datum von minutes.js usw kurz nach Mitternacht korrigert durch Ersetzen von Date$ durch Date(netio_time)
** iframe_5.htm eingebaut
** Vortageswerte S, B, E auch im Speicher richtig zwischen 0.00 und 1.27
** frees_1a eingefügt
** frees_1a Plausibilitätstest bei Leistungswerten eingefügt
* 2.01.07
** EHD versteht nun auch Codierung 64 an Pos 139
* 2.01.08
** Fehler in frees_1a.js (Vortageswerte) beseitigt
** Heartbeat um S0-Stand und sml ergänzt
* 2.02
** Keine Änderungen zu 2.01.08, stabile Release
* 2.03.01
** Beseitigung des 5-8-12 Bugs
* 2.04
** SML-Zähler Hager EHZ363Z5 wird nun verstanden
* 2.04.01
** Erweiterung des Protokolls für SML-Zähler Hager EHZ363Z5
* 2.04.02
** Der EMH-Zähler wird nun auch verstanden, wenn im SML-Telegramm keine Bezugswerte vorkommen.
* 2.04.03
** 1.8.0 muss nicht belegt sein, auch Zähler mit nur 2.8.0 Daten werden bedient
* 2.04.06
** Zählertyp Itron eingeführt. Achtung: Im Setupprogramm (ab Version 1.20 möglich) muß Variable Fs-Zaehlertyp für Itron auf 1 stehen.
* 2.04.07
** iframe_7.htm Enthält Status des Schaltsignals.
*2.04.08
** Mailversand um Zählerstände Bezug und Einspeisung erweitert.
* 2.04.09
** Mailserver und Port werden jetzt korrekt aus Eeprom-Daten verwendet
** Mailserveradresse und Port werden beim Versand über serielle Schnittstelle ausgegeben
* 2.04.11
** Bug in frees_1a.js Vortageswerte Bezug und Einspeisung korrigiert
===== Features, die möglich wären, aber nicht kurzfristig geplant sind =====
* Einlesen mehrerer S0-Signale
** Grund: Keine einfach zugängliche und freie serielle Schnittstelle
==== FreeSol AVR-24 (S0-24h Version)====
Diese Version speichert nur S0-Werte, keine SML-Daten, dafür aber 24 h lang.
Sie ist aus der FreeSol-Version 2.04.03 abgeleitet
* 0.09.00
** Kopie aus dem Hauptzweig und damit gestartet, die SML-Funktionalität zu löschen
* 0.09.01
** Erste Alpha-Version. Ungetestet, ich mache weiter, sobald erster Nutzer testet.
*0.09.02
** Falsche Variablendimensionierung für Minutenwerte korrigiert
** Falscher Offset in minutes.js und minutesv.js korrigiert
** Auskommentierungsfehler in graph1.js und graph1v.js beseitigt
*0.09.03
** Routine für manuelles Setzen der Zeit im Programmcode für Debuggingzwecke eingebaut.
** 5-Minutenwerte zwischen Mitternacht und Bootzeitpunkt um 1.17 werden jetzt auch gespeichert
* 0.09.04
** Mailserver IP und Port jetzt nicht mehr hart codiert sondern durch Setupwerte definiert
* 0.09.05
** Debugging der Mailsenderoutine
==== FreeSol Setup ====
* 1.18
** Beschriftung der Buttons verbessert, Defaultwerte für Filenamen und Warnmeldung geändert
* 1.19
** Bug in Filelänge Hexfile bei Nutzung von 'Defaultwerte'-Knopf beseitigt
* 1.20
** Variable Fs-Zaehlertyp eingeführt (0: automatische Erkennung; 1: Zählertyp Itron; Rest: wie 0)
* 1.21
** Zusätzlicher Warnhinweis eingefügt, dass für die Übertragung zum Logger immer das File mit Namen eeprom.txt aus dem Verzeichnis verwendet wird, in dem das Programm selbst liegt.
==== FreeSol SML ====
* 1.04
** EHD versteht nun auch Sequenz 63 1 A2, vorher nur 62 82
* 1.06
** EHD versteht nun auch Codierung 64 an Pos 139
* 1.09
** Neuer Zähler Hager EHZ363Z5 integriert
* 1.10
** Erweiterung an Einleseroutine Zähler Hager EHZ363Z5 integriert
==== FreeSol EV ====
* 2.29
** Unterstützung für [[Aufbauanleitungen#Ein_eigenes_Datenportal|Datenabruf aus eigenem Portal]] eingebaut.
* 2.30
** Bug beim Einlesen von *_bv.js und *_ev.js beseitigt.
* 2.31
** Skalierungs-Bug bei Anzeigen Minutenvergleich beseitigt
* 2.32
** Minutenwerte werden nur noch für den aktuell eingestellten Monat aus dem Portal geholt
** Knopfbeschriftungen bei Minutenwerte geändert
* 2.33
** Korrekturen von JAU
*** Quellentyp (S0/SML kann gewählt werden)
*** Fehlerkorrektur SML kann ausgeschaltet werden.
* 2.35
** Defekter Minutenimport von Portal für aktuellen Monat und alle Files repariert
* 2.36
** Bug beim Einlesen Einspeisung Vortrag aus SML korrigiert.
* 2.37
** Beim Tage verändern erfolgt jetzt auch Monats- und Jahreswechsel
** Programmstart erfolgt mit Monat des aktuellen Tages, nicht mehr Monat des Vortages
* 2.38
** Fehlerkorrektur für Monatswechsel zwischen unterschiedlich Langen Monaten (gibt keinen 31.2)

Aktuelle Version vom 7. Mai 2019, 19:16 Uhr

Vorbemerkung

Diese Seite enthält technische Hintergrundinformationen, die für den normalen Aufbau und Betrieb eigentlich nicht benötigt werden. Alle relevanten Aufbauanleitungen finden sich hier.

Technische Merkmale

Grundversion

  • Bestellliste
  • Internes Abspeichern der letzten 100 Tageswerte für die Energieerzeugung (davon die neuesten 40 über die Weboberfläche angezeigt)
  • Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages
  • Automatische Statusmail einmal täglich
  • Ausgang mit Signal, falls aktuelle Solarleistung über einem Schwellwert liegt (so kann man einen Verbraucher steuern).
  • Tabellarische Darstellung
    • der letzten 40 Tageswerte
    • der Monatswerte von aktuellem Monat und Vormonat
    • der 5-Minutenwerte von Tag und Vortag
  • Grafische Darstellung
    • der 5-Minutenwerte von Tag und Vortag

Erweiterungspaket S0-Zähler

  • Bestellliste
  • Das Paket besteht aus einem S0-Zähler und erzeugt S0-Signale, wenn keiner in der Anlage vorhanden ist
  • Der Zähler muß von einem Elektriker in die Hausinstallation eingebaut werden.
  • Aufgrund der Zähler- und Einbaukosten sollte man zunächst versuchen, die S0-Signale anders zu erzeugen, z.B. mittels einer Photodiode über einer vielleicht vorhandenen LED, die im Takt der Energieerzeugung blinkt, oder mittels einer Lichtschranke am Rad des Ferraris-Zählers.

Erweiterungspaket SML-Lesekopf

  • Bestellliste
  • Das Paket besteht aus Bauteilen für einen Lesekopf, mit dem Daten aus einem SML-Bezugs-Einspeisezähler zusätzlich in das Board eingespeist werden können
  • Internes Abspeichern der letzten 30 Tageswerte für die Bezug und Einspeisung
  • Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages von Bezug und Einspeisung
  • Automatische Statusmail einmal täglich umfasst Bezug und Einspeisung
  • Tabellarische Darstellung
    • der letzten 30 Tageswerte von Bezug und Einspeisung
    • der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
  • Grafische Darstellung
    • der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
  • Für einen geschützten Zugriff auf die Daten können die Namen aller Webseiten, auf denen Bezug und Einspeisungswerte vorkommen, mit einem frei wählbaren Namensstamm versehen werden.

Detailliertere technische Hintergrundbeschreibung

Hintergrundinfos zu Programmiergeräten

Für das Aufspielen der FreeSol-Sofware auf den Chip im Board sowie für die anschließende Konfiguration benötigt man einen Programmieradapter. Sofern man noch keinen hat, hat man die Wahl zwischen ganz unterschiedlichen Varianten, die im Detail hier beschrieben werden. In der Regel wird man jedoch wohl einen der beiden Programmieradapter aus dem Grundpaket wählen.

Der Sourcecode der FreeSol-Software für das AVR-NetIO-Board

Die FreeSol-Software, die auf den Mikroprozessor geladen werden muss, ist in Basic für den BASCOM-Compiler geschrieben und basiert zum größten Teil auf Quellen des Programmpakets NETIO+, in dem verschiedene Ethernet-Dienste für das NetIO-Board implementiert sind. Der komplette Sorcecode ist im Downloadbereich verfügbar und kann somit auch selber weiterentwickelt werden.

Die BASCOM-Programmierumgebung kostet für ein Programm in der Größe von FreeSol allerdings ca. 70 EUR.

Hinweise zur SML-Entschlüsselung

  • SML-Zähler senden alle paar Sekunden ein SML-Telegramm, das typisch zwischen 300 und 400 Byte lang ist.
  • Das Telegramm ist im Aufbau bei jedem Zähler anders, trotzdem kann man mit ein paar Tricks die wichtigsten Daten auslesen.
  • Jedes Telegramm startet mit den 8 Bytes 1B 1B 1B 1B 01 01 01 01. Diese Telegramm-Startsequenz muss man also zunächst suchen.
  • Im Telegramm werden dann mehrere Zählerstände übertragen. Jeder Zählerstand gehört zu einer eigenen Zählernummer, typisch verwendet werden 1.8.0 (gekennzeichnet durch die Startsequenz 77 07 01 00 01 08 00) und 2.8.0 (gekennzeichnet durch die Startsequenz 77 07 01 00 02 08 00). Diese Zählerstand-Startsequenzen muss man also, ausgehend von der Position der Telegramm-Startsequenz, als nächstes suchen. Allerdings sind die Zählerstand-Nachrichtenteile für jeden Zähler anders aufgebaut, dies ist in den folgenden Kapiteln beschrieben.
  • Die in den folgenden Unterkapitel beschriebenen Zähler werden untertsützt. Es sind jeweils Beispielprotokoll der verschiedenen Zähler aufgeführt und grob entschlüsselt.
  • Bei der Verbindungsaufnahme hilft ein Terminalprogramm wie Hterm

Beispiel EMH eHz

  • Zählerstand 1.8.0=5108,3431 kWh (Bezug)
    • gesamter Code: 77 07 01 00 01 08 00 FF 62 82 01 62 1E 52 FF 56 00 03 0B 78 A7 01
    • gliedert sich in
      • Zählernummer: 77 07 01 00 01 08 00
      • unklar: FF
      • Indexhinweis: 62
        • Abhängg von dieser Zahl gehen die vier Zählerstandbytes an der Stelle 18 (bei 62H), 19 (bei 63H) oder 20 (bei 64H) los
      • unklar 82 01 62 1E 52 FF 56 00
      • Zählerstand: 03 0B 78 A7
      • Postfix: 01
    • Der Zählerstand berechnet sich dann als (((03H*256)+0BH)*256+78H)*256+A7H nach Verschiebung des Kommas zu 5108,3431 kWh
  • Zählerstand 2.8.0=11168,8373 kWh (Einspeisung)
    • gesamter Code: 77 07 01 00 02 08 00 FF 62 82 01 62 1E 52 FF 56 00 06 A8 3A B5 01
    • gliedert sich in
      • Zählernummer: 77 07 01 00 02 08 00
      • unklar: FF
      • Indexhinweis: 62
        • Abhängg von dieser Zahl gehen die vier Zählerstandbytes an der Stelle 18 (bei 62H), 19 (bei 63H) oder 20 (bei 64H) los
      • unklar 82 01 62 1E 52 FF 56 00
      • Zählerstand: 06 A8 3A B5
      • Postfix: 01
    • Der Zählerstand berechnet sich dann als (((06H*256)+A8H)*256+3AH)*256+B5H nach Verschiebung des Kommas zu 11168,8373 kWh

Beispiel Easymeter Q3C

  • Zählerstand 1.8.0=975 kWh (Bezug)
    • gesamter Code: 77 07 01 01 01 08 00 FF 63 01 90 72 62 01 65 00 A1 14 9C 62 1E 52 FC 69 00 00 00 02 45 7C A3 33 01
    • gliedert sich in
      • Zählernummer: 77 07 01 00 01 08 00
      • unklar: FF 63 01 90 72 62 01 65 00 A1 14 9C 62 1E 52 FC 69 00 00 00
      • Zählerstand: 02 45 7C A3 33
      • Postfix: 01
    • Der Zählerstand berechnet sich dann als ((((02H*256)+45H)*256+7CH)*256+A3H)*256 +33H nach Kommaverschiebung zu ca. 975 kWh.
  • Der Zähler hat wohl zwei Schnittstellen:
    • Die Schnittstelle oben sendet immer von selber (Push-Betrieb). Diese funktioniert bereits im Moment mit dem FreeSol-Programmen und dem Logger, leider ist sie manchmal verplombt.
    • Die Schnittstelle vorne ist immer offen, dafür muss dort aber die Information mittels eines Aufweckstriungs abgerufen werden (Pull-Betrieb).
  • Weitere Informationen zum Aufweckstring in diesem Beitrag und den darauf folgenden. Der Aufweckstring ist bisher in FreeSol nicht realisiert, bei Interesse und vorhandenem Zähler gerne Kontaktaufnahme im Board.

Beispiel Hager EHZ 363Z5

  • Zählerkennung: 77 07 81 81 C7 82 03 FF 01 01 01 01 04 48 41 47 01
  • Zählerstand 1.8.0=1263 kWh (Bezug)
    • gesamter Code: 77 07 01 00 01 08 00 FF 62 82 01 62 1E 52 FF 55 00 D6 5B 11 01
    • gliedert sich in
      • Zählernummer: 77 07 01 00 01 08 00
      • unklar: FF 62 82 01 62 1E 52 FF
      • Markerbyte (es folgen 4 Zahlenbytes): 55
      • Zählerstand: 00 D6 5B 11
      • Postfix: 01
    • Der Zählerstand berechnet sich dann als (((00H*256)+D6H)*256+5BH)*256+11H = 14048017
    • Das Komma ist dann noch um 4 Stellen nach links zu verschieben: 1404,8017
  • Zählerstand 2.8.0=821 kWh (Einspeisung)
    • gesamter Code: 77 07 01 00 02 08 00 7F 62 02 01 62 1E 52 7F 54 7D 4A 60 01
    • gliedert sich in
      • Zählernummer: 77 07 01 00 02 08 00 7F 62 02 01 62 1E 52 7F 54 7D 4A 60 01
      • unklar: 7F 62 02 01 62 1E 52 7F
      • Markerbyte (es folgen 3 Zahlenbytes): 54
      • Zählerstand: 7D 4A 60
      • Postfix: 01
    • Der Zählerstand berechnet sich dann als ((7DH*256)+4AH)*256+60H = ((125*256)+74)*256+96 = 8 211 040
    • Das Komma ist dann noch um 4 Stellen nach links zu verschieben: 821,1040 kWh

Beispiel Itron, Modell HZ1-C50D-R1-Z

  • Der Zähler sendet kein normales SML-Format, sendet aber selbständig regelmässig alle 1-4 s Daten im Klartext
  • Das Format ist fast identisch zu Hager und hier im Grundsatz beschrieben: http://download.hager.com/Hager.de/files_download/aktuelles/ehz/ehz_betriebsanleitung_mid.pdf
  • Beispiel: /HAG5eHZ010C_IRWEZA201-0:0.0.0*255(797810-5000896)1-0:1.8.1*255(004077.6755)1-0:2.8.1*255(004210.6062)1-0:96.5.5*255(82)0-0:96.1.255*255(0000134489)!
  • Die Schnittstelle muss auf 9600 Baud, 7 Datenbits (!), Parity None, 1 Stopbit eingestellt sein
  • Integriert ab Version 2.04.06, Setupt-Prrogramm 1.20 (dort Variable Fs-Zahelertyp auf 1 setzen).

Beispiel ED300L

  • Hier gibt es einen erfolgreichen Erfahrungsbericht eines Nutzers.

Hinweise zur DLMS-Entschlüsselung

Allgemeines

Die das Kommunikationsprotokoll "Device Language Message specification" (DLMS) wird z.B. in Zählern von Landis und Gyr eingesetzt.

Weiterführende Links:

Protokollbeispiel

in Arbeit

Datenstruktur im Eeprom

Sowohl alle notwendigen Parameter zur Konfiguration des Loggers als auch alle dauerhaft gespeicherten Loggerdaten finden sich im Eeprom des Boards. Die folgende Tabelle erläutert die wesentlichen Variablen und ihre Position im Speicher. Zu beachten ist, das Strings im Speicher jeweils ein Byte länger sind, da sie mit FF abgeschlossen werden.


Startposition HEX Typ Name Bemerkung
001 String*12 Ee_s12_hostname Name des Prozessorboards, z.B. "freesol". Taucht z.B. im Router auf und kann dann als Internetadresse im internen Netz aufgerufen werden, z.B. http://freesol
00E Byte*6 Ee_b_macaddr(6) MAC-Adresse des Chips. Der gekaufte Austauschprozessor ATMega1284P hat keine MAC-Adresse, am besten verwendet man hier die Adresse, die auf den kleinen ATMega32-Prozessor aufgeklebt war, der ursprünglich im Board war.
014 Byte*4 Ee_b_ipaddr(4) IP-Adresse des Boards. Diese Adresse ist nur zu Beginn gültig und wird ggf. durch eine mittels DHCP zugewiesene Adresse überschrieben oder zumindest diese DHCP-Adresse verwendet.
018 Byte*4 Ee_b_subnetmask(4) Subnetmask, hier setzt man in der Regel 255.255.255.0
01C Byte*4 Ee_b_defaultgateway(4) Defaultgateway. Hier steht in der Regel die IP-Adresse des Router. Meistens ist das fast IP-Adresse des Boards, nur die letzte der ist Zahlen ist eine 1
020 Byte*4 Ee_b_nameserver(4) Nameserver. In der Regel dieselbe IP-Adresse wie der Router.
024 Byte*4 Ee_b_ntpserver(4) NTP-Server. Dieser Server stellt die Uhrzeit zur Verfügung. Es gibt viele Server im Internet, die das können, bei mir funktioniert 192.145.119.188
0C8 Byte*4 Ee_smtp_server_ip_addr(4) IP-Adresse des sendenden Mailservers. Im Moment nur für GMX getestet.
0CC Byte Ee_b_smtp_server_port_h Portadresse des Mailservers, High Byte
0CD Byte Ee_b_smtp_server_port_l Portadresse des Mailservers, Low Byte
0CE String*31 Ee_s31_meine_email_adresse Absendermailadresse
0EE String*47 Ee_s47_benutzerkennung Benutzerkennung des Mailkontos. ACHTUNG: Nicht die Mailadresse eingeben, die Benutzerkennung ist eine Nummer. Die Benutzerkennung findet sich als Kundennummer bei gmx.de unter "Mein Account".
11E String*31 Ee_s31_passwort Passwort des Mailkontos
13E String*31 Ee_s31_empfaenger_email_adresse Empfängermailadresse
15F Long Ee_fs_speicherdatum_tage Datum des letzten Abspeicherns. Format ist Sysday(), 4197 ist der 29.6.2011
163 Integer*100 Ee_fs_tageswerte(100) Hier werden die letzten 100 Tagesenergiewerte abgespeichert. die Werte werden als Wh/10 abgespeichert, 57,3 kWh gibt also 5730. Die Werte kommen jeweils in die Speicherstelle Sysday Modulo 100, der Wert für den 29.6.2011 (Sysday ist 4197) geht also nach Ee_fs_tageswerte(97).
22B Long Ee_fs_speicherdatum_monate Tag, an dem der letzte Vorgänger-Monatswert Energie abgespeichert wurde.
22F Long Ee_fs_monatswerte Letzter gespeicherter Vorgänger-Monatswert Energie
233 Long Ee_fs_speicherdat_lfdmon Tag, an dem der laufender Monatswert Energie abgespeichert wurde.
237 Long Ee_fs_lfdmonwerte Laufender Monatswert Energie
23B Integer Ee_fs_anlagenleistung Die Peak-Anlagenleistung in Wh. Errechnet sich aus der Nennleistung aller Module.
23D Long Ee_fs_pulszahlges Hier wird jeweils der S0-Zählerstand um Mitternacht abgespeichert. Kann verwendet werden, um ein Zähleroffset zu setzen.
241 Integer Ee_fs_pulsfaktor S0-Pulse pro kWh. Muss ab Version 1.02 angegeben werden, typischerweise 1000.
243 Byte Ee_lcd 0 wenn kein LCD, 1 wenn spezielles 3-Ziffern-LCD mit I2c, 2 wenn LCD TC1604E-01 von Pollin.
244 Byte Ee_fs_maildebugflag Im Normalbetrieb = 0. Falls der Wert manuell auf 1 gesetzt ist, wird alle 5 min eine Testmail geschickt. Hilft beim Einrichten und Testen des Mailaccounts.
245 Integer Ee_fs_schaltschwelle Schaltschwelle für Ausgang Pin2 (EXT) in W (aktuelle Leistung in Watt, Mittelwert über 5 min). Wird 1, wenn Wert die letzten 5 min >= Schaltschwelle war."
247 String*40 Ee_fs_alarmmailtext Text für Alarmierungsmail beim Anliegen eines 0V-Signals auf Pin4 (EXT). Wird einmal pro Minute ausgelesen, ca. bei 22 Sekunden. Mail wird erneut erst nach zwischenzeitlichem Rücksetzen des Signals versandt (auch dies wird nur einmal pro Minute abgefragt). Unbeschaltet gilt als 1.
26F Integer Ee_fs_schaltdauer Zahl der 5min-Intervalle, nach denen das Schaltsignal nach Überschreiten der Schaltschwelle an bleibt. O bedeutet Funktion ist aus.
271 Long Ee_fs_speicherdatum_minuten Tag, an dem die letzen gültigen 5-Minutenwerte abgespeichert wurden. Hilft bei Stromausfällen, wenn Tag älter ist, werden nach dem Booten die Minutenwerte gelöscht.
275 Integer Ee_fs_minw(216) Die 5-Minutenwerte des aktuellen Tages.
425 Integer Ee_fs_dhcp 1: DHCP ausgeschalten, alle anderen Werte : DHCP eingeschalten. Sollte im Normalfall auf 0 stehen.
427 Long Ee_fs_bezug_speichdat_t Letztes Speicherdatum Tagesstand Bezug.
42b Long Ee_fs_bezug_tagesstand(30) Zählerstände des Bezugszählers am Tagesstart.
4A3 Long Ee_fs_einspeis_speichdat_t Letztes Speicherdatum Tagesstand Einspeisung.
4A7 Long Ee_fs_einspeis_tagesstand(30) Zählerstände des Einspeisezählers am Tagesstart.
51F Integer Ee_fs_min_bezug(288) Die 5-Minutenwerte des Bezugs des aktuellen Tages.
75F Integer Ee_fs_min_einspeis(288) Die 5-Minutenwerte der Einspeisung Bezugs des aktuellen Tages.
99F Integer Ee_fs_min_bezug_vt(288) Die 5-Minutenwerte des Bezugs des Vortags.
BDF Integer Ee_fs_min_einspeis_vt(288) Die 5-Minutenwerte der Einspeisung Bezugs des Vortags.
E1F Long Ee_fs_speichdat_vt_t Speicherdatum für 5min Werte von Bezug und Einspeisung des Vortags.
E23 Integer Ee_fs_minw_vt(216) Die 5-Minutenwerte der Solarerzeugung des Vortags.
FD3 String*6 Ee_fs_ev_url Präfix für die Webseiten mit vertraulicher Information (Bezugs- und Einspeisewerte).
FDA Byte Ee_fs_zaehlertyp 0: automatisch; 1: Itron . Alle anderen Werte wie 0. Ab Loggerversion 2.04.04 nötig.

Erläuterung der Inhalte der Webseiten des Logger

Die Eingabe der Netzwerkadresse ohne weitere Fileangaben zeigt auf das Index-File, in dem eine Gesamtansicht der wichtigsten Loggereinstellungen zu sehen ist.

In der unteren Tabelle werden dabei für jede Stunde der S0-Zählerstand (mittlere Zeile) sowie die in dieser Stunde eingegangenen S0-Signale angezeigt.

In der Gesamtansicht kann man auf Buttons mit verschiedenen Unteransichten klicken, in denen neben einer grafischen Darstellung der 5-Minuten-Werte des aktuellen Tages (graph1.svg) auch Tages- und Monatswerte (days_hist.js und months.js)sowie Konfigurationsdaten (base_vars.js) in dem für Sonnenertrag.de notwendigen Format zu finden sind. Auch finden sich die 5-Minutenwerte für die grafische Darstellung nochmals in einem extra File (minutes.js).

Weitere verfügbare Filenamen sind:

  • minutesv.js: 5-Minutenwerte des S0-Zählers der PV-Anlage vom Vortag
  • graph1v.svg: Grafik der 5-Minutenwerte des S0-Zählers der PV-Anlage vom Vortag

Für den einfachen Zugriff auf wichtige Einzelwerte sind noch einige Spezialseiten definiert:

  • iframe_1.htm: Datum und Zeit
  • iframe_2.htm: Aktuelle Solarleistung (alle 5 min aktualisiert)
  • iframe_3.htm: Gesamte erzeugte Solarenergie
  • iframe_4.htm: Heute erzeugte Solarenergie
  • iframe_5.htm: Datum, Zeit und aktuelle Solarleistung (alle 1 min aktualisiert) (ab Version 2.01.02)
  • iframe_6.htm: Zahl der SML-Lesefehler und Gesamtzahl der SML-Nachrichten (d.h. mindestens Anfang und Ende erkannt) (ab Version 2.02.01)
  • iframe_7.htm: "Schaltsignal: an" oder "Schaltsignal: aus", abhängg vom Zustand des Pin 4 (ab Version 2.04.07)

Bei zusätzlichem Betrieb eines SML-Zählers für Bezug und Einspeisung sind weitere Webseiten verfügbar, die hier beschrieben sind.

Steckerbelegung

Die Abbildung unten zeigt einen Auszug aus dem AVR-NetIO-Schaltplan. Alle Signale werden über den EXT-Stecker geleitet.

Die Numerierung geht so weiter, dass das Pin in der zweiten Zeile links die Nummer drei hat. Die Pins werden von FreeSol im Moment wie folgt verwendet:

PIN Bedeutung
1 Eingang: Verbindung zu S0+ vom Solar-S0-Zähler
2 Ausgang: Schaltsignal für externen Verbraucher, falls genügend Solarstrom da ist.
3 Ausgang: schaltet synchron mit S0-Signal. Zur Kontrolle z.B. über 220 Ohm Widerstand und eine LED an GND führen.
4 Eingang: falls auf GND gezogen, wird eine Störungsmeldung per Email versandt.

Betriebsspannungen 0V und +5V werden aus der blauen Schraubklemmenleiste am Boardrand abgegriffen, die entsprechenden Ausgänge kommen mehrfach vor und sind beschriftet.

Das LCD-Dsiplay wird über die 25-pol-DSUB-Leiste angeschlossen.


Funktionserweiterungen des Loggers

Täglicher Status-Emailversand

Das Programm kann einmal täglich eine Statusemail mit dem Ertrag des Tages an eine Emailadresse versenden. Hierzu ist ein kostenfreier GMX-Mailaccount einzurichten. Die Konfiguration des Boards erfolgt über das Windows-Setup-Programm.

Es ist zu beachten, dass ein gmx-Mailaccount nach 6 Monaten ohne ein Login über die Webseite auf inaktiv gesetzt wird. Dies kann zur Störungen beim Mailversand führen, es ist also darauf zu achten, sich alle 6 Monate einmal einzuloggen.

Versand von Störungsmeldungen

Eine externes Signal kann benutzt werden, um dem Board eine Hardwarestörung mitzuteilen. Als Störungsquellen kommen entweder Störungssignale vom Wechselrichter oder auch Zustandsmeldungen von Blitzschutzelementen in Frage.

Im Moment müssen alle Störungen zu einem elektrischen Signal zusammengeführt werden (bei Bedarf könnte ich auch auf mehrere Eingangssignale erweitern). Der zuständige Eingang ist Pin 4 des EXT-Steckers. Ist er unbeschaltet oder liegt er auf 5 V, so liegt keine Störung vor. Falls er auf 0 V gezogen wird und dieses Signal mindestens eine Minute lang anliegt, wird eine Störungsmail an die normale Benachrichtigungsadresse generiert, der Text ist über einen Konfigurationsparameter einstellbar. Falls die Störung weiter besteht, wird eine erneute Mail erst dann verschickt, wenn das Signal mindestens eine Minute lang auf 5V lag. (Technische Umsetzung: Das Signal wird nur einmal pro Minute abgefragt)

Ab Version 2.04.07 wird der Zustand des Schaltsignals in iframe7_htm angezeigt.

Steuerung externer Verbraucher

Falls die Leistung der Solaranlage über einer mit dem Setup-Programm einstellbaren Schaltschwelle liegt (Messung als 5min-Mittelwert), kann von PIN 2 des EXT-Steckers ein Steuersignal zum Anschalten eines externen Verbrauchers gegeben werden. Das Steuersignal bleibt mindestens 5 min lang an, jedoch lässt sich über den Parameter "Schaltdauer" konfigurieren, wie viele 5min-Zyklen der Verbraucher anbleiben soll. Sobald ein weiterer 5min-Zyklus über der Schaltschwelle liegt, wird die Anschaltdauer wieder auf die eingestellte Schaltdauer verlängert.

Zur sicheren elektrischen Ansteuerung empfehle ich einen Funksender (Bausatz 9,95 EUR, fertig aufgebaut 17,95 EUR) und eine Funksteckdose (22,95 EUR) von ELV.

Sofern man nur Kleinspannung schalten will oder ein professioneller Elektriker ist, kann man sich auch mal die Pollin-Relaisplatine K1 ansehen. Achtung, Warnhinweis: Keine 230V-Schaltungen bauen, wenn man nicht weiß, was man tut.

LCD-Display

An das Freesol-Board kann ein LCD-Display vom Typ TC1604A angeschlossen werden (gibts bei Pollin, Bestellnummer 120 628, 8.95 EUR). Da das Board an den 25-poligen Stecker anzuschliessen ist, muss man sich leider das Kabel selber bauen. Sofern man nicht ein altes Kabel mit passendem Stecker hat, von dem man ein Ende abschneiden kann, hilft vielleicht eine Kombination der Pollin-Bestellnummern 721 775 und 720 418 (kosten zusammen 1,50 EUR, Kabel zerschneiden und ein Ende an die LCD-Platine löten).

Die Anschlüsse an der Platine sind mit 1 und 16 beschriftet, die Belegung ist wie folgt:

LCD Display 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
D-Sub-25-Buchse 18 15 18 2 3 4 18 18 18 18 5 6 7 8 15 18
Bedeutung Vss Vdd V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K

Anmerkung: V0 könnte man an den Abgreifkontakt eines 10K-Potis legen und damit die Displayhelligkeit regeln, habe ich aber konstant an Masse liegen. Ebenfalls ist das Display nicht ausschaltbar.

Achtung: Hintergrundbeleuchtung auf PIN 15 braucht eventuell einen Vorwiderstand von ca 10 Ohm, da bin ich noch am Forschen.

Zur Aktivierung des Displays muss der Konfigurationsparameter fs_lcd auf 2 stehen.

Programmversionen

FreeSol AVR

  • 2.01
    • EHD versteht nun auch Sequenz 63 1 A2, vorher nur 62 82
    • Reload Button bei frees_i.htm geht jetzt richtig
  • 2.01.06
    • Fehler in Datum von minutes.js usw kurz nach Mitternacht korrigert durch Ersetzen von Date$ durch Date(netio_time)
    • iframe_5.htm eingebaut
    • Vortageswerte S, B, E auch im Speicher richtig zwischen 0.00 und 1.27
    • frees_1a eingefügt
    • frees_1a Plausibilitätstest bei Leistungswerten eingefügt
  • 2.01.07
    • EHD versteht nun auch Codierung 64 an Pos 139
  • 2.01.08
    • Fehler in frees_1a.js (Vortageswerte) beseitigt
    • Heartbeat um S0-Stand und sml ergänzt
  • 2.02
    • Keine Änderungen zu 2.01.08, stabile Release
  • 2.03.01
    • Beseitigung des 5-8-12 Bugs
  • 2.04
    • SML-Zähler Hager EHZ363Z5 wird nun verstanden
  • 2.04.01
    • Erweiterung des Protokolls für SML-Zähler Hager EHZ363Z5
  • 2.04.02
    • Der EMH-Zähler wird nun auch verstanden, wenn im SML-Telegramm keine Bezugswerte vorkommen.
  • 2.04.03
    • 1.8.0 muss nicht belegt sein, auch Zähler mit nur 2.8.0 Daten werden bedient
  • 2.04.06
    • Zählertyp Itron eingeführt. Achtung: Im Setupprogramm (ab Version 1.20 möglich) muß Variable Fs-Zaehlertyp für Itron auf 1 stehen.
  • 2.04.07
    • iframe_7.htm Enthält Status des Schaltsignals.
  • 2.04.08
    • Mailversand um Zählerstände Bezug und Einspeisung erweitert.
  • 2.04.09
    • Mailserver und Port werden jetzt korrekt aus Eeprom-Daten verwendet
    • Mailserveradresse und Port werden beim Versand über serielle Schnittstelle ausgegeben
  • 2.04.11
    • Bug in frees_1a.js Vortageswerte Bezug und Einspeisung korrigiert


Features, die möglich wären, aber nicht kurzfristig geplant sind
  • Einlesen mehrerer S0-Signale
    • Grund: Keine einfach zugängliche und freie serielle Schnittstelle

FreeSol AVR-24 (S0-24h Version)

Diese Version speichert nur S0-Werte, keine SML-Daten, dafür aber 24 h lang. Sie ist aus der FreeSol-Version 2.04.03 abgeleitet

  • 0.09.00
    • Kopie aus dem Hauptzweig und damit gestartet, die SML-Funktionalität zu löschen
  • 0.09.01
    • Erste Alpha-Version. Ungetestet, ich mache weiter, sobald erster Nutzer testet.
  • 0.09.02
    • Falsche Variablendimensionierung für Minutenwerte korrigiert
    • Falscher Offset in minutes.js und minutesv.js korrigiert
    • Auskommentierungsfehler in graph1.js und graph1v.js beseitigt
  • 0.09.03
    • Routine für manuelles Setzen der Zeit im Programmcode für Debuggingzwecke eingebaut.
    • 5-Minutenwerte zwischen Mitternacht und Bootzeitpunkt um 1.17 werden jetzt auch gespeichert
  • 0.09.04
    • Mailserver IP und Port jetzt nicht mehr hart codiert sondern durch Setupwerte definiert
  • 0.09.05
    • Debugging der Mailsenderoutine

FreeSol Setup

  • 1.18
    • Beschriftung der Buttons verbessert, Defaultwerte für Filenamen und Warnmeldung geändert
  • 1.19
    • Bug in Filelänge Hexfile bei Nutzung von 'Defaultwerte'-Knopf beseitigt
  • 1.20
    • Variable Fs-Zaehlertyp eingeführt (0: automatische Erkennung; 1: Zählertyp Itron; Rest: wie 0)
  • 1.21
    • Zusätzlicher Warnhinweis eingefügt, dass für die Übertragung zum Logger immer das File mit Namen eeprom.txt aus dem Verzeichnis verwendet wird, in dem das Programm selbst liegt.

FreeSol SML

  • 1.04
    • EHD versteht nun auch Sequenz 63 1 A2, vorher nur 62 82
  • 1.06
    • EHD versteht nun auch Codierung 64 an Pos 139
  • 1.09
    • Neuer Zähler Hager EHZ363Z5 integriert
  • 1.10
    • Erweiterung an Einleseroutine Zähler Hager EHZ363Z5 integriert

FreeSol EV

  • 2.29
  • 2.30
    • Bug beim Einlesen von *_bv.js und *_ev.js beseitigt.
  • 2.31
    • Skalierungs-Bug bei Anzeigen Minutenvergleich beseitigt
  • 2.32
    • Minutenwerte werden nur noch für den aktuell eingestellten Monat aus dem Portal geholt
    • Knopfbeschriftungen bei Minutenwerte geändert
  • 2.33
    • Korrekturen von JAU
      • Quellentyp (S0/SML kann gewählt werden)
      • Fehlerkorrektur SML kann ausgeschaltet werden.
  • 2.35
    • Defekter Minutenimport von Portal für aktuellen Monat und alle Files repariert
  • 2.36
    • Bug beim Einlesen Einspeisung Vortrag aus SML korrigiert.
  • 2.37
    • Beim Tage verändern erfolgt jetzt auch Monats- und Jahreswechsel
    • Programmstart erfolgt mit Monat des aktuellen Tages, nicht mehr Monat des Vortages
  • 2.38
    • Fehlerkorrektur für Monatswechsel zwischen unterschiedlich Langen Monaten (gibt keinen 31.2)