FreeSol Raspi: Unterschied zwischen den Versionen

Aus FreeSol-Wiki

 
(59 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 45: Zeile 45:
* Ggf. [https://www.sertronics-shop.de/bauelemente/steckverbinder/stromversorgungs-steckverbinder/klemmleisten/l-252-sterklemme-16mm-178-12er-reihe-transparent Lüsterklemmen] mitkaufen, falls man keinen Lötkolben hat, um das Verlängerungskabel anzulöten
* Ggf. [https://www.sertronics-shop.de/bauelemente/steckverbinder/stromversorgungs-steckverbinder/klemmleisten/l-252-sterklemme-16mm-178-12er-reihe-transparent Lüsterklemmen] mitkaufen, falls man keinen Lötkolben hat, um das Verlängerungskabel anzulöten
* Ggf. [https://www.sertronics-shop.de/netzwerk/patchkabel-netzwerkkabel/cat-patchkabel/bestellartikel/cat-6-netzwerkkabel-s/ftp-gelb Netzwerkkabel] mitbestellen, zumindest für die Ersteinrichtung des Raspi. Danach kann dieser ggf. auch per WLAN eingebunden werden.
* Ggf. [https://www.sertronics-shop.de/netzwerk/patchkabel-netzwerkkabel/cat-patchkabel/bestellartikel/cat-6-netzwerkkabel-s/ftp-gelb Netzwerkkabel] mitbestellen, zumindest für die Ersteinrichtung des Raspi. Danach kann dieser ggf. auch per WLAN eingebunden werden.
* '''Update 12.7.19:''' Raspi 4 scheint ebenfalls zu funktionieren, bisher keine Probleme gesehen. Nachdem dieser bei gleichem Preis schneller ist, wäre er die Methode der Wahl. Im Moment arbeite ich da mit 1 GB, weil es die anderen Versionen noch nicht gibt.


== Energiezähler anschließen ==
== Energiezähler anschließen ==
Zeile 77: Zeile 78:
** Das entpackte File '''mit Win32DiskImager (!) auf die Karte des Raspi schreiben'''
** Das entpackte File '''mit Win32DiskImager (!) auf die Karte des Raspi schreiben'''
*** Keinesfalls andere Kopierprogramme wie Windows Explorer verwenden, diese schreiben das Image nicht richtig. Ist das schon passiert, muss die SD-Karte zunächst mit enem Programm wie SD Formatter neu formatiert werden.
*** Keinesfalls andere Kopierprogramme wie Windows Explorer verwenden, diese schreiben das Image nicht richtig. Ist das schon passiert, muss die SD-Karte zunächst mit enem Programm wie SD Formatter neu formatiert werden.
** Hinweis: Im aktuellen Image fehlt das leere ssh-File, falls man mit ssh oder ftp auf den raspi zugreifen will. Muus ggf mit Windows explorer noch von Hand auf die Karte kopiert werden.
* '''Schritt 3:''' Raspi starten
* '''Schritt 3:''' Raspi starten
** Karte aus dem Adapter entnehmen  
** Karte aus dem Adapter entnehmen  
Zeile 95: Zeile 95:
* '''Raspian Image downloaden:''' https://www.raspberrypi.org/downloads/raspbian/
* '''Raspian Image downloaden:''' https://www.raspberrypi.org/downloads/raspbian/
** Als Version genügt '''Raspian Stretch Lite''' auswählen und als ZIP-File laden, Größe sind 352 MB. Weitere benötigte Pakete sind dann bei Bedarf einfach nachinstallierbar.
** Als Version genügt '''Raspian Stretch Lite''' auswählen und als ZIP-File laden, Größe sind 352 MB. Weitere benötigte Pakete sind dann bei Bedarf einfach nachinstallierbar.
** Man kann auch "Raspian Stretch with desktop and recommended software" nehmen, das ist umfangreicher, Größe knapp 2 GB. Diese Version enthält auch weitere Software, wenn man etwas mit dem Raspi spielen will.
** Man kann auch "Raspian Stretch with desktop and recommended software" nehmen, das ist umfangreicher, Größe knapp 2 GB. Diese Version enthält auch weitere Software, wenn man etwas mit dem Raspi spielen will. Will man den Raspi per WLAN erreichen, sollte man keine Lite Version nehmen!
** getestet mit Version: April 2019, Release date: 2019-04-08, Kernel version: 4.14
** getestet mit Version:  
*** Raspi 3 B+, Raspian Strech Lite April 2019, Release date: 2019-04-08, Kernel version: 4.14
*** Raspi 4 mit 1 GB, Raspian Buster Lite Juli 2019, Release date: 2019-07-10, Kernel version: 4.19
*** Raspi 4 mit 1 GB, Raspian Buster mit Desktop Juli 2019, Release date: 2019-07-10, Kernel version: 4.19
* '''Entpacken''' des Downloads  
* '''Entpacken''' des Downloads  
* '''Karte in den Kartenadapter stecken''' und dann Kartenadapter in den USB Port stecken  
* '''Karte in den Kartenadapter stecken''' und dann Kartenadapter in den USB Port stecken  
Zeile 144: Zeile 147:
*** mit dem Kommando '''pwd''' sieht man, in welchem Verzeichnis man sich befindet
*** mit dem Kommando '''pwd''' sieht man, in welchem Verzeichnis man sich befindet
*** mit dem Kommando '''cd''', z.B. '''cd FreeSol''' oder '''cd ..''', kann man das Verzeichnis wechseln
*** mit dem Kommando '''cd''', z.B. '''cd FreeSol''' oder '''cd ..''', kann man das Verzeichnis wechseln
* Folgende zu übertragende '''Programme''' von [https://wiki.freesol.de/download/ hier] '''herunterladen''':
* '''Programme''' von [https://wiki.freesol.de/download/ hier] '''herunterladen''':
** [https://wiki.freesol.de/download/FreeSolRaspi_SolarZaehl.py FreeSolRaspi_SolarZaehl.py]
** ins Verzeichnis wechseln: cd FreeSol
** [https://wiki.freesol.de/download/S0_Solar.py S0_Solar.py]
** Programme herunterladen:
** [https://wiki.freesol.de/download/CherryPy-Zaehler.py CherryPy-Zaehler.py]
*** wget https://wiki.freesol.de/download/FreeSolRaspi_SolarZaehl.py
** Dateien z.B. nach c:\temp\FreeSol speichern.
*** wget https://wiki.freesol.de/download/S0_Solar.py
* Die '''Programme''' mit einem FTP Programm (z.B. [https://www.heise.de/download/product/filezilla-18785 Filezilla]) '''auf den Raspi übertragen'''
*** wget https://wiki.freesol.de/download/CherryPy-Zaehler.py
** Zum Aufbau der Verbindung in FileZilla folgende Daten eingeben
*** wget https://wiki.freesol.de/download/S0_Solar_Test.py
*** Server: IP-Adresse des Raspi, z.B. '''192.168.178.32'''
*** wget https://wiki.freesol.de/download/FreeSolRaspi_Helper.py
*** Benutzer: '''pi'''
*** wget https://wiki.freesol.de/download/SML_Bezug_Einspeisung.py
*** Passwort: '''raspberry''' (oder das geänderte Passwort)
*** wget https://wiki.freesol.de/download/FreeSol-SML-Schnittstellentest.py
*** Port: '''22'''
*** wget https://wiki.freesol.de/download/hexdump.py
** Danach auf '''Verbinden''' klicken
*** wget https://wiki.freesol.de/download/SMLParser.py
** Als Quellverzeichnis links das Verzeichnis auswählen, in dem die heruntergeladenen FreeSol-Datein liegen, z.B. c:\temp\Freesol . Die drei Dateien sollten nun unten angezeigt werden.
*** Hinweis: Programme werden nicht überschrieben, ggf. existierende Programme löschen mit rm *.py
** Als Zielverzeichnis rechts das Verzeichnis /home/pi/FreeSol auswählen durch Doppelklick auf FreeSol
* ('''Nur bei Verwendung eines Raspi Lite Images''' für das Raspi Betriebssystem muss ein zusätzliches Paket installiert werden, sonst gibt es Fehlermeldungen im nächsten Schritt)
** Nun die drei Dateien aus dem linken Verzeichnis durch Doppelklick auf jede Datei auf den Raspi hochladen
* ('''Nur bei Verwendung des Raspi Strech Lite Images''' für das Raspi Betriebssystem muss ein zusätzliches Paket installiert werden, sonst gibt es Fehlermeldungen im nächsten Schritt)
** sudo apt-get -y install python3-pip
** sudo apt-get -y install python3-pip
* Weitere benötigte Python-Module nachladen und Verzeichnisse vorbereiten mit den folgenden Kommandos:
* Weitere benötigte Python-Module nachladen und Verzeichnisse vorbereiten mit den folgenden Kommandos:
Zeile 171: Zeile 172:
** Mit den Pfeiltasten an das Ende des Files navigieren, das angezeigt wird
** Mit den Pfeiltasten an das Ende des Files navigieren, das angezeigt wird
** Fast am Ende des Files, vor der Zeile '''exit 0''' nacheinander folgende zwei Zeilen einfügen (statt Abtippen besser kopieren wie oben unter Putty beschrieben)
** Fast am Ende des Files, vor der Zeile '''exit 0''' nacheinander folgende zwei Zeilen einfügen (statt Abtippen besser kopieren wie oben unter Putty beschrieben)
*** '''sudo python3 /home/pi/FreeSol/S0_Solar.py &'''
*** '''sudo python3 /home/pi/FreeSol/CherryPy-Zaehler.py &'''
** Hinweis: Zu Debugzwecken kann man temporär Fehlermeldungen mitschreiben lassen, dies füllt und belastet aber im Dauerbetrieb die Speicherkarte:
*** '''sudo python3 /home/pi/FreeSol/S0_Solar.py >/home/pi/FreeSol/S0_err.log 2>&1 &'''
*** '''sudo python3 /home/pi/FreeSol/S0_Solar.py >/home/pi/FreeSol/S0_err.log 2>&1 &'''
*** '''sudo python3 /home/pi/FreeSol/CherryPy-Zaehler.py >/home/pi/FreeSol/CherryPy_err.log 2>&1 &'''
*** '''sudo python3 /home/pi/FreeSol/CherryPy-Zaehler.py >/home/pi/FreeSol/CherryPy_err.log 2>&1 &'''
** Das File nach Abspeichern verlassen ('''Ctrl-X''' und dann '''Y'''; falls man ohne Speichern abbrechen will, '''Ctrl-X''' und dann '''N''')
* '''(optional für zusätzlichen SML-Bezugs-Einspeise-Lesekopf, ab Version 0.95): Cronjob für SML-Lesekopf anlegen:'''
** Cronjob-File editieren mit '''sudo nano /etc/crontab'''
** Letzte Zeile anfügen: '''* * * * * root  sudo python3 /home/pi/FreeSol/SML_Bezug_Einspeisung.py'''
** Hinweis: Zu Debugzwecken kann man temporär Fehlermeldungen mitschreiben lassen, dies füllt und belastet aber im Dauerbetrieb die Speicherkarte:
*** Letzte Zeile anfügen: '''* * * * * root  sudo python3 /home/pi/FreeSol/SML_Bezug_Einspeisung.py >/home/pi/FreeSol/SML_err.log 2>&1'''
** Das File nach Abspeichern verlassen ('''Ctrl-X''' und dann '''Y'''; falls man ohne Speichern abbrechen will, '''Ctrl-X''' und dann '''N''')
** Das File nach Abspeichern verlassen ('''Ctrl-X''' und dann '''Y'''; falls man ohne Speichern abbrechen will, '''Ctrl-X''' und dann '''N''')
* Den Raspi neu starten
* Den Raspi neu starten
Zeile 200: Zeile 210:


== Anschluss eines SML-Lesekopfs an den Raspi ==
== Anschluss eines SML-Lesekopfs an den Raspi ==
=== Allgemeine Infos ===
* Hinweis: Dieses Feature ist noch im Aufbau und muss noch auf die verschiedene Zählertypen angepasst werden.
* Hinweis: Dieses Feature ist noch im Aufbau und muss noch auf die verschiedene Zählertypen angepasst werden.
* Falls statt eines oder zusätzlich zu einem S0-Zähler noch ein Zähler mit optischem Ausgang vorhanden ist, können die Signale daraus über einen SML-Zähler mit USB-Anschluß im Raspi erfasst werden.
* Falls statt eines oder zusätzlich zu einem S0-Zähler noch ein Zähler mit optischem Ausgang vorhanden ist, können die Signale daraus über einen SML-Zähler mit USB-Anschluß im Raspi erfasst werden.
* Zur Erfassung benötigt man einen '''SML-Lesekopf''', den man [[Aufbauanleitungen#Aufbau_des_FreeSol-SML-Lesekopfs | selber bauen]] oder fertig bestellen kann. Als Bezugsquellen gefunden habe ich (für weitere Hinweise bin ich dankbar):
* Zur Erfassung benötigt man einen '''SML-Lesekopf''', den man [[Aufbauanleitungen#Aufbau_des_FreeSol-SML-Lesekopfs | selber bauen]] oder [[FreeSol_Raspi#Der_Weidmann-Elektronik-Lesekopf | z.B. bei Weidmann fertig bestellen]] kann. Als Bezugsquellen gefunden habe ich (für weitere Hinweise bin ich dankbar):
** noch nicht getestet: [https://www.amazon.de/Weidmann-Elektronik-Stromz%C3%A4hler-Infrarot-Lesekopf/dp/B01B8N0ASY Weidmann, 50 EUR inkl Versand über Amazon]
** noch nicht getestet:  
* Bei der Analyse der SML-Kommunikation helfen '''Mitschnitte''', die man mit einem '''Terminalprogramm''' '''wie''' [https://www.heise.de/download/product/hterm-53283 '''hterm'''] machen und mir zusenden kann, wenn der Zählertyp noch nicht oben in der "schon implementiert" Liste steht. Dabei sollten zusätzlich noch die genaue Zählertypbezeichnung (Foto) sowie alle Zählerstände mit den zugehörigen Unternummern (sowas wie 1.8.1 usw) angegeben werden.
* Beim Ansehen von Mitschnitten hilft auch ein '''Hexeditor wie''' [https://www.heise.de/download/product/hxd-50764 hxd]
* Eigentlich sollten Mitschnitte bekannter Zähler auch vom alten [[Downloads#FreeSol_SML | FreeSol SML-Programm]] analysiert werden können, auch kann man dort direkt den Lesekopf anschließen.
* Zur Entschlüsselung unbekannter Zähler helfen nach wie vor die Erläuterungen bei [https://wiki.volkszaehler.org/software/sml Volkszähler] sowie ein [https://www.binaryhexconverter.com/hex-to-decimal-converter Hex2Dec-Konverter].
* Eine '''Spezifikation des SML-Protokolls''' findet sich auf der Seite [https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtgebundene_LMN-Schnittstelle_Teilb.pdf?__blob=publicationFile des Bundesamts für Sicherheit in der Informationstechik]
* '''Sehr gute einführende Erläuterungen zum SML-Protokoll''' finden sich [https://www.msxfaq.de/sonst/bastelbude/smartmeter_d0_sml_protokoll.htm bei msxfaq.de] und [http://www.schatenseite.de/2016/05/30/smart-message-language-stromzahler-auslesen/ bei schatenseite.de].
 
=== Ein FreeSol-SMLParser ===
==== unter Windows ====
* Geeignet für einen ersten Test, ob der Zähler erkannt wird.
* Die SML-Protokolle sind leider zählerabhängig, ich werde hier aber mit den jeweils ersten Nutzern Anpassungen für die einzelnen Zählertypen bereitstellen. Im Moment werden folgende Zählertypen unterstützt:
* Die SML-Protokolle sind leider zählerabhängig, ich werde hier aber mit den jeweils ersten Nutzern Anpassungen für die einzelnen Zählertypen bereitstellen. Im Moment werden folgende Zählertypen unterstützt:
** :-) wer will der erste sein?
** Easymeter Q3B
** Iskra-MT681
* Den Zähler in einen Windows-USB-Port stecken.
* Das [https://www.freesol.de/download/2019-05-15f_FreeSol-SMLParser.exe FreeSol-SMLParser-Programm] herunterladen und in einem Kommandofenster (starten mit cmd) ausführen.
* Im besten Fall werden nun die korrekten Zählerstände angezeigten, ansonsten bitte mit einen Screenshot der Fehlermeldung schicken.
 
=== Der Weidmann-Elektronik-Lesekopf ===
==== Allgemeine Informationen ====
* [https://www.amazon.de/Weidmann-Elektronik-Stromz%C3%A4hler-Infrarot-Lesekopf/dp/B01B8N0ASY Weidmann, 50 EUR inkl Versand über Amazon]
* Sehr nützliche technische Informationen zur Inbetriebnahme des Lesekopfs finden sich [https://shop.weidmann-elektronik.de/index.php?page=product&info=24 im Weidmann-Shop]
 
==== Inbetriebnahme unter Windows ====
* '''Treiberpaket''' [https://shop.weidmann-elektronik.de/index.php?page=product&info=&info=24&dl_media=82 herunterladen]
* Nachdem die Treiber selbst sich nicht direkt installieren ließen, habe ich das Emlog-Testprogramm im Treiberpaket installiert, das die Treiber korrekt mitinstalliert hat. Beim Starten des Emlog-Programms war dann eine COM-Schnittstelle (bei mir COM3) sichtbar, wenn man auf verbinden gedrückt hat.
* Danach habe ich Emlog wieder geschlossen und diese Com-Schnittstelle in '''hterm zur Verbindung genutzt''', bei 9600 baud. (Connect drücken, dann unten bei Input Options in der langen Zeilke irgendwelche Daten eingeben, rechts auf Asend drücken, dann 0 für unendlich viele Wiederholungen auswählen und z.B. 1 für 0.1. s Pause zwischen eine Sendung).
* Schließlich mit einer '''Handykamera auf den Sensor gucken''', wenn man die Diode im Kamerabild blinken sieht (die Kamera ist IR-empfindlich) funktioniert der Treiber.
* '''Hinweis eines Nutzers:''' Wenn der Lesekopf bereits am Zähler klebt und man den dann am USB am Win PC anschließt, '''übernimmt er die Maussteuerung'''. Es öffnen sich Fenster und Kontext Menüs, eine Steuerung mit Touchpad ist nicht mehr möglich. Wenn man aber erst am USB anklemmt, wartet bis das Device eingerichtet ist und dann den Kopf am Zähler aufsetzt, ist alles o.k.
 
==== Inbetriebnahme am Raspi ====
* Nützliche Infos in der [https://shop.weidmann-elektronik.de/media/files_public/9d73b590bf0752a5beff32d229d4497d/HowToRaspberryPi.pdf Weidmann-Beschreibung]
* USB-Stecker in den Raspi stecken und Raspi einschalten
* Einloggen und Kommando '''ls /dev/ttyU*'''. Als Ergebnis müsste die USB-Schnittstelle angezeigt werden, an der der Rapi hängt, z.B. '''/dev/ttyUSB0'''.
* Einstellen der für den Zähler geeigneten Schnittstellenparameter der IR-Schnittstelle, z.B. für Baud 9600 8N1
** '''stty -F /dev/ttyUSB0 9600 -parenb cs8 -cstopb -ixoff -crtscts -hupcl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echoke'''
* Einen Befehl am Raspi an die Kamera senden, diese müsste im Handy kurz blinkend zu sehen sein:
** '''echo -n -e 'Befehl' > /dev/ttyUSB0'''
* Mit dem Befehl die vom Zähler gesendeten Daten
** anzeigen '''cat /dev/ttyUSB0''' oder
** in eine Datei schreiben: '''cat /dev/ttyUSB0 > Daten.hex'''
** Abbruch mit Ctrl-C
* Für die Inbetriebname der Freesol-Software:
** '''sudo pip3 install pyserial''' zur Installation des Moduls für die serielle Schnittstelle
* '''Ab Programmversion 0.95 sollte die Einbindung des SML-Lesekopfs für eine Bezugs-Einspeisezähler möglich sein'''.
** auf der FreeSol-Raspi-Konfigurationsseite sind dabei zusätzlich einzugeben:
*** die Nummer der USB-Schnittstelle, typisch 0
*** die OBIS-Kennzahlen für Bezug und Einspeisung, z.B. 1.8.0. und 2.8.0. Diese stehen in der regel im Zählerdisplay


== Einbindung in andere Visualisierungssoftware ==
== Einbindung in andere Visualisierungssoftware ==
* Im Moment überlege ich eine Einbindung nach www.sonnenertrag.eu als Webbasierte version
=== Allgemein ===
* Die Handyapp sollte unverändert bleiben.
* Die Handyapp sollte unverändert bleiben.
* Mögliche Ertragsdatenbanken: https://www.photovoltaik-web.de/photovoltaik/ertragsprognose/ertragsberechnung-ertragsprognose
=== pv-ertraege.de ===
* https://www.pv-ertraege.de/
* Enthält gut 2000 Anlagen
* Nur Erfassung von Monatserträgen möglich
=== Sonnenertrag.eu ===
* Im Moment überlege ich eine Einbindung nach www.sonnenertrag.eu als webbasierte Version, allerdings ist dort der dauerhafte Weiterbetrieb wohl nicht sicher.
* Eine Beispielanlage hab ich [https://sonnenertrag.freesol.de/ hier] in die Webseite eingebunden.
* Forum: https://www.photovoltaikforum.com/board/184-sonnenertrag/
* Wiki: hab ich nicht gefunden


== Versionshistory ==
== Versionshistory ==

Aktuelle Version vom 10. August 2019, 14:48 Uhr

Überblick

Diese Seite beschreibt den Aufbau eines solaren Datenloggers, der sich aus Impulsdaten einer S0-Schnittstelle speist, die Daten in einem Raspberry Pi sammelt und mit Hilfe eines Python-basierten Webservers (CherryPy) visualisiert.

Für Fragen und Diskussionen gibt es einen Thread bei photovoltaikforum.com.

Stand:

  • 2019-04-25: Start Betaphase:
    • Der Logger läuft bei mir an verschiedenen Anlagen und erfasst dort außer S0-Signalen auch Energiedaten aus anderen Zählern.
    • Start der Dokumentation
    • Während der Suppportphase bin ich für Rückfragen unter der Mailadresse raspi-support (at) freesol.de erreichbar.
    • Mit dem USB-Programmieradapter habe ich noch nicht gearbeitet, scheint mir aber zukunftssicherer als SD-Adapter und SD-Kartenleser, die es nicht mehr in jedem PC gibt.
  • 2019-05-03: Version 0.92
    • Der Programmieradapter schreibt zumindest
    • Es gibt inzwischen auch ein Image-File für die schnelle Installation, das Programm selbst hat auch einen Update-Knopf.

Alternative

Als Variante sollte man sich auf jeden Fall die Installation eines Volkszaehlers auf einem Raspi angucken, weil dort ein fertig entwickeltes Projekt vorliegt.

Kauf des Materials

Grundpaket: FreeSol Raspi

Position Komponenten Lieferant Einzelpreis Stückzahl Gesamtpreis
1 Raspberry Pi B3+ Sertronics 32,40 1 32,40
2 Gehäuse zu Raspberry Pi B3+ Sertronics 5,90 1 5,90
3 Steckernetzteil Sertronics 5,90 1 5,90
4 microSDHC-Speicherkarte 8 GB Class 10 Sertronics 3,50 1 3,50
5 Kartenadapter für USB Sertronics 1,60 1 1,60
6 Kabel für S0-Signal Sertronics 2,90 1 2,90
Summe 52,20

Hinweise:

  • Keine Versandkosten bei Kauf über 29 EUR
  • Bitte nicht an der Speicherkarte sparen, hier ein Markenprodukt nehmen
  • Ggf. weiteres Kabel mitkaufen, falls die Entfernung zum Zähler groß ist und das S0-Kabel verlängert werden muss
  • Ggf. Lüsterklemmen mitkaufen, falls man keinen Lötkolben hat, um das Verlängerungskabel anzulöten
  • Ggf. Netzwerkkabel mitbestellen, zumindest für die Ersteinrichtung des Raspi. Danach kann dieser ggf. auch per WLAN eingebunden werden.
  • Update 12.7.19: Raspi 4 scheint ebenfalls zu funktionieren, bisher keine Probleme gesehen. Nachdem dieser bei gleichem Preis schneller ist, wäre er die Methode der Wahl. Im Moment arbeite ich da mit 1 GB, weil es die anderen Versionen noch nicht gibt.

Energiezähler anschließen

S0-Zähler

Installation der Gesamtsoftware durch Einspielen eines Image-Files

Diese Installationsmethode eignet sich für Nutzer, die den Raspi einfach schnell am Laufen haben wollen und denen als Betriebssystem die Raspi Strech Lite Variante (Version: April 2019, Release date: 2019-04-08, Kernel version: 4.14) zunächst einmal genügt. Din Installation ist ganz einfach:

  • Schritt 1: Softwaredownload
  • Schritt 2: Imagefile auf Speicherkarte schreiben
    • Win32DiskImager am PC installieren
    • Karte in den Kartenadapter stecken
    • Kartenadapter in den USB Port stecken
    • Das entpackte File mit Win32DiskImager (!) auf die Karte des Raspi schreiben
      • Keinesfalls andere Kopierprogramme wie Windows Explorer verwenden, diese schreiben das Image nicht richtig. Ist das schon passiert, muss die SD-Karte zunächst mit enem Programm wie SD Formatter neu formatiert werden.
  • Schritt 3: Raspi starten
    • Karte aus dem Adapter entnehmen
    • Karte in den Raspi stecken
    • Netzwerkkabel an den Raspi anschließen
    • Netzteil an den Raspi anschließen. Der Raspi startet.
  • Schritt 4: Benutzeroberfläche aufrufen
    • Im Router die IP-Adresse des Raspi herausfinden
    • Den Router so einstellen, dass diese IP-Adresse immer gleich bleibt
    • Die Oberfläche des FreeSol Raspi durch Eingabe der IP-Adresse in einem Browser aufrufen.
  • Sicherheitswarnung!
    • Der Raspi ist in der aktuellen Konfiguration bei einem offenen Betrieb im Internet nicht sicher. Wird er offen ins Netz gestellt, müssten auch konsequent Sicherheitsupdates aufgespielt werden, um mögliche Lecks zu schließen.
    • Auch sollten dann wenigstens das Standardpasswort für den Benutzer pi geändert werden und für den Benutzer root ein Passwort vergeben werden.

Alternativ: Installation der Software selbst Schritt für Schitt durchführen

Installation des Raspi-Betriebssystems

  • Raspian Image downloaden: https://www.raspberrypi.org/downloads/raspbian/
    • Als Version genügt Raspian Stretch Lite auswählen und als ZIP-File laden, Größe sind 352 MB. Weitere benötigte Pakete sind dann bei Bedarf einfach nachinstallierbar.
    • Man kann auch "Raspian Stretch with desktop and recommended software" nehmen, das ist umfangreicher, Größe knapp 2 GB. Diese Version enthält auch weitere Software, wenn man etwas mit dem Raspi spielen will. Will man den Raspi per WLAN erreichen, sollte man keine Lite Version nehmen!
    • getestet mit Version:
      • Raspi 3 B+, Raspian Strech Lite April 2019, Release date: 2019-04-08, Kernel version: 4.14
      • Raspi 4 mit 1 GB, Raspian Buster Lite Juli 2019, Release date: 2019-07-10, Kernel version: 4.19
      • Raspi 4 mit 1 GB, Raspian Buster mit Desktop Juli 2019, Release date: 2019-07-10, Kernel version: 4.19
  • Entpacken des Downloads
  • Karte in den Kartenadapter stecken und dann Kartenadapter in den USB Port stecken
  • Betriebssystem-Download auf Karte schreiben mit Win32DiskImager
  • Vorbereiten Headless Boot (das bedeutet, man will den Raspi Starten, ohne dort eine Tastatur und einen Bildschirm anzuschliessen, man will stattdessen sofort direkt über Netzwerk zugreifen)
    • Dazu einfach ein leeres File mit dem Namen ssh ohne Erweiterung mit Windows Erplorer ins Hauptverzeichnis der Karte kopieren, dann ist Raspi nach Boot per ssh erreichbar. Ein solches File befinet sich hier (nicht wundern, das File ist wirklich leer). Wichtig: Das File beim Herunterladen unter dem Namen ssh und nicht unter ssh.txt abspeichern, notfalls umbenennen.
    • weitere Hinweise: https://www.raspberrypi.org/documentation/configuration/wireless/headless.md
  • Den Raspi per Netzwerkkabel mit dem PC verbinden
  • Den Raspi per Netzteil mit Strom versorgen
    • Hinweis: Beim Ausschalten ist es sicherer, den Raspi vor Abstecken des Netzteils definiert herunterzufahren mit einem Kommandozeilenbefehl "sudo shutdown" im Raspi.
  • Im Router des Netzwerks herausfinden, unter welcher IP-Adresse der Raspi zu finden ist (z.B. 192.168.178.32).
    • Diese Adresse im Router auch so einstellen, dass sie immer gleich bleibt.
  • Mit dem Raspi über SSH unter der herausgefundenen IP-Adresse mit dem Programm Putty verbinden.
    • Die beim erstmaligen Verbinden erscheinende Warnmelkdung, dass dies eine neue Verbindung ist, kann man mit "Ja" bestätigen
    • Login erfolgt mit User pi und Passwort raspberry
    • Hinweis für das Arbeiten mit dem schwarzen Kommandozeilen-Fenster in Putty:
      • Hier auf der Webseite beschriebene Kommandos kann man mit der Maus markieren und dann mit Ctrl-C in die Zwischenablage kopieren. Wechselt man nun in das schwarze Kommandozeilen-Fenster, kann man dort die Kommandos einfach mit einem rechten Mausklick an die aktuelle Position kopieren und spart sich so das Abtippen.
  • raspi-config für Ersteinrichtung
    • Kommando: sudo raspi-config
    • Navigation mit den Pfeiltasten, Page Up und Page Down, der Tab-Taste und Return
      • Man kann das User Passwort von raspberry auf einen anderen Wert setzen (sollte es aber aufschreiben ;-) )
    • 4: Localisation Options -> I1 Change Locale -> (durch Drücken der Leertaste Haken setzen bei "de_DE ISO-8859-1", dann Tabulator und Return zum Bestätigen, im nächsten Bildschirm de_DE auswählen durch Markieren und Return
    • 4: Localisation Options -> I2 Change Timezone -> (Europe -> Return -> Berlin -> Return)
    • 4: Localisation Options -> I3 Change Keyboard Layout -> Auswählen und einfach Return drücken, Keyboard wird dann angepasst.
    • 4: Localisation Options -> I4 Wifi Country -> DE Germany auswählen
    • Tool verlassen mit Finish
    • Das Tool kann jederzeit wieder aufgerufen werden.
  • Betriebssystem-Software aktualisieren
  • Sicherheitswarnung!
    • Der Raspi ist in der aktuellen Konfiguration bei einem offenen Betrieb im Internet nicht sicher. Wird er offen ins Netz gestellt, müssten auch konsequent Sicherheitsupdates aufgespielt werden, um mögliche Lecks zu schließen.
    • Auch sollten dann wenigstens das Standardpasswort für den Benutzer pi geändert werden und für den Benutzer root ein Passwort vergeben werden.

Installation der FreeSol-Software

  • Verzeichnis für die Software auf dem Raspi anlegen
    • Als User pi anmelden, man ist dann im Homeverzeichnis /home/pi
    • Kommando: mkdir FreeSol
    • Hinweise:
      • mit dem Kommando ls -l müsste jetzt das Verzeichnis zu sehen sein
      • mit dem Kommando pwd sieht man, in welchem Verzeichnis man sich befindet
      • mit dem Kommando cd, z.B. cd FreeSol oder cd .., kann man das Verzeichnis wechseln
  • Programme von hier herunterladen:
  • (Nur bei Verwendung eines Raspi Lite Images für das Raspi Betriebssystem muss ein zusätzliches Paket installiert werden, sonst gibt es Fehlermeldungen im nächsten Schritt)
    • sudo apt-get -y install python3-pip
  • Weitere benötigte Python-Module nachladen und Verzeichnisse vorbereiten mit den folgenden Kommandos:
    • sudo pip3 install cherrypy
    • sudo apt-get install python3-pandas
      • Abfrage "Do you want to continue?" wieder mit Return bestätigen
    • sudo pip3 install wget
    • sudo mkdir /webserv
  • Das Webserverskript CherryPy-Zaehler.py zum Autostart des Raspi hinzufügen
    • Das Autostart-File mit dem Kommando sudo nano /etc/rc.local aufrufen
    • Mit den Pfeiltasten an das Ende des Files navigieren, das angezeigt wird
    • Fast am Ende des Files, vor der Zeile exit 0 nacheinander folgende zwei Zeilen einfügen (statt Abtippen besser kopieren wie oben unter Putty beschrieben)
      • sudo python3 /home/pi/FreeSol/S0_Solar.py &
      • sudo python3 /home/pi/FreeSol/CherryPy-Zaehler.py &
    • Hinweis: Zu Debugzwecken kann man temporär Fehlermeldungen mitschreiben lassen, dies füllt und belastet aber im Dauerbetrieb die Speicherkarte:
      • sudo python3 /home/pi/FreeSol/S0_Solar.py >/home/pi/FreeSol/S0_err.log 2>&1 &
      • sudo python3 /home/pi/FreeSol/CherryPy-Zaehler.py >/home/pi/FreeSol/CherryPy_err.log 2>&1 &
    • Das File nach Abspeichern verlassen (Ctrl-X und dann Y; falls man ohne Speichern abbrechen will, Ctrl-X und dann N)
  • (optional für zusätzlichen SML-Bezugs-Einspeise-Lesekopf, ab Version 0.95): Cronjob für SML-Lesekopf anlegen:
    • Cronjob-File editieren mit sudo nano /etc/crontab
    • Letzte Zeile anfügen: * * * * * root sudo python3 /home/pi/FreeSol/SML_Bezug_Einspeisung.py
    • Hinweis: Zu Debugzwecken kann man temporär Fehlermeldungen mitschreiben lassen, dies füllt und belastet aber im Dauerbetrieb die Speicherkarte:
      • Letzte Zeile anfügen: * * * * * root sudo python3 /home/pi/FreeSol/SML_Bezug_Einspeisung.py >/home/pi/FreeSol/SML_err.log 2>&1
    • Das File nach Abspeichern verlassen (Ctrl-X und dann Y; falls man ohne Speichern abbrechen will, Ctrl-X und dann N)
  • Den Raspi neu starten
    • Kommando: sudo reboot
    • Hinweis: Den Raspi nie einfach vom Strom trennen, vorher sauber ausschalten mit sudo shutdown.

Testen des Webservers von FreeSol

  • FreeSol sollte nun erreichbar sein, indem man in einem Browser im heimischen Netz die IP-Adresse des Raspi eingibt. Es wird eine leere Grundleiste angezeigt in der Art wie:
  • Bei Problemen sollte man zunächst prüfen, ob alle Komponenten wie in der Aneitung beschrieben installiert wurden. Dazu eignet sich unter anderem auch das Testskript Systemanalyse.py, das man herunterladen und in der Kommandozeile des Raspi mittels Putty ausführen kamm mit dem Kommando python3 Systemanalyse.py. Mit dem Kommando python3 Systemanalyse.py >Systemanalyse.log 2>%1 kann man die Ausgabe des Skripts abspeichern und mir notfalls zuschicken.

Eine Vergleichsausgabe meines Raspis befindet sich in Systemanalyse.log.

Anschluss des S0-Ausgangs an den Raspi

  • Die beiden Anschlusskabel müssen nun mit den beiden Ausgangsklemmen des S0-Zählers verbunden werden
  • Mit dem Programm S0_Solar_Test.py kann ausprobiert werden, ob die S0-Signale richtig im Raspi ankommen.
    • Dazu das Programm herunterladen und mit FileZilla per FTP auf den Raspi ins Verzeichnis FreeSol hochladen.
    • Nun das Programm auf dem Raspi starten (nach Verbinden mit mit Putty) mit dem Kommando
      • sudo python3 FreeSol/S0_Solar_Test.py
    • Der S0-Anschluss funktioniert korrekt, wenn beim Blinken des S0-Zählers immer die Meldung Impuls empfangen im Terminal auftaucht. Dazu muss natürlich die Sonne scheinen. :-)
    • Testweise kann man auch einfach die beiden Pinkabel kurz miteinandern verbinden, was jeweils einen Impuls auslöst.
    • Das Programm kann mit Ctrl-C wieder beendet werden.

Anschluss eines SML-Lesekopfs an den Raspi

Allgemeine Infos

  • Hinweis: Dieses Feature ist noch im Aufbau und muss noch auf die verschiedene Zählertypen angepasst werden.
  • Falls statt eines oder zusätzlich zu einem S0-Zähler noch ein Zähler mit optischem Ausgang vorhanden ist, können die Signale daraus über einen SML-Zähler mit USB-Anschluß im Raspi erfasst werden.
  • Zur Erfassung benötigt man einen SML-Lesekopf, den man selber bauen oder z.B. bei Weidmann fertig bestellen kann. Als Bezugsquellen gefunden habe ich (für weitere Hinweise bin ich dankbar):
    • noch nicht getestet:
  • Bei der Analyse der SML-Kommunikation helfen Mitschnitte, die man mit einem Terminalprogramm wie hterm machen und mir zusenden kann, wenn der Zählertyp noch nicht oben in der "schon implementiert" Liste steht. Dabei sollten zusätzlich noch die genaue Zählertypbezeichnung (Foto) sowie alle Zählerstände mit den zugehörigen Unternummern (sowas wie 1.8.1 usw) angegeben werden.
  • Beim Ansehen von Mitschnitten hilft auch ein Hexeditor wie hxd
  • Eigentlich sollten Mitschnitte bekannter Zähler auch vom alten FreeSol SML-Programm analysiert werden können, auch kann man dort direkt den Lesekopf anschließen.
  • Zur Entschlüsselung unbekannter Zähler helfen nach wie vor die Erläuterungen bei Volkszähler sowie ein Hex2Dec-Konverter.
  • Eine Spezifikation des SML-Protokolls findet sich auf der Seite des Bundesamts für Sicherheit in der Informationstechik
  • Sehr gute einführende Erläuterungen zum SML-Protokoll finden sich bei msxfaq.de und bei schatenseite.de.

Ein FreeSol-SMLParser

unter Windows

  • Geeignet für einen ersten Test, ob der Zähler erkannt wird.
  • Die SML-Protokolle sind leider zählerabhängig, ich werde hier aber mit den jeweils ersten Nutzern Anpassungen für die einzelnen Zählertypen bereitstellen. Im Moment werden folgende Zählertypen unterstützt:
    • Easymeter Q3B
    • Iskra-MT681
  • Den Zähler in einen Windows-USB-Port stecken.
  • Das FreeSol-SMLParser-Programm herunterladen und in einem Kommandofenster (starten mit cmd) ausführen.
  • Im besten Fall werden nun die korrekten Zählerstände angezeigten, ansonsten bitte mit einen Screenshot der Fehlermeldung schicken.

Der Weidmann-Elektronik-Lesekopf

Allgemeine Informationen

Inbetriebnahme unter Windows

  • Treiberpaket herunterladen
  • Nachdem die Treiber selbst sich nicht direkt installieren ließen, habe ich das Emlog-Testprogramm im Treiberpaket installiert, das die Treiber korrekt mitinstalliert hat. Beim Starten des Emlog-Programms war dann eine COM-Schnittstelle (bei mir COM3) sichtbar, wenn man auf verbinden gedrückt hat.
  • Danach habe ich Emlog wieder geschlossen und diese Com-Schnittstelle in hterm zur Verbindung genutzt, bei 9600 baud. (Connect drücken, dann unten bei Input Options in der langen Zeilke irgendwelche Daten eingeben, rechts auf Asend drücken, dann 0 für unendlich viele Wiederholungen auswählen und z.B. 1 für 0.1. s Pause zwischen eine Sendung).
  • Schließlich mit einer Handykamera auf den Sensor gucken, wenn man die Diode im Kamerabild blinken sieht (die Kamera ist IR-empfindlich) funktioniert der Treiber.
  • Hinweis eines Nutzers: Wenn der Lesekopf bereits am Zähler klebt und man den dann am USB am Win PC anschließt, übernimmt er die Maussteuerung. Es öffnen sich Fenster und Kontext Menüs, eine Steuerung mit Touchpad ist nicht mehr möglich. Wenn man aber erst am USB anklemmt, wartet bis das Device eingerichtet ist und dann den Kopf am Zähler aufsetzt, ist alles o.k.

Inbetriebnahme am Raspi

  • Nützliche Infos in der Weidmann-Beschreibung
  • USB-Stecker in den Raspi stecken und Raspi einschalten
  • Einloggen und Kommando ls /dev/ttyU*. Als Ergebnis müsste die USB-Schnittstelle angezeigt werden, an der der Rapi hängt, z.B. /dev/ttyUSB0.
  • Einstellen der für den Zähler geeigneten Schnittstellenparameter der IR-Schnittstelle, z.B. für Baud 9600 8N1
    • stty -F /dev/ttyUSB0 9600 -parenb cs8 -cstopb -ixoff -crtscts -hupcl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echoke
  • Einen Befehl am Raspi an die Kamera senden, diese müsste im Handy kurz blinkend zu sehen sein:
    • echo -n -e 'Befehl' > /dev/ttyUSB0
  • Mit dem Befehl die vom Zähler gesendeten Daten
    • anzeigen cat /dev/ttyUSB0 oder
    • in eine Datei schreiben: cat /dev/ttyUSB0 > Daten.hex
    • Abbruch mit Ctrl-C
  • Für die Inbetriebname der Freesol-Software:
    • sudo pip3 install pyserial zur Installation des Moduls für die serielle Schnittstelle
  • Ab Programmversion 0.95 sollte die Einbindung des SML-Lesekopfs für eine Bezugs-Einspeisezähler möglich sein.
    • auf der FreeSol-Raspi-Konfigurationsseite sind dabei zusätzlich einzugeben:
      • die Nummer der USB-Schnittstelle, typisch 0
      • die OBIS-Kennzahlen für Bezug und Einspeisung, z.B. 1.8.0. und 2.8.0. Diese stehen in der regel im Zählerdisplay

Einbindung in andere Visualisierungssoftware

Allgemein

pv-ertraege.de

Sonnenertrag.eu

  • Im Moment überlege ich eine Einbindung nach www.sonnenertrag.eu als webbasierte Version, allerdings ist dort der dauerhafte Weiterbetrieb wohl nicht sicher.
  • Eine Beispielanlage hab ich hier in die Webseite eingebunden.
  • Forum: https://www.photovoltaikforum.com/board/184-sonnenertrag/
  • Wiki: hab ich nicht gefunden

Versionshistory

Hinweis: Nicht jedes File macht alle Versionsnummern durch

  • 0.91
    • Softwareupdate in Webserver eingebaut
  • 0.92
    • Backup-Funktion für Datenbank zum Download auf PC eingebaut
  • 0.93
    • Das Konfigurationsfile Konfiguration.txt speichert nun alle notwendigen Konfigurationseinstellungen. Es wird automatisch mit Defaultwerten angelegt und sollte nur über die Browseroberfläche verwaltet werden.
    • Die Portnummer kann nun in der Konfigurationsseite geändert werden. Am Raspi erfolgt dann ein Neustart, damit der neue Port wirksam wird, am PC nicht
  • 0.94 (aktuelles Image)
    • Wesentlicher Bug in der Updatesoftware beseitigt, diese sollte nun laufen
    • ssh File ist nun wieder im Image enthalten, man kann sich also über ftp und ssh mit dem Raspi verbinden falls nötig

Sonstiges