Samstag, 31. Januar 2015

Raspberry Pi - Temperatursensor DS18B20

An dem Raspberry Pi kann man relativ simpel einen Temperatursensor ansteuern. Ich habe dafür bei ebay einen Digitaler Temperatursensor DS18B20 Wasserdicht gekauft (Kosten ca. 2 €).

Update 20.02.2022: Mittlerweile gibt es den DS18B20 als digitales Temperatursensor-Modulplatinen-Kit, somit entfällt das manuelle setzen eines 4,7k Ohm Widerstand. Die Kosten liegen bei ca. 10 EUR.

Der DS18B20 Sensor besitzt drei Kabel:

  • Rot (VCC / 3,0V bis 5,5V)
  • Weiß (DATA / 1-Wire)
  • Schwarz (GND)
Der Messbereich liegt bei -55°C und +125°C und  die Messgenauigkeit bei ca. ± 0,5°C.

Durch einen eindeutigen Code (ID) können mehrere Temperatursensoren parallel angeschlossen werden.

 
Der Sensor muss via GPIO angeschlossen werden (General Purpose Input/Output)).
  • Rot (VCC) an Pin 1 3,3V
  • Weiß (DATA) an den GPIO 4 (Pin 7)
  • Schwarz GND Pin 6
  • Zwischen VCC 3,3V und DATA GPIO 4 muss ein 4,7k Ohm Widerstand verwendet werden.

Um den Sensor ansprechen zu können, müssen folgende Module geladen werden
sudo modprobe w1-gpio
sudo modprobe w1-therm
Update (03.05.2015)
Raspbian Betriebssystems ab Kernel 3.18 erfordert jetzt die Aktivierung des Device Tree Overlay für 1-wire:
sudo vi /boot/config.txt 
Und folgendes hinzufügen
dtoverlay=w1-gpio,gpiopin=4,pullup=on 
Diese Module sollte am Besten auch direkt beim Start des Pi immer geladen werden
sudo vi /etc/modules
Und folgendes hinzufügen
w1-gpio
w1-therm
Nach dem erfolgreichen Anschließen und Laden der Module sollte der Sensor jetzt zur Verfügung stehen. Zu finden unter
/sys/bus/w1/devices/xx-xxxxxxxxxxxx/w1_slave


t=21437 / 1000 = 21,437 ° C

Bash-Script (www.shemel.de/download/raspberry/temp-anzeigen.sh) zum Auslesen der Temperatur (sudo apt-get install bc):

#!/bin/sh
# Temperatur von Sensor auslesen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
printf "Aktuelle Temperatur: %05.2f°C\n" $temp


Scripte ausführbar machen mit chmod +x temp-anzeigen.sh .

Update 05.12.2020: https://sebastianhemel.blogspot.com/2020/12/raspberry-pi-temperatursensor-ds18b20.html

Bash-Script (www.shemel.de/download/raspberry/temp.sh) zum Auslesen der Temperatur, Temperatur und Tagdesdatum + Uhrzeit in Datei schreiben und auf einen FTP-Server (sudo apt-get install ncftp) hochladen:

#!/bin/sh
# Temperatur von Sensor auslesen und per FTP hochladen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
#printf "Aktuelle Temperatur: %05.2f°C\n" $temp >> temp.txt

rm temp.txt
printf "" >> temp.txt
printf "%05.2f" $temp >> temp.txt
printf " Grad Celsius - " >> temp.txt
date +%d.%m.%Y' '%H:%M >> temp.txt
printf "" >> temp.txt

sleep 1
ncftpput -f /home/pi/ftp.cfg /temp /home/pi/temp.txt


Aufbau der ftp.cfg (www.shemel.de/download/raspberry/ftp.cfg) Datei:
#host HOST-IP
host webhostingXX.1blu.de

#user NUTZERNAME
user ftpXXXXXX-xxin

#pass PASSWORT
pass xxx123


Möglicher Eintrag für die "crontab -e" (upload alle 5min):

*/5 *    *   *   *     /home/pi/temp/temp.sh >/dev/null 2>&1

Samstag, 3. Januar 2015

Raspberry Pi - WLAN per Konsole (putty) einrichten

Mit dem Befehl ifconfig erhält man eine Auflistung aller verfügbaren Netzwerkschnittstellen:


Für die richtigen Netzwerkeinstellungen (statische oder dynamische IP), siehe Datei /etc/network/interfaces => http://sebastianhemel.blogspot.de/2014/08/raspberry-pi-statische-ip-zuweisen.html

