Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
www-messdatenerfassung-sas:sensoren_einbinden [2026/09/12 15:47] – [Sensoren in EmonCMS einbinden] bieblwww-messdatenerfassung-sas:sensoren_einbinden [2026/10/22 10:23] (aktuell) – biebl
Zeile 1: Zeile 1:
 ====== Sensoren in EmonCMS einbinden ======  ====== Sensoren in EmonCMS einbinden ====== 
 +{{:www-fuer-alle:raumklima-105-box-geschlossen.png?200|}}{{:www-fuer-alle:klimabox-aussen-2025-05.png?200|}}
  
 ^ Seite                                                                                                ^ Inhalt                                                                                                                                                 |   | ^ Seite                                                                                                ^ Inhalt                                                                                                                                                 |   |
Zeile 12: Zeile 12:
 | [[Unterrichtseinsatz|Schule]]                                                                        | Einsatz im Unterricht                                                                                                                                  |   | | [[Unterrichtseinsatz|Schule]]                                                                        | Einsatz im Unterricht                                                                                                                                  |   |
 | [[Sonstiges|Sonstiges]]                                                                              | dies und das....                                                                                                                                       |   | | [[Sonstiges|Sonstiges]]                                                                              | dies und das....                                                                                                                                       |   |
 +====== Sensoren in EmonCMS einbinden ====== 
  
