| Seite | Inhalt | |
|---|---|---|
| Startseite | Übersicht | |
| Hauptanleitung | Gesamtüberblick, Begriffsklärung, Teil 1–3 (FRITZ!Box, Raspberry Pi/EmonCMS, Sensor-Boxen), Ein-/Ausschalten, Zugänge-Checkliste, SENSOR_ID-Übersicht | |
| Sensoren in EmonCMS einbinden | Wiederkehrender Ablauf für jede neue Sensor-Box: API-Key, Inputs, Feeds, Dashboard | |
| Programmcode der Sensor-Boxen | Vollständiger Arduino-Code: Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox | |
| Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111 | Nachrüstung eines DS1307-RTC-Moduls, Shutdown-Taster | |
| Schaltung | Platine | |
| Gehäuse | 3D-Druck oder LASER-Cutter | |
| Schule | Einsatz im Unterricht | |
| Sonstiges | dies und das…. |
Diese Seite beschreibt den Ablauf, um einen bereits fertig verkabelten und geflashten Sensor (hier durchgängig am Beispiel des einfachen BME280-Testsensors, siehe Hauptanleitung und Sensorcode) in EmonCMS sichtbar zu machen und seine Messwerte dauerhaft aufzuzeichnen. Genau derselbe Ablauf wiederholt sich später bei jeder neuen Sensor-Box (Klimamessbox, Raummessbox) – nur die Anzahl der Datenfelder und das passende Feed-Interval unterscheiden sich.
Voraussetzung: Der Testsensor ist fertig konfiguriert (eigene SENSOR_ID, eigener API-Key eingetragen, siehe Hauptanleitung Teil 3 bzw. Sensorcode-Seite) und mit Strom versorgt.
emonsd, siehe Hauptanleitung Teil 2)http://[IP-Adresse-des-Pi]/user/view aufrufen, z. B. http://192.168.1.2/user/viewinput/post.json)Verwechslungsgefahr: Unter Administration/Setup gibt es eine "Server Information"-Seite mit vielen Systemdaten - dort steht KEIN API-Key! Der Key findet sich ausschließlich unter "My Account" (bzw. der /user/view-Seite des jeweiligen Benutzerkontos).
Wichtig bei mehreren EmonCMS-Installationen (z. B. Produktiv-System und separater Test-/Entwicklungs-Pi): Vor dem Kopieren unbedingt prüfen, bei welcher Installation man gerade eingeloggt ist - die Adressleiste des Browsers zeigt die IP-Adresse des jeweiligen Pi. Ein Key vom Produktiv-System darf niemals in Test- oder Entwicklungs-Sketches landen.
Diesen Wert im Sketch des Testsensors eintragen (siehe Programmcode-Seite, Platzhalter apikey im jeweils aktiven Netzwerk-Bereich A/B/C), Sketch neu hochladen, Testsensor neu starten.
Nachdem der Testsensor läuft, kann EmonCMS eingerichtet werden:
Der Testsensor sendet erfolgreich, erkennbar am seriellen Monitor:
13:14:53.275 -> [HTTP] code=200 | T=25.00°C F=49.4% P=1015.0hPa 13:15:23.311 -> [HTTP] code=200 | T=24.97°C F=48.7% P=1014.9hPa 13:15:53.373 -> [HTTP] code=200 | T=24.93°C F=48.5% P=1014.9hPa 13:16:23.428 -> [HTTP] code=200 | T=24.91°C F=48.4% P=1014.9hPa 13:16:53.451 -> [HTTP] code=200 | T=24.90°C F=48.5% P=1015.0hPa
SENSOR_ID des Testsensors (in diesem Beispiel „100“)T_C, F_rel, P_hPaHinweis 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)
Für jedes Datenfeld, das dauerhaft gespeichert und später als Diagramm angezeigt werden soll, wird ein eigener Feed angelegt:
T_C) auf das Zahnrad-/Stift-Symbol klicken100_T_C – so übernehmen (gute, eindeutige Namenskonvention bei vielen Sensoren)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).
/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 KurveLü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.
Für eine übersichtliche Darstellung mehrerer Werte des Testsensors (oder später mehrerer Boxen) gemeinsam:
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 nutzennull) – das Diagramm wirkt lückenhaft/gezacktMESSINTERVALL_MS/Schreibpause-Wert im jeweiligen Sketch entsprechenSENSOR_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:sudo nano /var/www/emoncms/settings.ini
Im Abschnitt ''[input]'' die Zeile ''max_node_id_limit'' ergänzen bzw. ändern (z. B. auf 100):
[input] max_node_id_limit = 100
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“ * **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):
ip neigh show 192.168.1.207 sudo ip neigh flush 192.168.1.207
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 * **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
"Klimamessstation für Schulen" von Martin Biebl/Sankt-Ansgar-Schule Hamburg, lizenziert unter CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
Diese Programme sind freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version. 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