Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
www-messdatenerfassung-sas:sensoren_einbinden [2026/10/22 10:22] – bieblwww-messdatenerfassung-sas:sensoren_einbinden [2026/10/22 10:23] (aktuell) – biebl
Zeile 180: Zeile 180:
   * **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 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   * **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 ====== 
- 
- 
-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 
- 
-<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 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. 
- 
----- 
- 
-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> 
- 
-  - 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): **300 Sekunden (5 Min.)** 
-    * 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:** 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 
-  * **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: 
-<code> 
-sudo nano /var/www/emoncms/settings.ini 
-</code> 
-    Im Abschnitt ''[input]'' die Zeile ''max_node_id_limit'' ergänzen bzw. ändern (z. B. auf 100): 
-<code> 
-[input] 
-max_node_id_limit = 100 
-</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“ 
-  * **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 
-  * Wenn ein D1 ausgetauscht wird, so dass eine andere MAC-Adresse unter der IP auftaucht, dann sollte diese im RASPI gelöscht werden, um Verbindungsaussetzer zu vermeiden 
-    * <code> sudo ip neigh flush 192.168.1.207</code> 
  
 ====== Copyright (C) 2025 Biebl/Sankt-Ansgar-Schule Hamburg ====== ====== Copyright (C) 2025 Biebl/Sankt-Ansgar-Schule Hamburg ======
QR-Code
QR-Code www-messdatenerfassung-sas:sensoren_einbinden (erstellt für aktuelle Seite)