Dies ist eine alte Version des Dokuments!


Sensoren in EmonCMS einbinden

Seite Inhalt
Startseite Übersicht
Hauptanleitung Gesamtüberblick, Begriffsklärung, Teil 1–3 (FRITZ!Box, Raspberry Pi/EmonCMS, Sensor-Boxen), Ein-/Ausschalten, Zugänge-Checkliste, SENSOR_ID-Übersicht
Sensoren in EmonCMS einbinden Wiederkehrender Ablauf für jede neue Sensor-Box: API-Key, Inputs, Feeds, Dashboard
Programmcode der Sensor-Boxen Vollständiger Arduino-Code: Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox
Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111 Nachrüstung eines DS1307-RTC-Moduls, Shutdown-Taster
Schaltung Platine
Gehäuse 3D-Druck oder LASER-Cutter
Schule Einsatz im Unterricht
Sonstiges dies und das….

Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des einfachen BME280-Testsensors, siehe Hauptanleitung und Sensorcode) in EmonCMS sichtbar zu machen und seine Messwerte dauerhaft aufzuzeichnen. Genau derselbe Ablauf wiederholt sich später bei jeder neuen Sensor-Box (Klimamessbox, Raummessbox) – nur die Anzahl der Datenfelder und das passende Feed-Interval unterscheiden sich.

Voraussetzung: Der Testsensor ist fertig konfiguriert (eigene SENSOR_ID, eigener API-Key eingetragen, siehe Hauptanleitung Teil 3 bzw. Sensorcode-Seite) und mit Strom versorgt.

Schritt 1: API-Key besorgen

  1. In EmonCMS einloggen (Standard: Benutzername emonsd, siehe Hauptanleitung Teil 2)
    1. Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → „My Account“
    2. alternativ direkt die Adresse http://[IP-Adresse-des-Pi]/user/view aufrufen, z. B. http://192.168.1.2/user/view
  2. Dort erscheinen zwei Schlüssel:
    • „Read & Write API Key“ – dieser wird gebraucht, da der Testsensor Daten *sendet* (input/post.json)
    • „Read Only API Key“ – nur für lesende Abfragen/Dashboards, für Sensor-Boxen ungeeignet
  3. Den „Read & Write API Key“ kopieren
Verwechslungsgefahr: Unter Administration/Setup gibt es eine
"Server Information"-Seite mit vielen Systemdaten - dort steht
KEIN API-Key! Der Key findet sich ausschließlich unter "My Account"
(bzw. der /user/view-Seite des jeweiligen Benutzerkontos).
Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System
und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt
prüfen, bei welcher Installation man gerade eingeloggt ist - die
Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi.
Ein Key vom Produktiv-System darf niemals in Test- oder
Entwicklungs-Sketches landen.

