Home > Hausautomatisierung > Rasberry Pi Emoncms und RFM12Pi – Sensordaten visualisieren

Rasberry Pi Emoncms und RFM12Pi – Sensordaten visualisieren

In meiner letzten Artikelserie zum Thema Funksensoren und Empfänger selbst bauen habe ich gezeigt wie auf Basis eines RFM12B und eines Atmel Attiny 84 ein eigener Funksender und Empfänger gebaut werden kann, in meinem Fall hatte ich als Sensor einen DHT22 Temperatur- und Feuchtigkeits-Sensor. Die Temperatur Daten habe ich am Raspberry Pi über eine PHP Anwendung in eine Datenbank gespeichert und via Google Charts ausgewertet.

Heute möchte ich als Alternative zum Selbstbau ein fertiges Empfänger Modul ebenfalls auf Basis des RFM12B vorstellen, allerdings kommt hier ein etwas leistungsfähigerer ATmega328 zum Einsatz. Das RFM12Pi ist extrem klein und passt direkt auf die GPIO Pins des Raspberry Pi. Es ist sowohl als 433MHz als auch mit 868 und 915MHz verfügbar, ich verwende die 433MHz Variante. Als Sensoren benutze ich meine selbstgebauten mit DHT22 Temperatur- und Feuchtigkeitsmessung.

Update: Bitte schaut euch als Alternative noch die Option via Google Charts an oder via EmonCMS mit DS18B20 Sensor. Alle Methoden benötigen allerdings etwas Wissen rund um die eingesetzten Technologien

RasPi2

RFM12Pi als Empfängermodul am Raspberry Pi

emoncms_raspberry-pi

Emoncms auf dem Raspberry Pi zur Speicherung
und Visualisierung

Sender
Selbstgebauter Sender mit RFM12B, Attiny84
und DHT2 Sensor

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.

Die Anwendung ist Modular aufgebaut sodass die Teile zum Empfangen / Verarbeiten von den Teilen der Software, welche die Speicherung und Präsentation der Daten übernehmen, getrennt installiert werden können. Wer möchte kann also den RasPi als reinen Datensammler mit Funkmodul verwenden und die Daten an ein anderes System weiterleiten.

emoncms_graphic

Was kann der RFM12Pi?

Das RFM12Pi Modul basier genau so wie meine selbstgebaute Lösung auf dem RFM12B und einem Atmel Chip (ATmega328) für die Logik. Das RFM12B-Modul empfängt die Daten, der Chip bereitet diese entsprechend auf und sendet diese via UART an der Raspberry Pi. Die Daten können dort entweder wie gezeigt über ein Perl Script verarbeitet werden oder sie werden direkt anhand eines des “Raspberry Pi Emoncms Moduls” verarbeitet. Wie das funktioniert zeige ich euch in diesem Artikel.

Das RFM12Pi Modul verwendet wie meine Selbstbau-Lösung die JeeLib und daher kann auch der Selbstbau Empfänger mit Emoncms verwendet werden, Voraussetzung dafür ist natürlich die richtige Software auf den Sendern. Da ich aktuell das RFM12Pi Modell teste verwende ich diese in meinem Artikel.

Installation des RFM12Pi Empfängers

Die Einrichtung des Moduls ist vergleichsweise simpel, ihr müsst nur darauf achten dass ihr das Modul richtig auf den RasPi aufsteckt, der mit dem GPIO Pin 1 zu verbindende PIN am Stecker  ist entsprechend gekennzeichnet. Dann können wir auch direkt das Emoncms zur Verwaltung unserer Home Automation Sensoren installieren.

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

Es ist wichtig das vor der Installation UART auf dem Raspberry Pi aktiviert wurde sodass unser Modul mit dem Raspberry Pi bzw. der Software kommunizieren kann, wie das geht zeige ich euch in meinem Artikel UART am Raspberry Pi aktivieren. 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.

Der Setup Dialog fragt nach Informationen zum Root Passwort für die Datenbank, dem Benutzer für die MySQL Emoncms Datenbank und Infos zum SMTP Server zum Versand von E-Mails. Euren SMTP Server könnt ihr, falls ihr Mails versenden wollt, bei eurem Provider erfragen oder einsehen. Für meine Installation habe ich als Benutzer zum Zugriff auf die Emoncms Datenbank ebenfalls den root verwendet, ihr solltet euch allerdings nach der Anlage der Datenbank z.B. über phpmyadmin einen speziellen User mit eingeschränkten Rechten anlegen und diesen durch erneutes Aufrufend er Konfiguration eintragen.

Die Konfiguration kann jeder Zeit durch folgenden Befehl wiederholt werden.

Apache wurde durch das Emoncms installiert, allerdings müssen wir noch die Seite aktivieren und das Module Rewrite, zum Aktivieren der Änderungen an Apache ist ein Restart notwendig.

