Visualisierung von Umweltdaten

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.

raspi webapplication

Browseransicht

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.

20 Gedanken zu „Visualisierung von Umweltdaten

  1. Torsten

    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!

    Antworten
    1. JohnDoe Beitragsautor

      Hi.

      Freut mich wenn ich dir mit der Anleitung helfen konnte.

      Aber was meinst du mit:

      “>” mit “>” ersetzen ! Dann geht er!

      Ich musste hier keine Zeichen ändern und erkenne die Stelle nicht, die du meinst.

      MfG
      JohnDoe

      Antworten
  2. Stefan

    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“
    )))

    Antworten
    1. JohnDoe Beitragsautor

      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

      Antworten
      1. Stefan

        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

        Antworten
  3. JohnDoe Beitragsautor

    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

    Antworten
    1. Stefan

      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

      Antworten
  4. JohnDoe Beitragsautor

    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

    Antworten
    1. Stefan

      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!!!!!

      Antworten
      1. Marc

        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

        Antworten
  5. JohnDoe Beitragsautor

    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

    Antworten
  6. Marc

    @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??

    Antworten
    1. JohnDoe Beitragsautor

      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

      Antworten
  7. Michael

    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

    Antworten
    1. JohnDoe Beitragsautor

      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

      Antworten
  8. JohnDoe Beitragsautor

    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

    Antworten
  9. Pingback: Raspi-SHT21 in Version 1.2.0 veröffentlicht | My-IT-Brain

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.