Je nach dem welche Verschlüsselung das Netzwerk hat, muss diese noch in der Datei /etc/wpa_supplicant/wpa_supplicant.conf gepflegt werden:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={  
    ssid="DEINE_SSID"
    psk="DEIN_KEY"
    scan_ssid=1
    id_str="home"
    key_mgmt=WPA-PSK
    proto=RSN
    pairwise=CCMP
    group=CCMP
    priority=5
}


Nach den erforderlichen Einstellungen sollte die WLAN Schnittstelle deaktiviert werden:

sudo wpa_action wlan0 stop

Danach muss die neue WPA Konfig wieder geladen werden:

sudo ifup wlan0

Nach dem erfolgreichen Starten (es gab keine Fehlermeldung), kann die Verbindung getestet werden:

sudo wpa_cli status



Freitag, 2. Januar 2015

Raspberry Pi - Deutsches Tastaturlayout einstellen

Per default steht die Tastatur des Raspberry Pi auf Englisch.
Dies merkt man z.B. sehr schnell daran, dass die Tasten [Z] und [Y] vertauscht sind :-)

Dies lässt sich aber zum Glück relativ einfach durch RasPi Konfig Tool beheben:
sudo raspi-config
Anschließend wählt man in dem folgenden Menü den Eintrag "4 Internationalisation Options" oder "4 Localisation Options" aus.

Danach den Eintrag "I3 Change Keypoard Layout" auswählen und im nächsten Dialog die Einstellung "Generic 105-key (Intl) PC" bestätigen.

Jetzt muss man den Eintrag "Other" auswählen um zu der deutschen Belegung zu gelangen.

Im nächsten Schritt muss aus der Liste "German" ausgewählt werden. Die anderen Dialoge können je nach Nachfrage mit "OK" bestätigt werden.

Update 28.08.2019:

Eine Überprüfung der Einstellungen kann mit den folgenden Befehlen erfolgen:

sudo nano /etc/default/keyboard
...
XKBMODEL="pc105"
XKBLAYOUT="de"

...


pi@raspberrypi:~ $ locale
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Montag, 27. Oktober 2014

Andere Farben bei der Ausgabe von ls verwenden?

Oft kommt es ja vor, dass man sich auf seinem Server per remote (z.B. per putty) von einem anderen Rechner einloggt. Je nach Bildschirm kann es dann vorkommen, dass man bestimmte Zeilen bei der ls Ausgabe auf der Bash nicht mehr lesen kann.

Die Lösung besteht darin, dass man sich die Farben der Ausgabe anpassen kann.
Um die Farbliste zu bearbeiten nutzt man folgenden Befehl, welcher die Standartfarben von Ubuntu in das Homeverzeichnis kopiert. Anschließend können diese Farben nach belieben angepasst werden.
dircolors -p > ~/.dircolors
Beispiel für das oftmals blau hinterlegten Verzeichnisse, welche sich auf einem Notebook-Display oft nur sehr schlecht lesen lassen.

 71 #DIR 01;34 # directory
 72 DIR 01;34;47 # directory




DIR=directory
01=bold
34=blue (Schriftfarbe)
47=white (Hintergrundfarbe)



Nach Anpassen der Datei kann man mit dem Setzen Umgebungsvariable testen, ob die Ausgabe passend ist (echo $LS_COLORS).
eval "$(dircolors -b ~/.dircolors)"
Die Datei ~/.dircolors wird von der ~/.bashrc automatisch ausgewertet und die Farben automatisch  gesetzt.

Samstag, 6. September 2014

Raspberry Pi - WLAN WiFi Adapter N


Wenn man Probleme bei seinem WLAN Empfang hat kann es oft vorkommen, dass die verwendeten  2,4 GHz Frequenzen überlastet sind. Daher ist es sinnvoll die 5 GHz Frequenzen zu verwenden.

Der folgende WLAN Adapter funktioniert auch mit dem Raspberry PI:

AVM FRITZ!WLAN USB Stick N

Dieser funktioniert auch ohne aktiven Hub und kann nach der Installation der folgenden Treiber verwendet werden:
sudo apt-get install firmware-linux-free
Zum Überprüfen der Installation, kann man sich mit dem folgenden Befehl alle USB Geräte noch mal anzeigen lassen:
dmesg | grep usb