Diesen Wert im Sketch des Testsensors eintragen (siehe Programmcode-Seite, Platzhalter apikey im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.


Nachdem der Testsensor läuft, kann EmonCMS eingerichtet werden:

Schritt 2: Prüfen, ob die Messdaten ankommen

Der Testsensor sendet erfolgreich, erkennbar am seriellen Monitor:

13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa
13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa
13:15:53.373 -> [HTTP] code=200 | T=24.93°C F=48.5% P=1014.9hPa
13:16:23.428 -> [HTTP] code=200 | T=24.91°C F=48.4% P=1014.9hPa
13:16:53.451 -> [HTTP] code=200 | T=24.90°C F=48.5% P=1015.0hPa
  1. In EmonCMS zu **Inputs** wechseln
  2. Sobald der Testsensor mindestens einmal erfolgreich gesendet hat, erscheint dort automatisch ein neuer Eintrag mit dem Node-Namen = SENSOR_ID des Testsensors (in diesem Beispiel „100“)
  3. Darunter erscheinen die einzelnen Datenfelder aus dem JSON des Testsensors: T_C, F_rel, P_hPa
Hinweis zur SENSOR_ID 100: Laut SENSOR_ID-Übersichtstabelle in der
Hauptanleitung sind die Bereiche 100-149 künftig für Raummessboxen
und 150-199 für Klimamessboxen vorgesehen. Für einen dauerhaft
genutzten Testsensor empfiehlt sich daher langfristig eine ID aus
dem für Infrastruktur/Tests reservierten Bereich (z. B. 998), um
spätere Kollisionen mit echten Raummessboxen zu vermeiden.
Erscheint nach mehreren Minuten immer noch nichts unter "Inputs":
- Serielle Debug-Ausgabe des Sensors prüfen (USB-Kabel + Arduino IDE,
  serieller Monitor bei 115200 Baud) - zeigt HTTP-Statuscode und
  Fehlermeldungen des letzten Sendeversuchs
- API-Key auf Tippfehler prüfen (führt zu HTTP 401 bzw. keiner
  Aufnahme des Inputs)
- Feste IP des Sensors (aus SENSOR_ID) auf Kollision mit einem
  anderen Gerät im Netz prüfen (siehe SENSOR_ID-Übersichtstabelle
  in der Hauptanleitung)

Schritt 3: Feeds anlegen (ein Feed pro Messwert)

Für jedes Datenfeld, das dauerhaft gespeichert und später als Diagramm angezeigt werden soll, wird ein eigener Feed angelegt:

  1. Bei Inputs neben dem gewünschten Feld (z. B. T_C) auf das Zahnrad-/Stift-Symbol klicken
  2. Bei „Add feed to log“ bzw. über den Prozess „Log to feed“ einen neuen Feed erstellen → „CREATE NEW“
  3. Feed-Engine: Wird als „Fixed Interval Time Series“ angezeigt – das ist nur die ausgeschriebene Bezeichnung für PHPFina (Standard, empfohlen), keine andere Engine auswählen
  4. Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. 100_T_C – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
  5. Interval unbedingt korrekt setzen (Standardvorschlag ist oft 10s – abändern!) – abhängig vom Sensortyp:
    • Testsensor (BME280, siehe Sensorcode-Seite): 10 Sekunden
    • Klimamessbox (Außenbereich): 300 Sekunden (5 Min.)
    • Raummessbox (Innenbereich): 20 Sekunden
Auffällig umständlicher Klick-Ablauf zum Abschließen (drei separate
Klicks nötig, sonst bleibt nichts gespeichert):
1. "Add"   - übernimmt die Einstellungen in die Prozessliste des Inputs
2. "Save"  - speichert die Prozessliste dauerhaft (OHNE diesen Klick
             geht die Änderung beim Schließen wieder verloren!)
3. "Close" - schließt den Dialog
Alle drei Klicks sind erforderlich, in genau dieser Reihenfolge.
KRITISCH: Das Interval eines PHPFina-Feeds lässt sich nach der
Erstellung NICHT mehr ändern! Bei einem falsch gesetzten Interval
bleibt nur die Neuanlage des Feeds - alte Daten gehen dabei verloren
bzw. müssten aufwändig migriert werden. Vor dem Speichern also
lieber zweimal prüfen.

Diesen Vorgang für jedes relevante Feld wiederholen (beim Testsensor 3 Feeds, bei der Klimamessbox später bis zu 7 Feeds, bei der Raummessbox 5 Feeds).


Schritt 4: Feeds kontrollieren

  1. Zu Feeds wechseln (linke Navigation)
  2. Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich regelmäßig aktualisierenden „Last value“
  3. Für die grafische Kontrolle nicht die Feed-ID als direkte URL aufrufen (z. B. /graph/11 funktioniert bei dieser EmonCMS-Version nicht) – stattdessen über die linke Seitenleiste den Menüpunkt „Data viewer“ (Graph-Symbol) öffnen. Dort links den gewünschten Feed (z. B. T_C) per Häkchen aktivieren, rechts erscheint die Kurve
  4. Zeitraum bei Bedarf über die Felder „Start“/„End“ bzw. den Dropdown (z. B. „1 hour“, „6 hours“) anpassen
Lücken/Aussetzer in der Kurve sind normal, wenn der Sensor
zwischendurch neu geflasht, der Pi neu gestartet oder die
Systemzeit korrigiert wurde - jede Unterbrechung der
Stromversorgung bzw. des Sendevorgangs erzeugt eine Lücke.
Ein durchgehend laufender Produktivsensor zeigt eine
lückenlose Linie.

Schritt 5 (optional): Dashboard erstellen

Für eine übersichtliche Darstellung mehrerer Werte des Testsensors (oder später mehrerer Boxen) gemeinsam:

  1. Zu Dashboards wechseln → „New Dashboard“
  2. Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
  3. Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
  4. Dashboard speichern und ggf. über „Make public“ auch ohne Login einsehbar machen (z. B. für einen Klassenraum-Bildschirm)

Stolpersteine

  • Input-Feld heißt anders als erwartet: Die Feldnamen im JSON (beim Testsensor: T_C, F_rel, P_hPa; bei den vollständigen Boxen zusätzlich CO2_ppm, PM25, PM10, H_bit) müssen exakt mit denen im Sketch übereinstimmen – Groß-/Kleinschreibung wird unterschieden. Bei Unsicherheit den Sketch-Quellcode (Funktion loop/HTTP-POST-Body) als Referenz nutzen
  • Feed zeigt „no data“ trotz laufendem Testsensor: Meist wurde der Prozess „Log to feed“ nicht korrekt mit dem Input-Feld verknüpft – unter Inputs → Zahnrad-Symbol → Prozessliste prüfen, ob der Log-to-feed-Eintrag wirklich vorhanden ist
  • Falsches Interval gewählt: Es gibt keine Fehlermeldung – das System läuft einfach mit schlechterer Datenqualität weiter:
    • Feed-Interval länger als der tatsächliche Sendetakt des Sensors (z. B. Sensor sendet alle 10 s, Feed steht auf 60 s): EmonCMS speichert pro Zeitschlitz nur den zuletzt eingetroffenen Wert – alle dazwischenliegenden Messungen werden kommentarlos überschrieben, bevor sie je gespeichert wurden, und gehen verloren
    • Feed-Interval kürzer als der tatsächliche Sendetakt (z. B. Sensor sendet alle 120 s, Feed steht auf 30 s): Für die meisten Zeitschlitze kommt kein neuer Wert an, sie bleiben leer (null) – das Diagramm wirkt lückenhaft/gezackt
    • In beiden Fällen: keine Fehlermeldung, kein Absturz, aber nachträglich nicht reparierbar (Interval-Änderung nur durch Neuanlage des Feeds möglich, siehe Warnhinweis oben). Deshalb: Feed-Interval muss exakt dem MESSINTERVALL_MS/Schreibpause-Wert im jeweiligen Sketch entsprechen
  • Zwei Feeds mit identischem Namen: EmonCMS erlaubt das technisch, führt aber zu Verwirrung bei der späteren Auswertung – eindeutige Namenskonvention (SENSOR_ID + Feldname) von Anfang an einhalten
  • Werte wirken „verzögert“: Bei einer langsam messenden Box (z. B. Klimamessbox mit größerem Intervall) ist das normal – die Grafik aktualisiert sich dann entsprechend seltener. Beim Testsensor (10 Sekunden) ist die Aktualisierung deutlich schneller sichtbar

——————————2026-08-12——————

Sensoren in EmonCMS einbinden

Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des einfachen BME280-Testsensors, siehe Hauptanleitung und Sensorcode) in EmonCMS sichtbar zu machen und seine Messwerte dauerhaft aufzuzeichnen. Genau derselbe Ablauf wiederholt sich später bei jeder neuen Sensor-Box (Klimamessbox, Raummessbox) – nur die Anzahl der Datenfelder und das passende Feed-Interval unterscheiden sich.