Da mein System später Mails versenden soll und ich meine SD-Karte vor unnötigen Zugriffen bewahren möchte installiere ich noch zwei Module hierfür mit den entsprechenden Abhängigkeiten.

Nach der Installation der Moduke müssen wir noch die PHP Konfiguration anpassen und die neuen Module eintragen.

Dann Installieren wir noch das Raspberry Pi Modul für Emoncms und weitere die ich verwende, die Energy Module für den Energieverbrauch eures Zuhauses spare ich mir da ich hierfür keinen Sensor habe. Da es für das Event Modul keinen Installer gibt installieren wir dieses manuell via Git.

Module:

  • Raspberry Pi – Schnittstelle zwischen Empfänger und Emoncms
  • Event – Funktionen ausführen wenn ein bestimmter Wert überschritten  wird (z.b. E-Mail versenden)
  • Notify – Modul für allgemeine Benachrichtigungen (nachträgliche Anpassung notwendig, siehe git)
Da das Raspberry Pi Modul als Dienst läuft tragen wir es noch in den Autostart ein und starten den Dienst dann zum ersten mal manuell.
Die Installation ist hiermit abgeschlossen, die Initiale Konfiguration muss noch durchgeführt werden.

Konfiguration vom Emoncms

Nun sind noch einige kleine Anpassungen am Emoncms zum Betrieb auf unserem Raspberry Pi notwendig. Hierzu öffnen wir die Webseite von Emoncms in einem Browser:

  • http://<IP-Raspberry-Pi>/emoncms/ (Fügt eure IP-Adresse ein, zum Beispiel
  • http://localhost/emoncms/ (falls ihr den Browser auf dem RasPi Startet)

Als erstes legen wir einen neuen Account an, das erledigen wir durch einen Klick auf Register.

emoncms-login emoncms-register

Gebt eure Daten an und ihr werdet nach dem Anlegen eines Accounts direkt zur Anwendung weitergeleitet.

WICHTIG!
Bevor wir anfangen uns mit dem System zu beschäftigen müssen wir erst noch die Datenbank aktualisieren um alle installierten Module verwenden zu können. Klickt hierzu im Menu auf Admin und dann auf Update & Check, bestätigt auf der folgenden Seite das Update.

emoncms-config

 

Danach können wir den Empfänger Kofigurieren, die Settings findet ihr unter “Raspberry Pi“, die Seite sollte melden RFM12 to Pi interface script is up and running.

emoncms-raspi

 

An dieser stelle können wir unserem Empfänger die korrekten Einstellungen verpassen, die NodeID und die Network Group müssen mit den Angaben in den Sender Programmen übereinstimmen. Bei mir ist das Group 210 und Nide ID für den Empfänger 22. Läuft das RasPi Interface nicht könnt ihr wie im Git Repository beschrieben das Logging aktivieren und nachsehen wo das Problem liegt.

Um unseren Empfänger mit Daten zu versorgen müsst ihr nun euren Sender Chip (ATTiny84) mit dem korrekten Code zum Senden programmieren und in Betrieb nehmen. Die Anleitung und das passende Sketch für euren Sender findet Ihr am Ende dieses Artikels.

Es kann kurz dauern bis euer Sender Daten übeträgt, falls ihr eine Status LED habt erkennt ihr das an dem kurzen zweimaligen Blinken, wird nichts gesendet Kontrolliert die Einstellungen für Node ID und Network Group am Empfänger und Sender sowie die Funktion des Dienstes. Sobald Daten am Empfänger ankommen erkennt das System diese und zeigt uns dann unter Input die Empfangenen Werte an.

emoncms-raspi-input

 

Ich habe über den Editieren Button rechts den Empfangenen Werten noch Namen zugeordnet. Bei mir ist der Wert 1 die Temperatur, Wert 2 die Volts der Batterien und Wert 3 die Temperatur.

Da die Werte aus technischen Gründen ohne Komma/Punkt ankommen fügen wir über den Schraubenschlüssel als erstes einen Prozess hinzu der uns den Empfangenen Wert immer mit 0.01 multipliziert. Das geschieht durch die Auswahl von “Calibrate -> X” in der “Add Process” Liste. Da wir die Daten auch speichern wollen fügen wir als Prozess zwei einen “Log to Feed” ein, ich benenne den Feed immer mit <Standort>-Wert, ich habe das Sendeintervall meiner Sender auf 5 Minuten eingestellt und wähle daher aus die Daten auch nur alle 5 Minuten zu verarbeiten. Das Selbe erledigt ihr natürlich für alle Werte aller Sender.

Hier die Konfiguration eines Wert-Inputs:

emoncms-raspi-input-to-feed2

Jetzt könnt ihr die Werte unter “Feed” einsehen oder unter “Dashboard“, was ich absolut super finde, ein eigenes Dashboard gestallten, unten ein Beispiel. Zusätzlich könnt ihr euch natürlich Infos via E-Mail senden lassen oder Alarmierungen für bestimmte Werte einstellen. Die Konfiguration findet ihr unter Extras.

