In dieser Fortsetzung des Artikels „Überwachung von Temperatur und Luftfeuchtigkeit mit dem SHT21“ kümmern wir uns um die Visualisierung der gemessenen Daten.
Um die Messdaten auf dem Pi in einem Webbrowser anzeigen zu können, muss zuerst ein Webserver auf dem Pi installiert werden. Ich habe mich für lighttpd[1. http://www.lighttpd.net/] entschieden, da dieser besonders wenig Systemressourcen benötigt. Außer dem Webserver selbst installiere ich noch PHP und aktiviere FastCGI.
sudo apt-get install lighttpd php5-cgi sudo adduser pi www-data sudo chown -R www-data:www-data /var/www sudo chmod -R 775 /var/www sudo lighty-enable-mod fastcgi sudo /etc/init.d/lighttpd force-reload
Das DocumentRoot des Lighttpd ist /var/www. Mit obigen Code haben wir auch gleich die Benutzerrechte korrekt gesetzt.
An das Ende der Datei /etc/lighttpd/lighttpd.conf müssen wir noch den folgenden Code einfügen:
# enable PHP and FastCGI fastcgi.server = (".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" )))
Im Anschluss muss der Webserver einmal neugestartet werden.
sudo service lighttpd restart
Jetzt kopieren wir den Inhalt des Ordners Raspi-SHT21-V3_0_0/www in das DocumentRoot /var/www/. Zur grafischen Darstellung unserer Messdaten entpacken wir noch die Javascript Libary[2. https://github.com/flot/flot/archive/v0.7.zip] von www.flotcharts.org[3. http://www.flotcharts.org/] in das Verzeichnis /var/www/js/. Wichtig: Nehmt die Version 0.7 von GitHub. Mit der Version 0.8.1 werden die Graphen nicht angezeigt.
Damit unsere Webanwendung die Daten aus unserer Datei sht21-data.csv auslesen kann, muss der Pfad zu dieser Datei noch in der index.php angepasst werden. Es geht aber auch noch etwas einfacher. Ich habe statt dessen einfach einen Symlink im DocumentRoot erstellt, welcher auf die Datei zeigt.
ln -s ~/Raspi-SHT21-V3_0_0/sht21-data.csv sht21-data.csv
Damit haben wir alles was wir brauchen und können unsere Umweltdaten im Browser betrachten.
Alle Ziele dieses kleinen Weekend-Projects wurden erreicht und wir können nun Temperatur und Luftfeuchtigkeit im Serverraum überwachen. Mein Kollege freut sich bestimmt schon, sich noch ein paar Gedanken zur Integration in Icinga zu machen.[4. http://www.icinga.org/] ;-)
Viel Spaß beim Nachbau.
Danke für die tolle Anleitung.
Kann jetzt jede Luft Bewegung in meiner Wohnung überwachen. Hoffe jetzt den Einstieg in PHP zu finden.
Bei /etc/lighttpd/lighttpd.conf folgendes beachten:
„>“ mit „>“ ersetzen ! Dann geht er!
Hi.
Freut mich wenn ich dir mit der Anleitung helfen konnte.
Aber was meinst du mit:
Ich musste hier keine Zeichen ändern und erkenne die Stelle nicht, die du meinst.
MfG
JohnDoe
=> wird bei mir für einen > auf der Seite angezeigt. Warum?
Danke für den Hinweis.
Das war ein Fehler in der Darstellung. Ich habe das im Artikel korrigiert.
MfG
JohnDoe
Hallo,
Vorab….Vielen Dank für diese sehr ausführliche Beschreibung.
Leider laufe ich bei der Aktivierung von fastcgi in ein Problem:
sudo service lighttpd restart
2014-10-30 19:17:36: (configfile.c.583) source: /etc/lighttpd/lighttpd.conf line: 31 pos: 25 use => for assignments in arrays
2014-10-30 19:17:36: (configfile.c.948) configfile parser failed at: .php
Den Code habe ich wie folgt ergänzt:
# enable PHP and FastCGI
fastcgi.server = („.php“ => ((
„bin-path“ => „/usr/bin/php-cgi“,
„socket“ => „/tmp/php.socket“
)))
Hallo Stefan,
danke für deinen Kommentar. Ich Artikel oben hatte sich tatsächlich ein Fehler im entsprechenden Codeblock eingeschlichen. Statt einem „=>“ wurde dort ein „&qt;“ dargestellt. Ich habe den Fehler nach deinem Hinweis im Artikel korrigiert.
MfG
JohnDoe
Hallo JohnDoe,
vielen Dank!
Das war’s!!!!
PS. Du solltest Flattr auf deine Seite einbauen….Ohne solche Tutorials wäre das Netz nutzlos!!!!
Gruss Stefan
Danke für das Lob. Über die Anregung mit Flattr denke ich mal nach. Ich freue mich jedoch schon, wenn meine Artikel neben mir auch noch weiteren Menschen helfen.
MfG
JohnDoe
Hallo JohnDoe,
Habe deine Seite auf mein Fav gesetzt und werde verfolgen ob ich dir in Zukunft was rüberflattern kann!!!
Ich möchte deine Hilfsbereitschaft nicht ausnutzen…aber kannst du mir noch die folgenden Fragen beantworten?
1. Ich habe alles so installiert wie von dir im ersten Artikel beschrieben (Paket im Home entpacken etc…..) Muss ich nach dem Reboot das Script händisch starten? Oder läuft es automatisch im Hintergrund?
2. Wird die .CSV Datei erst angelegt wenn die ersten Messwerte einlaufen(mein Sensor ist noch auf dem Weg)
Also ich hoffe das ich deine Hilfsbereitschaft nicht überreize.
Gruss Stefan
Hoi,
bei mir existiert auch keine sht21-data.csv.
dadurch sehe ich keine werte.
mfg maik
Hallo Stefan,
Hallo Maik,
zu Frage 1: Nach einem Reboot muss das Skript manuell gestartet werden.
zu Frage 2: Die Datei sht21-data.csv wird durch das Skript sht21.sh angelegt. Die ersten Werte werden nach 10 Minuten geschrieben. Ihr müsst nach dem Start des Skripts also 10 Minuten warten, bevor die ersten Werte in die Datei geschrieben werden.
Habt ihr meinen Kommentar im vorhergehenden Artikel gesehen? Ich habe den Programmcode in der Vergangenheit noch weiterentwickelt. In der aktuellen Version verfügt die Software über ein Start-/Stop-Skript und das Programm startet beim Hochfahren des Pi automatisch als Dienst.
Ihr findet das aktuelle Release auf GitHub. Eine Beschreibung mit einer kurzen Installationsanleitung befindet sich in der Datei README.md.
Ich hoffe ich konnte euch damit helfen. Ich werden einen Hinweis in die entsprechenden Artikel einbauen, dass die aktuelle Version jeweils auf GitHub liegt. Sobald ich Zeit habe erstelle ich auch nochmal einen neue Installationsanleitung.
Viele Grüße
JohnDoe
Vielen Dank!!!!
Perfekt habe dem Start/Stop Script die Rechte 755 gegeben und getestet!!!!
Alles wie du beschrieben hast…..jetzt erwarte ich meinen Sensor und hoffe die Werte werden richtig auf dem Webserver dargestellt!
Also JonDoe vielen, vielen Dank!!!!!
Meine Frage:
Was muss ich verändern damit die Werte in der CSV-Datei zum Beispiel erst nach 3 Monaten überschrieben werden?
Da muss ich doch etwas in der index.php verändern oder. leider bin absoluter Anfänger was HTML-Code angeht.
Danke schonmal
Hallo Marc,
die CSV-Datei wird nicht überschrieben, sondern rotiert. Du findest die rotierten Dateien im gleichen Verzeichnis, wie die
sht21-data.csv
.Für die Rotation der CSV-Datei ist die Datei unter /etc/logrotate.d/raspi-sht21 zuständig. Die Datei hat standardmäßig folgenden Inhalt:
/home/pi/Raspi-SHT21/*csv {
weekly
missingok
notifempty
rotate 7
compress
delaycompress
sharedscripts
create 0644 pi pi
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Möchtest du die Rotation von wöchentlich auf z.B. monatlich umstellen kannst du das Wort „weekly“ einfach durch „monthly“ ersetzen. Damit die Änderung wirksam wird musst du einmal den logrotate-Daemon neustarten. Das kannst entweder mit dem Befehl
sudo service logrotate restart
tun oder indem du dein Pi einmal neu startest.Ich hoffe, ich konnte dir damit weiterhelfen.
Viele Grüße
JohnDoe
@JohnDoe danke für deine Antwort und Hilfe.
Weitere Frage wenn ich die Messung automtisch starten lassen will muss ich doch die Datei „raspi-sht21.sh“
in /etc/init.d verschieben oder ??
Zudem habe ich der Datei mit sudo chmod +x /etc/init.d/raspi-sht21.sh noch die entsprechenden Rechte verliehen.
Funktioniert aber noch nicht. Ist das überhaupt richtig was ich gemacht habe??
Hallo Marc,
wenn du das Script in das Verzeichnis /etc/init.d kopiert und ausführbar gemacht hast, musst du das Script noch zu den Runleveln hinzufügen. Dies kannst du mit folgendem Befehl tun:
update-rc.d raspi-sht21.sh defaults
Damit sollte das Script dann automatisch starten.
Welche Version benutzt du denn eigentlich? Ich habe auf GitHub.com die Version 1.1.0 bereitgestellt. Diese verfügt über ein Installationsscript, welches alle Dateien an die richtige Stelle kopiert und einrichtet.
Ich plane innerhalb der nächsten 14 Tage ein Tutorial für die aktuelle Version zu erstellen und hier zu veröffentlichen. Vielleicht hast du Lust dann noch einmal die aktuelle Version aufzusetzen, falls du diese nicht schon nutzt.
MfG
John
Hallo John,
bei der Ausführung des install scripts bekomme ich folgende Meldung :
I2C-Treiberaktivierung
The user `pi‘ is already a member of `i2c‘.
Einrichtung des Webservers und Aktivierung von FastCGI
The user `pi‘ is already a member of `www-data‘.
already enabled
Run /etc/init.d/lighttpd force-reload to enable changes
Uuups, hier ist was schiefgegangen
Kannst Du mir sagen, was da schiefgegangen ist ?
mfG Michael
Hallo Michael,
den Meldungen ist zu entnehmen, das einige Konfigurationsschritte bereits erledigt waren. Beim Reload der Webserverkonfiguration ist das Script dann mit einem Fehler abgebrochen.
Führe mal das Skript cleanup.sh aus und starte install.sh anschließend erneut.
MFG
John
Auf GitHub wurde die Version 1.2.0 veröffentlicht. Dort findet ihr auch ein README, welches beschreibt, wie die aktuelle Version installiert und in Betrieb genommen werden kann.
Für Fehlermeldungen und Featurerequests benutzt in Zukunft bitte den Issue-Tracker auf GitHub.
MfG
JohnDoe
Pingback: Raspi-SHT21 in Version 1.2.0 veröffentlicht | My-IT-Brain