Voraussetzung: Der Testsensor ist fertig konfiguriert (eigene SENSOR_ID, eigener API-Key eingetragen, siehe Hauptanleitung Teil 3 bzw. Sensorcode-Seite) und mit Strom versorgt.


Schritt 1: API-Key besorgen

  1. In EmonCMS einloggen (Standard: Benutzername emonsd, siehe Hauptanleitung Teil 2)
    1. Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → „My Account“
    2. alternativ direkt die Adresse http://[IP-Adresse-des-Pi]/user/view aufrufen, z. B. http://192.168.1.2/user/view
  2. Dort erscheinen zwei Schlüssel:
    • „Read & Write API Key“ – dieser wird gebraucht, da der Testsensor Daten *sendet* (input/post.json)
    • „Read Only API Key“ – nur für lesende Abfragen/Dashboards, für Sensor-Boxen ungeeignet
  3. Den „Read & Write API Key“ kopieren
Verwechslungsgefahr: Unter Administration/Setup gibt es eine
"Server Information"-Seite mit vielen Systemdaten - dort steht
KEIN API-Key! Der Key findet sich ausschließlich unter "My Account"
(bzw. der /user/view-Seite des jeweiligen Benutzerkontos).
Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System
und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt
prüfen, bei welcher Installation man gerade eingeloggt ist - die
Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi.
Ein Key vom Produktiv-System darf niemals in Test- oder
Entwicklungs-Sketches landen.

