AirPi

AirPi

A Raspberry Pi weather station and air quality monitor.

This is the code for the project located at http://airpi.es

Currently it is split into airpi.py, as well as multiple input and multiple output plugins. airpi.py collects data from each of the input plugins specified in sensors.cfg, and then passes the data provided by them to each output defined in outputs.cfg. The code for each sensor plugin is contained in the ’sensors‘ folder and the code for each output plugin in the ‚outputs‘ folder.

Some of the files are based off code for the Raspberry Pi written by Adafruit: https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code

For installation instructions, see http://airpi.es/kit.php

Installation

Prerequisites

You will need to install the following dependencies:

sudo apt-get install git-core python-dev python-pip python-smbus libxml2-dev libxslt1-dev python-lxml i2c-tools

and

sudo pip install rpi.gpio requests

AirPi requires python-eeml. To install:

cd ~/git
git clone https://github.com/petervizi/python-eeml.git
cd python-eeml
sudo python setup.py install

i2c

To set up i2c, first add your user to the i2c group. For example, if your username is „pi“:

sudo adduser pi i2c

Now, add the modules needed.

sudo nano /etc/modules

Add the following two lines to the end of the file:

i2c-bcm2708
i2c-dev

Exit by pressing CTRL+X, followed by y to confirm you want to save, and ⏎ (enter) to confirm the filename.

Finally, unblacklist i2c by running the following command:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

Add a # character at the beginning of the line blacklist i2c-bcm2708. Then exit in the same way as last time.

Now, reboot your Raspberry Pi:

sudo reboot

Board Version

Let’s check to see which board version you have. Run:

sudo i2cdetect -y 0

You should see this as the output:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- 77

If not, run:

sudo i2cdetect -y 1

and you should see the above. This tells you if your board is version 0 or 1. This is important for the next step.

Get The AirPi Code

Clone this repo into your git directory (or wherever you want):

cd ~/git
git clone https://github.com/tomhartley/AirPi.git
cd AirPi

Configuring

Edit the settings file by running:

nano sensors.cfg

The start of the file should look like this:

[BMP085-temp]
filename=bmp085
enabled=on
measurement=temp
i2cbus = 1

[BMP085-pres]
filename=bmp085
enabled=on
measurement=pres
mslp=on
i2cbus = 1
altitude=40

If your board version is „0“ change both instances of i2cbus = 1 to i2cbus = 1

Press CTRL+X to exit the file, when prompted, press „y“ to save the file.

If you want to push the data to Xively, edit the outputs.cfg file:

nano outputs.cfg

The start of the file should look like this:

[Print]
filename=print
enabled=on

[Xively]
filename=xively
enabled=on
APIKey=xxxxxxxxxx
FeedID=xxxxxxxxxx

If you have registered with https://xively.com – you can add your API Key and Feed ID here.

Running

AirPi must be run as root.

sudo python Airpie.py

If everything is working, you should see output similar to this:

Success: Loaded sensor plugin BMP085-temp
Success: Loaded sensor plugin BMP085-pres
Success: Loaded sensor plugin MCP3008
Success: Loaded sensor plugin DHT22
Success: Loaded sensor plugin LDR
Success: Loaded sensor plugin MiCS-2710
Success: Loaded sensor plugin MiCS-5525
Success: Loaded sensor plugin Mic
Success: Loaded output plugin Print
Success: Loaded output plugin Xively

Time: 2014-06-04 09:10:18.942625
Temperature: 30.2 C
Pressure: 992.55 hPa
Relative_Humidity: 35.9000015259 %
Light_Level: 3149.10025707 Ohms
Nitrogen_Dioxide: 9085.82089552 Ohms
Carbon_Monoxide: 389473.684211 Ohms
Volume: 338.709677419 mV
Uploaded successfully

Raspberry Installation Debian

 

Tutorial Ersteinrichtung Raspberry pi

Quelle: Tutorial

 

Software:

  1. Vorbereitungen

