Home > Tutorials > Visualisierung von Temperaturdaten mit Emoncms

Visualisierung von Temperaturdaten mit Emoncms

Bereits in Vergangenheit habe ich in diversen Raspberry Pi Projekten vorgestellt wie ihr Temperatursensoren an den Raspberry Pi anschließt und auslesen könnt, die Lösungen sind m.E. aber alle recht unflexibel und schwer anzupassen. Daher habe ich mich entschieden euch heute das EMONCMS vorzustellen und zeige euch daher heute wie ihr 1-Wire Sensoren mit Emoncms einlesen, speichern und visualisieren könnt.

Was ist Emoncms?

Emoncms ist eine Open Source Webanwendung zum Verarbeiten, Speichern und Visualisieren von Temperatur, Stromverbrauch und anderen Daten. Das Emoncms ist Teil des OpenEnergyMonitor Projekts und ist angepasst für den Raspberry Pi verfügbar. Um Daten eines direkt angeschlossenen Empfängers zu verarbeiten wird das Modul “Raspberry Pi” bzw. “EmonHub” verwendet, beide lauschen am UART des Raspberry Pi. Alternativ kann das JSON Interface (Webservice) des CMS mit beliebigen Daten gefüttert werden.

emoncms

Emoncms auf dem Raspberry Pi installieren

Als erstes fügen wir das Repository, in welchem sich die Installationspakete befinden, zu unseren Software Quellen auf dem Raspberry Pi hinzu und aktualisieren die Paket-Liste apt.

Dann kann mit der Installation des Emoncms begonnen werden, das Debian Paket installiert direkt alle notwendigen Komponenten wie den Webserver und die Datenbank, zusätzlich führt uns der Installer durch die Grundkonfiguration.

Das Setup fragt nach Informationen zum Root Passwort für die Datenbank, dem Benutzer für die MySQL Emoncms Datenbank. Vergebt hier ein sicheres Passwort (Eingabe zwei mal notwendig)

emoncms-setup

Das Setup legt jetzt noch einen Benutzer für den Zugriff auf die Datenbank an, das sollt NICHT der root user sein, daher habe ich einen Benutzer mit dem Namen emoncmssql angegeben und auch hier ein sicheres Passwort vergeben.

UPDATE: Das Setup scheint einen Fehler zu haben und den Benutzer nicht korrekt einzurichten, daher müsst ihr entweder doch mit dem root und dem festgelegten Passwort installieren oder nachträglich einen Benutzer einrichten und das Setup erneut aufrufen.

emoncms-setup2

Den Datenbankname lasse ich unverändert auf emoncms

emoncms-setup5

Da wir die MySQL Datenbank auf dem Pi mit installieren lasse ich auch den Hostnamen für den Datenbankserver unverändert auf localhost

emoncms-setup4

Da ich erstmal keine E-Mail Benachrichtigung und Passwort Resets einrichten will lasse ich alle SMTP Einstellungen auf Standard und deaktiviere die Passwort Reset Mails

emoncms-setup6

Das Setup installiert nun den Webserver, die Datenbank und Emoncms. Wer einen FEhler gemacht hat kann die Konfiguration nachträglich erneut durchführen, verwendet hierzu den Befehl sudo dpkg-reconfigure emoncms –force

Die Installation ist nun abgeschlossen, die Webseite von Emoncms muss im Webserver Apache noch aktiviert werden, zusätzlich wird der Mod Rewrite aktiviert da Emoncms diesen benötigt. Als Zusatz für den RasPi installieren wir noch Redis um die SD-Karte zu schonen und Swift falls wir später Mails versenden möchten.

Über das Webinterface von Emoncms kann jetzt ein Benutzer eingerichtet werden, das Webinterface ist über http://<IP-Raspberry-Pi>/emoncms erreichbar, bei mir ist das zum Beispiel Klickt auf den Butto Register und legt euch einen Benutzer an.

emoncms-setup7

Mit dem angelegten Benutzer könnt ihr euch direkt anmelden, als letztes muss noch die Zeitzone eures Benutzers auf UTC +1 angepasst werden.

emoncms-setup8

Einrichtung des Temperatur-Sensors