Diesen Wert im Sketch des Testsensors eintragen (siehe Programmcode-Seite, Platzhalter apikey im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.


Nachdem der Testsensor läuft, kann EmonCMS eingerichtet werden:

Schritt 2: Prüfen, ob die Messdaten ankommen

Der Testsensor sendet erfolgreich, erkennbar am seriellen Monitor:

13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa
13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa
13:15:53.373 -> [HTTP] code=200 | T=24.93°C F=48.5% P=1014.9hPa
13:16:23.428 -> [HTTP] code=200 | T=24.91°C F=48.4% P=1014.9hPa
13:16:53.451 -> [HTTP] code=200 | T=24.90°C F=48.5% P=1015.0hPa
  1. In EmonCMS zu **Inputs** wechseln
  2. Sobald der Testsensor mindestens einmal erfolgreich gesendet hat, erscheint dort automatisch ein neuer Eintrag mit dem Node-Namen = SENSOR_ID des Testsensors (in diesem Beispiel „100“)
  3. Darunter erscheinen die einzelnen Datenfelder aus dem JSON des Testsensors: T_C, F_rel, P_hPa
Hinweis zur SENSOR_ID 100: Laut SENSOR_ID-Übersichtstabelle in der
Hauptanleitung sind die Bereiche 100-149 künftig für Raummessboxen
und 150-199 für Klimamessboxen vorgesehen. Für einen dauerhaft
genutzten Testsensor empfiehlt sich daher langfristig eine ID aus
dem für Infrastruktur/Tests reservierten Bereich (z. B. 998), um
spätere Kollisionen mit echten Raummessboxen zu vermeiden.
Erscheint nach mehreren Minuten immer noch nichts unter "Inputs":
- Serielle Debug-Ausgabe des Sensors prüfen (USB-Kabel + Arduino IDE,
  serieller Monitor bei 115200 Baud) - zeigt HTTP-Statuscode und
  Fehlermeldungen des letzten Sendeversuchs
- API-Key auf Tippfehler prüfen (führt zu HTTP 401 bzw. keiner
  Aufnahme des Inputs)
- Feste IP des Sensors (aus SENSOR_ID) auf Kollision mit einem
  anderen Gerät im Netz prüfen (siehe SENSOR_ID-Übersichtstabelle
  in der Hauptanleitung)

Schritt 3: Feeds anlegen (ein Feed pro Messwert)

Für jedes Datenfeld, das dauerhaft gespeichert und später als Diagramm angezeigt werden soll, wird ein eigener Feed angelegt:

  1. Bei Inputs neben dem gewünschten Feld (z. B. T_C) auf das Zahnrad-/Stift-Symbol klicken
  2. Bei „Add feed to log“ bzw. über den Prozess „Log to feed“ einen neuen Feed erstellen → „CREATE NEW“
  3. Feed-Engine: Wird als „Fixed Interval Time Series“ angezeigt – das ist nur die ausgeschriebene Bezeichnung für PHPFina (Standard, empfohlen), keine andere Engine auswählen
  4. Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. 100_T_C – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
  5. Interval unbedingt korrekt setzen (Standardvorschlag ist oft 10s – abändern!) – abhängig vom Sensortyp:
    • Testsensor (BME280, siehe Sensorcode-Seite): 10 Sekunden
    • Klimamessbox (Außenbereich): 120 Sekunden
    • Raummessbox (Innenbereich): 20 Sekunden
Auffällig umständlicher Klick-Ablauf zum Abschließen (drei separate
Klicks nötig, sonst bleibt nichts gespeichert):
1. "Add"   - übernimmt die Einstellungen in die Prozessliste des Inputs
2. "Save"  - speichert die Prozessliste dauerhaft (OHNE diesen Klick
             geht die Änderung beim Schließen wieder verloren!)
3. "Close" - schließt den Dialog
Alle drei Klicks sind erforderlich, in genau dieser Reihenfolge.
KRITISCH: Das Interval eines PHPFina-Feeds lässt sich nach der
Erstellung NICHT mehr ändern! Bei einem falsch gesetzten Interval
bleibt nur die Neuanlage des Feeds - alte Daten gehen dabei verloren
bzw. müssten aufwändig migriert werden. Vor dem Speichern also
lieber zweimal prüfen.

Diesen Vorgang für jedes relevante Feld wiederholen (beim Testsensor 3 Feeds, bei der Klimamessbox später bis zu 7 Feeds, bei der Raummessbox 5 Feeds).


Schritt 4: Feeds kontrollieren

  1. Zu Feeds wechseln (linke Navigation)
  2. Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich regelmäßig aktualisierenden „Last value“
  3. Für die grafische Kontrolle nicht die Feed-ID als direkte URL aufrufen (z. B. /graph/11 funktioniert bei dieser EmonCMS-Version nicht) – stattdessen über die linke Seitenleiste den Menüpunkt „Data viewer“ (Graph-Symbol) öffnen. Dort links den gewünschten Feed (z. B. T_C) per Häkchen aktivieren, rechts erscheint die Kurve
  4. Zeitraum bei Bedarf über die Felder „Start“/„End“ bzw. den Dropdown (z. B. „1 hour“, „6 hours“) anpassen
Lücken/Aussetzer in der Kurve sind normal, wenn der Sensor
zwischendurch neu geflasht, der Pi neu gestartet oder die
Systemzeit korrigiert wurde - jede Unterbrechung der
Stromversorgung bzw. des Sendevorgangs erzeugt eine Lücke.
Ein durchgehend laufender Produktivsensor zeigt eine
lückenlose Linie.

Schritt 5 (optional): Dashboard erstellen

Für eine übersichtliche Darstellung mehrerer Werte des Testsensors (oder später mehrerer Boxen) gemeinsam:

  1. Zu Dashboards wechseln → „New Dashboard“
  2. Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
  3. Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
  4. Dashboard speichern und ggf. über „Make public“ auch ohne Login einsehbar machen (z. B. für einen Klassenraum-Bildschirm)

Stolpersteine

  • Input-Feld heißt anders als erwartet: Die Feldnamen im JSON (beim Testsensor: T_C, F_rel, P_hPa; bei den vollständigen Boxen zusätzlich CO2_ppm, PM25, PM10, H_bit) müssen exakt mit denen im Sketch übereinstimmen – Groß-/Kleinschreibung wird unterschieden. Bei Unsicherheit den Sketch-Quellcode (Funktion loop/HTTP-POST-Body) als Referenz nutzen
  • Feed zeigt „no data“ trotz laufendem Testsensor: Meist wurde der Prozess „Log to feed“ nicht korrekt mit dem Input-Feld verknüpft – unter Inputs → Zahnrad-Symbol → Prozessliste prüfen, ob der Log-to-feed-Eintrag wirklich vorhanden ist
  • Falsches Interval gewählt: siehe Warnhinweis oben – nur Neuanlage hilft, keine nachträgliche Korrektur möglich
  • Zwei Feeds mit identischem Namen: EmonCMS erlaubt das technisch, führt aber zu Verwirrung bei der späteren Auswertung – eindeutige Namenskonvention (SENSOR_ID + Feldname) von Anfang an einhalten
  • Werte wirken „verzögert“: Bei der später eingesetzten Klimamessbox (120-Sekunden-Intervall) ist das normal – die Grafik aktualisiert sich dann nur alle zwei Minuten. Beim Testsensor (10 Sekunden) ist die Aktualisierung deutlich schneller sichtbar

———————————————–alt-30 Sekunden ——————

Sensoren in EmonCMS einbinden

Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des einfachen BME280-Testsensors, siehe Hauptanleitung und Sensorcode) in EmonCMS sichtbar zu machen und seine Messwerte dauerhaft aufzuzeichnen. Genau derselbe Ablauf wiederholt sich später bei jeder neuen Sensor-Box (Klimamessbox, Raummessbox) – nur die Anzahl der Datenfelder und das passende Feed-Interval unterscheiden sich.

