Archiv der Kategorie: Raspberry Pi

Themen rund um den Pi

Temperaturfühler DS18B20 per Shell auslesen

Kernemodule laden um den Temperatursensor anzusprechen:

# sudo modprobe w1-gpio
# sudo modprobe w1-therm

Alternativ die Datei /etc/modules mit den Kernelmodulen ergänzen:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
 
snd-bcm2835
w1-gpio
w1-therm

Temperatur auslesen und in eine Datenbank pipen:

#!/bin/bash
  
#TempMessung.sh
# Zwei parallel geschaltete Temperaturfühler abfragen und die Werte in eine MySQL Datenbank übertragen
 
SENSOR1=28-00000609c38f
SENSOR2=28-0000060a7b99
TEMP1=$(echo $(cat /sys/bus/w1/devices/$SENSOR1/w1_slave | grep "t=") | cut -d "=" -f2)
TEMP2=$(echo $(cat /sys/bus/w1/devices/$SENSOR2/w1_slave | grep "t=") | cut -d "=" -f2)
 
echo "INSERT INTO schema.table (sensorID, temp) VALUES ('$SENSOR1', $TEMP1);" | mysql -uYourLogin -pYourPassword -h 127.0.0.1;
echo "INSERT INTO schema.table (sensorID, temp) VALUES ('$SENSOR2', $TEMP2);" | mysql -uYourLogin -pYourPassword -h 127.0.0.1;
 
exit 0

Shell Skript über die Datei /etc/crontab automatisiert, minütlich starten:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
* *     * * *   root    /home/pi/TempMessung.sh
#

 

ERGÄNZUNG von 09/2015:

Seit dem Oktoberrelease 2014 von Debian Wheezy muss die Datei /boot/config.txt um folgende Zeile ergänzt werden damit der Pi den Sensor erkennt:

dtoverlay=w1-gpio,gpiopin=4,pullup=on

raspi-config

Nachdem ein frisches Image von Raspdian auf die Karte gebrannt ist und der Pi zum ersten mal gestartet ist, müssen noch einmalig ein paar Einstellungen vorgenommen werden.

Hierfür bietet sich das enthaltene Tool Raspi-Config an, welches in der Shell mit folgendem Kommando zu starten ist:

$ sudo raspi-config

(Der erste Login auf dem Pi gelingt übrigens mit dem Nutzer „pi“ und dem Kennwort raspberry)

  • Als erstes sollte man den nicht genutzen Speicherplatz auf der Karte mit dem Punkt „Expand Filesystem“ verfügbar machen. Nachdem das Script seine Arbeit getan hat, ist ab dem nächsten Neustart der gesammte Platz der Karte verfügbar.
  • Mit Change User Password kann man das Kennwort für den Benutzer „pi“ ändern, und sollte dies auch tun.
  • Für die meisten Fälle kommt beim dem RasPi das Booten zur Konsole in Frage, da er als Desktop Arbeitsplatz zwar grundsätzlich fähig, aber nur bedingt tauglich ist. Hier sollte man also einstellen, dass der Pi nur zur Konsole bootet. Das lässt Resourcen für seinen Job als Webserver, Mailserver, oder oder oder.
  • Bei Internationalisations wird der Pi für den deutschen Sprachraum angepasst:
    •  Change Local auf de_DE.UTF-8 sollte in den meisten Fällen die beste Wahl sein. Unter Umständen kann aber auch de_DE@euro ISO-8856-15 relevant sein. Im Zusammenhang mit älteren Programmen, könnte es hier zwar Probleme geben, ist aber unwahrscheinlich.
    • Unter Change Timezone auf Europe – Berlin umstellen, damit der NTP-Dienst des Pi die korrekte Zeitzone und somit die korrekte Zeit einstellen kann.
    • Change Keyboard Layout: Meistens betreibt man einen Pi ja Headless, sodass man diese Punkt vernachlässigen kann. Aber falls sollte man hier ein deutsches Tastaturlayout auswählen.
  • Advanced Options:
    • Bei Hostname kann man dem Pi einen netteren Namen geben als den Standardnamen „Raspberry“. Nicht das Raspberry schlecht wäre, aber etwas persönlicher darf es ja auch werden 🙂
    • Memorysplit: Für einen Konsolenbetrieb des Pi, kann man hier den für die GPU reservierten Speicher auf ein Minimum von 16MB setzen. Sollte man auch, da man ansonsten den knappen RAM des Pi verschwendet.