[   30.510351] usb 1-1.2: USB disconnect, device number 6
[   31.771478] usb 1-1.2: new high-speed USB device number 7 using dwc_otg
[   31.914661] usb 1-1.2: New USB device found, idVendor=057c, idProduct=8401
[   31.914692] usb 1-1.2: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[   31.914708] usb 1-1.2: Product: FRITZ!WLAN USB Stick N
[   31.914723] usb 1-1.2: Manufacturer: AVM Berlin
[   31.914736] usb 1-1.2: SerialNumber: 001C4AFC35E0
[   32.191512] usb 1-1.2: reset high-speed USB device number 7 using dwc_otg
[   32.326578] usb 1-1.2: driver   API: 1.9.7 2012-12-15 [1-1]
[   32.326616] usb 1-1.2: firmware API: 1.9.6 2012-07-07

Montag, 25. August 2014

Raspberry Pi - Statische IP zuweisen

Hinweis: Hier geht es zum aktuellen Artikel - https://sebastianhemel.blogspot.com/2017/01/raspberry-pi-wlan-konfiguration-inkl.html .

Der Raspberry Pi ist ein kleiner Einplatinencomputer. Als Betriebssystem kommen in der Regel angepasste Linuxdistributionen zum Einsatz, die die ARM-Architektur unterstützen.

Daher ist es für Linux erfahrene Benutzer in der Regel relativ einfach den kleinen Computer zu konfigurieren.

Mit den folgenden Kommandos lässt sich eine statische IP Adresse zuweisen, welche zum Beispiel für den Zugriff per SSH sehr wichtig ist.

Die Zeile  #iface eth0 inet dhcp wurde auskommentiert, damit keine automatische IP Adressen Zuweisung über den Router erfolgt.

Die IP-Adresse für LAN ist 192.168.199 und für WLAN 192.168.99.
sudo vi /etc/network/interfaces
 
auto lo

iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.199
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
iface default inet static
address 192.168.1.99
netmask 255.255.255.0
#network 192.168.1.0
#broadcast 192.168.1.255
gateway 192.168.1.1
Anschließend muss der Netzwerkdienst neu gestartet werden.
sudo /etc/init.d/networking stop 
sudo /etc/init.d/networking start 

Alternativ kann auch ein Reboot des Betriebssystems erfolgen.

Montag, 3. Februar 2014

Erreichbarkeit von Webseiten oder Servern mit wget überpfüfen inkl. E-Mail Versand

Mithilfe der Spider Funktion kann man mit wget überprüfen, ob eine Webseite oder auch ein Server auf einem bestimmten Port erreichbar ist.

Aufbau von wget:
Mit dem Programm wget kann man direkt aus einem Terminal (shell) Dateien von FTP- oder HTTP-Servern herunterladen.

wget -q --spider http://tomcat.testserver.de:8080/
oder
wget -q --spider http://www.testserver.de/index.html


-q, --quiet    Verhindert dass wget Informationen auf der Konsole ausgibt.
-spider         Spider-Modus eingeschaltet.  Prüfe ob die Datei auf dem Server existiert.


Aufbau von sendmail:
Sendmail ist auf den meisten Unix System vorinstalliert und man somit direkt E-Mails über die Konsole versenden.

/usr/sbin/sendmail -v mailme@testserver.de < /home/user/test_apach.mail

In der Datei "/home/user/test_apach.mail" befindet sich der Betreff und der Inhalt der E-Mail:
Subject: Apache - Down!


Beispiel Dateien, welche mit Hilfe eines Cron-Jobs z.B. alle 5min aufgerufen werden können:

test_server.sh:
#!/bin/bash
#
# (c) Sebastian Hemel

####
#Dieses Script ruft eine Datei auf, um zu sehen ob der Apache oder Tomcat noch laeuft
####

### apache_webserver ###

if wget -q --spider http://www.simply-eat.de/test.txt
        then
                echo "Apache: is - UP"
        else
                echo "Apache: is - DOWN!"
                /usr/sbin/sendmail -v mailme@testserver.de < /home/user/test_simplyeat.mail
fi


#### tomcat_1 ####

if wget -q --spider http://www.simply-eat.de:8080/
  then
    echo "tomcat_1: is - UP"
 else
    echo "tomcat_1: is - DOWN"
    /usr/sbin/sendmail -v mailme1@testserver.de < /home/user/webtest/tomcat1.mail
    /usr/sbin/sendmail -v mailme2@testserver.de < /home/user/webtest/tomcat1.mail
fi

exit