FreeSol Raspi: Unterschied zwischen den Versionen
(218 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Überblick == | == Ü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. | 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 [https://www.photovoltaikforum.com/thread/132395-freesol-f%C3%BCr-raspi/ photovoltaikforum.com]. | |||
Stand: | Stand: | ||
Zeile 7: | Zeile 9: | ||
** Start der Dokumentation | ** Start der Dokumentation | ||
** Während der Suppportphase bin ich für Rückfragen unter der Mailadresse '''raspi-support (at) freesol.de''' erreichbar. | ** 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 [https://wiki.volkszaehler.org/howto/raspberry_pi_image Volkszaehlers] auf einem Raspi angucken, weil dort ein fertig entwickeltes Projekt vorliegt. | |||
== Kauf des Materials == | == Kauf des Materials == | ||
Zeile 12: | Zeile 21: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Position !! Komponenten !! Lieferant !! Einzelpreis !! Stückzahl !! Gesamtpreis | ! Position !! Komponenten !! Lieferant !! align="right" | Einzelpreis !! Stückzahl !! Gesamtpreis | ||
|- | |||
| 1 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/boards-kits/raspberry-pi-3-modell-b-43?c=298 Raspberry Pi B3+ ]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 32,40 || 1 ||style="text-align:right;" | 32,40 | |||
|- | |||
| 2 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/gehaeuse/passend-fuer-raspberry-pi-3-modell-b/geh-228-use-f-252-r-raspberry-pi-3b-43-3b-2b-1b-43 Gehäuse zu Raspberry Pi B3+ ]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 5,90 || 1 ||style="text-align:right;" | 5,90 | |||
|- | |- | ||
| | | 3 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/stromversorgung/netzteile-fuer-die-steckdose/micro-usb-netzteil-f-252-r-raspberry-pi-5v/2-5a-schwarz Steckernetzteil ]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 5,90 || 1 || style="text-align:right;" | 5,90 | ||
|- | |- | ||
| | | 4 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/speicherkarten/verbatim-microsdhc-class-10-speicherkarte-8gb?c=347 microSDHC-Speicherkarte 8 GB Class 10]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 3,50 || 1 ||style="text-align:right;" | 3,50 | ||
|- | |- | ||
| | | 5 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/speicherkarten/microsdhc/sdxc-cardreader-mit-usb-2.0-anschluss-schwarz?c=347 Kartenadapter für USB]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 1,60 || 1 ||style="text-align:right;" | 1,60 | ||
|- | |- | ||
| | | 6 || [https://www.sertronics-shop.de/raspberry-pi-co/raspberry-pi/kabel-adapter/gpio-csi-dsi-kabel/40pin-jumper/dupont-kabel-male-150-female-trennbar Kabel für S0-Signal]|| [https://www.sertronics-shop.de/ Sertronics ]|| style="text-align:right;" | 2,90 || 1 ||style="text-align:right;" | 2,90 | ||
|- | |- | ||
| | | '''Summe''' || || || || || style="text-align:right;" | '''52,20''' | ||
|- | |- | ||
|} | |} | ||
Hinweise: | Hinweise: | ||
* Keine Versandkosten bei Kauf über 29 EUR | |||
* Bitte nicht an der Speicherkarte sparen, hier ein Markenprodukt nehmen | * Bitte nicht an der Speicherkarte sparen, hier ein Markenprodukt nehmen | ||
* | * Ggf. [https://www.sertronics-shop.de/neu/zwillingslitze-isoliert-2x0-14mm-5m?c=2247 weiteres Kabel] mitkaufen, falls die Entfernung zum Zähler groß ist und das S0-Kabel verlängert werden muss | ||
* 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. | |||
* '''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 | == Energiezähler anschließen == | ||
=== S0-Zähler === | === S0-Zähler === | ||
* Falls kein S0-Signal vorhanden ist: | * Falls kein S0-Signal vorhanden ist: | ||
** S0-Zähler [[Aufbauanleitungen#Erweiterungspaket_S0-Z.C3.A4hler:_Zum_Erzeugen_eines_nicht_vorhandenen_S0-Signals|kaufen]] und einbauen lassen. | ** S0-Zähler [[Aufbauanleitungen#Erweiterungspaket_S0-Z.C3.A4hler:_Zum_Erzeugen_eines_nicht_vorhandenen_S0-Signals|kaufen]] und einbauen lassen. | ||
* Die Pulszahl im Programm ist im Moment fest auf 1000 Pulse pro kWh eingestellt, wird aber bei Bedarf noch variabel einstellbar gemacht. | |||
* Für das S0-Signal werden die '''folgenden zwei Pins verwendet (im GPIO.BCM Numerierungsschema)''' | |||
** '''GPIO.input(22)''' (In meinem Modell: innere Pinreihe, 8. Pin vom Boardrand, schwarzes Kabel im Bild unten) | |||
** '''3V3''' (In meinem Modell: innere Pinreihe, 9. Pin vom Boardrand, weißes Kabel im Bild unten) | |||
* Weitere Informationen zum PIN-Layout finden sich hier: | |||
** https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering?newreg=86e0900fde854eee97bdd4f78e3c6e7b | |||
** https://www.raspberrypi.org/documentation/usage/gpio/ | |||
** Soweit benötigt, GPIO Zero installieren mit | |||
*** sudo apt install python3-gpiozero | |||
*** Das Pinout am Raspi kann dann mit dem Komando '''pinout''' angezeigt werden. | |||
<gallery widths=220px > | |||
Datei:Pinout.png |Pinout meines Raspis. | |||
Datei:Foto_Pinout.jpg |Foto der Anschlusspins. | |||
</gallery> | |||
== 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''' | |||
** '''Freesol Raspi Software''' [https://www.freesol.de/download/freesol-for-raspberry-pi-0.94.zip '''herunterladen'''] | |||
** Das File entpacken. | |||
* '''Schritt 2:''' Imagefile auf Speicherkarte schreiben | |||
** '''Win32DiskImager''' am PC [https://www.heise.de/download/product/win32-disk-imager-92033 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 [https://www.heise.de/download/product/win32-disk-imager-92033 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 [https://www.freesol.de/download/ssh 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 [https://www.heise.de/download/product/putty-7016 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''' | |||
** Die folgende zwei Kommandos eingeben, die Ausführung dauert jeweils etwas: | |||
*** '''sudo apt-get update''' | |||
*** '''sudo apt-get upgrade''' | |||
**** Die Frage "Do you want to continue?" mit Return bestätigen | |||
** Weitere Informationen, wenn es jemanden genauer interessiert | |||
*** Eine schöne generelle Einführung in den Raspi findet sich z.B. [http://raspberrypiguide.de/#Einstieg hier] | |||
*** Ein paar grundlegende Infos zu Kommandos in der Shell finden sich z.B. [hier http://www.raspberry-pi-geek.de/Magazin/2013/05/Einfuehrung-Linux-auf-dem-Raspberry-Pi] | |||
*** Anleitung zum Einrichten eines Raspi: http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Install.html | |||
* '''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 [https://wiki.freesol.de/download/ hier] '''herunterladen''': | |||
** ins Verzeichnis wechseln: cd FreeSol | |||
** Programme herunterladen: | |||
*** wget https://wiki.freesol.de/download/FreeSolRaspi_SolarZaehl.py | |||
*** wget https://wiki.freesol.de/download/S0_Solar.py | |||
*** wget https://wiki.freesol.de/download/CherryPy-Zaehler.py | |||
*** wget https://wiki.freesol.de/download/S0_Solar_Test.py | |||
*** wget https://wiki.freesol.de/download/FreeSolRaspi_Helper.py | |||
*** wget https://wiki.freesol.de/download/SML_Bezug_Einspeisung.py | |||
*** wget https://wiki.freesol.de/download/FreeSol-SML-Schnittstellentest.py | |||
*** wget https://wiki.freesol.de/download/hexdump.py | |||
*** wget https://wiki.freesol.de/download/SMLParser.py | |||
*** Hinweis: Programme werden nicht überschrieben, ggf. existierende Programme löschen mit rm *.py | |||
* ('''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: | |||
<gallery widths=220px > | |||
Datei:Grundbildschirm FreeSol.jpg|Grundbildschirm von FreeSol bei Zugriff mit dem Browser. | |||
</gallery> | |||
* 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 [https://wiki.freesol.de/download/Systemanalyse.py 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 [https://wiki.freesol.de/download/Systemanalyse.log Systemanalyse.log]. | |||
== Anschluss des S0-Ausgangs an den Raspi == | |||
* Die beiden [[FreeSol_Raspi#S0-Z.C3.A4hler | Anschlusskabel]] müssen nun mit den beiden Ausgangsklemmen des S0-Zählers verbunden werden | |||
* Mit dem Programm [https://wiki.freesol.de/download/S0_Solar_Test.py S0_Solar_Test.py] kann ausprobiert werden, ob die S0-Signale richtig im Raspi ankommen. | |||
** Dazu das Programm [https://wiki.freesol.de/download/S0_Solar_Test.py 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 [[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: | |||
* 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: | |||
** 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 == | ||
=== Allgemein === | |||
* 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 == | |||
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 == | == Sonstiges == | ||
* Eine [https://wiki.grammaster.de/index.php?title=Python Einführung in Python], dort besonders auch ein kostenloser Python2-Online Kurs bei codecademy. |
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
- Falls kein S0-Signal vorhanden ist:
- S0-Zähler kaufen und einbauen lassen.
- Die Pulszahl im Programm ist im Moment fest auf 1000 Pulse pro kWh eingestellt, wird aber bei Bedarf noch variabel einstellbar gemacht.
- Für das S0-Signal werden die folgenden zwei Pins verwendet (im GPIO.BCM Numerierungsschema)
- GPIO.input(22) (In meinem Modell: innere Pinreihe, 8. Pin vom Boardrand, schwarzes Kabel im Bild unten)
- 3V3 (In meinem Modell: innere Pinreihe, 9. Pin vom Boardrand, weißes Kabel im Bild unten)
- Weitere Informationen zum PIN-Layout finden sich hier:
- https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering?newreg=86e0900fde854eee97bdd4f78e3c6e7b
- https://www.raspberrypi.org/documentation/usage/gpio/
- Soweit benötigt, GPIO Zero installieren mit
- sudo apt install python3-gpiozero
- Das Pinout am Raspi kann dann mit dem Komando pinout angezeigt werden.
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
- Freesol Raspi Software herunterladen
- Das File entpacken.
- 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
- Die folgende zwei Kommandos eingeben, die Ausführung dauert jeweils etwas:
- sudo apt-get update
- sudo apt-get upgrade
- Die Frage "Do you want to continue?" mit Return bestätigen
- Weitere Informationen, wenn es jemanden genauer interessiert
- Eine schöne generelle Einführung in den Raspi findet sich z.B. hier
- Ein paar grundlegende Infos zu Kommandos in der Shell finden sich z.B. [hier http://www.raspberry-pi-geek.de/Magazin/2013/05/Einfuehrung-Linux-auf-dem-Raspberry-Pi]
- Anleitung zum Einrichten eines Raspi: http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Install.html
- Die folgende zwei Kommandos eingeben, die Ausführung dauert jeweils etwas:
- 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:
- ins Verzeichnis wechseln: cd FreeSol
- Programme herunterladen:
- wget https://wiki.freesol.de/download/FreeSolRaspi_SolarZaehl.py
- wget https://wiki.freesol.de/download/S0_Solar.py
- wget https://wiki.freesol.de/download/CherryPy-Zaehler.py
- wget https://wiki.freesol.de/download/S0_Solar_Test.py
- wget https://wiki.freesol.de/download/FreeSolRaspi_Helper.py
- wget https://wiki.freesol.de/download/SML_Bezug_Einspeisung.py
- wget https://wiki.freesol.de/download/FreeSol-SML-Schnittstellentest.py
- wget https://wiki.freesol.de/download/hexdump.py
- wget https://wiki.freesol.de/download/SMLParser.py
- Hinweis: Programme werden nicht überschrieben, ggf. existierende Programme löschen mit rm *.py
- (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
- Weidmann, 50 EUR inkl Versand über Amazon
- Sehr nützliche technische Informationen zur Inbetriebnahme des Lesekopfs finden sich im Weidmann-Shop
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
- auf der FreeSol-Raspi-Konfigurationsseite sind dabei zusätzlich einzugeben:
Einbindung in andere Visualisierungssoftware
Allgemein
- 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 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
- Eine Einführung in Python, dort besonders auch ein kostenloser Python2-Online Kurs bei codecademy.