Voraussetzung: Der Testsensor ist fertig konfiguriert (eigene SENSOR_ID, eigener API-Key eingetragen, siehe Hauptanleitung Teil 3 bzw. Sensorcode-Seite) und mit Strom versorgt.


Schritt 1: API-Key besorgen - Wichtig für den ersten Sensorcode

- In EmonCMS einloggen (Standard: Benutzername emonsd, siehe Hauptanleitung Teil 2)

  1. Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → „My Account“
    1. alternativ direkt die Adresse
      http://<Pi-IP>/user/view

      aufrufen, z. B.

      http://192.168.1.2/user/view
  2. Dort erscheinen zwei Schlüssel:
    • „Read & Write API Key“ – dieser wird gebraucht, da Sensor-Boxen Daten *senden* (input/post.json)
    • „Read Only API Key“ – nur für lesende Abfragen/Dashboards, für Sensor-Boxen ungeeignet
  3. Den „Read & Write API Key“ kopieren
Verwechslungsgefahr: Unter Administration/Setup gibt es eine
"Server Information"-Seite mit vielen Systemdaten - dort steht
KEIN API-Key! Der Key findet sich ausschließlich unter "My Account"
(bzw. der /user/view-Seite des jeweiligen Benutzerkontos).
Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System
und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt
prüfen, bei welcher Installation man gerade eingeloggt ist - die
Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi.
Ein Key vom Produktiv-System darf niemals in Test- oder
Entwicklungs-Sketches landen.

