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:klimastation [2026/09/12 13:12] – bieblwww-messdatenerfassung-sas:klimastation [2026/10/19 19:53] (aktuell) – biebl
Zeile 1: Zeile 1:
 ====== Eigene Klimamessstation für Schulen: Nachbauanleitung ====== ====== Eigene Klimamessstation für Schulen: Nachbauanleitung ======
  
-  * [[www-messdatenerfassung-sas:]]+{{:www-fuer-alle:raumklima-105-box-geschlossen.png?200|}}{{:www-fuer-alle:klimabox-aussen-2025-05.png?200|}} 
 + 
 +^ 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....| 
 + 
 +====== Eigene Klimamessstation für Schulen: Nachbauanleitung ======
  
 Diese Anleitung beschreibt den vollständigen Aufbau eines eigenständigen, WLAN-basierten Sensornetzwerks zur Erfassung von Klima- und Raumluftdaten, wie es an der Sankt-Ansgar-Schule Hamburg im Rahmen der Nachhaltigkeits-AG eingesetzt wird. Das System ist bewusst **ohne Internetzugang** und **ohne Abhängigkeit von der Schul-IT** aufgebaut – es funktioniert als geschlossenes Inselnetz und kommt größtenteils mit gebrauchter/ausgemusterter Hardware aus (Ausnahme: der Raspberry Pi, der als günstige Neuanschaffung eingeplant werden sollte). Diese Anleitung beschreibt den vollständigen Aufbau eines eigenständigen, WLAN-basierten Sensornetzwerks zur Erfassung von Klima- und Raumluftdaten, wie es an der Sankt-Ansgar-Schule Hamburg im Rahmen der Nachhaltigkeits-AG eingesetzt wird. Das System ist bewusst **ohne Internetzugang** und **ohne Abhängigkeit von der Schul-IT** aufgebaut – es funktioniert als geschlossenes Inselnetz und kommt größtenteils mit gebrauchter/ausgemusterter Hardware aus (Ausnahme: der Raspberry Pi, der als günstige Neuanschaffung eingeplant werden sollte).
