Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:raspberry_pi_image

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 der sofort arbeitet
  • vzlogger, middleware schon fertig installiert
  • lediglich noch Anpassung an lokale Installation (Zähler, Netzwerk…) nötig
  • Zugriff auf Datenbank über phpmyadmin
  • 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.

Die Tastatur hat in dem Moment noch die englische Belegung!

Auf Dauer ist der Zugang übers Netzwerk aber praktischer.

Übersicht der Passwörter

AnwendungBenutzernamePasswort
Konsolepiraspberry
ssh (Konsole über Netzwerk)piraspberry
Dateifreigabepiraspberry
MySQL-Standardbenutzervzdemo
MySQL-Umfassender-Nutzervz-adminsecure
MySQL-Admin1)rootraspberry

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.

Alternativ kann der User auch über phpmayadmin angelegt werden.

Kanäle anlegen

  • über das (i) der Kanäle die UUIDs herausfinden, die beim Anlegen der Kanäle erzeugt wurden

vzlogger konfigurieren

Vom vzlogger.conf-Editor erstellte Einträge, die nicht benötigt werden, wie z.B. „host“: „“, sollten gelöscht werden.
reboot
  • Pi neu starten mit
   sudo reboot

Im Idealfall läuft es jetzt schon… der Rest ist Geduld!

vzlogger wird beim booten des Images automatisch gestartet.
Ü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
cd build
cmake -DBUILD_TEST=off ..
make
sudo make install
sudo systemctl start vzlogger

Das Leerzeichen und den Punkt hinter cmake nicht vergessen!
Mit und ohne 'sudo' ist beabsichtigt, nicht verändern.

Update der Middleware-Installation:

cd /var/www
# ggf.Datensicherung
sudo cp -r volkszaehler.org vz.org.bak
# Update
cd volkszaehler.org
sudo git pull
# 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 heisst. 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. Eine Anleitung findet ihr hier: Ramdisk einrichten

1)
seit „stretch“ ist eine zusätzliche Sicherheit eingebaut die nur dem Systemuser root auch DB-Zugriff als root erlaubt. (sudo mysql –user=root -praspberry)
howto/raspberry_pi_image.txt · Zuletzt geändert: 2019/07/07 15:16 von jau