In diesem Beispiel wird ein DS18B20 Temperatursensor mit 4,7k Widerstand und 3,3V für kurze Kabellängen zwischen Sensor und RPi verwendet. Alternativ könnt ihr auch einen fertig verkabelten wasserdichten DS18B29 verwenden. Achtet bei der Verkabelung auf die Richtige Verschaltung des Widerstands für kurze bzw. lange Kabel.

DS1820BVerkabelungsschema DS1820B-3Generisches Breadboard Setup

Bei Raspberry Pi spielt besonders das Laden der Kernel-Module für die Sensoren eine wichtige Rolle. Diese müssen, um mit dem Sensor messen zu können, bei jedem Start des RasPi geladen werden.

Fügt am ende der Datei folgende Zeilen hinzu. Wer die Module nur einmalig laden möchte kann das via “sudo modprobe <modul-name>”

Um die Module zu aktivieren muss der RasPi einmal neu gestartet werden. Zum prüfen ob der Sensor richtig erkannt wurde, führen wir den folgenden Befehl aus und erhalten die Sensor ID.

Hier wurde ein Sensor erkannt (28-000005c68110). Jeder Sensor hat eine eigene ID, mit der ausgelesen werden kann. Notiert euch diese am Besten. Um zu testen, ob der Sensor auch funktioniert, lesen wir den Messwert aus (ersetzt die ID mit eurer).

In der letzten Zeile steht nun t=127937, das entspricht einer Temperatur von 19,312 Grad. Somit ist die Einrichtung unseres Temperatur Sensors abgeschlossen.

Daten an Emoncms übertragen

Es gibt verschiedene Wege nun die Daten an EmonCMS zu übertragen, der eine ist einen eigenen Gateway zu programmieren oder der Einfachheit halber via Aufruf einer URL die Daten zu übergeben. Ich habe mich hier für die einfach Variante entschieden da ihr diese auch selbst anpassen könnt.

Der Weg funktioniert recht einfach, wir haben ein PHP-Script das die Daten von einem spezifischen DS18B20 ausließt und an das EmonCMS unter Angabe einer ID und des Temperaturwertes übergibt. Das Script dient als Beispiel und funktioniert für einen DS18B20, es muss unter Umständen an eure Bedürfnisse angepasst werden.

Das Script zur Übergabe der Daten sieht wie folgt aus ihr müsst später folgendes anpassen:

  • SENSORID – mit der ID eures DS18B20 ersetzen
  • EmonCMSApiKey – mit dem ApiKey eurer Installation ersetzen, der ApiKEy fürs Schreiben wird, wenn ihr auf der Webseite auf “Account” klickt angezeigt
  • ecmsSENSORID – Falls ihr das Skript für mehrere Sensoren am laufen habt muss jeweils eine andere ID verwendet werden (Nummer 1-99)
Wir holen uns also das Script hier ab und speichern es in unserem Pi Home
Jetzt müsst ihr noch die Configuration im Script anpassen, das erledigt ihr am besten mit Nano. Anpassungen siehe oben.
Zum testen könnt ihr das Script manuell ausführen um Emoncms einmal Daten zu übergeben. Später solltet ihr natürlich einen Cronjob einrichten der das Script regelmäßig aufruft.
Nachdem das gelaufen ist sehen wir auf der Emoncms Webseite unter “Input” direkt einen neuen Input von der Node 1 dem Schlüssel temp und dem Wert 127937 (nicht über den Wert wundern mein Sensor ist defekt)

emoncms-input

Über einen Klick auf den Schraubenschlüssel editieren wir nun den Input und schreiben Ihn dann in einen Feed. Wir müssen folgendes erreichen:

  • Den Wert 127937 in eine darstellbare Temperatur bringen, dazu multiplizieren wir mit 0.001
  • Auswählen wie oft Werte in den Feed gespeichert werden und was mit den Daten passiert

Fügt also unter Process erst die Multiplikation (x) mit 0.001 hinzu und speichert mit Add

emoncms-input-2

Fügt dann den Prozess Log to Feed hinzu mit Create New. Der Name kann beliebig ausgewählt werden. Das Intervall sollte ungefähr zu dem passen was ihr an Übermittlungen gewählt habt, ich übermittle in meinen Systemen alle 5 Minuten. Beachtet die Beschreibung.

emoncms-input-3

Jetzt könnt ihr euren angelegten Feed über den Menü-Punkt Feed anzeigen.

Daten Visualisieren

