Inhalt
Uhrzeit und Tastaturlayout anpassen
Raspberry Betriebssystem updaten
Kamera aktivieren und Fotos / Videos erstellen
I2C Bus aktivieren / ansteuern
SNMP einrichten und Werte auslesen
Allgemeines
Nachdem ich mir einen Raspberry Pi bestellt habe ist dieser nun endlich angekommen. Bei dem Raspberry PI handelt es sich um einen Mini-Computer der fast alles kann was ein "großer" Computer auch kann. Mit dem Raspberry Pi Model 2 B wird ein etwa Zigarettenschachtel großer Computer mit 900MHz Quadcore Prozessor und 1GByte RAM geliefert. In der Bestellung habe ich gleich ein Gehäuse, das Kameramodul, ein Steckernetzteil und eine 16GByte Micro SD Karte sowie einen Nano WiFi USB Adapter mitbestellt. Zusammen habe ich dafür ca. 90 € bezahlt.
Erste Inbetriebnahme
Nachdem ich nun alles Ausgepackt habe kommt die Inbetriebnahme. Dazu stecke ich die Micro SD Karte über einen Adapter in meinen Rechner ein und starte das Programm Win32DiskImager das ich hier herunter geladen habe. Mit dem Programm kann die eigentliche Software auf die SD Karte geschrieben werden. Für die ersten Versuche verwende ich das Betriebssystem RASPBIAN das ich mir hier geholt habe. Das Microsoft Windows 10 ist derzeit noch nicht zum Download frei erhältlich, soll aber in den nächsten Wochen bereit stehen.
Nach dem Kopieren des Images auf die SD Karte kann diese nun in den Pi eingesteckt werden. Auch das Netzwerkkabel wird mit dem Pi verbunden. Jetzt kann der Pi an die Spannungsversorgung angeschlossen werden.
Verbindung mit Pi herstellen
Wenn der Pi angeschlossen ist, kann nun auf dem DHCP Server geschaut werden, welche IP Adresse der Pi bekommen hat. Mit Putty oder mit einem anderen SSH Terminal kann eine Verbindung mit dem Pi hergestellt werden. Als Benutzername wird pi eingetragen und als Kennwort wird "raspberry" verwendet (ohne ").
Erstkonfiguration vornehmen
Nachdem wir nun mit dem Raspberry verbunden sind, starten wir als erstes das Konfigurationsprogramm mit
sudo raspi-config
In dem Konfigurationstool den 1. Menüpunkt auswählen um den gesamten Speicher auszunutzen
Nachdem des Konfigtool mit Finish beendet wurde wird der Pi neu gestartet. Nach dem Neustart kann mit df -h
der Speicherplatz auf der SD Karte überprüft werden.
Uhrzeit und Tastaturlayout anpassen
Um die Uhrzeit einzurichten müssen wir das Konfigtool starten mit
sudo raspi-config
In dem Konfigtool "Internationalisation Options" auswählen und danach "Change Locale" auswählen. In der Auswahlliste alle de_DE* auswählen und mit OK bestätigen. Danach kann die Sprache auf de_DE.UTF-8 gestellt werden.
Im Hauptmenü kann jetzt wieder Int. Optionen ausgewählt werden, danach "Change Tomezone" auswählen und Europa bzw. Berlin für Deutschland auswählen.
Raspberry Betriebssystem updaten
Um das Betriebssystem auf den neusten Stand zu bringen müssen folgende Befehle ausgeführt werden:
- sudo apt-get update
- sudo apt-get upgrade
Danach den Pi neu starten oder folgenden Befehl ausführen:
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y autoremove && sudo reboot
WLAN Stick einrichten
Mit lsusb
kann überprüft werden, ob der USB WLAN Adapter erkannt wird. In diesem Fall ist es ein WLAN Stick mit RT5370 Chipsatz (LogiLink WL0084B).
Vorhandene WLANs können mit
sudo iwlist wlan0 scan
gesucht werden. Hier können auch die WLAN Einstellungen ausgelesen werden, die später weiter unten in der Konfiguration eingetragen werden müssen um eine Verbindung mit dem WLAN herstellen zu können.
Auszug aus iwlist
Cell 04 - Address: 34:31:C4:39:BA:4E
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=63/70 Signal level=-47 dBm
Encryption key:on
ESSID:"Mein-WLAN"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000006b63405450
Extra: Last beacon: 20ms ago
IE: Unknown: 000742657267737472
IE: Unknown: 010882848B960C121824
IE: Unknown: 03010B
IE: Unknown: 0706444520010D14
IE: Unknown: 2A0100
IE: Unknown: 32043048606C
IE: Unknown: 2D1AEF111BFFFFFF00000000000000000080000000000406E6E70D00
IE: Unknown: 331AEF111BFFFFFF00000000000000000080000000000406E6E70D00
IE: Unknown: 3D160B0F0600000000000000000000000000000000000000
IE: Unknown: 34160B0F0600000000000000000000000000000000000000
IE: Unknown: 4A0E14000A002C01C800140005001900
IE: Unknown: 7F050100000000
IE: Unknown: DD180050F2020101010003A4000027A4000042435E0062322F00
IE: Unknown: DD0900037F01010000FF7F
IE: Unknown: DD0C00040E010102010000000000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Mit ifconfig
kann überprüft werden ob das WLAN Interface erkannt wird. Ist dies der Fall (hier WLAN0) kann eine Verbindung mit einem WLAN Router hergestellt werden.
Hierzu muss die Datei /etc/Network/interfaces angepasst werden. Dies kann mit dem Editor nano gemacht werden. Bevor wir eine Änderung vornehmen machen wir eine Kopie der Konfigurationsdatei mit
sudo cp /etc/network/interfaces /etc/network/interfaces.org
Editor öffnen mit
sudo nano /etc/network/interfaces
folgender Inhalt sollte in der Deitei stehen
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Danach muss die Datei /etc/wpa_supplicant/wpa_supplicant.conf angepasst werden. Dazu kopieren wir zunächst wieder die vorhandene Datei mit
sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.org
bevor wir sie mit
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
bearbeiten und folgenden Inhalt einfügen
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WLAN-Name" # Hier wird der Name des WLANs eingetragen incl. Anführungszeichen
psk="WLAN Kennwort" # Hier wird das Kennwort eingetragen incl. Anführungszeichen
scan_ssid=1 # 0=Default / 1=aktiver Scan für versteckte WLANs
proto=RSN # WPA = WPA/IEEE 802.11i/D3.0 / RSN = WPA2/IEEE 802.11i
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
Anschließend die Konfiguration des Netzwerkes neu laden mit
sudo service networking restart
Bei mir hat die Konfigurationsänderung erst nach einem Reboot funktioniert
sudo reboot
Eine Beschreibung für die Parameter in der wpa_supplicant.conf Datei gibt es hier.
Energiesparmodus des WLANs deaktivieren:
sudo nano /etc/network/interfaces
Inhalt der Datei:
pre-up iw dev wlan0 set power_save off post-down iw dev wlan0 set power_save on
Alias für Befehle einrichten
Mit Alias Einträgen in der Datei .bashrc können Kurzbefehle eingerichtet werden. Dazu die Datei mit nano öffnen und das Kommentarzeichen vor alias entfernen. Die Einstellungen sind ab einer Neuanmeldung gültig.
Uhrzeit automatisch stellen
Um die Uhrzeit aus dem Internet zu übernehmen muss der NTP Dienst mit
sudo apt-get purge ntp
entfernt werden. Danach wird der NTPDate Dienst mit
sudo apt-get install ntpdate
installiert. Nach der Installation kann mit
sudo /etc/init.d/ntp stop
der Dienst gestoppt werden und mit
sudo ntpdate [Servername oder IP]
die Uhrzeit aus dem Internet geholt werden. Danach muss wieder mit
sudo /etc/init.d/ntp start
der Dienst gestartet werden.
Damit bei jedem Start die Uhrzeit abgeglichen wird machen wir einen cronjob mit
sudo crontab -e
und tragen folgende Zeilen ein
@reboot ntpdate -s 0.de.pool.ntp.org
0 */6 * * * ntpdate -s 0.de.pool.ntp.org
danach beenden wir mit STRG-O und STRG-X den Editor.
Kamera aktivieren und Fotos / Videos erstellen
Um die Kamera nutzen zu können muss diese zuerst mit raspi-config aktiviert werden. Dazu starten wir mit
sudo raspi-config
und wählen in dem Menü den Punkt 5 "Enable Camera" aus. Auf dem darauffolgenden Dialog kann die Kamera mit enable aktiviert werden. Wenn raspi-config beendet wird, wird der Pi neu gestartet. Nach dem Reboot ist die Kamera aktiv und kann verwendet werden.
Um die Aufnahme LED auszuschalten, muss in der Datei /boot/config folgender Eintrag gemacht werden:
disable_camera_led=1
Fotos aufnehmen
Mit dem Befehl
raspistill -o Image.jpg
wird ein Foto erstellt und im aktuellen Verzeichnis gespeichert. Alle Funktionen von raspistill können auf der Webseite von Raspian.org nachgelesen werden.
Video erstellen
Über den Befehl
raspivid -o Video.h264 -t 10000
wird ein Video über 10 Sekunden erstellt und im aktuellen Verzeichnis abgespeichert. Auch hier werden wieder alle weiteren Funktionen auf der Raspberry.org Webseite erklärt.
RRD Tool installieren
Mit den RRDTool können Werte in einer RoundRobinDatenbank gespeichert werden und als Grafik ausgegeben werden. Dazu müssen die RRDTools installiert werden mit
sudo apt-get install rrdtool
Jetzt kann mit den folgendem Befehl eine kleine Datenbank angelegt werden
rrdtool create Datenbank.rrd --step 300 DS:name:GAUGE:600:-30:100 RRA:AVERAGE:0.5:1:1200 RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400 RRA:AVERAGE:0.5:12:2400
In diese Datenbank werden mit dem Befehl
rrdtool update Datenbank.rrd N:[Wert]
Die Daten eingespielt.
I2C Bus aktivieren / ansteuern
Um auf den I2C Bus zugreifen zu können muss das Modul modprobe i2c_dev geladen werden. Das Modul wird automatisch geladen, wenn folgende Zeile in die Datei /etc/modprobe eingetragen wird.
i2c-dev
Jetzt muss noch im Rasi Konfigurationsassistent der I2C Bus aktiviert werden. Dazu muss mit raspi-config das Tool gestartet werden und unter Advanced der I2C Bus aktiviert werden.
Um die Verbindung testen zu können, wird die Tool-Sammlung i2c-tools benötigt, die mit folgendem Befehl installiert wird.
apt-get install i2c-tools # I2C-Toolkit fuer die Kommandozeile apt-get install python-smbus # Python-Bibliothek fuer I2C apt-get install libi2c-dev # Bibliothek fuer C
Wenn alles OK ist dann kann mitsudo i2cdetect -y 1
der I2C Bus ausgelesen werden
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Zurück
SAMBA Installieren
Mit dem Samba Dienst ist es möglich von einem Windows Rechner direkt auf das Dateisystem des Raspberry zuzugreifen.
Um den Dienst zu installieren muss folgender Befehl ausgeführt warden
sudo apt-get install samba samba-common-bin
Wenn das Paket geladen wurde muss deer SAMBA Dienst noch konfiguriert warden. Ich gehe davon aus, dass der Raspberry in einem sicheren Netzwerk betrieben wird. Aus diesem Grund werden nur einfache Kennwörter / Benutzernamen verwendet. Sollte der Raspberry in einem fremden Netzwerk betrieben werden so müssen die Sicherheitseinstellungen überarbeitet werden!
Zunächst müssen wir einen Samba Benutzer anlagen. In unserem Fall ist es der Benutzer pi. Zu beachten ist, dass der Benutzer, im Beispiel pi, als Benutzer auf dem Raspberry als Systembenutzer existieren muss. Es ist ratsam, nicht dasselbe Passwort wie für den Systembenutzer und folglich den SSH-Zugang zu verwenden.
sudo smbpasswd -a pi
Damit wir per SMB auf den Pi zugreifen können muss noch die Konfigurationsdatei angepasst werden. Hierzu benennen wir die originale Datei um und erstellen uns eine neue Datei mit
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org
sudo nano /etc/samba/smb.conf
In die neu erstelle Datei kopieren wir folgenden Inhalt:
[RaspberryPi]
path = /
writeable = yes
guest ok = no
Jetzt starten wir den Dienst mit
sudo /etc/init.d/samba restart
neu.
DNS Eintrag erstellen
- sudo apt-get install avahi-daemon
- sudo insserv avahi-daemon
- sudo apt-get remove wolfram-engine
Perl Module installieren
Um Module für Perl installieren zu können ist es am einfachsten dies über cpanm zu machen. dafür müssen zunächst einige Pakete installiert werden.
Kompiler installieren mit
sudo apt-get install curl gcc-4.7
CPANM installieren mit
sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Sollte es ein Problem bei der Installation mit dem Zertifikat geben, dann bitte das Datum und die Uhrzeit überprüfen!
Das Datum kann mit dem Befehl sudo date "MMTTHHMMJJ" eingestellt werden.
Danach können Perl Module mit dem Befehl
sudo cpanm <Modulname>
Beispiel: sudo cpanm Device::LaCrosse::WS23xx
installiert werden.
Eine Anleitung, wie ein Debugger für Perl remote eingerichtet wird gibt es z.B. unter http://docs.activestate.com/komodo/4.4/debugperl.html
Für Komodo sind folgende Schritte erforderlich:
- Den Inhalt aus dem Komodo Verzeichnis \lib\support\dbgp\perllib auf den pi in das Verzeichnis /home/pi/perl_debug kopieren
- export PERL5LIB=/home/pi/perl_debug
- export PERLDB_OPTS="RemotePort=127.0.0.1:9000"
- export DBGP_IDEKEY="jdoe"
- perl -d piface01.pl
Pi als Terminalclient
Zunächst muss der RDP Client installiert werden. Dies geht wie immer mit
sudo apt-get install rdesktop
Nach der Installation muss der Desktop gestartet werden. Hierzu wird die Datei ~/.config/autostart/.desktop
angelegt und folgender Inhalt eingetragen
[Desktop Entry]
Type=Application
Exec=/home/pi/startrdp.sh
anschließend wird die Datei /home/pi/startrdp.sh bearbeitet und folgender Inhalt eingefügt
#!/bin/bash
while ! ping -c 1 COMPUTERNAME > /dev/null; do
sleep 1;
done
exec rdesktop COMPUTERNAME -f -u USERNAME -p PASSWORD -d DOMAIN
Für COMPUTERNAME, DOMAIN, USERNAME und PASSWORD müssen natürlich die eigentlichen Werte eingetragen werden.
Jetzt wird mit
sudo chmod 777 /home/pi/startrdp.sh
die Ausführung der Datei erlaubt
SNMP einrichten und Werte auslesen
Zunächst muss einmal das SNMP Paket installiert werden. Die geht mit
sudo apt-get install snmpd snmp
Die Datei snmpd.conf mit
sudo nano /etc/snmp/snmpd.conf
wir folgt bearbeiten
Zugriff von allen Clients erlauben mit
agentAddress 161
Benutzername für SNMP auf public einstellen
rocommunity public
Danach den Dienst mit
sudo Service snmpd restart
neustarten und mit
ps -A|grep snmpd
überprüfen ob der Dienst gestartet wurde.
Jetzt kann auf den PI bereits mit SNMP zugegriffen werden. Um eigene Parameter mit SNMP auszulesen sind noch einige weitere Dinge erforderlich. Zunächst müssen wir ein kleine kleine Testroutinge schreiben. Dazu starten wir unseren Editor mit
sudo nano /usr/local/bin/testroutine
und tragen folgende Zeilen in die Datei ein
#!/bin/bash
echo .1.3.6.1.2.1.25.1.8
echo gauge
cat /sys/class/thermal/thermal_zone0/temp
exit 0
Das Skript liest die CPU Temperatur aus und gibt diese aus. Nachdem die Datei erstellt wurde müssen wir noch die Berechtigungen ändern. Dazu führen wir folgenden Befehl aus
sudo chmod 755 /usr/local/bin/testroutine
Wenn wir die Datei erstell haben können wir die SNMP Konfigurationsdatei anpassen. Dazu öffnen wir die Datei mit sudo nano /etc/snmp/snmpd.conf
und fügen am Ende der Datei folgende Zeile ein:
pass .1.3.6.1.2.1.25.1.8 /bin/sh /usr/local/bin/testroutine
Jetzt müssen wir nur noch den Dienst oder den PI neu starten.
Prozesse finden und beenden
Alle unter Linux gestarteten Prozesse können mit ps ax
angezeigt werden. In der 1. Spalte wird dabei die Prozessnummer angezeigt. Mit kill [Prozessnummer]
kann nun der Prozess beendet werden.
PiFace Digital 2 einrichten
Zunächst muss die serielle Schnittstelle mit raspi-config deaktiviert werden. Das geht unter Advanced Options Punkt 8.
Um das PiFace mit Perl steuern zu können werden folgende Einstellungen benötigt
git clone https://github.com/piface/libmcp23s17.git
git clone https://github.com/piface/libpifacedigital.git
cd libmcp23s17/ && make
sudo cp libmcp23s17.a /usr/local/lib/
sudo cp src/mcp23s17.h /usr/local/include/
cd ..
cd libpifacedigital/ && make
sudo cp libpifacedigital.a /usr/local/lib/
sudo cp src/pifacedigital.h /usr/local/include/
cd ..
WiringPi installieren
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
Jetzt fehlt noch das Modul für Perl, damit folgendem Befehl installiert wird
sudo cpanm Device::PiFace
Jetzt müssen wir nur noch das kleine Programm mit Perl ausführen
use Device::PiFace;
# 00 Interface
my $piface = Device::PiFace->new (hw_addr => 0);
while(){
$piface->write (value => 0b11111111);
sleep (1);
$piface->write (value => 0b00000000);
sleep (1);
}
und schon blinken alle LEDs auf dem PiFace im Sekundentakt.
GPIO Port ändern
In der Datei /boot/config.txt folgenden Eintrag vornehmen. Dabei ist x der neue GPIO Port.
dtoverlay=w1-gpio,gpiopin=x
Danach die Datei speichern und den Pi neu starten.
Weiter nützliche Tools
tcpdump --> um den Netzwerkverkehr mitzuhören
git --> um sich GIT Dateien laden
Alle gemeinsam Installieren
sudo apt-get install tcpdump git
Proxy Server angeben
Mit folgendem Befehl kann ein Proxyserver eingerichtet warden:
export http_proxy=http://192.168.20.1:8080
ACHTUNG: Nach einem Neustart ist der Eintrag nicht mehr vorhanden
DNSPerf installieren
Um einen Stresstest auf einen DNS Server durchzuführen ist das Tool DNSperf geeignet. Das Tool wird wie folgt installiert.
apt-get install libbind-dev libkrb5-dev libssl-dev libcap-dev libxml2-dev
bind9utils make gcc g++
apt-get install -y libjson-c-dev libgeoip-dev
cd /root
wget ftp://ftp.nominum.com/pub/nominum/dnsperf/2.0.0.0/dnsperf-src-2.0.0.0-1.tar.gz
tar xfvz dnsperf-src-2.0.0.0-1.tar.gz
cd dnsperf-src-2.0.0.0-1
./configure
make
sudo make install
Test der Installation mit:
dnsperf -h
Liste der Domains holen:
wget ftp://ftp.nominum.com/pub/nominum/dnsperf/data/queryfile-example-current.gz
gunzip queryfile-example-current.gz
Wetterstation WH1080 anbinden
Grundinstallation auf ESX mit Ubuntu 17.0.1 Server - Normale Installation
sudo apt-get install -y git python-dev gnuplot python-pip libudev-dev
pip install Cython
pip install libusb1
sudo pip install pywws
sudo pip install -U pywws
Damit der Benutzer pi auf den USB Port zugreifen darf müssen noch folgende Änderungen gemacht werden
- Gruppe weatherstation mit sudo groupadd weatherstation
anlegen
- Benutzer pi mit sudo adduser pi weatherstation
in die Gruppe aufnehmen
- Die Datei sudo nano /etc/udev/rules.d/39-weather-station.rules
anlegen und folgende 3 Zeilen einfügen
ACTION!="add|change", GOTO="weatherstation_end"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1941", ATTRS{idProduct}=="8021", GROUP="weatherstation"
LABEL="weatherstation_end"
Test: pywws-testweatherstation
Mit pywws-livelog ~/weather/data
wird der Dienst gestartet um autom. Messwerte einzulesen.
Mit python -m pywws.process ~/weather/data
werden aus den RAW Daten die Tageswerte neu ermittelt.
Mit dem Befehl
python -m pywws.plot ~/weather/data/ ~/weather/temp/ ~/weather/graph_templates/24hrs.png.xml /home/pi/weather/24h_temp.png
können Diagramme erstellt werden, ohne dass eine Wetterstation vorhanden ist.
python -m pywws.template ~/weather/data/ ~/weather/templates/24h.html /home/pi/weather/24h.html