Raspberry Pi
Grow-Box Environment Control

Startseite Installation und Vorbereiten GPIO Anschlussplan Liste der Sensoren
Messen: Temperatur und Luftfeuchtigkeit Licht Bodenfeuchtigkeit
Steuern: Cronjob Licht Abluft Umluft -->
Webserver Dateien: : Logs darstellen Sollwerte einstellen Steuern

Installation und Vorbereitung des Raspberry Pi

Für das Projekt haben wir haben uns für den neuesten Raspberry Pi 3 Model B für ca. 35€ entschieden.
Mit einer 4x 1.2 GHz CPU und 1GB Arbeitsspeicher ist er für alle Aufgaben und eine flüssige grafische Oberfläche gut zu brauchen.
Als SD-Karte haben wir eine 8GB Class10 in Benutzung. 8GB bietet genug Platz für die Daten und halt gleichzeitig die Größe des Backup-Image modetat.
Als Betriebssystem ist Rasperian eine sinnvolle Wahl, weil viele Pakete für den Raspberry Pi enthalten sind.


Die SD Karte vorbereiten

Das Image von Rasperian runterladen https://www.raspberrypi.org
Empfolen ist Rasperian mit der grafischen Oberfläche Pixel Desktop. Es ist auch möglich ohne grafischen Desktop oder ausschließlich mit Fernzugriff zu arbeiten. Hier wird aber die Einrichtung an einem Monitor am Raspi beschrieben.

Das Image muss mittels einer Imagewritersoftware auf die SD Karte kopiert werden, mit z.B. https://sourceforge.net/projects/win32diskimager

Nach dem ersten Start und in regelmäßigen Abständen sollte das Betriebssystem auf den neusten Stand gebracht werden:
sudo apt-get update && sudo apt-get upgrade
sudo reboot
Bei Bedarf den Raspi konfigurieren zB. Wlan Password, Zeitzone, Tastaturlayout, ...
sudo raspi-config


Python, Apache-Webserver, PHP und MySql-Datenbank installieren

Python ist die Programmiersprache in der hauptsächlich die Sensoren abgefragt werden und die Steuerung angesprochen wird.
Der Apache Webserver mit PHP ist für die grafische Ausgabe als Webseite.
Die Daten werden in einer MySql Datenbank gespeichert.
sudo apt-get install build-essential python-dev python-openssl gi
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server mysql-client php5-mysql
Ein Passwort für Mysql eingeben und neu starten mit
sudo reboot

Die Datenbank muss für den Zugriff eingerichtet werden indem man sich einloggt und einen user anlegt. In dem Fall User pi mit Zugriff von überall ('%') und dem Passwort ('f6g7h8')
mysql -uroot -hlocalhost -p
CREATE USER 'pi'@'%' IDENTIFIED BY 'f6g7h8';
CREATE DATABASE grow;
GRANT ALL PRIVILEGES ON grow.* TO 'pi'@'%';
FLUSH PRIVILEGES;
quit
Für den Datenbankzugriff von außen zB mit dem Programm HeidiSQL muss die datei /etc/mysql/my.cnf geändert werden
sudo nano /etc/mysql/my.cnf

Aus der Zeile bind-adress = 127.0.0.1  muss  bind-adress = 0.0.0.0 werden und mysql neu starten mit:
sudo /etc/init.d/mysql restart

Die Datenbankstruktur muss vorab per Hand angelegt werden. Entweder per Konsole oder bequemer mit HeidiSQL. Die Tabellen sind so aufgebaut, das sie mit allen Modulen des messens und steuerns arbeiten können und keine weitere Anpassung benötigen.
Wir brauchen eine Datenbank mit Namen 'grow' die alle Tabellen zum loggen und steuern enthalten wird.
In der Tabelle 'log' werden die Werte von verschiedenen Sensoren mit Wert und Zeit gespeichert.

CREATE DATABASE IF NOT EXISTS `grow` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `grow`;
CREATE TABLE IF NOT EXISTS `log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datum` date NOT NULL,
`zeit` time NOT NULL,
`sensor` tinytext NOT NULL,
`wert` mediumint(9) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
In der Tabelle 'soll' werden die Soll-Werte zum steuern gespeichert.
CREATE TABLE IF NOT EXISTS `soll` (
`name` text,
`wert` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Damit Python auf die MySql Datenbank zugreifen kann
sudo apt-get install python-mysqldb

Error reporting in php
aktivieren ist keine STandarteinstellung und ist sehr zu empfehlen
sudo nano /etc/php5/apache2/php.ini
ziemlich weit unten muss aus einem Off ein On werden:
Display_Errors=On

Damit der Apache Webserver mittels PHP Shellkommandos ausführen darf, zB für Notaus
sudo visudo

und die Zeile ergänzen mit allen erlaubten Befehlen:
www-data ALL = NOPASSWD: /sbin/reboot, /sbin/halt, /sbin/shutdown, /usr/bin/gpio, /usr/bin/python


Samba installieren

Um im Netzwerk die Datein mit editieren zu können, brauchen wir Samba
sudo apt-get install samba samba-common-bin
sudo nano /etc/samba/smb.conf
Bei Bedarf die Workgroup auf die eigene ändern und folgende Zeilen anhängen:
security = user

[WWW_Freigabe]
path = /var/www/html
writeable = yes
guest ok  = no
[root]
path = /
writable = yes
guest ok = no>
[grow]
path = /home/pi
writabel = yes
guest ok = no

Samba Passwort setzten:
sudo smbpasswd -a pi
User Pi für das Webserververzeichniss Schreibrechte geben:
sudo chown -R pi:pi /var/www/html
Samba neu starten:
sudo /etc/init.d/samba restart


SPI Bus einrichten

Um analoge Signale zu empfangen braucht man einen Analog/Digital (AD) Wandler Chip, zB MCP3008, der die Signale über den SPI Bus bereit stellt. Der Raspi verfügt über 2 SPI-Busse.
Als erstes muss der Bus in der Raspi Configuration aktiviert werden:
sudo raspi-config
„8 Advanced Options“ -> „A6 SPI“ -> „Yes“.
sudo reboot


Treiberinstallation:
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install

I2C Bus einrichten

Der Lichtsensor wird über den I2C Bus abgefragt, der entsprechende Pakete braucht
I2C-Toolkit fuer die Kommandozeile
sudo apt-get install i2c-tools

Python-Bibliothek fuer I2C
sudo apt-get install python-smbus

Fast Fertig

Somit ist die Grundinstallation des Rasperry Pi abgeschlossen.
Die Dateien des Webservers befinden sich in /var/www/html

Für die Pythondateien legen wir ein Arbeitsverzeichnis "grow" im Userverzeichniss Pi an mit

mkdir grow