Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:raspberry_pi_image

Anleitung: 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 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)

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-Adminrootraspberry

Einrichten

Die Partition an die benutzte Karte anpassen
  • Die root-Partition auf die Größe der SD-Karte vergrößern mit raspi-config. Dazu
    1. „sudo raspi-config“ ausführen
    2. im Menu den Unterpunkt „expand_rootfs“ aufrufen
Das Image ist auf einem aktuellen Stand von Jessie-Lite!
Ein Update des Systems ist daher NICHT nötig!
Tastatur einstellen

Erfolgt ebenfalls ü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: MySQL übers Netz erreichbar machen
Führt ggf. zu Fehler beim Starten von mysql aufgrund der neuen systemd-Architektur bei Raspbian-Jessie

Wer aus dem lokalen Netz mit einem mysql-client (z.B. HeidiSQL) auf die DB zugreifen will, muss mit „sudo nano /etc/mysql/my.cnf“ die Zeile bind-address = 127.0.1.1 ändern in bind-adress = 192.168.178.x (x = IP des Raspi, werden aber alle Clients im gleichen Netz zugelassen). Zudem braucht man einen User mit entsprechenden Rechten auf die DB:

  1. use mysql;
  2. CREATE USER „dbadmin“@„192.168.178.%“ IDENTIFIED BY „meinPasswort“;
  3. GRANT ALL PRIVILEGES ON *.* TO „dbadmin“@„192.168.178.%“;
  4. Update user set host='%' where user='dbadmin';
  5. flush privileges;

Alternativ können diese Schritte auch über phpmayadmin gemacht 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:

  • phpmyAdmin
    http://<ip des Pi>/phpmyadmin

    User vz Passwort demo, da kann man die Daten ansehen und falsche Kanalparameter in der properties Tabelle korrigieren

  • 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
cmake .
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, web- und PHP-Server 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 mit „vi“ oder „nano“ die Datei „/etc/network/interfaces“ öffnen:

sudo vi /etc/network/interfaces 

und die Zeile

iface eth0 inet manual 

ändern auf

auto eth0
allow-hotplug eth0
iface eth0 inet static 

darunter dann folgende Zeilen ergänzen (Beispieldaten, bitte auf *Ihre* LAN Situation anpassen, dazu auf die Daten von oben „ansehen“ zurückreifen ):

 
address 172.27.12.167    ## hier "inet addr" der ifconfig-Ausgabe einsetzen
netmask 255.255.255.128  ## hier "Mask" der ifconfig-Ausgabe einsetzen
network 172.27.12.128 
broadcast 172.27.12.255  ## hier "Bcast" der ifconfig-Ausgabe einsetzen
gateway 172.27.12.129    ## hier "Gateway" der route-Ausgabe Zeile 0.0.0.0 einsetzen

Leider habe ich keinen guten Tipp zur Berechnung des „networks“ - das ist die UND-Verknüpfung von „address“ und „netmask“ (sorry, einfacher habe ich es leider nicht).

Der DHCP-Client verhindert in der aktuellen Konfiguration aber eine Übernahme der statischen IP-Adresse. Am einfachsten man deaktiviert ihn:

sudo service dhcpcd stop
sudo systemctl disable dhcpcd

Nun kann man die „network“-scripte restarten

sudo service networking restart

oder einfach den ganzen Raspberry rebooten.
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

howto/raspberry_pi_image.txt · Zuletzt geändert: 2017/05/23 08:49 von udo1