Zeile 48: Zeile 61:
   - [[#wichtige-zugaenge-checkliste|Wichtige Zugänge – Checkliste]] – welche vier Zugänge bei der Installation gesetzt werden (NICHT öffentlich mit echten Passwörtern pflegen!)   - [[#wichtige-zugaenge-checkliste|Wichtige Zugänge – Checkliste]] – welche vier Zugänge bei der Installation gesetzt werden (NICHT öffentlich mit echten Passwörtern pflegen!)
   - [[biebl:anleitungen:sensoren_einbinden|Sensoren in EmonCMS einbinden]] – eigene Seite mit dem wiederkehrenden Ablauf für jede neue Box (API-Key, Inputs, Feeds, Dashboard)   - [[biebl:anleitungen:sensoren_einbinden|Sensoren in EmonCMS einbinden]] – eigene Seite mit dem wiederkehrenden Ablauf für jede neue Box (API-Key, Inputs, Feeds, Dashboard)
-  - [[biebl:anleitungen:sensor_code|Programmcode der Sensor-Boxen]] – eigene Seite mit dem vollständigen Arduino-Code (Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox)+  - [[biebl:anleitungen:sensor_code|Programmcode der Sensor-Boxen]] – eigene Seite mit dem vollständigen Arduino-Code (Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox, Temperatursensor Innen/Außen)
   - [[biebl:anleitungen:raspi_rtc_hw111|Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111]] – eigene Seite zur Nachrüstung eines DS1307-RTC-Moduls gegen Zeitversatz nach Neustarts   - [[biebl:anleitungen:raspi_rtc_hw111|Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111]] – eigene Seite zur Nachrüstung eines DS1307-RTC-Moduls gegen Zeitversatz nach Neustarts
   - [[#sicheres-ein--und-ausschalten-des-gesamtsystems|Sicheres Ein- und Ausschalten des Gesamtsystems]] – wichtig für den Koffer-/mobilen Einsatz   - [[#sicheres-ein--und-ausschalten-des-gesamtsystems|Sicheres Ein- und Ausschalten des Gesamtsystems]] – wichtig für den Koffer-/mobilen Einsatz
Zeile 604: Zeile 617:
 erleichtert das die spätere Übersicht erheblich. erleichtert das die spätere Übersicht erheblich.
 </code> </code>
-===== Begriffsklärung: "Klima" oder doch etwas anderes? ===== +====== Copyright (C) 2025 Biebl/Sankt-Ansgar-Schule Hamburg ======
- +
-Der Name „Klimastation" hat sich für dieses Projekt eingebürgert, ist aber fachlich nicht ganz präzise – das lohnt sich, Schülerinnen und Schülern gleich zu Beginn zu erklären: +
- +
-**Klima** bezeichnet in der Wissenschaft statistische **Langzeitmuster** des Wetters – die Weltorganisation für Meteorologie (WMO) definiert Klima über Mittelwerte aus mindestens 30 Jahren. Was die Sensor-Boxen hier tatsächlich liefern, sind dagegen **Momentanwerte einzelner Messgrößen**: Temperatur, Luftfeuchtigkeit, Luftdruck, CO2-Gehalt, Feinstaub und Helligkeit, aufgezeichnet alle 20 bis 300 Sekunden. Das ist fachlich korrekt als **Wetter-** bzw. **Umweltdaten** zu bezeichnen (genauer: eine Mischung aus meteorologischen Größen und Luftqualitätsdaten) – nicht als Klimadaten im engeren Sinn. Erst wenn diese Werte über sehr lange Zeiträume gemittelt und ausgewertet würden, ließe sich daraus etwas über das lokale Klima ableiten. +
- +
-Der Begriff **„Raumklima"** (für die Innenraum-Messungen der Raummessbox) ist davon ausgenommen – er ist im Deutschen ein etablierter, fachlich anerkannter Begriff aus der Gebäudetechnik für genau die hier gemessenen Größen (Temperatur, Feuchte, CO2 in Innenräumen). +
 <code> <code>
-Kurz gesagt: Trotz des Namens "Klimastation" erfassen die Boxen +"Klimamessstation für Schulen" von Martin Biebl/Sankt-Ansgar-Schule Hamburg, 
-keine Klimadaten im engeren Sinn, sondern lokale Wetter- und +lizenziert unter CC BY-SA 4.0 
-Luftqualitätsdaten - als praktischer Beitrag zur Umweltbildung und +(https://creativecommons.org/licenses/by-sa/4.0/)
-zum Verständnis der eigenen Umgebung. Der Projektname wird trotzdem +
-beibehalten, da er im Bildungskontext etabliert und gut verständlich +
-ist.+
 </code> </code>
  
 <code> <code>
-Hinweis: DokuWiki erzeugt bei mehr als drei Überschriften automatisch +Diese Programme sind freie Software: Sie können es unter den 
-ein Inhaltsverzeichnis rechts auf der Seite. Falls das aus irgendeinem +Bedingungen der GNU General Public License, wie von der Free 
-Grund nicht erscheint, mit ~~NOTOC~~ am Seitenanfang unterdrücken +Software Foundation veröffentlicht, weitergeben und/oder 
-lässt sich das TOC steuern; hier zusätzlich eine kurze manuelle +modifizieren, entweder gemäß Version 3 der Lizenz oder (nach 
-Übersicht für den schnellen Einstieg: +Ihrer Wahl) jeder späteren Version.
-</code>+
  
-**Inhaltsübersicht:**+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.
  
-  - [[#begriffsklaerung-klima-oder-doch-etwas-anderes|Begriffsklärung: "Klima" oder doch etwas anderes?]] – fachliche Einordnung für den Unterricht +Vollständiger Lizenztext: https://www.gnu.org/licenses/gpl-3.0.de.html
-  - [[#teil-1-fritzbox-als-isoliertes-sensor-wlan-einrichten|Teil 1: FRITZ!Box als isoliertes Sensor-WLAN einrichten]] – Werksreset, WLAN-Konfiguration, IP-Adressbereich +
-  - [[#teil-2-raspberry-pi-3-mit-emoncms|Teil 2: Raspberry Pi 3 mit EmonCMS]] – Image, Ersteinrichtung, feste IP, RTC-Modul gegen Zeitversatz +
-  - [[#teil-3-sensor-boxen-klimamessbox-raummessbox|Teil 3: Sensor-Boxen]] – Klimamessbox (Außenbereich) und Raummessbox (Innenbereich) +
-  - [[#fotos-und-schaltplaene|Fotos & Schaltpläne]] – noch zu ergänzende Bilddokumentation +
-  - [[#uebersicht-vergebener-sensor-ids|Übersicht vergebener SENSOR_IDs]] – Vorlage zur Konfliktvermeidung bei mehreren Boxen +
-  - [[#wichtige-zugaenge-checkliste|Wichtige Zugänge – Checkliste]] – welche vier Zugänge bei der Installation gesetzt werden (NICHT öffentlich mit echten Passwörtern pflegen!) +
-  - [[biebl:anleitungen:sensoren_einbinden|Sensoren in EmonCMS einbinden]] – eigene Seite mit dem wiederkehrenden Ablauf für jede neue Box (API-Key, Inputs, Feeds, Dashboard) +
-  - [[biebl:anleitungen:sensor_code|Programmcode der Sensor-Boxen]] – eigene Seite mit dem vollständigen Arduino-Code (Testsensor, einfacher BME280-Sensor, Klimamessbox, Raummessbox) +
-  - [[biebl:anleitungen:raspi_rtc_hw111|Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111]] – eigene Seite zur Nachrüstung eines DS1307-RTC-Moduls gegen Zeitversatz nach Neustarts +
-  - [[#sicheres-ein--und-ausschalten-des-gesamtsystems|Sicheres Ein- und Ausschalten des Gesamtsystems]] – wichtig für den Koffer-/mobilen Einsatz +
- +
-<code> +
-Hinweis zu den Sprungmarken: DokuWiki erzeugt Anker automatisch aus +
-den Überschriften (Kleinschreibung, Leerzeichen → Bindestriche, +
-Sonderzeichen entfernt). Sollte ein Link nach dem Einfügen ins Wiki +
-nicht funktionieren, den Anker-Namen einmal über die tatsächlich +
-erzeugte Überschrift im Wiki prüfen und ggf. anpassen. +
-</code> +
- +
----- +
- +
-===== Teil 1: FRITZ!Box als isoliertes Sensor-WLAN einrichten ===== +
- +
-Für dieses Projekt braucht es **keinen Internetanschluss** und **kein aktuelles Router-Modell**. Fast jede Schule hat irgendwo eine ausrangierte FRITZ!Box im Schrank liegen – genau die wird hier zur reinen WLAN-Basisstation für das Sensornetz. +
- +
-In diesem Beispiel: eine **FRITZ!Box WLAN 3370** (Dual-Band N-Router, Baujahr ca. 2011), deren Zugangsdaten nicht mehr bekannt sind. +
- +
-==== Warum eine alte, "nutzlose" FRITZ!Box perfekt geeignet ist ==== +
- +
-  * Sie muss **nicht** ans Internet/DSL angeschlossen werden – sie funktioniert als reine WLAN-Basisstation im lokalen Netz +
-  * Kein Zugriff von außen möglich, da kein Internet-Uplink besteht → datenschutz- und sicherheitstechnisch unkritisch +
-  * Alte Geräte unterstützen meist zuverlässig 2,4 GHz – genau das, was ESP8266/ESP32 brauchen +
-  * Nachhaltiger Zweitnutzen für Geräte, die sonst im Elektroschrott landen würden +
- +
-==== Schritt 1: Werksreset ohne bekanntes Passwort ==== +
- +
-**Wichtiger Hinweis zur FRITZ!Box 3370:** Dieses Modell hat – anders als viele andere FRITZ!Box-Router – **keinen externen Reset-Knopf** und **keinen Telefonanschluss** (FON/DECT), über den sich sonst per Tastencode ein Reset auslösen ließe. Zwei Wege haben sich bewährt: +
- +
-**Weg A – AVM-Wiederherstellungsprogramm (getestet, funktioniert zuverlässig):** +
- +
-  - Auf ''download.avm.de/fritzbox/'' das eigene Modell auswählen, dann in den Ordner ''deutschland'' und weiter in den Unterordner ''recover'' wechseln +
-  - Die passende ''.exe''-Datei herunterladen (Namensschema z. B. ''fritz.box_wlan_3370-06.56.recover.exe'' – die Versionsnummer im Dateinamen kann je nach zuletzt installierter Firmware variieren) – das Tool läuft nur unter **Windows** +
-  - FRITZ!Box per LAN-Kabel direkt mit dem Windows-Rechner verbinden (kein Switch/Hub dazwischen) +
-  - Die Windows-Firewall kurzzeitig deaktivieren, falls das Tool die Box nicht findet +
-  - Das Wiederherstellungsprogramm starten und den Anweisungen folgen – es spielt die Firmware neu auf und versetzt die Box in den Auslieferungszustand +
-  - Die FRITZ!Box startet danach neu (einige Minuten); anschließend ist sie ohne Passwort erreichbar +
- +
-**Weg B – „Kennwort vergessen?“ über die Bedienoberfläche (kein Windows-Rechner nötig, ggf. einen Versuch wert, bevor man das Recovery-Tool lädt):** +
- +
-  - FRITZ!Box **für 1 Minute vom Stromnetz trennen**, dann wieder anschließen +
-  - **Innerhalb der nächsten 10 Minuten** die Bedienoberfläche aufrufen – ''http://fritz.box'', ''http://192.168.178.1'' oder Notfall-IP ''http://169.254.1.1'' +
-  - Auf **„Kennwort vergessen?“** klicken, dann **„Werkseinstellungen wiederherstellen“** +
-  - Nach dem Neustart (1–2 Minuten) ist die Oberfläche ohne Passwort erreichbar +
- +
-=== PC unter Linux mit der FRITZ!Box verbinden === +
- +
-Damit die Bedienoberfläche im Browser überhaupt erreichbar ist, muss der Rechner per **LAN-Kabel** (nicht WLAN) verbunden sein und eine IP-Adresse im selben Subnetz wie die FRITZ!Box haben. +
- +
-**Zuerst probieren – meist reicht das schon:** Direkt nach dem Werksreset verteilt die Box selbst per DHCP Adressen im Bereich 192.168.178.20–200. Bei aktivem NetworkManager (Standard unter Kubuntu) genügt es normalerweise, das LAN-Kabel einzustecken – der Rechner bekommt automatisch eine passende IP, und ''http://192.168.178.1'' bzw. ''http://fritz.box'' ist direkt erreichbar. +
- +
-Falls das nicht klappt (z. B. weil nur die Notfall-IP reagiert, oder DHCP der Box gerade nicht läuft), muss die IP manuell gesetzt werden. Zunächst den Namen der LAN-Schnittstelle ermitteln: +
- +
-<code> +
-ip link +
-</code> +
- +
-(üblich sind Namen wie ''eth0'', ''enp0s25'' oder bei USB-Adaptern ''enx...''; im Folgenden als Platzhalter ''IFACE'' verwendet) +
- +
-**Variante A – schnell & temporär (bis zum nächsten Kabel-Stecken oder Neustart):** +
- +
-<code> +
-sudo ip addr flush dev IFACE +
-sudo ip addr add 169.254.1.2/16 dev IFACE +
-sudo ip link set IFACE up +
-</code> +
- +
-Danach im Browser ''http://169.254.1.1'' aufrufen. Für den regulären Adressbereich stattdessen: +
- +
-<code> +
-sudo ip addr add 192.168.178.20/24 dev IFACE +
-</code> +
- +
-und ''http://192.168.178.1'' aufrufen. +
- +
-**Variante B – über NetworkManager (nmcli), als eigenes wiederverwendbares Profil:** +
- +
-<code> +
-nmcli connection add type ethernet ifname IFACE con-name fritzbox-reset \ +
-  ipv4.method manual ipv4.addresses 192.168.178.20/24 +
-nmcli connection up fritzbox-reset +
-</code> +
- +
-Nach getaner Arbeit wieder aufräumen: +
- +
-<code> +
-nmcli connection down fritzbox-reset +
-nmcli connection delete fritzbox-reset +
-</code> +
- +
-**Variante C – grafisch:** Netzwerkeinstellungen → Kabelgebunden → Zahnrad-Symbol → Reiter „IPv4“ → „Manuell“ → Adresse ''192.168.178.20'', Netzmaske ''255.255.255.0'' (bzw. ''/24''), kein Gateway nötig → Anwenden → die LAN-Verbindung einmal aus- und wieder einschalten. +
- +
-**Vor dem Browser-Aufruf testen:** +
- +
-<code> +
-ping -c 3 192.168.178.1 +
-</code> +
- +
-bzw. für die Notfall-IP: +
- +
-<code> +
-ping -c 3 169.254.1.1 +
-</code> +
- +
-Kommt eine Antwort, ist die Bedienoberfläche im Browser erreichbar. +
- +
-Nach erfolgreichem Reset sind Benutzername/Passwort wieder auf Werkszustand, und die Box ist ohne Kennwort erreichbar. +
- +
-==== Schritt 2: Ersteinrichtung ==== +
- +
-  - FRITZ!Box per LAN-Kabel mit einem Computer verbinden (nicht WLAN, für die Ersteinrichtung ist LAN zuverlässiger) +
-  - Im Browser **http://fritz.box** oder **http://192.168.178.1** aufrufen +
-  - Den Einrichtungsassistenten ggf. **abbrechen/überspringen** – ein Internetanschluss wird nicht konfiguriert +
-  - Unter **System → Kennwörter** ein neues, für das Kollegium dokumentierbares Admin-Kennwort vergeben (z. B. im internen, nicht-öffentlichen Wiki-Bereich hinterlegen, NICHT auf der öffentlichen Anleitungsseite!) +
- +
-==== Schritt 3: WLAN konfigurieren – wichtig: 2,4 GHz verwenden ==== +
- +
-Unter **WLAN → Funknetz**: +
- +
-  * **Frequenzband auf 2,4 GHz stellen.** Die FRITZ!Box 3370 funkt wahlweise auf 2,4 GHz ODER 5 GHz (nicht gleichzeitig) – ESP8266- und die meisten ESP32-Boards unterstützen **ausschließlich 2,4 GHz**. Wird versehentlich 5 GHz aktiviert, finden die Sensor-Boards das Netz gar nicht erst. +
-  * SSID vergeben, z. B. ''ARDUINO-MESSNETZ'' +
-  * Verschlüsselung: WPA2 (nicht WPA3, aus Kompatibilitätsgründen mit älteren ESP8266-WLAN-Chips) +
-  * WLAN-Kennwort vergeben und in der (internen) Projektdokumentation festhalten – dieses Kennwort landet später direkt im Arduino-Sketch jedes Sensors +
- +
-==== Schritt 4: Kein Internetzugang – das ist so gewollt ==== +
- +
-Die FRITZ!Box bleibt **ohne DSL-/WAN-Anschluss**. Das hat zwei angenehme Nebeneffekte: +
- +
-  * Die Box versucht zwar im Hintergrund gelegentlich, sich mit dem AVM-Server zu verbinden (Zeitserver, Firmware-Check) – das schlägt ohne WAN-Verbindung einfach folgenlos fehl und kann ignoriert werden +
-  * Optional lassen sich unter **System → Region und Sprache** sowie in den Internet-Einstellungen Cloud-Dienste (MyFRITZ!, Fernzugriff) deaktivieren – notwendig ist das aber nicht, da ohne WAN-Port ohnehin kein Zugriff von außen möglich ist +
- +
-==== Schritt 5: IP-Adressbereich für die Sensoren ==== +
- +
-**Empfehlung: Subnetz auf 192.168.1.x umstellen.** Die FRITZ!Box arbeitet ab Werk im Adressbereich 192.168.178.x. Falls Sensor-Sketches (wie hier) bereits fest auf die IP-Adresse ''192.168.1.2'' für den EmonCMS-Server programmiert sind, lohnt es sich, gleich zu Beginn – **vor** dem Verbinden von Pi und Sensoren – die FRITZ!Box selbst auf das Subnetz 192.168.1.x umzustellen, statt später jeden Sketch anzupassen: +
- +
-  - Unter **Heimnetz → Netzwerk → Netzwerkeinstellungen** auf **„IPv4-Adressen“** klicken +
-  - Die IPv4-Adresse der FRITZ!Box von ''192.168.178.1'' auf **''192.168.1.1''** ändern (Netzmaske ''255.255.255.0'' bleibt gleich) +
-  - Übernehmen – die Box startet neu und ist danach unter ''http://192.168.1.1'' bzw. weiterhin ''http://fritz.box'' erreichbar +
-  - Im Reiter „DHCP-Server“ prüfen, ob sich der Adresspool automatisch angepasst hat (z. B. 192.168.1.20–200), notfalls von Hand nachziehen +
- +
-Unter **Heimnetz → Netzwerk → Netzwerkeinstellungen**: +
- +
-  * Empfehlung: Jedem Gerät (Raspberry Pi, Sensor-Boards) unter **Heimnetz → Netzwerk → Netzwerkverbindungen → Gerät bearbeiten** eine **feste IP-Adresse** zuweisen ("Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen"). Das erleichtert später die Fehlersuche enorm, weil jedes Gerät immer unter derselben Adresse erreichbar ist – der Raspberry Pi mit EmonCMS bekommt dabei sinnvollerweise ''192.168.1.2'' +
- +
-==== Stolpersteine ==== +
- +
-  * **ESP-Board verbindet sich nicht:** Fast immer liegt es am Frequenzband – prüfen, ob die FRITZ!Box wirklich auf 2,4 GHz steht und nicht auf 5 GHz umgeschaltet wurde +
-  * **Kein Reset-Knopf vorhanden:** Bei der 3370 (und einigen anderen Modellen) normal – hier führen nur Weg A (Recovery-Tool) oder Weg B ("Kennwort vergessen") zum Ziel, nicht die klassische "Büroklammer-Methode" +
-  * **Wiederherstellungsprogramm findet die Box nicht:** meist Firewall- oder Antivirus-Software auf dem Windows-Rechner, die die Kommunikation blockiert – kurzzeitig deaktivieren; alternativ direkt (ohne Switch dazwischen) per LAN-Kabel verbinden +
-  * **FRITZ!Box zeigt "Kein Internet"-Fehlermeldungen im Browser-Interface:** normal und unkritisch, da kein WAN-Port belegt ist – einfach ignorieren bzw. Hinweise in der Oberfläche wegklicken +
-  * **Alte FRITZ!OS-Version:** Ein Firmware-Update ist für den reinen WLAN-Basisstationsbetrieb nicht zwingend nötig, kann aber über das AVM-Wiederherstellungsprogramm nachgeholt werden, falls die Oberfläche stark veraltet wirkt +
-  * **Mehrere FRITZ!Boxen im gleichen Schulgebäude:** Falls parallel eine "echte" Schul-FRITZ!Box mit Internet existiert, unbedingt einen anderen WLAN-Kanal wählen (unter WLAN → Funkkanal → Funkkanal-Einstellungen anpassen), um Störungen zu vermeiden, und eine klar unterscheidbare SSID verwenden +
- +
----- +
- +
-===== Teil 2: Raspberry Pi 3 mit EmonCMS ===== +
- +
-Als Basis dient das von der OpenEnergyMonitor-Community gepflegte, fertige **emonSD-Image** – eine vorbereitete Raspberry-Pi-OS-Installation mit vorinstalliertem EmonCMS. Der große Vorteil für den Nachbau ohne Vorkenntnisse: **das Image kann komplett ohne Internetzugang in Betrieb genommen werden**, da es bei fehlender Internet-/LAN-Verbindung beim ersten Start selbstständig einen eigenen WLAN-Zugangspunkt zur Einrichtung aufspannt. +
- +
-==== Wichtig zum Verständnis: Welches Netzwerk braucht mein PC? ==== +
- +
-Für die Einrichtung verwechseln Neulinge leicht zwei völlig unabhängige Netzwerke: +
- +
-  * Das **normale Internet-WLAN** des eigenen Rechners (Zuhause oder im Lehrerzimmer) – wird nur zum Surfen/für diese Anleitung gebraucht und hat mit dem Messnetz **nichts** zu tun +
-  * Das **isolierte Arduino-Messnetz** der FRITZ!Box aus Teil 1 – hier läuft alles, was mit Pi und Sensoren zu tun hat +
- +
-**Wichtig:** Die FRITZ!Box verbindet LAN-Kabel-Anschluss und WLAN intern zu **einem einzigen Netzwerk**. Ein per Kabel an die FRITZ!Box angeschlossener Rechner ist also automatisch im selben Netz wie ein Gerät (z. B. der Pi), das per WLAN mit derselben FRITZ!Box verbunden ist – **unabhängig davon, ob dieser Rechner gleichzeitig noch über WLAN mit einem ganz anderen Netz (z. B. dem Internet) verbunden ist.** Ein Umschalten des eigenen Internet-WLANs ist zur Einrichtung also **nicht** nötig, solange das LAN-Kabel zur FRITZ!Box gesteckt ist. +
- +
-**Konkret zur Einrichtung des Pi:** +
- +
-  - In der FRITZ!Box-Oberfläche (über das LAN-Kabel erreichbar, z. B. ''http://192.168.1.1'') unter **Heimnetz → Netzwerk → Netzwerkverbindungen** die aktuelle IP-Adresse des Eintrags „emonpi" ablesen (z. B. ''192.168.1.5'') +
-  - Im Terminal per SSH verbinden: +
-<code> +
-ssh pi@192.168.1.5 +
-</code> +
-    (die Adresse durch die tatsächlich angezeigte ersetzen) +
-  - Passwort: ''emonsd'' (Standard, unbedingt nach dem ersten Login ändern) +
- +
-==== Schritt 1: Image herunterladen und auf SD-Karte schreiben ==== +
- +
-  - Aktuelles Image von der offiziellen Downloadseite laden: ''docs.openenergymonitor.org/emonsd/download.html'' (aktuell **emonSD-10Mar26**, ca. 2,2 GB, basierend auf Raspberry Pi OS Lite 64-bit; kompatibel mit Raspberry Pi Zero 2, 3B, 3B+, 4 und 5) +
-  - Die ''.zip''-Datei **muss nicht entpackt werden** – sowohl balenaEtcher als auch der Raspberry Pi Imager können direkt mit der ZIP-Datei arbeiten +
-  - Unter Linux (Kubuntu) den Raspberry Pi Imager installieren: +
-<code> +
-sudo apt install rpi-imager +
-</code> +
-  - Imager starten, unter „Operating System“ → „Use custom“ die heruntergeladene ''.zip''-Datei auswählen, passende SD-Karte auswählen (mind. 8 GB, empfohlen 16 GB+) +
- +
-<code> +
-Wichtig: Der Benutzername darf beim Schreiben NICHT geändert werden +
-– er muss "pi" bleiben, sonst funktionieren interne emonSD-Skripte +
-nicht korrekt. Die OS-Customisation-Funktion des Imagers (WLAN +
-vorab eintragen o. Ä.) hier NICHT nutzen – das würde den in +
-Schritt 2 beschriebenen Einrichtungs-Zugangspunkt verhindern. +
-</code> +
- +
-==== Schritt 2: Erstes Hochfahren – ganz ohne Internetzugang ==== +
- +
-Genau hier liegt der entscheidende Vorteil dieses Images für ein Inselnetz ohne Internet: Wird die SD-Karte **ohne** vorkonfiguriertes WLAN und **ohne** angeschlossenes LAN-Kabel gestartet, öffnet der Pi automatisch einen eigenen WLAN-Zugangspunkt zur Einrichtung. Ein Update-Versuch über das Internet wird in diesem Fall gar nicht erst unternommen. +
- +
-  - SD-Karte in den Raspberry Pi 3 einlegen, **kein** LAN-Kabel anschließen +
-  - Mit Strom versorgen und ca. 1–2 Minuten warten +
-  - Auf einem Laptop oder Smartphone nach dem WLAN **„emonpi“** suchen und verbinden (Passwort: ''emonpi2016'') +
-  - Im Browser ''http://192.168.42.1'' aufrufen – dort öffnet sich die integrierte Netzwerk-Einrichtungsseite +
- +
-==== Schritt 3: Mit dem isolierten Arduino-Messnetz verbinden ==== +
- +
-  - In der Netzwerk-Einrichtungsseite das WLAN **„ARDUINO-MESSNETZ“** (aus Teil 1) aus der Liste auswählen und das dort vergebene Passwort eingeben +
-  - Der Pi verbindet sich daraufhin mit dem isolierten FRITZ!Box-Netz und ist ab sofort nur noch dort erreichbar +
-  - In der FRITZ!Box (Teil 1, Schritt 5) dem Pi wie gehabt die feste IP-Adresse **192.168.1.2** zuweisen, damit EmonCMS dauerhaft unter dieser (auch in den Sensor-Sketches hinterlegten) Adresse erreichbar bleibt +
- +
-<code> +
-Bekannter FRITZ!OS-Bug: Bei manchen FRITZ!Box-Firmwareständen lässt +
-sich das Adressfeld für "immer gleiche IPv4-Adresse zuweisen" bei +
-einzelnen Geräten nicht speichern – ein seit Jahren bekanntes, +
-nicht restlos geklärtes Verhalten. Funktioniert die Reservierung +
-über die FRITZ!Box-Oberfläche nicht, ist der robustere Weg, die +
-feste IP direkt auf dem Pi selbst zu setzen (siehe Kasten +
-"Wichtig zum Verständnis" oben für den SSH-Zugriff): +
-sudo nmcli connection modify "NETZWERKNAME" ipv4.method manual \ +
-  ipv4.addresses 192.168.1.2/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1 +
-sudo nmcli connection down "NETZWERKNAME" && sudo nmcli connection up "NETZWERKNAME" +
-(NETZWERKNAME = Name des WLANs, z. B. "ARDUINO-MESSNETZ"; +
-mit "nmcli connection show" auf dem Pi anzeigen lassen) +
-</code> +
- +
-==== Schritt 3b: SSH-Zugriff auf den Pi aktivieren ==== +
- +
-Für den nächsten Schritt (feste IP-Adresse per Kommandozeile setzen) wird ein SSH-Login auf den Pi benötigt. Bei aktuellen emonSD-Images ist SSH aus Sicherheitsgründen **standardmäßig deaktiviert**: +
- +
-  - Pi kurz vom Strom trennen, SD-Karte entnehmen, in den Kartenleser des PCs stecken +
-  - Die **Boot-Partition** (FAT32, meist automatisch als „bootfs" o. Ä. eingebunden) öffnen +
-  - Dort eine **leere Datei ohne Dateiendung** namens ''ssh'' anlegen, z. B. per Terminal: +
-<code> +
-lsblk +
-sudo mkdir -p /mnt/bootfs +
-sudo mount /dev/mmcblk0p1 /mnt/bootfs +
-sudo touch /mnt/bootfs/ssh +
-sudo umount /mnt/bootfs +
-</code> +
-    (Gerätenamen mit ''lsblk'' vorher prüfen und anpassen) +
-  - SD-Karte zurück in den Pi, Strom wieder anschließen, ca. 1 Minute warten +
- +
-Danach ist SSH-Login möglich: +
- +
-<code> +
-ssh pi@192.168.1.5 +
-</code> +
-(Adresse aus der FRITZ!Box-Geräteliste, siehe Kasten oben; Passwort: ''emonsd'') +
- +
-<code> +
-Hinweis zu "REMOTE HOST IDENTIFICATION HAS CHANGED"-Warnungen: +
-Wurde eine IP-Adresse während der Einrichtung mehrfach für +
-unterschiedliche Geräte verwendet (z. B. testweise), merkt sich +
-SSH pro Adresse einen "Fingerabdruck" und schlägt bei einer +
-Änderung Alarm – das ist in diesem Fall harmlos (kein Angriff), +
-sondern nur die Folge der Testerei mit IP-Adressen. Lösung: +
-ssh-keygen -f '~/.ssh/known_hosts' -R 'DIE-BETROFFENE-IP' +
-und danach erneut verbinden. +
-</code> +
- +
-==== Schritt 4: EmonCMS-Ersteinrichtung ==== +
- +
-  - Im Browser die feste IP-Adresse des Pi aufrufen (solange die WLAN-Umstellung noch nicht abgeschlossen ist, weiterhin ''http://192.168.42.1'') +
-  - Anmeldung mit den Standard-Zugangsdaten: Benutzername ''emonsd'', Passwort ''emonsd'' +
-  - **Sofort das Passwort ändern** (über die Konto-Einstellungen) +
-  - Unter **Administration → Setup** lässt sich der Systemstatus prüfen (Dienste emonhub, feedwriter, redis-server, mosquitto sollten „Active Running“ zeigen) +
-  - Inputs und Feeds werden erst angelegt, sobald die ersten Sensor-Boxen Daten senden – siehe Teil 3 +
- +
-<code> +
-Optionales System-Update: Beim Einrichtungsweg über den +
-Access-Point wird das automatische Erst-Update übersprungen. Es +
-kann bei Bedarf später bequem über die Emoncms-Administrations- +
-oberfläche nachgeholt werden – dafür braucht der Pi dann kurzzeitig +
-eine Verbindung mit Internetzugang (z. B. per LAN-Kabel an einem +
-Router mit Internet). Für den Betrieb im isolierten Messnetz ist +
-das aber nicht zwingend nötig. +
-</code> +
- +
-<code> +
-Wichtiger Hinweis zu PHPFina-Feeds: Das Speicherintervall eines +
-PHPFina-Feeds (Standard-Feed-Engine von EmonCMS) lässt sich NUR bei +
-der Erstellung festlegen und danach nicht mehr ändern! Das passende +
-Intervall unterscheidet sich je nach Boxtyp (siehe Teil 3): +
-Klimamessbox (Außenbereich) = 300 Sekunden (5 Min.), Raummessbox +
-(Innenbereich) = 20 Sekunden. Unbedingt gleich bei der ersten +
-Feed-Anlage korrekt setzen. +
-</code> +
- +
-==== Schritt 6: Echtzeituhr (RTC) nachrüsten – dringend empfohlen ==== +
- +
-**Der Raspberry Pi hat werksseitig keine batteriegepufferte Uhr.** Im isolierten Messnetz ohne Internetzugang kann er sich außerdem **nicht per NTP** die korrekte Uhrzeit holen. Nach jedem Neustart oder Stromausfall fällt die Systemzeit daher auf einen falschen Wert zurück – neue Feed-Daten bekommen dann falsche Zeitstempel und erscheinen in Diagrammen/CSV-Exports als fehlend, obwohl sie eigentlich geschrieben wurden. +
- +
-Die vollständige Einrichtung (Verkabelung, I²C aktivieren, Device-Tree-Overlay, Software-Ersatzuhr entfernen, Uhrzeit setzen) beschreibt eine eigene Seite: [[biebl:anleitungen:raspi_rtc_hw111|Raspberry Pi um Echtzeituhr (RTC) erweitern – HW-111]]. +
- +
-==== Stolpersteine ==== +
- +
-  * **WLAN „emonpi“ taucht nicht auf:** Meist, weil doch ein LAN-Kabel eingesteckt war oder versehentlich schon vorher ein WLAN konfiguriert wurde (z. B. über die Imager-OS-Customisation) – dann startet der Pi direkt ins reguläre Netz statt in den Einrichtungs-Zugangspunkt. Zur Kontrolle die SD-Karte am PC prüfen, ob im Boot-Verzeichnis eine ''wpa_supplicant.conf'' o. Ä. existiert, und diese ggf. entfernen +
-  * **Emoncms-Login mit ''emonsd''/''emonsd'' funktioniert nicht:** Zugangsdaten können sich mit neueren Image-Versionen ändern – im Zweifel auf der aktuellen Downloadseite unter „Credentials“ nachsehen +
-  * **Feste IP-Adresse in der FRITZ!Box vergessen:** Ohne feste IP wechselt die Adresse des Pi bei jedem Neustart – vor dem produktiven Einsatz unbedingt nachholen (Teil 1, Schritt 5) +
-  * **PHPFina-Intervall nachträglich ändern wollen:** geht nicht – nur eine Neuanlage des Feeds hilft. Intervall (120 s) daher gleich richtig bei Feed-Erstellung setzen +
-  * **Raspberry Pi 3 wirkt „langsam“:** Für ein Schulnetz mit überschaubarer Anzahl Sensor-Boxen und Dashboards reicht die Leistung eines Pi 3 problemlos aus +
-  * **Feeds zeigen aktuelle „Last value“, aber Diagramm/CSV-Export bleiben leer (''null''):** Klassisches Symptom einer falschen Systemzeit (siehe Schritt 6) – der Redis-Cache zeigt den Wert sofort an, die eigentliche PHPFina-Datei wird aber mit dem (falschen) Systemdatum beschrieben. Mit ''date'' prüfen, ob das angezeigte Datum stimmt; falls nicht, RTC nachrüsten oder Uhrzeit zumindest manuell setzen (''sudo date -s "JJJJ-MM-TT HH:MM:SS"'') +
- +
-===== Teil 3: Sensor-Boxen (Klimamessbox & Raummessbox) ===== +
- +
-Beide Sensor-Boxen basieren auf demselben Grundprinzip: Ein ESP8266 D1 Mini liest mehrere Sensoren aus und sendet die Werte in festen Zeitabständen per WLAN und HTTP an EmonCMS. Beide Boxen teilen sich denselben Netzwerk- und Retry-Mechanismus – nur die angeschlossenen Sensoren unterscheiden sich. +
- +
-<code> +
-Der vollständige Programmcode (inkl. eines einfachen Testsensors +
-zum Ausprobieren der EmonCMS-Einrichtung ohne fertige Box) steht +
-auf einer eigenen Seite: [[biebl:anleitungen:sensor_code|Programmcode +
-der Sensor-Boxen]]. Diese Seite hier beschreibt nur Pin-Belegung, +
-Konfiguration und Funktionsprinzipien. +
-</code> +
- +
-==== Klimamessbox (Außenbereich) ==== +
- +
-**Verbaute Sensoren:** +
-  * **BME280** (I²C) – Temperatur, Luftfeuchtigkeit, Luftdruck +
-  * **MH-Z19B** (UART) – CO2-Gehalt +
-  * **SDS011** (UART) – Feinstaub PM2.5 und PM10 +
-  * **LDR** (analog) – Helligkeit +
- +
-**Hardware:** ESP8266 D1 Mini. In der Arduino-IDE als Board **„LOLIN(WEMOS) D1 R2 & mini“** wählen. Bei Boot-Abstürzen ersatzweise auf **„Generic ESP8266 Module“** mit den Einstellungen **Flash Mode: DIO, Flash Frequency: 40MHz, VTables: Flash** umstellen. +
- +
-**Pin-Belegung:** +
- +
-^ Sensor ^ Pin(s) ^ Hinweis ^ +
-| BME280 | I²C Standard: D1 (SCL), D2 (SDA) | I²C-Adresse 0x76 (ggf. 0x77 prüfen) | +
-| MH-Z19B | RX = D6 (GPIO12), TX = D5 (GPIO14) | An 5V betrieben; **RX-Leitung braucht einen Spannungsteiler 5V→3,3V** (1kΩ + 2kΩ), da der ESP8266 nur 3,3V-tolerant ist | +
-| SDS011 | RX = D7 (GPIO13), TX = D8 (GPIO15) | An 5V betrieben, **ohne** Spannungsteiler | +
-| LDR | A0 (analog) | Über Spannungsteiler mit Festwiderstand an A0 | +
- +
-**Konfiguration (nur diese Zeilen pro Box anpassen):** +
- +
-<code> +
-#define SENSOR_ID 134        // Eindeutige Nummer je Sensor-Box (bestimmt Name UND IP-Adresse) +
-#define MODE_LIVE false      // true = echte Daten (LIVE-API-Key), false = Testbetrieb +
-#define CO2_OFFSET 40        // Kalibrierungs-Offset, siehe unten +
-#define MESSINTERVALL_MS 120000  // Sendetakt in Millisekunden (120000 = alle 2 Minuten) +
-#define DEBUG true           // Ausführliche serielle Ausgaben zur Fehlersuche +
-</code> +
- +
-<code> +
-Sicherheitshinweis: WLAN-Passwort und EmonCMS-API-Schlüssel stehen +
-im Original-Sketch als Klartext-Zugangsdaten. Diese NIEMALS in eine +
-öffentliche Wiki-Seite kopieren! Beim Nachbau durch andere Schulen +
-müssen eigene, geheime Werte eingetragen werden: +
- +
-const char* ssid     = "<WLAN-NAME>"; +
-const char* password = "<WLAN-PASSWORT>"; +
-const char* APIKEY_LIVE = "<API-KEY-LIVE-AUS-EMONCMS>"; +
-const char* APIKEY_TEST = "<API-KEY-TEST-AUS-EMONCMS>"; +
- +
-Die API-Keys findet man in EmonCMS unter dem jeweiligen Nutzerkonto +
-("My Account" → "API Keys"). +
-</code> +
- +
-**Wichtige Funktionsprinzipien:** +
- +
-  * **Feste IP statt DHCP:** Jede Box bekommt ihre IP direkt aus ''SENSOR_ID'' gebildet (''192.168.1.SENSOR_ID''), fest im Code über ''WiFi.config()'' eingetragen – kein DHCP nötig, jede Box ist damit sofort unter einer vorhersehbaren Adresse erreichbar +
-  * **Server-Adresse:** Fest auf ''192.168.1.2'' eingestellt (die feste IP des Raspberry Pi aus Teil 2) +
-  * **CO2-Kalibrierung:** Die automatische Baseline-Korrektur (ABC) des MH-Z19B wird beim Boot abgeschaltet, weil sie bei einem dauerhaft im Freien montierten Sensor zu falschen Werten führen würde (ABC geht von regelmäßiger Frischluft-Referenz aus – im Außeneinsatz nicht gegeben). Stattdessen wird ein manueller ''CO2_OFFSET'' verwendet: An einem Frischluft-Referenzpunkt (z. B. früh morgens) ablesen, was der Sensor anzeigt, und den Offset so wählen, dass ca. 420–440 ppm (aktueller globaler Referenzwert) erreicht werden +
-  * **SDS011-Energiesparmodus:** Der Feinstaubsensor hat einen Lüfter, der sich abnutzt. Er wird zwischen den Messungen in den Sleep-Modus versetzt und nur für die eigentliche Messung (10 Sekunden Vorlaufzeit) aufgeweckt – das verlängert die Lebensdauer von ca. 8.000 auf ca. 20.000 Betriebsstunden +
-  * **Robuste Datenübertragung:** Schlägt ein Upload fehl, versucht die Box es bis zu 5-mal: zunächst 3 normale Versuche mit steigender Pause, danach zwei Versuche mit vorherigem WLAN-Soft-Reset. Das macht die Box widerstandsfähig gegen kurze WLAN-Aussetzer, wie sie im Schulalltag (viele Geräte, dicke Wände) vorkommen können +
-  * **Watchdog:** Gelingt binnen 3 Minuten nach dem Booten kein einziger Upload, oder ist das WLAN länger als 2 Minuten am Stück weg, startet sich der ESP8266 selbstständig neu +
- +
-**Übertragene Messwerte (JSON an EmonCMS):** +
- +
-^ Feldname ^ Bedeutung ^ Einheit ^ +
-| F_rel | Relative Luftfeuchtigkeit | % | +
-| T_C | Temperatur | °C | +
-| P_hPa | Luftdruck (auf Meereshöhe umgerechnet) | hPa | +
-| CO2_ppm | CO2-Gehalt | ppm | +
-| PM25 | Feinstaub PM2.5 | µg/m³ | +
-| PM10 | Feinstaub PM10 | µg/m³ | +
-| H_bit | Helligkeit (invertiert: hell=klein, dunkel=groß) | – | +
- +
-**EmonCMS-Einrichtung pro Box:** +
- +
-  - Node/Input-Name entspricht der ''SENSOR_ID'' aus dem Sketch (z. B. „134“) – erscheint automatisch unter **Inputs**, sobald die Box zum ersten Mal sendet +
-  - Für jedes der sieben Felder oben einen **Feed** anlegen (PHPFina, Interval **300 Sekunden (5 Min.)** – muss zum ''MESSINTERVALL_MS'' im Sketch passen und lässt sich nur bei der Erstellung setzen, siehe Teil 2) +
- +
-==== Raummessbox (Innenbereich) ==== +
- +
-**Verbaute Sensoren:** +
-  * **DHT22** – Luftfeuchtigkeit (Temperaturwert des DHT22 wird hier nicht verwendet, siehe BMP180) +
-  * **BMP180** (I²C) – Temperatur, Luftdruck +
-  * **MH-Z19B** (UART) – CO2-Gehalt +
-  * **LDR** (analog) – Helligkeit +
-  * **NeoPixel-LED-Band** (4 oder 5 LEDs) – CO2-Ampel zur direkten Anzeige im Klassenraum, ohne dass jemand ein Display ablesen muss +
- +
-Im Gegensatz zur Außenbox entfällt der Feinstaubsensor (SDS011) – dafür kommt die LED-Ampel als zusätzliche Ausgabe hinzu. +
- +
-**Hardware:** ESP8266 D1 Mini, gleiches Board-Profil wie bei der Klimamessbox (**„LOLIN(WEMOS) D1 R2 & mini“**, bei Bootproblemen alternativ „Generic ESP8266 Module“ mit DIO/40MHz/VTables:Flash). +
- +
-**Pin-Belegung:** +
- +
-^ Sensor ^ Pin(s) ^ Hinweis ^ +
-| DHT22 | D7 (GPIO13) | Nur Luftfeuchtigkeit wird ausgelesen | +
-| BMP180 | I²C Standard: D1 (SCL), D2 (SDA) | Adresse fest in der Bibliothek (SFE_BMP180) | +
-| MH-Z19B | RX = D6 (GPIO12), TX = D5 (GPIO14) | Wie bei der Klimamessbox: an 5V betrieben, RX-Leitung braucht Spannungsteiler 5V→3,3V | +
-| LDR | A0 (analog) | Invertiert ausgewertet (hell → kleiner Wert) | +
-| NeoPixel-LED-Band | D4 (GPIO2) | 4- oder 5-LED-Variante, siehe ''NUM_LEDS'' | +
- +
-**Konfiguration (nur diese Zeilen pro Box anpassen):** +
- +
-<code> +
-#define SENSOR_ID 106     // Eindeutige Nummer je Sensor-Box (bestimmt Name UND IP-Adresse) +
-#define MODE_LIVE true    // true = echte Daten (LIVE-API-Key), false = Testbetrieb +
-#define NUM_LEDS  4       // Anzahl verbauter LEDs: 5 = Normalausführung, 4 = kompakte Bauform +
-#define CO2_OFFSET 40     // Kalibrierungs-Offset, wie bei der Klimamessbox +
-</code> +
- +
-<code> +
-Sicherheitshinweis: Wie bei der Klimamessbox stehen im Original- +
-Sketch echte Zugangsdaten (WLAN-Passwort, API-Keys) im Klartext. +
-Auch hier gilt: niemals in die öffentliche Wiki-Seite kopieren, +
-sondern durch eigene, geheime Werte ersetzen (siehe Hinweis-Kasten +
-bei der Klimamessbox oben). +
-</code> +
- +
-**Besonderheiten gegenüber der Klimamessbox:** +
- +
-  * **Kürzeres Messintervall:** 20 Sekunden statt 300 Sekunden (''const int Schreibpause = 20000;''), gedacht für engmaschiges Langzeit-Monitoring im Klassenraum. **Der EmonCMS-Feed muss dafür mit Intervall 20 statt 300 angelegt werden** – nicht mit der Klimamessbox verwechseln! +
-  * **CO2-Ampel über NeoPixel-LEDs:** Ein Farbverlauf von Blau (< 500 ppm, sehr gut) über Grün und Gelb bis Rot (> 2250 ppm, kritisch) zeigt die Luftqualität direkt vor Ort an – nützlich für den Unterricht, da Schüler:innen die CO2-Ampel ohne Bildschirm ablesen können. Ab 2700 ppm blinkt das Band fünfmal abwechselnd Rot/Weiß als Alarm, danach leuchtet es dauerhaft Rot +
-  * **''NUM_LEDS''-Umschalter:** Da im Einsatz zwei Bauformen (4 und 5 LEDs) existieren, passt sich das Anzeigemuster automatisch an – nicht verbaute LED-Positionen werden einfach dunkel gelassen +
-  * **Kein Feinstaubsensor:** Entsprechend fehlt im gesendeten JSON das Feld für PM2.5/PM10 (siehe unten) +
- +
-**Übertragene Messwerte (JSON an EmonCMS):** +
- +
-^ Feldname ^ Bedeutung ^ Einheit ^ +
-| F_rel | Relative Luftfeuchtigkeit (DHT22) | % | +
-| T_C | Temperatur (BMP180) | °C | +
-| P_hPa | Luftdruck (auf Meereshöhe umgerechnet) | hPa | +
-| CO2_ppm | CO2-Gehalt | ppm | +
-| H_bit | Helligkeit (invertiert) | – | +
- +
-**EmonCMS-Einrichtung pro Box:** +
- +
-  - Node/Input-Name entspricht der ''SENSOR_ID'' (z. B. „106“) +
-  - Für jedes der fünf Felder oben einen **Feed** anlegen (PHPFina, **Interval 20 Sekunden** – abweichend von der Klimamessbox!) +
- +
-==== Stolpersteine ==== +
- +
-  * **MH-Z19B liefert unplausible Werte direkt nach dem Einschalten:** Der Sensor braucht ca. 3 Minuten Aufwärmzeit – erste Messwerte in dieser Zeit ignorieren +
-  * **BME280 wird nicht gefunden (Endlosschleife beim Boot):** I²C-Verkabelung prüfen (SDA/SCL vertauscht?) sowie die I²C-Adresse – manche Module nutzen 0x77 statt 0x76 +
-  * **SDS011 liefert dauerhaft Fehler:** Meist Verkabelungsfehler bei RX/TX (leicht zu vertauschen) oder zu kurze Aufwachzeit bei sehr kurz eingestelltem ''MESSINTERVALL_MS'' – die Konstante ''schreibpauseRoh'' zieht die 10 Sekunden SDS011-Aufwachzeit automatisch vom Gesamtintervall ab, bei Intervallen unter 15 Sekunden greift eine Mindestpause von 2 Sekunden +
-  * **Zwei Boxen mit derselben ''SENSOR_ID'':** Führt zu IP- und Node-Konflikten – vor der Inbetriebnahme einer neuen Box unbedingt sicherstellen, dass die Nummer noch nicht vergeben ist (Übersicht am besten zentral im Wiki oder in EmonCMS unter „Inputs“ pflegen) +
-  * **Box startet ständig neu (Watchdog):** Deutet meist auf ein instabiles WLAN-Signal am Aufstellort hin – Empfangsstärke (RSSI) über die Debug-Ausgabe prüfen, ggf. Position ändern oder FRITZ!Box-Sendeleistung erhöhen +
-  * **LED-Band zeigt bei der Raummessbox falsche/fehlende LEDs:** ''NUM_LEDS'' muss zur tatsächlich verbauten Bauform passen (4 oder 5) – falsch eingestellt, bleibt entweder die letzte LED immer dunkel oder es wird versucht, eine nicht vorhandene LED anzusteuern +
-  * **BMP180 wird nicht gefunden (Endlosschleife beim Boot der Raummessbox):** I²C-Verkabelung prüfen (D1=SCL, D2=SDA, GND, 3V3) – anders als beim BME280 der Klimamessbox hat der BMP180 keine wählbare Adresse +
- +
----- +
- +
-===== Fotos & Schaltpläne ===== +
- +
-**Noch zu ergänzen** – dieser Abschnitt dient als Platzhalter und Checkliste, welche Bilder für den Nachbau durch andere Schulen besonders hilfreich sind. Bilder lassen sich in DokuWiki mit der Syntax ''{{:pfad:zum:bild.jpg?600|Bildbeschreibung}}'' einbinden (Upload über den „Bild hinzufügen“-Button im Editor oder Medien-Manager). +
- +
-**Empfohlene Aufnahmen:** +
- +
-  * FRITZ!Box von hinten/unten (Anschlüsse, ggf. Typenschild mit Modellbezeichnung) +
-  * Aufbau Raspberry Pi (Gehäuse, SD-Karte, Stromversorgung) im Praxiseinsatz +
-  * Klimamessbox (Außenbereich): Platinenaufbau von oben, mit beschrifteten Sensoren +
-  * Klimamessbox: Verkabelung des Spannungsteilers am MH-Z19B (RX-Leitung), Nahaufnahme +
-  * Raummessbox (Innenbereich): Platinenaufbau von oben, mit LED-Band +
-  * Raummessbox: LED-Ampel in Aktion (Foto bei unterschiedlichen CO2-Werten, falls möglich) +
-  * Montageort im Klassenraum bzw. draußen (Beispielfoto für Aufhängung/Wetterschutz) +
-  * Screenshot des EmonCMS-Dashboards mit Live-Daten +
-  * Schaltplan/Fritzing-Skizze je Sensor-Box (Verdrahtung BME280/BMP180, MH-Z19B, SDS011, LDR, LED-Band) +
- +
-<code> +
-{{ :platinen:klimamessbox_verkabelung.jpg?600 |Verkabelung der Klimamessbox: MH-Z19B mit Spannungsteiler}} +
-</code> +
- +
----- +
- +
-===== Übersicht vergebener SENSOR_IDs ===== +
- +
-Damit beim Nachbau nicht versehentlich zwei Boxen dieselbe ''SENSOR_ID'' (und damit dieselbe IP-Adresse) bekommen, empfiehlt sich eine zentral gepflegte Tabelle – idealerweise direkt hier im Wiki, gut sichtbar für alle, die neue Boxen in Betrieb nehmen. +
- +
-^ SENSOR_ID ^ IP-Adresse ^ Boxtyp ^ Standort ^ Node-Name (EmonCMS) ^ Bemerkung ^ +
-| 106 | 192.168.1.106 | Raummessbox | z. B. Klassenraum 2.14 | 106 | 4-LED-Variante | +
-| 134 | 192.168.1.134 | Klimamessbox | z. B. Außenfassade Nordseite | 134 | mit Wetterschutzgehäuse | +
-| ... | 192.168.1.... | ... | ... | ... | ... | +
- +
-<code> +
-Empfehlung zur Nummernvergabe: Feste Wertebereiche pro Boxtyp +
-reservieren, z. B. 100-149 für Raummessboxen und 150-199 für +
-Klimamessboxen (Außenbereich) - das erleichtert auf einen Blick, +
-worum es sich bei einer bestimmten SENSOR_ID handelt, ohne die +
-Tabelle nachschlagen zu müssen. IDs 2-99 bleiben für Infrastruktur +
-(Raspberry Pi = 2, FRITZ!Box = 1, Reserve für Zukünftiges) frei. +
-</code> +
- +
----- +
- +
-===== Sicheres Ein- und Ausschalten des Gesamtsystems ===== +
- +
-Praktisch relevant, sobald die komplette Station (FRITZ!Box, Raspberry Pi, ggf. Sensorboxen) gemeinsam an einer Steckdosenleiste hängt, z. B. in einem Koffer für den mobilen/temporären Einsatz. +
- +
-**Nur der Raspberry Pi braucht eine kontrollierte Abschaltung** – FRITZ!Box und ESP8266-Sensorboxen vertragen einfaches Stromwegnehmen problemlos. Beim Pi dagegen kann ein abrupter Stromausfall während eines Schreibvorgangs die SD-Karte beschädigen. +
- +
-**Richtig ausschalten:** +
- +
-  - Per SSH mit dem Pi verbinden: ''ssh pi@192.168.1.2'' +
-  - Sauber herunterfahren: ''sudo shutdown -h now'' +
-  - **Warten**, bis die grüne Aktivitäts-LED am Pi **dauerhaft aus** ist (meist 10–20 Sekunden) – erst dann ist die SD-Karte sicher „geparkt“ +
-  - Erst danach die Steckdosenleiste ausschalten +
- +
-**Wieder einschalten:** +
- +
-  - Steckdosenleiste einschalten – alle Komponenten fahren gleichzeitig hoch +
-  - Der Pi braucht am längsten (ca. 1–2 Minuten bis EmonCMS erreichbar ist) +
-  - Dank der Retry-Logik in allen Sensor-Sketches (3 WLAN-Versuche mit Backoff, siehe Programmcode-Seite) verbinden sich die Sensorboxen automatisch, sobald FRITZ!Box und Pi bereit sind – kein manuelles Eingreifen nötig +
- +
-<code> +
-Dank RTC-Modul (siehe eigene Seite zur HW-111-Nachrüstung) bleibt die +
-Uhrzeit ab jetzt automatisch korrekt erhalten - ein manuelles +
-Nachstellen der Systemzeit nach dem Wiedereinschalten ist nicht mehr +
-nötig. +
-</code> +
- +
----- +
- +
-===== Wichtige Zugänge – Checkliste ===== +
- +
-<code> +
-ACHTUNG - NICHT ÖFFENTLICH AUSFÜLLEN! +
-Diese Tabelle dient nur als Checkliste, WELCHE vier Zugänge bei der +
-Installation gesetzt werden und WO sie zu finden sind. Die echten +
-Passwörter/Keys gehören NICHT auf diese öffentliche Wiki-Seite, +
-sondern in einen Passwort-Manager oder eine interne, nicht- +
-öffentliche Wiki-Seite (z. B. im geschützten Kollegiumsbereich). +
-Wer diese Anleitung nachbaut, trägt eigene, neue Zugangsdaten ein - +
-niemals die aus einem Beispiel oder einer anderen Schule übernehmen. +
-</code> +
- +
-Bei der Einrichtung werden vier voneinander unabhängige Zugänge gesetzt bzw. sichtbar: +
- +
-^ # ^ Zugang ^ Wo gesetzt/geändert ^ Wo zu finden ^ Notiz ^ +
-| 1 | **FRITZ!Box Admin-Kennwort** | Teil 1, Schritt 2 (Ersteinrichtung) | FRITZ!Box-Weboberfläche → System → Kennwörter | Schützt die Router-Konfiguration selbst | +
-| 2 | **WLAN-Kennwort „SAS-ARDUINO“ / „SAS-ARDUINO-mobil“** | Teil 1, Schritt 3 | FRITZ!Box-Weboberfläche → WLAN → Funknetz | Wird 1:1 in jeden Sensor-Sketch eingetragen (Bereich A/B/C, siehe Sensorcode-Seite) | +
-| 3 | **Raspberry Pi – SSH-Login** (Benutzer ''pi'') | Teil 2, Schritt 4 (bzw. per ''passwd'' nachträglich) | Direkt am Pi per SSH änderbar: ''ssh pi@[IP-Adresse]'' → ''passwd'' | Getrennt vom EmonCMS-Weblogin, eigenes Passwort | +
-| 4 | **EmonCMS – Weblogin** (Benutzer ''emonsd'', änderbar) | Teil 2, Schritt 4 | EmonCMS-Oberfläche → My Account | Zusätzlich dort: Read-&-Write- und Read-Only-API-Key (siehe „Sensoren einbinden“, Schritt 1) | +
- +
-<code> +
-Empfehlung: Für jede Installation (Produktiv-Pi UND ggf. separater +
-Test-/Entwicklungs-Pi) diese vier Zugänge getrennt und mit klarem +
-Bezug zum jeweiligen Gerät im Passwort-Manager ablegen - gerade bei +
-mehreren Pis (z. B. Schul-Livesystem und ein mobiler Test-Pi) +
-erleichtert das die spätere Übersicht erheblich.+
 </code> </code>
QR-Code
QR-Code www-messdatenerfassung-sas:klimastation (erstellt für aktuelle Seite)