Bei Emocms haben wir verschiedene Möglichkeiten zu visualisieren, die praktischste ist sich ein Dashboard zu erstellen auf welches immer wieder zugegriffen wird. Ein Dashboard wird über den Menüpunkt Dashboard.

Klickt auf das Plus Symbol, und erstellt ein neues Dashboard, den Namen und Alias könnt ihr frei wählen. Klickt dann rechts auf das “Bearbeiten Symbol

emoncms-dashboard

 

Ihr landet dann im Dashboard Editor in welchem ihr via Drag and Drop ein Element aus der Auswahlliste hinzufügen könnt und dann über Configure die Einstellungen pro Element anpasst.

  • Ich füge immer erst über Containers einen Grauen Container hinzu
  • Dann füge ich über Text eine Headline hinzu
  • Dann erstelle ich das Widget links (dial)
  • Dann wähle ich mir eine passende Visualisierung aus, meistens verwende ich rawdata da die anderen sich nicht so gut für Temperaturen eignen

emoncms-dashboard-2

Speichert das Dasboard oben rechts.

Viel Spaß beim erforschen von Emoncms.

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Votes bis jetzt)
Loading...

Über raspberry.tips

20 Kommentare

  1. Hi!

    Vielen Dank für die super Anleitung. Selbst für mich als Anfänger 100% nachzuvollziehen und gut beschrieben!

    Es hat bis zu einem Punkt alles wunderbar funktioniert:

    “Über einen Klick auf den Schraubenschlüssel editieren wir nun den Input und schreiben Ihn dann in einen Feed.”

    Der Schraubenschlüssel lässt sich nicht drücken und damit kein Feed erstellen. Ich habe bereits verschiedene Browser ausprobiert, da sowas ja auch schon mal am Browser liegen- jedoch kein Erfolg.

    Jemand eine Idee woran das liegen kann?

    Vielen Dank für die Hilfe!

    Gruss

    Chris

  2. Hi – hatte wie viele andere Neulinge auch das Problem, dass der “Schraubenschlüssel” nicht funktionierte. Folgende Schritte ausführen:

    1) cd /usr/share/emoncms/www/Modules/input/Views
    2) nano input_view.php
    3) im Editor mit Strg+W nach if (i.processList!=””) suchen und mit
    4) if (typeof i.processlist !== ‘undefined’ && i.processlist!=””) überschreiben
    5) Mit Strg+O gefolgt mit ENTER abspeichern und mit Strg+X den Editor verlassen
    6) mit sudo shutdown -r 0 den Raspberry rebooten und schon geht der “Schraubenschlüssel”

    Gruss

    Guido

    • Hallo Guido,

      super, vielen dank für den tollen Tipp!

      Das Bearbeiten Problem im Emoncms hatte ich selbst noch nicht, allerdings konnte ich schon mal ab und an Feeds nicht auf Public umstellen und habe mir daher immer damit beholfen die Werte einfach in der Datenbank zu ändern.

      Wir hoffen darauf dass das Projekt bald einen Bugfix erhält.

    • Hi Guido!

      Danke für die Antwort! Ich habe versucht die input_view.php so abzuändern, wie du es beschrieben hast. Jetzt habe ich das Problem, dass mir unter Inputs nichts mehr angezeigt wird.

      Hast du eine Idee woran das liegen kann?

      Gruss

      Chris

    • Jetzt funktioniert es… den Befehl if (i.processList!=””) gibt es 2x in der input_view.php.

      In der Zeile 207 oder 208 muss der Befehl wie von Dir beschrieben abgeändert werden und schon funktioniert es.

      Auch hier nachzulesen:

      http://openenergymonitor.org/emon/node/5455

      Danke nochmal!

      Gruss

      Chris

  3. Hallo,

    gibt es auch eine Möglichkeit Emoncms “ohne” Apache2 zu installieren.
    Benutze auf meinem pi halt nginx.

    Habe leider nichts dazu gefunden.

    Markus

  4. Hallo Zusammen
    ich bin ein Raspberry Neuling und habe mir zum Ziel gesetzt einen Temperaturlogger zu bauen. Ich habe in den letzten Tagen einige (viele) Stunden gebraucht um dieses Tutorial nachzubauen, zu meiner Überraschung hat es schlussendlich geklappt. Ich kann nun ein Digitalfühler auslesen, ich möchte aber mehrere Fühler aufzeichnen und in einer Graphik darstellen. Kann mir jemand sagen wie ich das Python-Script anpassen muss um mehrere Fühler aufzeichnen zu können?
    Bin für jeden Hinweis dankbar.
    Herzlichen Dank an Raspberry.tips für das super Tutorial.
    Gruss Helloourson

  5. Hi
    der Input eines Sensors ist da, ich habe nicht verstanden wie ich die anderen Sensoren im Script eintragen muß.
    Hat jemand einen Tip, danke
    schönen Abend
    Thomas

  6. zunächst einmal Danke für die Beschreibung. Ich habe alles zum Laufen gebracht, bis zur Nutzung des Schraubenschlüssels in Input Modus auf der Webseite. Mit den Änderungen von Guido (siehe oben) kommt im Input nichts mehr an, aber unter “Input api”
    in der “list of inputs” erscheinen Daten. Gibt es eine Lösung für das Problem.
    Danke

  7. Halllo Hallo,
    danke für das Tutorial, leider habe ich nichts davon zum laufen gebracht, das letzte an was nicht ging war das einsetzen in die php.ini und danach, durch das nicht mögliche starten des apache ging nichts mehr … Action “start” failed … was nun ?

  8. Hallo,
    ich habe folgendes Problem :

    auf die Eingabe php /home/pi/temperatur.php
    folgt PHP Parse error: syntax error, unexpected ‘<' in /home/pi/temperatur.php on line 8

    Ich habe keine Ahnung wo der Fehler liegt.
    vielleicht kann mir jemand helfen?
    Wäre super!!
    Gruss Oliver

  9. Halllo,
    und bei sudo wget -O /home/pi/temperatur.php /test.php_.txt
    /test.php_.txt: Scheme missing. Ich versteh das Problem nicht ich glaube der erste Fehler kommt weil das mit dem wget nicht funktioniert.
    Bitte dringend um Hilfe.

    Gruß Oliver

  10. Hi,

    wie bereits Helloourson schon geschrieben hat, würde auch ich mehrere Sensoren damit auslesen.
    Wie muss das dann in dem Script angepasst werden?
    Kann man die Sensoren alle dann an einem Stück parallel anschließen?

    Danke schon mal im Voraus
    Gruß
    Patrick

  11. Guten Morgen zusammen,

    ich würde gerne die Daten eines DHT22 und BMP180 an Emoncms weitergeben. Leider bin ich blutiger Anfänger und mir fehlt hier die Idee, wie ich dies realisieren kann. Im Tutorial wird dieses ja für den Temperatursensor DS18B20 beschrieben. Wenn ich das nach meiner Recherche richtig beurteilen kann, kann ich das hier beschriebene Skript so nicht verwenden. Wäre super, wenn mir hier jemand weiterhelfen könnte…

    Besten Dank :-)

  12. Hallo bei mir kommt bei der Installation von emoncms der fehlercode Error 1045 (28000): Access denied for user ‘root’@’localhost’……….

    Woran könnte das liegen?

    Gruß

  13. Hallo zusammen,
    ich scheiter leider schon an der Installation von emoncms
    nachdem ich die Zeilen

    sudo sh -c “echo ‘deb http://emon-repo.s3.amazonaws.com wheezy unstable’ >> /etc/apt/sources.list”
    sudo apt-get -y update && sudo apt-get -y upgrade

    durchgeführt habe, soll mit

    sudo apt-get -y –force-yes install emoncms

    die Installation des emoncms erfolgen. Bei mir kommt aber nur die Fehlermeldung

    E: Paket emoncms kann nicht gefunden werden. Kann mir jemand weiterhelfen?

  14. Hi,

    erstmal vielen Dank für die super Anleitung! Ich komme nun leider bei dem Schritt “sudo a2ensite emoncms” nicht mehr weiter. Hierbei bekomme ich den Fehler “ERROR: Site emoncms does not exist!”

    Woran kann es liegen?

    Vielen Dank im Voraus!
    Peter

  15. Hey,

    funktioniert das ganze auch mit einem DHT22? Wenn ja, wie? Bin leider blutiger Anfänger und noch in der IT Ausbildung.

    Für eure Hilfe bin ich echt dankbar!

Schreibe einen Kommentar

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