FreeSol Raspi: Unterschied zwischen den Versionen
Zeile 226: | Zeile 226: | ||
* Einstellen der für den Zähler geeigneten Schnittstellenparameter der IR-Schnittstelle, z.B. für Baud 9600 8N1 | * 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''' | ** '''stty -F /dev/ttyUSB0 9600 -parenb cs8 -cstopb -ixoff -crtscts -hupcl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echoke''' | ||
Einen | * Einen Befehl am Raspi an die Kamera senden, diese müsste im Handy kurz blinkend zu sehen sein: | ||
** '''echo -n -e 'Befehl' > /dev/ttyUSB0''' | ** '''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 | |||
== Einbindung in andere Visualisierungssoftware == | == Einbindung in andere Visualisierungssoftware == |
Version vom 10. Mai 2019, 20:06 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.
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.
- getestet mit Version: April 2019, Release date: 2019-04-08, Kernel version: 4.14
- 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
- Folgende zu übertragende Programme von hier herunterladen:
- FreeSolRaspi_SolarZaehl.py
- S0_Solar.py
- CherryPy-Zaehler.py
- Dateien z.B. nach c:\temp\FreeSol speichern.
- Die Programme mit einem FTP Programm (z.B. Filezilla) auf den Raspi übertragen
- Zum Aufbau der Verbindung in FileZilla folgende Daten eingeben
- Server: IP-Adresse des Raspi, z.B. 192.168.178.32
- Benutzer: pi
- Passwort: raspberry (oder das geänderte Passwort)
- Port: 22
- Danach auf Verbinden klicken
- 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.
- Als Zielverzeichnis rechts das Verzeichnis /home/pi/FreeSol auswählen durch Doppelklick auf FreeSol
- Nun die drei Dateien aus dem linken Verzeichnis durch Doppelklick auf jede Datei auf den Raspi hochladen
- Zum Aufbau der Verbindung in FileZilla folgende Daten eingeben
- (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
- 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 >/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)
- 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
- 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:
- 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?
- 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.
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.
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
Einbindung in andere Visualisierungssoftware
- Im Moment überlege ich eine Einbindung nach www.sonnenertrag.eu als Webbasierte version
- Die Handyapp sollte unverändert bleiben.
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.