Diesen Wert im Sketch des Testsensors eintragen (siehe Programmcode-Seite, Platzhalter apikey im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.


Nachdem der Testsensor läuft, kann EmonCMS eingerichtet werden:

Schritt 2: Prüfen, ob die Messdaten ankommen

Der Testsensor sendet erfolgreich, erkennbar am seriellen Monitor:

13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa
13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa
13:15:53.373 -> [HTTP] code=200 | T=24.93°C F=48.5% P=1014.9hPa
13:16:23.428 -> [HTTP] code=200 | T=24.91°C F=48.4% P=1014.9hPa
13:16:53.451 -> [HTTP] code=200 | T=24.90°C F=48.5% P=1015.0hPa
  1. In EmonCMS zu **Inputs** wechseln
  2. Sobald der Testsensor mindestens einmal erfolgreich gesendet hat, erscheint dort automatisch ein neuer Eintrag mit dem Node-Namen = SENSOR_ID des Testsensors (in diesem Beispiel „100“)
  3. Darunter erscheinen die einzelnen Datenfelder aus dem JSON des Testsensors: T_C, F_rel, P_hPa
Hinweis zur SENSOR_ID 100: Laut SENSOR_ID-Übersichtstabelle in der
Hauptanleitung sind die Bereiche 100-149 künftig für Raummessboxen
und 150-199 für Klimamessboxen vorgesehen. Für einen dauerhaft
genutzten Testsensor empfiehlt sich daher langfristig eine ID aus
dem für Infrastruktur/Tests reservierten Bereich (z. B. 998), um
spätere Kollisionen mit echten Raummessboxen zu vermeiden.
Erscheint nach mehreren Minuten immer noch nichts unter "Inputs":
- Serielle Debug-Ausgabe des Sensors prüfen (USB-Kabel + Arduino IDE,
  serieller Monitor bei 115200 Baud) - zeigt HTTP-Statuscode und
  Fehlermeldungen des letzten Sendeversuchs
- API-Key auf Tippfehler prüfen (führt zu HTTP 401 bzw. keiner
  Aufnahme des Inputs)
- Feste IP des Sensors (aus SENSOR_ID) auf Kollision mit einem
  anderen Gerät im Netz prüfen (siehe SENSOR_ID-Übersichtstabelle
  in der Hauptanleitung)

Schritt 3: Feeds anlegen (ein Feed pro Messwert)

Für jedes Datenfeld, das dauerhaft gespeichert und später als Diagramm angezeigt werden soll, wird ein eigener Feed angelegt:

  1. Bei Inputs neben dem gewünschten Feld (z. B. T_C) auf das Zahnrad-/Stift-Symbol klicken
  2. Bei „Add feed to log“ bzw. über den Prozess „Log to feed“ einen neuen Feed erstellen → „CREATE NEW“
  3. Feed-Engine: Wird als „Fixed Interval Time Series“ angezeigt – das ist nur die ausgeschriebene Bezeichnung für PHPFina (Standard, empfohlen), keine andere Engine auswählen
  4. Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. 100_T_C – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
  5. Interval unbedingt korrekt setzen (Standardvorschlag ist oft 10s – abändern!) – abhängig vom Sensortyp:
    • Testsensor (BME280, siehe Sensorcode-Seite): 30 Sekunden
    • Klimamessbox (Außenbereich): 120 Sekunden
    • Raummessbox (Innenbereich): 20 Sekunden
Auffällig umständlicher Klick-Ablauf zum Abschließen (drei separate
Klicks nötig, sonst bleibt nichts gespeichert):
1. "Add"   - übernimmt die Einstellungen in die Prozessliste des Inputs
2. "Save"  - speichert die Prozessliste dauerhaft (OHNE diesen Klick
             geht die Änderung beim Schließen wieder verloren!)
3. "Close" - schließt den Dialog
Alle drei Klicks sind erforderlich, in genau dieser Reihenfolge.
KRITISCH: Das Interval eines PHPFina-Feeds lässt sich nach der
Erstellung NICHT mehr ändern! Bei einem falsch gesetzten Interval
bleibt nur die Neuanlage des Feeds - alte Daten gehen dabei verloren
bzw. müssten aufwändig migriert werden. Vor dem Speichern also
lieber zweimal prüfen.

Diesen Vorgang für jedes relevante Feld wiederholen (beim Testsensor 3 Feeds, bei der Klimamessbox später bis zu 7 Feeds, bei der Raummessbox 5 Feeds).


Schritt 4: Feeds kontrollieren

  1. Zu Feeds wechseln (linke Navigation)
  2. Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich alle 30 Sekunden aktualisierenden „Last value“
  3. Per Klick auf einen Feed öffnet sich eine einfache Grafik-Vorschau (Zeitverlauf) – guter erster Funktionstest

Schritt 5 (optional): Dashboard erstellen

Für eine übersichtliche Darstellung mehrerer Werte des Testsensors (oder später mehrerer Boxen) gemeinsam:

  1. Zu Dashboards wechseln → „New Dashboard“
  2. Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
  3. Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
  4. Dashboard speichern und ggf. über „Make public“ auch ohne Login einsehbar machen (z. B. für einen Klassenraum-Bildschirm)

Stolpersteine

  • Input-Feld heißt anders als erwartet: Die Feldnamen im JSON (beim Testsensor: T_C, F_rel, P_hPa; bei den vollständigen Boxen zusätzlich CO2_ppm, PM25, PM10, H_bit) müssen exakt mit denen im Sketch übereinstimmen – Groß-/Kleinschreibung wird unterschieden. Bei Unsicherheit den Sketch-Quellcode (Funktion loop/HTTP-POST-Body) als Referenz nutzen
  • Feed zeigt „no data“ trotz laufendem Testsensor: Meist wurde der Prozess „Log to feed“ nicht korrekt mit dem Input-Feld verknüpft – unter Inputs → Zahnrad-Symbol → Prozessliste prüfen, ob der Log-to-feed-Eintrag wirklich vorhanden ist
  • Falsches Interval gewählt: siehe Warnhinweis oben – nur Neuanlage hilft, keine nachträgliche Korrektur möglich
  • Zwei Feeds mit identischem Namen: EmonCMS erlaubt das technisch, führt aber zu Verwirrung bei der späteren Auswertung – eindeutige Namenskonvention (SENSOR_ID + Feldname) von Anfang an einhalten
  • Werte wirken „verzögert“: Bei der später eingesetzten Klimamessbox (120-Sekunden-Intervall) ist das normal – die Grafik aktualisiert sich dann nur alle zwei Minuten. Beim Testsensor (30 Sekunden) ist die Aktualisierung deutlich schneller sichtbar

—————————————————– alte Version —————————————

Sensoren in EmonCMS einbinden

Diese Seite beschreibt den Ablauf, um eine bereits fertig verkabelte und geflashte Sensor-Box (Klimamessbox oder Raummessbox, siehe Hauptanleitung und Sensorcode) in EmonCMS sichtbar zu machen und ihre Messwerte dauerhaft aufzuzeichnen. Dieser Ablauf wiederholt sich bei jeder neuen Sensor-Box.

Voraussetzung: Die Box ist fertig konfiguriert (eigene SENSOR_ID, eigener API-Key eingetragen, siehe Hauptanleitung Teil 3) und mit Strom versorgt.


Schritt 1: API-Key besorgen

- In EmonCMS einloggen (Standard: Benutzername emonsd, siehe Hauptanleitung Teil 2)

  1. Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → „My Account“
    1. alternativ direkt die Adresse
      http://<Pi-IP>/user/view

      aufrufen, z. B.

      http://192.168.1.2/user/view
  2. Dort erscheinen zwei Schlüssel:
    • „Read & Write API Key“ – dieser wird gebraucht, da Sensor-Boxen Daten *senden* (input/post.json)
    • „Read Only API Key“ – nur für lesende Abfragen/Dashboards, für Sensor-Boxen ungeeignet
  3. Den „Read & Write API Key“ kopieren
Verwechslungsgefahr: Unter Administration/Setup gibt es eine
"Server Information"-Seite mit vielen Systemdaten - dort steht
KEIN API-Key! Der Key findet sich ausschließlich unter "My Account"
(bzw. der /user/view-Seite des jeweiligen Benutzerkontos).
Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System
und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt
prüfen, bei welcher Installation man gerade eingeloggt ist - die
Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi.
Ein Key vom Produktiv-System darf niemals in Test- oder
Entwicklungs-Sketches landen.

Diesen Wert im Sketch der Box eintragen (siehe Programmcode-Seite, Platzhalter apikey im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Box neu starten.


Nachdem der erste Messsensor läuft, kann EMONCMS angepasst werden:

Schritt 2: Prüfen, ob die Messdaten ankommen

der Sensor sendet erfolgreich:

13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa
13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa
13:15:53.373 -> [HTTP] code=200 | T=24.93°C F=48.5% P=1014.9hPa
13:16:23.428 -> [HTTP] code=200 | T=24.91°C F=48.4% P=1014.9hPa
13:16:53.451 -> [HTTP] code=200 | T=24.90°C F=48.5% P=1015.0hPa
  1. In EmonCMS zu Inputs wechseln EMONCMS INPUT
  2. Sobald der Sensor mindestens einmal erfolgreich gesendet hat, erscheint dort automatisch ein neuer Eintrag mit dem Node-Namen = SENSOR_ID der Box (z. B. „100“)
  3. Darunter erscheinen die einzelnen Datenfelder aus dem JSON der Box, z. B. beim TESTSENSOR T_C, F_rel, P_hPa
Erscheint nach mehreren Minuten immer noch nichts unter "Inputs":
- Serielle Debug-Ausgabe der Box prüfen (USB-Kabel + Arduino IDE,
  serieller Monitor bei 115200 Baud) - zeigt HTTP-Statuscode und
  Fehlermeldungen des letzten Sendeversuchs
- API-Key auf Tippfehler prüfen (führt zu HTTP 401 bzw. keiner
  Aufnahme des Inputs)
- Feste IP der Box (aus SENSOR_ID) auf Kollision mit einem anderen
  Gerät im Netz prüfen (siehe SENSOR_ID-Übersichtstabelle in der
  Hauptanleitung)

Schritt 3: Feeds anlegen (ein Feed pro Messwert)

Für jedes Datenfeld, das dauerhaft gespeichert und später als Diagramm angezeigt werden soll, wird ein eigener Feed angelegt:

  1. Bei Inputs neben dem gewünschten Feld (z. B. T_C) auf das Zahnrad-/Stift-Symbol klicken
  2. Bei „Add feed to log“ bzw. über den Prozess „Log to feed“ einen neuen Feed erstellen
  3. Feed-Engine: PHPFina (Standard, empfohlen)
  4. Interval unbedingt korrekt setzen – abhängig vom Boxtyp:
    • Klimamessbox (Außenbereich): 120 Sekunden
    • Raummessbox (Innenbereich): 20 Sekunden
  5. Feed-Namen sinnvoll vergeben, z. B. 134_T_C (SENSOR_ID + Feldname), damit bei vielen Boxen der Überblick erhalten bleibt
  6. Speichern – der Prozess „Log to feed → [Feedname]“ erscheint jetzt in der Prozessliste des Inputs
KRITISCH: Das Interval eines PHPFina-Feeds lässt sich nach der
Erstellung NICHT mehr ändern! Bei einem falsch gesetzten Interval
bleibt nur die Neuanlage des Feeds - alte Daten gehen dabei verloren
bzw. müssten aufwändig migriert werden. Vor dem Speichern also
lieber zweimal prüfen.

Diesen Vorgang für jedes relevante Feld wiederholen (bei der Klimamessbox also bis zu 7 Feeds, bei der Raummessbox 5 Feeds).


Schritt 4: Feeds kontrollieren

  1. Zu Feeds wechseln (linke Navigation)
  2. Dort sollten nun alle neu angelegten Feeds auftauchen, mit einem sich alle 20 bzw. 120 Sekunden aktualisierenden „Last value“
  3. Per Klick auf einen Feed öffnet sich eine einfache Grafik-Vorschau (Zeitverlauf) – guter erster Funktionstest

Schritt 5 (optional): Dashboard erstellen

Für eine übersichtliche Darstellung mehrerer Werte einer Box (oder mehrerer Boxen) gemeinsam:

  1. Zu Dashboards wechseln → „New Dashboard“
  2. Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
  3. Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und CO2-Verlauf nebeneinander)
  4. Dashboard speichern und ggf. über „Make public“ auch ohne Login einsehbar machen (z. B. für einen Klassenraum-Bildschirm)

Stolpersteine

  • Input-Feld heißt anders als erwartet: Die Feldnamen im JSON (F_rel, T_C, P_hPa, CO2_ppm, PM25, PM10, H_bit) müssen exakt mit denen im Sketch übereinstimmen – Groß-/Kleinschreibung wird unterschieden. Bei Unsicherheit den Sketch-Quellcode (Funktion sendData) als Referenz nutzen
  • Feed zeigt „no data“ trotz laufender Box: Meist wurde der Prozess „Log to feed“ nicht korrekt mit dem Input-Feld verknüpft – unter Inputs → Zahnrad-Symbol → Prozessliste prüfen, ob der Log-to-feed-Eintrag wirklich vorhanden ist
  • Falsches Interval gewählt: siehe Warnhinweis oben – nur Neuanlage hilft, keine nachträgliche Korrektur möglich
  • Zwei Feeds mit identischem Namen: EmonCMS erlaubt das technisch, führt aber zu Verwirrung bei der späteren Auswertung – eindeutige Namenskonvention (SENSOR_ID + Feldname) von Anfang an einhalten
  • Werte wirken „verzögert“: Bei einem 120-Sekunden-Intervall (Klimamessbox) ist das normal – die Grafik aktualisiert sich nur alle zwei Minuten
QR-Code
QR-Code www-messdatenerfassung-sas:sensoren_einbinden (erstellt für aktuelle Seite)