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