Dashboard

 

Viel Spaß! 

Der Code für die Sensoren / Sender

Das ist der Code welcher auf die Sender aufgespielt wird, ich habe die Basis Version von Nathan etwas angepasst da nur eine Maximale Sendepause von 60 Sekunden möglich war und die Status LED Unterstützung fehlte. Die Sketches für andere Sernsoren wie den DS18B20 findet ihr auf GitHub, allerdings ohne die erwähnten Anpassungen.

Zum Schreiben des Codes auf euren Sender Chip könnt ihr wie in meinem Raspberry Pi Projekt beschrieben vorgehen. Ladet euch hierzu das Sketch nach /usr/share/arduino/, bennent es in SendRFM12Pi.ino um und öffnet es in der ArduinoIDE.

SendRFM12Pi

 

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

Über raspberry.tips

10 Kommentare

  1. Hi,

    funktioniert Emoncms auch mit dem USB-Wetterdaten-Empfänger USB-WDE1-2 ?

    • Hallo Thomas,

      grundsätzlich funktioniert EMONCMS damit, Problemstellung ist es die gewünschten Daten vom Gerät an das System zu übermitteln.

      Du hast hier verschiedene Möglichkeiten:

      1. Entwender du schaust dir mal EMONHUB an, das ist das Programm das via Serial Daten vom Rfm12pi ausließt und an das System übermittelt. Du müsstest den Auslesevorgang an deine Wünsche anpassen. Entwickelt wurde das in Python, ist für den “normalo” aber recht komplex.

      2. Du schreibst dir eine ganz einfach Anwendung selbst welche die Daten via Serial abgreift und die Schnittstelle von EMONHUB bedient, ich habe in einem der anderen Artikel ein PHP-Beispiel hierzu gemacht.

      Eine fertige Lösung, falls es eine gibt, müsstest du dir ergooglen.

      • Hallo an beide,
        ist da jemand schon weiter gekommen? hab genau das gleiche Problem wie Thomas.
        Und leider noch nicht so viel Ahnung in Python.
        Das hier bekomme ich schon angezeigt:
        $1;1;;25,2;;;;;;;;44;;;;;;;;;;;;;0
        $1;1;;26,8;;;;;;;;48;;;;;;;;;;;;;0

        VG, Jens

  2. Hallo, danke für dieses Tutorial, leider komme ich ab diesem Punkt nicht mehr weiter:

    sudo cp /var/www/emoncms/Modules/raspberrypi/rfm12piphp /etc/init.d/
    sudo chmod 755 /etc/init.d/rfm12piphp
    sudo update-rc.d rfm12piphp defaults
    sudo /etc/init.d/rfm12piphp start
    sudo /etc/init.d/apache2 restart

    Weil due datei rfm12piphp in meinem gesamten system über “find” nicht zu finden ist und auch der orderner /var/www/emoncms existiert nicht…

    Eine Idee was ich jetzt machen soll?

    • Fehler gefunden!!!

      Die Datei rfm12piphp liegt nicht im angegebenen Verzeichnis:
      /var/www/emoncms/Modules/raspberrypi/rfm12piphp

      stattdessen findet man diese im Ordner:
      /usr/share/emoncms/www/Modules/raspberrypi/rfm12piphp

      kopiert man von dort nun in die /etc/init.d/
      und führt die Schritte weiter aus, wird sudo /etc/init.d/rfm12piphp start
      einen Fehler bringen:
      ERROR: file not found : ‘/var/www/emoncms/Modules/raspberrypi/raspberrypi_run.php’

      Diese Datei liegt nämlich auch in:
      /usr/share/emoncms/www/Modules/raspberrypi/raspberrypi_run.php

      also müssen wir die Datei wie folgt verändern:
      sudo nano /etc/init.d/rfm12piphp
      und statt /var/www/emoncms eintragen /usr/share/emoncms/www

      danach:
      $ sudo /etc/init.d/rfm12piphp start

      Log is turned off
      Starting RPI

      funktioniert es! (Bitte im Tutorial anpassen! Danke)

  3. Hi,
    Erstmal ein riesen Lob für deine Tutorials.;)
    Ich habe eine Frage… Das RFM12Pi Modul hat auf dem Mikrocontroller Ja eine Software, wenn ich meinem Selbstbau Empfänger mit Emoncms betreiben will brauche ich Ja einen Code den ich auf das qC programmiere. Kannst du mir sagen wo ich die Software runterladen kann?

    MfG Martin

  4. Ich habe ein RFM69Pi Modul und die Selbstbausender mit dem Code der in diesen Emoncms Tutotial am Ende aufgeführt ist.
    Mein RFMPi Modul funktioniert aber er empfängt keine Daten von den Sensor. Am Sender blinkt die LED beim senden zwei mal und auch die node Einstellungen sind OK. Woran könnte es noch liegen, hat vlt jemand einen Tipp. :(

Schreibe einen Kommentar

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