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…
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 direkt am RaspberryPi kann man sich lokal anmelden.
Auf Dauer ist der Zugang übers Netzwerk aber praktischer.
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 |
Ist nicht mehr manuell nötig, das Dateisystem wird automatisch auf die Größer der SD-Karte angepasst. Der erforderliche Neustart erfolgt automatisch.
Erfolgt über raspi-config. Für korrekte Umlaute den Zeichensatz „de_DE.UTF-8“ wählen.
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"
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.
http://<IP des pi>/
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/
sudo reboot
Im Idealfall läuft es jetzt schon… der Rest ist Geduld!
xxd </dev/ttyUSB0
da kann man sehen, ob vom I/R-Kopf an ttyUSB0 was reinkommt (→ TTL-I/R-Kopf mit ttyAMA0 anstelle ttyUSB0)
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
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.
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.
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.
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).
Beim RaspberryPi führen alle Änderungen am Dateisystem zu Schreibzugriffen auf der eingelegten SD-Karte. Sollen diese minimiert werden, kann eine ramdisk eingerichtet werden.