- +Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des [[biebl:anleitungen:sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|einfachen BME280-Testsensors]], siehe [[biebl:anleitungen:klimastation|Hauptanleitung]] und [[biebl:anleitungen: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.
-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 [[biebl:anleitungen: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. **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 ===== ===== Schritt 1: API-Key besorgen =====
Zeile 161: Zeile 162:
     * **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     * **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     * 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 +  * **Ab dem 33. Sensor erscheint kein neuer Input, in der seriellen Ausgabe steht „Reached the maximal allowed number of different NodeIds, limit is 32. Node '138' was ignored.“:** EmonCMS erlaubt standardmäßig nur **32 verschiedene Nodes pro Benutzerkonto** (jede ''SENSOR_ID'' ist ein eigener Node). Der Server antwortet dabei trotzdem mit HTTP 200 – der Fehler steht nur im Antworttext. Die Daten des abgewiesenen Sensors werden verworfen. Das Limit lässt sich auf dem Pi erhöhen:
-  * **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 [[biebl:anleitungen:sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|einfachen BME280-Testsensors]], siehe [[biebl:anleitungen:klimastation|Hauptanleitung]] und [[biebl:anleitungen: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 +
 <code> <code>
-Verwechslungsgefahr: Unter Administration/Setup gibt es eine +sudo nano /var/www/emoncms/settings.ini
-"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).+
 </code> </code>
 +    Im Abschnitt ''[input]'' die Zeile ''max_node_id_limit'' ergänzen bzw. ändern (z. B. auf 100):
 <code> <code>
-Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System +[input] 
-und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt +max_node_id_limit = 100
-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.+
 </code> </code>
- +    Speichern und den Webserver neu starten: ''sudo systemctl restart apache2''. Bereits eingebundene Sensoren bleiben unverändert, der abgewiesene Sensor erscheint nach der nächsten Sendung unter „Inputs“ 
-Diesen Wert im Sketch des Testsensors eintragen (siehe [[biebl:anleitungen:sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten. +  * **Neuer oder ausgetauschter ESP mit bereits verwendeter SENSOR_ID: Die ersten Sendungen scheitern mit „code=-1 (connection failed)“, obwohl das WLAN verbunden ist, und nach 1–3 Minuten läuft es von selbst:** Wahrscheinliche Ursache ist ein veralteter Eintrag in der ARP-Tabelle des Pi. Er kennt für die IP-Adresse (192.168.1.SENSOR_ID) noch die MAC-Adresse des früheren Geräts und schickt die Antworten dorthin. Abhilfe per SSH auf dem Pi (IP durch die des betroffenen Sensors ersetzen):
- +
----- +
- +
-Nachdem der [[biebl:anleitungen: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 [[biebl:anleitungen:sensor_code#serieller_monitor|sendet erfolgreich]], erkennbar am seriellen Monitor:+
 <code> <code>
-13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa +ip neigh show 192.168.1.207 
-13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa +sudo ip neigh flush 192.168.1.207
-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+
 </code> </code>
- +    Der erste Befehl zeigt den gespeicherten Eintrag; steht dort eine andere MAC-Adresse als die des neuen ESP, ist das die Bestätigung. Nach dem ''flush'' den ESP neu starten – Versuch 1 klappt dann sofort. Ohne Eingriff lösen die Wiederholversuche des Sketches das Problem meist von selbst, es entstehen aber Lücken in der Aufzeichnung
-  - 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'' +
- +
-<code> +
-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. +
-</code> +
- +
-<code> +
-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) +
-</code> +
- +
----- +
- +
-===== 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** +
- +
-<code> +
-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. +
-</code> +
- +
-<code> +
-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. +
-</code> +
- +
-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 +
- +
-<code> +
-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. +
-</code> +
- +
----- +
- +
-===== 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   * **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 +  * **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
- +
------------------------------------------------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 [[biebl:anleitungen:sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|einfachen BME280-Testsensors]], siehe [[biebl:anleitungen:klimastation|Hauptanleitung]] und [[biebl:anleitungen: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 <code>http://<Pi-IP>/user/view</code> aufrufen, z. B. <code>http://192.168.1.2/user/view</code> +
-  - 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 +
  
 +====== Copyright (C) 2025 Biebl/Sankt-Ansgar-Schule Hamburg ======
 <code> <code>
-Verwechslungsgefahr: Unter Administration/Setup gibt es eine +"Klimamessstation für Schulen" von Martin Biebl/Sankt-Ansgar-Schule Hamburg, 
-"Server Information"-Seite mit vielen Systemdaten - dort steht +lizenziert unter CC BY-SA 4.0 
-KEIN API-Key! Der Key findet sich ausschließlich unter "My Account" +(https://creativecommons.org/licenses/by-sa/4.0/)
-(bzw. der /user/view-Seite des jeweiligen Benutzerkontos).+
 </code> </code>
  
 <code> <code>
-Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System +Diese Programme sind freie Software: Sie können es unter den 
-und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt +Bedingungen der GNU General Public License, wie von der Free 
-prüfen, bei welcher Installation man gerade eingeloggt ist - die +Software Foundation veröffentlicht, weitergeben und/oder 
-Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi. +modifizieren, entweder gemäß Version 3 der Lizenz oder (nach 
-Ein Key vom Produktiv-System darf niemals in Test- oder +Ihrer Wahl) jeder späteren Version.
-Entwicklungs-Sketches landen. +
-</code>+
  
-Diesen Wert im Sketch des Testsensors eintragen (siehe [[biebl:anleitungen:sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.+Die Veröffentlichung dieser Programme erfolgt in der Hoffnung, 
 +dass es Ihnen von Nutzen sein wird, aber OHNE JEDE GEWÄHRLEISTUNG, 
 +sogar ohne die implizite Gewährleistung der MARKTFÄHIGKEIT oder 
 +EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der 
 +GNU General Public License.
  
----- +Vollständiger Lizenztext: https://www.gnu.org/licenses/gpl-3.0.de.html
- +
-Nachdem der [[biebl:anleitungen: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 [[biebl:anleitungen:sensor_code#serieller_monitor|sendet erfolgreich]], erkennbar am seriellen Monitor: +
-<code> +
-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+
 </code> </code>
- 
-  - 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'' 
- 
-<code> 
-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. 
-</code> 
- 
-<code> 
-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) 
-</code> 
- 
----- 
- 
-===== 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** 
- 
-<code> 
-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. 
-</code> 
- 
-<code> 
-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. 
-</code> 
- 
-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 [[biebl:anleitungen:klimastation|Hauptanleitung]] und [[biebl:anleitungen: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 <code>http://<Pi-IP>/user/view</code> aufrufen, z. B. <code>http://192.168.1.2/user/view</code> 
-  - 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 
- 
-<code> 
-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). 
-</code> 
- 
-<code> 
-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. 
-</code> 
- 
-Diesen Wert im Sketch der Box eintragen (siehe [[biebl:anleitungen:sensor_code|Programmcode-Seite]], Platzhalter ''apikey'' im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Box neu starten. 
----- 
- 
-Nachdem der erste [[biebl:anleitungen:sensor_code#einfacher_sensornur_bme280_temperatur_luftfeuchtigkeit_luftdruck|Messsensor]] läuft, kann EMONCMS angepasst werden: 
- 
-===== Schritt 2: Prüfen, ob die Messdaten ankommen ===== 
- 
-der [[biebl:anleitungen:sensor_code#serieller_monitor|Sensor sendet erfolgreich]]: 
-<code> 
-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 
-</code> 
- 
- 
-  - 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'' 
- 
-<code> 
-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) 
-</code> 
- 
----- 
- 
-===== 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 
- 
-<code> 
-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. 
-</code> 
- 
-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 
- 
QR-Code
QR-Code www-messdatenerfassung-sas:sensoren_einbinden (erstellt für aktuelle Seite)