====== Sensoren in EmonCMS einbinden ======
^ Seite ^ Inhalt | |
| [[www-messdatenerfassung-sas:startseite|Startseite]] | Übersicht | |
| [[www-messdatenerfassung-sas:klimastation|Hauptanleitung]] | Gesamtüberblick, Begriffsklärung, Teil 1–3 (FRITZ!Box, Raspberry Pi/EmonCMS, Sensor-Boxen), Ein-/Ausschalten, Zugänge-Checkliste, SENSOR_ID-Übersicht | |
| [[www-messdatenerfassung-sas:sensoren_einbinden|Sensoren in EmonCMS einbinden]] | **Wiederkehrender Ablauf für jede neue Sensor-Box: API-Key, Inputs, Feeds, Dashboard** | |
| [[www-messdatenerfassung-sas:sensor_code|Programmcode der Sensor-Boxen]] | Vollständiger Arduino-Code: Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox | |
| [[www-messdatenerfassung-sas:raspi_rtc_hw111|Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111]] | Nachrüstung eines DS1307-RTC-Moduls, Shutdown-Taster | |
| [[Platinenschaltung|Schaltung]] | Platine | |
| [[3D-Gehäuse|Gehäuse]] | 3D-Druck oder LASER-Cutter | |
| [[Unterrichtseinsatz|Schule]] | Einsatz im Unterricht | |
| [[Sonstiges|Sonstiges]] | dies und das.... | |
Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des [[https://wiki.gymsas.de/doku.php?id=www-messdatenerfassung-sas:sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck3|einfachen BME280-Testsensors]], siehe [[www-messdatenerfassung-sas:startseite|Hauptanleitung]] und [[sensor_code|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 =====
- In EmonCMS einloggen (Standard: Benutzername ''emonsd'', siehe Hauptanleitung Teil 2)
- Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → **„My Account“**
- alternativ direkt die Adresse ''http://[IP-Adresse-des-Pi]/user/view'' aufrufen, z. B. ''http://192.168.1.2/user/view''
- 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
- 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 [[sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.
----
Nachdem der [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|Testsensor]] läuft, kann EmonCMS eingerichtet werden:
===== Schritt 2: Prüfen, ob die Messdaten ankommen =====
Der Testsensor [[sensor_code#serieller_monitor|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
- In EmonCMS zu [[http://192.168.1.2/input/view|**Inputs**]] wechseln
- 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“)
- 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:
- Bei **Inputs** neben dem gewünschten Feld (z. B. ''T_C'') auf das Zahnrad-/Stift-Symbol klicken
- Bei „Add feed to log“ bzw. über den Prozess **„Log to feed“** einen neuen Feed erstellen → **„CREATE NEW“**
- 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
- Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. ''100_T_C'' – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
- **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 =====
- Zu **Feeds** wechseln (linke Navigation)
- Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich regelmäßig aktualisierenden „Last value“
- 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
- 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:
- Zu **Dashboards** wechseln → **„New Dashboard“**
- Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
- Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
- 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 [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|einfachen BME280-Testsensors]], siehe [[www-messdatenerfassung-sas:startseite|Hauptanleitung]] und [[sensor_code|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 =====
- In EmonCMS einloggen (Standard: Benutzername ''emonsd'', siehe Hauptanleitung Teil 2)
- Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → **„My Account“**
- alternativ direkt die Adresse ''http://[IP-Adresse-des-Pi]/user/view'' aufrufen, z. B. ''http://192.168.1.2/user/view''
- 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
- 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 [[sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.
----
Nachdem der [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|Testsensor]] läuft, kann EmonCMS eingerichtet werden:
===== Schritt 2: Prüfen, ob die Messdaten ankommen =====
Der Testsensor [[sensor_code#serieller_monitor|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
- In EmonCMS zu [[http://192.168.1.2/input/view|**Inputs**]] wechseln
- 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“)
- 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:
- Bei **Inputs** neben dem gewünschten Feld (z. B. ''T_C'') auf das Zahnrad-/Stift-Symbol klicken
- Bei „Add feed to log“ bzw. über den Prozess **„Log to feed“** einen neuen Feed erstellen → **„CREATE NEW“**
- 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
- Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. ''100_T_C'' – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
- **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 =====
- Zu **Feeds** wechseln (linke Navigation)
- Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich regelmäßig aktualisierenden „Last value“
- 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
- 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:
- Zu **Dashboards** wechseln → **„New Dashboard“**
- Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
- Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
- 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 [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|einfachen BME280-Testsensors]], siehe [[www-messdatenerfassung-sas:startseite|Hauptanleitung]] und [[sensor_code|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)
- Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → **„My Account“**
- alternativ direkt die Adresse http:///user/view aufrufen, z. B. http://192.168.1.2/user/view
- 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
- 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 [[sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.
----
Nachdem der [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|Testsensor]] läuft, kann EmonCMS eingerichtet werden:
===== Schritt 2: Prüfen, ob die Messdaten ankommen =====
Der Testsensor [[sensor_code#serieller_monitor|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
- In EmonCMS zu [[http://192.168.1.2/input/view|**Inputs**]] wechseln
- 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“)
- 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:
- Bei **Inputs** neben dem gewünschten Feld (z. B. ''T_C'') auf das Zahnrad-/Stift-Symbol klicken
- Bei „Add feed to log“ bzw. über den Prozess **„Log to feed“** einen neuen Feed erstellen → **„CREATE NEW“**
- 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
- Name wird automatisch aus SENSOR_ID + Feldname vorgeschlagen, z. B. ''100_T_C'' – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)
- **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 =====
- Zu **Feeds** wechseln (linke Navigation)
- Dort sollten nun alle drei neu angelegten Feeds des Testsensors auftauchen, mit einem sich alle 30 Sekunden aktualisierenden „Last value“
- 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:
- Zu **Dashboards** wechseln → **„New Dashboard“**
- Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
- Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und Luftdruck-Verlauf des Testsensors nebeneinander)
- 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 [[www-messdatenerfassung-sas:startseite|Hauptanleitung]] und [[sensor_code|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)
- Oben rechts auf den Benutzernamen bzw. das Konto-Symbol klicken → **„My Account“**
- alternativ direkt die Adresse http:///user/view aufrufen, z. B. http://192.168.1.2/user/view
- 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
- 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 [[sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Box neu starten.
----
Nachdem der erste [[sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|Messsensor]] läuft, kann EMONCMS angepasst werden:
===== Schritt 2: Prüfen, ob die Messdaten ankommen =====
der [[sensor_code#serieller_monitor|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
- In EmonCMS zu **Inputs** wechseln [[http://192.168.1.2/input/view|EMONCMS INPUT]]
- 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“)
- 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:
- Bei **Inputs** neben dem gewünschten Feld (z. B. ''T_C'') auf das Zahnrad-/Stift-Symbol klicken
- Bei „Add feed to log“ bzw. über den Prozess **„Log to feed“** einen neuen Feed erstellen
- Feed-Engine: **PHPFina** (Standard, empfohlen)
- **Interval unbedingt korrekt setzen** – abhängig vom Boxtyp:
* Klimamessbox (Außenbereich): **120 Sekunden**
* Raummessbox (Innenbereich): **20 Sekunden**
- Feed-Namen sinnvoll vergeben, z. B. ''134_T_C'' (SENSOR_ID + Feldname), damit bei vielen Boxen der Überblick erhalten bleibt
- 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 =====
- Zu **Feeds** wechseln (linke Navigation)
- Dort sollten nun alle neu angelegten Feeds auftauchen, mit einem sich alle 20 bzw. 120 Sekunden aktualisierenden „Last value“
- 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:
- Zu **Dashboards** wechseln → **„New Dashboard“**
- Über den Editor „Graph“- oder „Value“-Widgets hinzufügen, jeweils mit dem gewünschten Feed verknüpfen
- Mehrere Widgets lassen sich frei auf der Fläche anordnen (z. B. Temperatur- und CO2-Verlauf nebeneinander)
- 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