Die wichtigsten Einstellungen sollten damit erledigt sein. Aber wer möchte darf natürlich noch ein wenig in den weiteren Optionen des Tools herumstöbern.

Zuletzt sollte man aber nun die neuesten Updates für den Pi herunterladen und installieren. Dies geschieht wieder in der konsole mit den Befehlen:

$ sudo apt-get update
$ sudo apt-get upgrade

Für gewöhnlich ist der Pi damit erstmal ein Weilchen beschäftigt und man hat genügend Zeit für eine Tasse Kaffee, oder auch zwei.

LAMPi – Pi als Webserver

Zunächst kommt als eigentlicher Webserver das bewährte Schwergewicht Apache zum Einsatz. Installiert wird er mit dem Befehl

$ sudo apt-get install apache2

Wenn alles funktioniert hat, kann man zum Testen die IP des Pi auf einem entfernen Rechner als URL eintippen. Hat alles funktioniert, kommt die bekannte „It Works“ Meldung des Apache:

ap2Mit folgendem Befehl wird nun PHP installiert:

$ sudo apt-get install php5

Nach Abschluss der Installation sollte in dem Verzeichnis des Webservers ein kleines PHP Script abgelegt werden um den Erfolg der Installation zu testen:

Also Datei anlegen mit folgendem Befehl:

# sudo nano /var/www/info.php

Folgende Zeilen müssen in den Editor eingegeben werden:

<?php
  phpinfo();
?>

mit Strg+O und Strg+X wird die Datei gespeichert und der Editor beendet.

Anschließend die „neue“ Seite wieder in einem Webbrowser öffnen. Wenn die Ausgabe in etwa wie folgt aussieht, hat es funktioniert:

phpinfoNun fehlt aber noch das M in unserem LAMP-Server (Linux Apache MySQL PHP). MySQL wird daher mit folgendem Befehl installiert:

$ sudo apt-get install mysql-server mysql-client php5-mysql

Nach Abschluss der Installation muss der MySQL-Prozess noch einmal neugestartet werden:

$ sudo /etc/init.d/mysql restart

Damit ist der LAMP dann aktiv und Einsatzbereit. Für ein Testsystem kann es unter Umständen angenehm sein die Datenbank von einem externen Rechner mit der MySQL Workbench zu verwalten. der frisch installierte MySQL Server lauscht aber „leider“ nur auf Anfragen von der IP 127.0.0.1. Das ganze dienst natürlich der Sicherheit. Aber wie gesagt, auf einem Testsystem kann man das ganze lockern. Um dieses Sicherheitsfeature abzuschalten muss in der Datei /etc/mysql/my.cnf die Zeile

bind-address              =127.0.0.1

auskommentiert werden. Anschließend muss der MySQL Dienst noch neu gestartet werden. Wo wir gerade dabei sind die Sicherheit über Bord zu werfen, können wir auch gleich noch den vollen Root Zugriff extern auf den MySQL Dienst zulassen: Hierzu zunächst einmal auf dem Pi mit dem MySQL-Dienst verbinden:

$ mysql -h 127.0.0.1 -u root -pDeinKennwort

In der MySQL Konsole wird nun mit folgenden Befehlen der externe Root Zugriff erlaubt:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'DeinKennwort';
flush privileges;
exit;

Dank des Aufrufs ‚flush privileges“ ist keine Neustart des MySQL-Dienstes hier notwendig. Wer möchte kann nun noch PHP MyAdmin zur Verwaltung der Datenbanken des MySQL Server installieren:

$ sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Die Frage nach dem installierten Webserver beantworten wir pflichtbewusst mit apache, da wir diesen ja gerade installiert haben. Die zu installierenden Datenbanken lassen wir den Installer ebenfalls einrichten. Soll ja alles laufen hinterher 🙂

Nun muss phpMyAdmin noch mit Apache verknüpft werden. Dazu muss die apache2.conf bearbeitet werden. Also mit folgendem Befehl die Datei in den Texteditor laden:

$ sudo nano /etc/apache2/apache2.conf

Am Ende der Datei muss folgende Zeile eingefügt werden:

Include /etc/phpmyadmin/apache.conf

Mit Strg+O und Strg+X die Datei wieder speichern und den Editor verlassen.

Nachdem der Apache nun mit

$ sudo /etc/init.d/apache2 restart

neu gestartet ist, sollte phpMyAdmin über einen Browser erreichbar sein:

phpmyadminViel Spaß mit dem kleinen Pi WebServer!