Inhaltsverzeichnis
Volkszaehler auf einem Raspberry Pi mittels fertigem Image installieren
Mit dem fertigen Image ist die Installation eines Volkszaehlers deutlich einfacher geworden. Hier der grobe Ablauf, Ihr müsst trotzdem noch einiges in der Doku lesen und verstehen, damit die Konfiguration gelingt…
Features
- vollständige Installation eines Volkszählers: vzlogger, Middleware (inkl. Frontend) schon fertig installiert
- lediglich noch Anpassung an lokale Installation (Zähler, Netzwerk…) nötig
- Optimierungen um die SD-Karte zu schonen
- eingerichtete Datenkompression und Datenaggregation
Image aufspielen
- Aktuelles Image für RPi, RPi-B+, RPi 2, RPi 3, Rpi 4 und Raspi Zero W herunterladen von Image-Quelle.
- Image mit Win32ImageWriter auf eine mindestens 8GB, besser 16GB große, Class 10, Raspberry Pi kompatible SD-Karte kopieren.
- beim Raspi Zero W im Verzeichnis /boot die Datei 'wpa_supplicant.conf' editieren (am Besten mit Notepad++) und SSID als auch PSK eintragen. Die Datei wird beim ersten Start in das Verzeichnis /etc/wpa_supplicant kopiert. SSH ist aktiviert. Um die serielle Schnittstelle ttyAMA0 zu aktivieren wurde Bluetooth in der Datei /boot/config.txt deaktiviert. Wer diese serielle Schnittstelle nicht braucht, kann die Datei entsprechend editieren.
- SD-Karte in den Pi einlegen.
Starten des Pi
- Pi an das Netzwerk anschließen (LAN-Kabel bevorzugt, WLAN geht aber auch)
- Pi starten (Stromversorgung anschließen), das Filesystem wird automatisch auf die ganze SD-Karte erweitert und das System neu gestartet
Anmelden an die Konsole des RaspberryPi
Über LAN
Von einem beliebigen Rechner desselben LAN-Netzwerkes:
Die Zuteilung der IP Adresse an den RaspberryPi am DHCP Server ablesen. In der Regel ist das der Router, z.b. die FritzBox.
Man kann auch einen Netzwerk-Scanner benutzen, um die IP des RaspberryPi herauszufinden.
z.B. https://www.softperfect.com/products/networkscanner/
Dann mit z. B. putty die Konsole des Pi von einem beliebigen Rechner desselben Netzwerkes aufrufen:
putty <IP des Pi> Port 22, Connection Type: SSH User: pi Passwort: raspberry
Mit Monitor und USB-Tastatur
Mit Monitor und USB-Tastatur direkt am RaspberryPi kann man sich lokal anmelden.
Auf Dauer ist der Zugang übers Netzwerk aber praktischer.
Übersicht der Passwörter
Anwendung | Benutzername | Passwort |
---|---|---|
Konsole | pi | raspberry |
ssh (Konsole über Netzwerk) | pi | raspberry |
User für vzlogger | vzlogger | vzlogger |
MySQL-Standardbenutzer | vz | demo |
MySQL-Umfassender-Nutzer | vz-admin | secure |
MySQL-Admin1) | root | raspberry |
Einrichten
Die Partition an die benutzte Karte anpassen
Ist nicht mehr manuell nötig, das Dateisystem wird automatisch auf die Größer der SD-Karte angepasst. Der erforderliche Neustart erfolgt automatisch.
Tastatur einstellen
Erfolgt über raspi-config. Für korrekte Umlaute den Zeichensatz „de_DE.UTF-8“ wählen.
Datum und Zeit stellen
Wenn der Raspberry keinen Zugang zum Internet hat, müssen Datum und Uhrzeit manuell gestellt werde. Z.B. um auf Dezember, den 04. um 08:05 Uhr 2014 setzen:
sudo date "1204080514"
evtl: Datenbank übers Netz erreichbar machen
Wer aus dem lokalen Netz mit einem SQL-client (z.B. HeidiSQL) auf die DB zugreifen will, muss mit
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
die Zeile „„bind-address = 127.0.0.1““ ändern in
bind-address = 0.0.0.0
Datenbank neustarten
sudo systemctl restart mysqld
Zudem braucht man einen User mit entsprechenden Rechten auf die DB
sudo mysql -uroot -praspberry CREATE USER 'vz-admin'@'%' IDENTIFIED BY 'secure'; GRANT USAGE ON *.* TO 'vz-admin'@'%'; GRANT ALL PRIVILEGES ON `volkszaehler`.* TO 'vz-admin'@'%' WITH GRANT OPTION; exit
Dabei bedeutet %
das man jeden Netzzugriff zulässt. Man kann das für mehr Sicherheit auch auf eine einzelne Adresse oder einen Adressbereich 192.168.1.%
einschränken.
Kanäle anlegen
- Mit dem VZ-Frontend unter
http://<IP des pi>/
- über das (i) der Kanäle die UUIDs herausfinden, die beim Anlegen der Kanäle erzeugt wurden
vzlogger konfigurieren
- mit
sudo nano /etc/vzlogger.conf
die Konfigurationsdatei für den vzlogger bearbeiten und gemäß Dokumentation die UUIDs einfügen. Dazu kann der vzlogger.conf-Editor benutzt werden: http://volkszaehler.github.io/vzlogger/
reboot
- Pi neu starten mit
sudo reboot
Im Idealfall läuft es jetzt schon… der Rest ist Geduld!
Überprüfen ob vzlogger läuft: 'systemctl status vzlogger'
vzlogger stoppen: 'sudo systemctl stop vzlogger',
vzlogger starten: 'sudo systemctl start vzlogger' .
Fehlersuche:
- I/R-Kopf-Kontrolle
xxd </dev/ttyUSB0
da kann man sehen, ob vom I/R-Kopf an ttyUSB0 was reinkommt (→ TTL-I/R-Kopf mit ttyAMA0 anstelle ttyUSB0)
- Wiki-Seite zur debug
- Auszug aus der Mailing-Liste zum Raspberry-VZ zur Dokumentation
- Bei Problemen mit vzlogger auf der Mailing-Liste melden.
Updates der VZ-Software
Bevor man Updates durchführt ist es ratsam, die Karte einmal komplett zu sichern, z.B. indem man ein Image der Karte auf einem anderen Rechner erstellt. Geht dann beim Update etwas schief hat man schnell wieder ein funktionierendes System.
Update vzlogger:
sudo systemctl stop vzlogger cd vzlogger git pull ./install.sh vzlogger sudo systemctl start vzlogger
Mit und ohne 'sudo' ist beabsichtigt, nicht verändern.
Update der Middleware-Installation:
cd ~ # ggf.Datensicherung cp -r volkszaehler.org vz.org.bak # Update cd volkszaehler.org git stash git pull git stash apply # Abhängigkeiten aktualisieren sudo composer update
Fehler beim Aufruf von Composer können daran liegen, dass Composer (http://getcomposer.org) an anderer Stelle installiert ist oder anders heißt. Evtl. hilft auch
sudo php composer.phar install
Raspberry Performance Optimierung
Die Leistung des Raspberry für vzlogger, Webserver, PHP und MySQL ist eigentlich ausreichend, allerdings kann die Leistung spürbar z.B. durch den SD-Karten Zugriff geschmälert werden. Hier einige Hinweise zur Performance-Optimierung des Raspberry Pi.
Zudem hat der Raspberry schwer zu kämpfen wenn lange Zeiträume mit vielen Datensätzen abgefragt werden. Dazu bietet sich einerseits eine Reduktion der Daten bei der Erfassung im vzlogger an, aber auch für große Zoomstufen kann die Datenmenge reduziert und die Ausgabe beschleunigt werden datenmengen.
statische IP statt DHCP
Das VZ Image für den raspberry Pi ist standardmäßig auf DHCP eingestellt, was für die ersten Schritte in der Regel von Vorteil ist, wenn das Gerät nach dem Verbinden mit dem LAN selbst versucht eine gültige IP Konfiguration zu beziehen. Solche Konfigurationen werden aber normalerweise nur auf Zeit vergeben, und müssen dann nach Ablauf dieser Zeit („lease time“, normalerweise einige Stunden) erneuert werden. Debian Linux - und so auch das Raspbian - reagieren empfinglich wenn nach Ablauf der lease time einer DHCP Konfiguration der DHCP Server nicht antwortet. Das könnte z.B. der Fall sein wenn der DSL router DHCP Server ist, aber Nachts abgeschaltet ist. Wenn die DHCP config dann nicht verlängert oder erneuert wird, wird die Schnittstelle inaktiv, d.h. der Raspberry ist dann weder per putty noch per http erreichbar. Aus- und Einstecken des LAN Kabels erneuert dann die Konfiguration (sieht man auf dem DHCP Server), die Serverprozesse auf dem raspberry bekommen die neue Konfiguration aber nicht mit - und somit bleibt der raspberry weiterhin nicht erreichbar. Einzige Lösung ist Einloggen über lokale Konsole (Tastatur, Bildschirm) und manuelles restarten der „networking“ scripte - wenn das Gerät aber ungünstig verbaut ist so dass Tastatur / Bildschirm nicht angeschlossen werden können bleibt nur die Unterbrechung der Spannungsversorgung.
aktuelle IP Konfiguration ansehen
Da wir ja zunächst mit der dynamischen IP Konfiguration starten kann es ja nicht schaden wenn man sich diese mal ansieht:
ifconfig eth0
und
route -n
nur den Teil bei „0.0.0.0“ betrachten.
statische IP Konfiguration setzen
Zum Ändern „nano“ die Datei „/etc/dhcpcd.conf“ öffnen:
sudo nano /etc/dhcpcd.conf
und die Zeilen
#static ip_address=192.168.0.5/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 #static routers=192.168.0.1 #static domain_name_servers=192.168.0.1 8.8.8.8
anpassen.
Zuerst müssen die Kommentarzeichen #
am Anfang der Zeilen weg. Falls das Netzwerk nicht auf IPv6 gerüstet ist kann man die Zeile auskommentiert lassen.
ip_address
gibt die zukünftige Adresse des Rpi an.
routers
ist die Adresse eines Routers über den die Internetverbindung hergestellt werden kann.
domain_name_servers
sind für Namensauflösung zuständig. In aller Regel macht da auch der Router. In dem Fall ist zusätzlich die Adresse des Google-DNS (8.8.8.8) als Fallback angegeben.
Nun kann man die „network“-scripte restarten
sudo service networking restart
oder einfach den ganzen Raspberry rebooten sudo reboot
.
Mit einer statischen IP Konfiguration ist man fortan _NICHT_ mehr abhängig davon ob der DHCP Server jederzeit im LAN reagiert (oder ob man den zum Stromsparen auch mal ausschaltet).
Einrichten einer ramdisk
Beim RaspberryPi führen alle Änderungen am Dateisystem zu Schreibzugriffen auf der eingelegten SD-Karte. Sollen diese minimiert werden, kann eine ramdisk eingerichtet werden.