Merkmale und Technik: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) |
|||
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 50: | Zeile 50: | ||
* 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. | * 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. | * 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 ==== | ==== Beispiel EMH eHz ==== | ||
* Zählerstand 1.8.0=5108,3431 kWh (Bezug) | * Zählerstand 1.8.0=5108,3431 kWh (Bezug) | ||
Zeile 112: | Zeile 113: | ||
** Der Zählerstand berechnet sich dann als ((7DH*256)+4AH)*256+60H = ((125*256)+74)*256+96 = 8 211 040 | ** 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 | ** Das Komma ist dann noch um 4 Stellen nach links zu verschieben: 821,1040 kWh | ||
==== Beispiel Itron, Modell HZ1-C50D-R1-Z ==== | ==== 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 | * Der Zähler sendet kein normales SML-Format, sendet aber selbständig regelmässig alle 1-4 s Daten im Klartext | ||
Zeile 118: | Zeile 120: | ||
* Die Schnittstelle muss auf 9600 Baud, 7 Datenbits (!), Parity None, 1 Stopbit eingestellt sein | * 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). | * 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 === | === Hinweise zur DLMS-Entschlüsselung === | ||
Zeile 543: | Zeile 548: | ||
*2.04.08 | *2.04.08 | ||
** Mailversand um Zählerstände Bezug und Einspeisung erweitert. | ** 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 ===== | ===== Features, die möglich wären, aber nicht kurzfristig geplant sind ===== | ||
Zeile 566: | Zeile 577: | ||
** Routine für manuelles Setzen der Zeit im Programmcode für Debuggingzwecke eingebaut. | ** 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 | ** 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 ==== | ==== FreeSol Setup ==== |
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
- Unterstützung für 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.
- Korrekturen von JAU
- 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)