1.1 SD Karte beschreiben (unter Windows):

  • Schritt 1: SD Karte in den PC stecken.
  • Schritt 2: Jetzt das Programm Win32DiskImager.exe starten und im Auswahlfenster das Image von rasbian auswählen, daneben noch den Laufwerksbuchstaben der Karte auswählen. Jetzt auf Write klicken, dabei wird nun das Image auf die SD Karte geschrieben. Der Vorgang dauert ca. 5 Minuten.

Danach ist die Karte fertig und betriebsbereit.

1.2 Raspberry Pi Verkabeln:

  • Schritt 1: SD Karte mit den Kontakten nach oben in den Slot schieben.
  • Schritt 2: HDMI Kabel in die HDMI Buchse stecken und mit dem TV verbinden.
  • Schritt 3: Schalte den TV an und auf den HDMI Port wechseln.
  • Schritt 4: Ethernetkabel in die Ethernetkabelbuchse stecken und mit dem Router verbinden.
  • Schritt 5: Tastatur und Maus in die beiden USB Buchsen stecken.

1.3 Erstmaligen Start Raspberry Pi :

Steck das Mini USB Kabel in den Raspberry Pi und dann mit dem Netzteil verbinden, danach in die Steckdose.

(mit Hub): Steck das Mini USB Kabel in den Raspberry Pi und dann in den Stromport vom Hub, danach den Hub in die Steckdose. Jetzt ggf. den Hub mit dem Knopf anmachen, leuchtet dann blau. Nun sage zu dem Raspberry Pi: Lebe, los LEBE, und bewundere den ersten Startablauf des Raspberry Pi. Erst jetzt schließt ihr das Datenkabel des Hubs an, denn wenn ihr es anders macht, kann es sein, dass der Strom über den USB Port geht, dann wird dieser aber eben nur als USB Stromquelle genutzt und es gehen keine Daten durch.
Info: Der Stromverbrauch bei der Hub-Konstellation liegt mit Festplatte bei 4-6W meistens aber 4W. Dass heißt 4W * 24h = 96Wh * 365d = 35040 Wh/y * 0,001 = 35,04kWh/y * 0,25€/kWh = 8,76€/y. Selbe mit 6W gerechnet ergibt 13,14€/y. Im Mittel damit 10,95€/y an Stromkosten im 24/7 Betrieb. Das ist nicht viel! (Allerdings können ggf. eure kWh Preise variieren. Bei 0,30€/kWh ergibt sich als Mittel 13,01€/y, auch das ist nicht viel!

Hinweis: Oftmals sind Stromprobleme die Ursache für manche Fehler. Auch die Informationen auf den Geräten, wie hoch der Verbrauch ist, die Spannung, die Ampere Zahlen etc. sind oftmals falsch. Daher gibt es hier ein weiteres Tutorial welches die gesamte Problematik aufgreift. Link zum Tutorial.

  2.  Starten, Konfigurieren und Einrichten:

Nach dem ersten Start fragt der Raspberry Pi nach Logindaten. Standardmäßig sind das:
User: pi
Passwort: raspberry

Danach sind wir im Terminal. Dort müssen wir den Raspberry Pi erst einmal konfigurieren. Dazu folgendes eintippen:

Code: Alles markieren

pi@raspberrypi ~ $ sudo raspi-config

So sieht der Screen aus:

Jetzt stellen wir nur das Tastaturlayout um, um danach alles vom PC aus zu machen:

2.1 Internationalisation Options markieren und mit Enter öffnen.
!!Dieser Schritt geht nur an einem Monitor!! 

Change Keybord Layout wählen. Nun die Tastaturart wählen, Generic 105 Tasten sollte immer gehen. Danach die Sprache wählen, wenn German nicht im Auswahlfenster steht, dann auf Other, und da dann German auswählen, und im Folgebild reicht German aus. Dann Alt-Gr: Tastatur-Standard wählen und danach No Composer Key auswählen Jetzt noch No auswählen und fertig.
Jetzt noch sicherstellen, dass SSH aktiviert ist, dazu:

8 Advanced Options markieren und mit Enter bestätigen. Jetzt A4 SSH auswählen und mit Enter öffnen. Dort enable mit Enter bestätigen. OK wegentern

Im raspi-config Screen Finish wählen (zwei mal TAB drücken) und folgendes im Terminal eintippen:

Code: Alles markieren

pi@raspberrypi ~ $ sudo reboot

Jetzt müsst ihr euch in eurem Router einloggen (das Gerät mit dem ihr ins Internet geht), in meinem Fall eine FritzBox. In der FritzBox könnt ihr im Benutzemenü die IP vom Raspberry Pi auslesen. Am besten kurz notieren, in meinem Fall 192.168.178.24.
Um gleich auf den Raspberry Pi zuzugriefen müsst ihr noch die jeweiligen Ports freigeben. Unter Internet -> Freigaben könnt ihr das einrichten (erweiterte Ansicht muss aktiviert sein).

Folgende Port müsst ihr bei Benutzung freigeben:

21 für FTP (falls ihr später FTP nutzen wollt)
22 für SSH (brauchen wir auf jeden Fall)
80 für HTTP (falls ihr einen Webserver nutzen wollt)
443 für HTTPS (falls ihr einen gesicherten Zugang zum Webserver wollt)
5901 für VNC (falls ihr euch auf das Desktop vom Rasperry Pi einloggen wollt)

Nun noch alles abspeichern und die letzten Einstellungen können wir nun über einen SSH Client wie zum Beispiel PuTTY vornehmen. Allerdings nur im lokalen Netzwerk! Für alles andere bräuchte man z. B. eine DynDNS Adresse. Dazu später mehr im Kapitel, den Raspberry Pi aus dem Internet erreichen.

Also PuTTY öffnen und die IP eintragen. Dann unten einen Namen eintippen und Speichern klicken, damit wir nicht immer die IP neu eintippen müssen. Danach auf Open.

Es sollte sich ein Terminal öffnen der nach Zugangsdaten fragt. Dort mit den bekannten Daten einloggen.

Danach müssen wir de Raspberry Pi noch zu Ende konfigurieren:

pi@raspberrypi ~ $ sudo raspi-config
  • Schritt 1: 1 Expand Filesystem markieren und Enter drücken. Es sollte eine erfolgreiche Meldung kommen die ihr mit Ok „wegentert“.
  • Schritt 2: 2 Change User Password markieren und Enter drücken. Das sollte man generell immer nach dem Tastaturlayout machen, denn nutzt man z. B. Sonderzeichen sind die auf einer anderen Taste wenn man den englischen Standard hat. Daher aufpassen und erst nach dem Ändern des Tastaturlayout machen. Die nächste Meldung mit Ok wieder wegentern. Dann in der Konsole das neue Passwort eingeben, hier sollte ein starkes gewählt werden. Mit Enter bestätigen, nochmal eintippen und wieder mit Enter bestätigen, danach sollte eine erfolgreiche Meldung kommen, die ihr wieder mit Ok wegentert.
  • Schritt 3: 3 Enable Boot to Desktop/Scratch markieren und Enter drücken. Da wir den Raspberry Pi ohne Monitor, Tastatur und Maus betreiben, muss der Raspberry Pi auch nicht mit einem Desktop starten. Daher hier Console text console, requiring login (default) auswählen und mit Enter bestätigen.
  • Schritt 4: 4 Internationalisation Options markieren und mit Enter öffnen.
  •      Schritt 4.1: I 1 Change Locale auswählen und Enter drücken. Dort in der Liste de_DE.UTF-8 UTF 8 mit Leertaste markieren. Jetzt Enter drücken und de_DE.UTF-8 auswählen, nochmal Enter drücken.
  •      Schritt 4.2: Wieder in Menüpunkt 4 und diesmal I 2 Change Timezone mit Enter auswählen. Jetzt Europe markieren und Enter auswählen, danach z. B. Berlin mit Enter bestätigen. Wenn über das Ethernetkabel der RaspberryPi im Netz ist und ans Internet kommt, sollte er sich die aktuelle Uhrzeit gezogen haben.
  • Schritt 5: 7 Overclock markieren und Enter drücken. Die Warnung mit Enter wegdrücken. Medium markieren und Enter drücken. Erfolgreich Meldung mit Enter wegdrücken. Das gibt dem Raspberry Pi etwas mehr Kraft, ohne ihn zu überlasten.
  • Schritt 6: 8 Advanced Options markieren und mit Enter bestätigen. Jetzt A3 Memory Split auswählen und mit Enter öffnen. Dort 16 eintragen und mit Enter bestätigen.
  • Schritt 7: 8 Adcanced Options markieren und mit Enter öffnen. Dort A7 Update markieren und Enter drücken.
  • Schritt 8: Finish anwählen (zwei mal TAB drücken) und mit Enter bestätigen. Danach im Terminal folgendes eintippen:
pi@raspberrypi ~ $ sudo reboot

Damit sind die grundlegenden Einstellungen beendet. PuTTY bricht jetzt ab und sagt „Connectin refused“ oder so. Logisch weil wir ja rebooten. Der Vorgang dauert ca. 1 Minute. Danach wieder PuTTY öffnen und Doppelklick auf die gespeicherte Verbindung.

Nach dem Reboot machen wir noch eine Paketaktualisierung mit folgenden drei Befehlen:

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade
pi@raspberrypi ~ $ sudo reboot

Damit ist der Pi nun startklar für eure Projekte. Falls der Raspberry Pi erstmal ruhen soll müsst ihr ihn natürlich runterfahren. Das ist ganz wichtig denn sonst kann das System beschädigt werden. Ähnlich wie bei Windows. Das mag es auch nicht wenn einfach der Strom weggeht, und nicht selten bekommt man dabei Probleme. Daher solltet ihr euch den folgenden Befehl gut merken … kommt auch ins Glossar.

pi@raspberrypi ~ $ sudo shutdown -h now

Wenn ihr den Desktop vom Raspberry Pi starten wollt, einfach folgenden Befehl eintippen und der Fenstermanager startet.

pi@raspberrypi ~ $ startx

Wollt ihr den Raspberry Pi laufen lassen, euch aber von Putty abmelden, könnt ihr das mit diesem Befehl tun:

pi@raspberrypi ~ $ logout

## 3. – Starten, Konfigurieren und Einrichten ENDE.


## 4. Raspberry Pi über VNC nutzen BEGINN:

Wer ein wenig Schau vor der Konsole/Terminal hat, kann auch den Desktop vom Raspberry Pi sich aus der Ferne auf seinen Rechner holen. Dazu gibt es das Tool VNC.

Zunächst einmal muss man auf dem Raspberry Pi den VNC Server installieren:

pi@raspberrypi ~ $ sudo apt-get install tightvncserver

Hinweis: Falls ihr mal nicht genau wisst wie das zu installierende Paket heißt kann man in der Paketliste mit folgendem Befehl suchen, auch Wildcards sind möglich:

pi@raspberrypi ~ $ apt-get search PAKETNAME

Um den Server zu starten folgendes eintippen:

tightvncserver

Jetzt wird man nach einem Passwort gefragt, dort ein sicheres eingeben und merken, benötigen wir gleich zum verbinden. Des weiteren kann man ein View-Only Passwort vergeben. Das brauchen wir im Moment nicht.

Der Raspberry Pi ist bereits fertig konfiguriert. Jetzt brauchen wir noch einen VNC Client für Windows. Einen möglichen gibt es hier.
Ich würde bei der Installation nur den Viewer installieren da sonst auch der Server mitinstalliert wird, den wir nicht benötigen.

Jetzt können wir uns über den Viewer auf den Raspberry Pi einloggen. Nicht vergessen den Port freigeben, wie ihr das macht steht in Kapitel 3, mit den meist genutzten Ports. Dazu einfach die IP eintippen und den Port 5901 mit einem Doppelpunkt ansetzten und auf Connect klicken.

Et voila … der Desktop des Raspberry Pi erscheint an eurem Monitor.

## 4. Raspberry Pi über VNC nutzen ENDE.


## 5. – Rasperry Pi über das Internet erreichen BEGINN:

Zur Zeit kann man den Raspberry Pi nur im internen Netz erreichen. Das ist nicht wirklich von Vorteil. Daher möchte ich euch hier zeigen wie man ihn auch aus den weiten des Internet erriechen kann.
Als erstes müsst ihr die oben beschriebene Port Freigabe einrichten. Wenn ihr das gemacht habt, könnt ihr bereits den Raspberry Pi über eure Router IP erreichen.
Dazu mal auf die Startseite des Router schauen mit welcher IP er im Netz ist. Zum Beispiel 217.123.321.29. Nehmt diese IP und versucht euch per Putty damit zu verbinden. Das klappt ohne Probleme.
Blöd ist nur, dass sich bei jedem neu Verbinden mit dem Provider sich diese IP ändert, und nie gleich bleibt. Daher brauchen wir eine Zwischenstelle, der wir immer unsere aktuelle IP mitteilen und diese uns dafür einen Namen gibt. Damit erreichen wir, das wir immer über den Namen die Adresse des Routers erreichen.

Einen solchen Service bietet DynDns.org (leider nur noch für Altkunden kostenlos) oder NoIP (weiterhin kostenlos). Ihr registriert euch kostenlos und bekommt dafür einen Namen eurer Wahl. Die Zugangsdaten müsst ihr nun in den Router eintragen. Meist die Adresse, User und Passwort. Der Router macht dann alles weitere, er übermittelt immer die aktuelle IP zum DynDNS Server.
Meine Beispielhafte DynDns heißt: raspiServerBastler.dyndns.org (Ist ein fiktives Beispiel). Mit den Portfreigaben und der DynDns im Router kann man nun auf den Raspberry Pi zugreifen.

Zwar ist noch kein Webserver eingerichtet, doch auch über PuTTY kann man die DynDns Adresse nutzen, um die Verbindung zu testen. Diese Daten würde ich jetzt auch in PuTTY speichern, da man sie von überall aufrufen kann. Die lokale IP konnte man nur im eigenen Netz aufrufen.

Wenn ihr einen Webserver einrichten wollt, dann schaut euch mal dieses Tutorial von ps915 an, da ist alles nötige beschrieben. Falls ihr allerdings Fragen habe oder es gerne hier hättet, schreibe ich was dazu.

## 5. – Rasperry Pi über das Internet erreichen ENDE.


## 6. – Nützliche Linux Befehle und deren Anwendung BEGINN:

An dieser Stelle möchte ich euch die grundlegensten Linuxbefehle auflisten und erklären, damit ihr sie so schnell nicht wieder vergesst. Diese helfen euch im alltäglichen Leben ungemein.

pi@raspberrypi ~ $ sudo mkdir nameVomOrdner

Legt einen neuen Ordner im aktuellen Verzeichnis mit dem Namen nameVomOrdner.

pi@raspberrypi ~ $ sudo cp datei.txt dateiKopie.txt

Kopiert die Datei datei.txt in die Datei dateiKopie.txt innerhalb es aktuellen Verzeichnis. Kann man auch ein anderes Verzeichnis angeben.

pi@raspberrypi ~ $ sudo cp /media/usbhdd1/datei.txt /media/usbhdd1/dateiKopie.txt

Hierbei kopiert man eine Datei von einem Verzeichnis in das selbe, allerdings von einem anderen Verzeichnis aus wird dieser Befehl auch funktionieren.

pi@raspberrypi ~ $ cd /media

Wechselt in den Ordner media, aus Sicht des Wurzelverzeichnisses, um in einen Ordner innerhalb eines Ordners zu wechseln, einfach den / zu beginn weglassen.

pi@raspberrypi ~ $ cd ..

Wechselt einen Ordner höher.

pi@raspberrypi ~ $ ls

Gibt den Inhalt des aktuellen Verzeichnis aus.

pi@raspberrypi ~ $ sudo rm datei.txt

Löscht die Datei datei.txt aus dem aktuellen Verzeichnis.

pi@raspberrypi ~ $ sudo rm -r verzeichnis

Löscht rekursiv alle Dateien aus dem Verzeichnis und das Verzeichnis.

pi@raspberrypi ~ $ sudo mv datei.txt usbhdd1/

Verschiebt die Datei datei.txt aus dem aktuellen Verzeichnis in das Verzeichnis usbhdd1/
Aber der Befehl mv kann auch umbenennen:

pi@raspberrypi ~ $ sudo mv datei.txt dateiNeu.txt

Benennt die Datei datei.txt aus dem aktuellen Verzeichnis nach dateiNeu.txt um.

pi@raspberrypi ~ $ touch datei.txt

Legt eine neue leere Datei mit dem Namen datei.txt an.

pi@raspberrypi ~ $ sudo nano datei.txt

Öffnet die Datei datei.txt im aktuellen Verzeichnis mit einem Texteditor(nano).

pi@raspberrypi ~ $ mkdir --help

Gibt vom Befehl mkdir die Hilfe aus. Kann man mit jedem Befehl machen.

pi@raspberrypi ~ $ sudo chmod 755 test.txt

Ändert die Zugriffsrechte der Datei test.txt aus dem aktuellen Verzeichnis auf 755
Erklärung:
Lesen = 4 – Schreiben = 2 – Ausführen = 1
7: man darf alles
6: lesen und schreiben
5: lesen und ausführen
4: nur lesen
3: schreiben und ausführen
2: nur schreiben
1: nur ausführen
0: man darf nichts
Erste Ziffer steht für die Besitzerrechte
Zweite Ziffer für die Gruppen Rechte
Dritte Ziffer für die öffentliche Berechtigung

pi@raspberrypi ~ $ sudo chown -R www-data:www-data /media/usbhdd1/test

Ändert den Eigentümer des Verzeichnises test rekursiv für auf www-data der Gruppe www-data.
Erklärung:
besitzer_name:gruppen_name Benutzer und Gruppe werden auf einen Schlag gesetzt
:gruppen_name Die Gruppe wird gesetzt, wohingegen der Besitzer unverändert bleibt
besitzer_name: Der Besitzer wird auf besitzer_name – und die Gruppe auf die Standardgruppe des eingeloggten Benutzers gesetzt
besitzer_name Ausschließlich der Besitzer wird gesetzt

## 6. – Nützliche Linux Befehle und deren Anwendung ENDE.


## X. Liste wichtiger Befehle (Glossar) BEGINN:

sudo – vergibt root Rechte
sudo apt-get install XXX – installiert Paket XXX
apt-get search XXX – sucht in der Paketliste nach Paket XXX
sudo apt-get update – aktualisiert die eigene Paketliste mit den neuen Versionsnummern aus dem Repository, dabei wird noch nicht geupgraded
sudo apt-get upgrade – upgraded die aktuell installierten Programme mit den Versionsständen aus apt-get update
cd /XXX – Wechselt in das Verzeichnis XXX
cd .. – Geht eine Ebene höher
chmod 755 XXX – Vergibt Rechte 755 auf Datei XXX
sudo chown -R www-data:www-data /XXX – Ändert Besitzer im Verzeichnis /XXX
sudo cp AAA XXX – Kopiert Datei AAA nach XXX
XXX –help – Zeigt die Hilfe zu Befehl XXX an
ls – listet den Inhalt des aktuellen Verzeichnis auf
logout – Es wird sich von der Konsole abgemeldet
sudo mkdir XXX – legt den Ordner XXX im aktuellen Verzeichnis an
sudo mv AAA XXX/ – Verschiebt Datei AAA nach Verzeichnis XXX
sudo mv AAA XXX – Benennt die Datei AAA nach XXX um
Startx – Startet den Fenstermanager
sudo shutdown -h now – Fährt den Raspberry Pi ordentlich sofort runter
touch XXX – Erstellt eine neue Datei XXX
sudo raspi-config – öffnet die Konfiguration des Raspberry Pi
sudo reboot – Sorgt für einen sofortigen Neustart
sudo rm XXX – entfernt Datei XXX
sudo rm -r XXX – entfernt das Verzeichnis XXX mit allem Inhalt

Raspberry Pi