Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| www-messdatenerfassung-sas:klimastation [2026/09/12 13:16] – [Tabelle] biebl | www-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 ====== | ||
| + | {{: | ||
| - | ^ Seite ^ Inhalt | + | ^ Seite ^ Inhalt |
| | [[www-messdatenerfassung-sas: | | [[www-messdatenerfassung-sas: | ||
| | [[www-messdatenerfassung-sas: | | [[www-messdatenerfassung-sas: | ||
| Zeile 8: | Zeile 9: | ||
| | [[www-messdatenerfassung-sas: | | [[www-messdatenerfassung-sas: | ||
| | [[www-messdatenerfassung-sas: | | [[www-messdatenerfassung-sas: | ||
| + | | [[Platinenschaltung|Schaltung]] | Platine | | ||
| + | | [[3D-Gehäuse|Gehäuse]] | 3D-Druck oder LASER-Cutter | | ||
| + | | [[Unterrichtseinsatz|Schule]] | ||
| + | | [[Sonstiges|Sonstiges]]| dies und das....| | ||
| + | ====== Eigene Klimamessstation für Schulen: Nachbauanleitung ====== | ||
| Diese Anleitung beschreibt den vollständigen Aufbau eines eigenständigen, | Diese Anleitung beschreibt den vollständigen Aufbau eines eigenständigen, | ||
| Zeile 55: | Zeile 61: | ||
| - [[# | - [[# | ||
| - [[biebl: | - [[biebl: | ||
| - | - [[biebl: | + | - [[biebl: |
| - [[biebl: | - [[biebl: | ||
| - [[# | - [[# | ||
| Zeile 611: | Zeile 617: | ||
| erleichtert das die spätere Übersicht erheblich. | erleichtert das die spätere Übersicht erheblich. | ||
| </ | </ | ||
| - | ===== Begriffsklärung: | + | ====== Copyright (C) 2025 Biebl/ |
| - | + | ||
| - | Der Name „Klimastation" | + | |
| - | + | ||
| - | **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**: | + | |
| - | + | ||
| - | Der Begriff **„Raumklima" | + | |
| < | < | ||
| - | Kurz gesagt: Trotz des Namens | + | "Klimamessstation für Schulen" |
| - | keine Klimadaten im engeren Sinn, sondern lokale Wetter- und | + | lizenziert unter CC BY-SA 4.0 |
| - | Luftqualitätsdaten | + | (https:// |
| - | zum Verständnis der eigenen Umgebung. Der Projektname wird trotzdem | + | |
| - | beibehalten, | + | |
| - | ist. | + | |
| </ | </ | ||
| < | < | ||
| - | 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 |
| - | 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, |
| - | Übersicht für den schnellen Einstieg: | + | Ihrer Wahl) jeder späteren Version. |
| - | </ | + | |
| - | **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. | ||
| - | - [[# | + | Vollständiger Lizenztext: https://www.gnu.org/licenses/gpl-3.0.de.html |
| - | - [[# | + | |
| - | - [[# | + | |
| - | - [[# | + | |
| - | - [[# | + | |
| - | - [[# | + | |
| - | - [[# | + | |
| - | - [[biebl: | + | |
| - | - [[biebl: | + | |
| - | - [[biebl: | + | |
| - | - [[# | + | |
| - | + | ||
| - | < | + | |
| - | Hinweis zu den Sprungmarken: | + | |
| - | den Überschriften (Kleinschreibung, | + | |
| - | Sonderzeichen entfernt). Sollte ein Link nach dem Einfügen ins Wiki | + | |
| - | nicht funktionieren, | + | |
| - | 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, " | + | |
| - | + | ||
| - | * 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 '' | + | |
| - | - Die passende '' | + | |
| - | - FRITZ!Box per LAN-Kabel direkt mit dem Windows-Rechner verbinden (kein Switch/Hub dazwischen) | + | |
| - | - Die Windows-Firewall kurzzeitig deaktivieren, | + | |
| - | - 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? | + | |
| - | + | ||
| - | - FRITZ!Box **für 1 Minute vom Stromnetz trennen**, dann wieder anschließen | + | |
| - | - **Innerhalb der nächsten 10 Minuten** die Bedienoberfläche aufrufen – '' | + | |
| - | - Auf **„Kennwort vergessen? | + | |
| - | - 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, | + | |
| - | + | ||
| - | 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: | + | |
| - | + | ||
| - | < | + | |
| - | ip link | + | |
| - | </ | + | |
| - | + | ||
| - | (üblich sind Namen wie '' | + | |
| - | + | ||
| - | **Variante A – schnell & temporär (bis zum nächsten Kabel-Stecken oder Neustart): | + | |
| - | + | ||
| - | < | + | |
| - | sudo ip addr flush dev IFACE | + | |
| - | sudo ip addr add 169.254.1.2/ | + | |
| - | sudo ip link set IFACE up | + | |
| - | </ | + | |
| - | + | ||
| - | Danach im Browser '' | + | |
| - | + | ||
| - | < | + | |
| - | sudo ip addr add 192.168.178.20/ | + | |
| - | </ | + | |
| - | + | ||
| - | und '' | + | |
| - | + | ||
| - | **Variante B – über NetworkManager (nmcli), als eigenes wiederverwendbares Profil:** | + | |
| - | + | ||
| - | < | + | |
| - | nmcli connection add type ethernet ifname IFACE con-name fritzbox-reset \ | + | |
| - | ipv4.method manual ipv4.addresses 192.168.178.20/ | + | |
| - | nmcli connection up fritzbox-reset | + | |
| - | </ | + | |
| - | + | ||
| - | Nach getaner Arbeit wieder aufräumen: | + | |
| - | + | ||
| - | < | + | |
| - | nmcli connection down fritzbox-reset | + | |
| - | nmcli connection delete fritzbox-reset | + | |
| - | </ | + | |
| - | + | ||
| - | **Variante C – grafisch:** Netzwerkeinstellungen → Kabelgebunden → Zahnrad-Symbol → Reiter „IPv4“ → „Manuell“ → Adresse '' | + | |
| - | + | ||
| - | **Vor dem Browser-Aufruf testen:** | + | |
| - | + | ||
| - | < | + | |
| - | ping -c 3 192.168.178.1 | + | |
| - | </ | + | |
| - | + | ||
| - | bzw. für die Notfall-IP: | + | |
| - | + | ||
| - | < | + | |
| - | ping -c 3 169.254.1.1 | + | |
| - | </ | + | |
| - | + | ||
| - | Kommt eine Antwort, ist die Bedienoberfläche im Browser erreichbar. | + | |
| - | + | ||
| - | Nach erfolgreichem Reset sind Benutzername/ | + | |
| - | + | ||
| - | ==== 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:// | + | |
| - | - Den Einrichtungsassistenten ggf. **abbrechen/ | + | |
| - | - Unter **System → Kennwörter** ein neues, für das Kollegium dokumentierbares Admin-Kennwort vergeben (z. B. im internen, nicht-öffentlichen Wiki-Bereich hinterlegen, | + | |
| - | + | ||
| - | ==== 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. '' | + | |
| - | * Verschlüsselung: | + | |
| - | * 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-/ | + | |
| - | + | ||
| - | * Die Box versucht zwar im Hintergrund gelegentlich, | + | |
| - | * 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: | + | |
| - | + | ||
| - | - Unter **Heimnetz → Netzwerk → Netzwerkeinstellungen** auf **„IPv4-Adressen“** klicken | + | |
| - | - Die IPv4-Adresse der FRITZ!Box von '' | + | |
| - | - Übernehmen – die Box startet neu und ist danach unter '' | + | |
| - | - Im Reiter „DHCP-Server“ prüfen, ob sich der Adresspool automatisch angepasst hat (z. B. 192.168.1.20–200), | + | |
| - | + | ||
| - | Unter **Heimnetz → Netzwerk → Netzwerkeinstellungen**: | + | |
| - | + | ||
| - | * Empfehlung: Jedem Gerät (Raspberry Pi, Sensor-Boards) unter **Heimnetz → Netzwerk → Netzwerkverbindungen → Gerät bearbeiten** eine **feste IP-Adresse** zuweisen (" | + | |
| - | + | ||
| - | ==== 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: | + | |
| - | * **Wiederherstellungsprogramm findet die Box nicht:** meist Firewall- oder Antivirus-Software auf dem Windows-Rechner, | + | |
| - | * **FRITZ!Box zeigt "Kein Internet" | + | |
| - | * **Alte FRITZ!OS-Version: | + | |
| - | * **Mehrere FRITZ!Boxen im gleichen Schulgebäude: | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 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: | + | |
| - | + | ||
| - | ==== Wichtig zum Verständnis: | + | |
| - | + | ||
| - | 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: | + | |
| - | + | ||
| - | **Konkret zur Einrichtung des Pi:** | + | |
| - | + | ||
| - | - In der FRITZ!Box-Oberfläche (über das LAN-Kabel erreichbar, z. B. '' | + | |
| - | - Im Terminal per SSH verbinden: | + | |
| - | < | + | |
| - | ssh pi@192.168.1.5 | + | |
| - | </ | + | |
| - | (die Adresse durch die tatsächlich angezeigte ersetzen) | + | |
| - | - Passwort: '' | + | |
| - | + | ||
| - | ==== Schritt 1: Image herunterladen und auf SD-Karte schreiben ==== | + | |
| - | + | ||
| - | - Aktuelles Image von der offiziellen Downloadseite laden: '' | + | |
| - | - Die '' | + | |
| - | - Unter Linux (Kubuntu) den Raspberry Pi Imager installieren: | + | |
| - | < | + | |
| - | sudo apt install rpi-imager | + | |
| - | </ | + | |
| - | - Imager starten, unter „Operating System“ → „Use custom“ die heruntergeladene '' | + | |
| - | + | ||
| - | < | + | |
| - | Wichtig: Der Benutzername darf beim Schreiben NICHT geändert werden | + | |
| - | – er muss " | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | ==== 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: '' | + | |
| - | - Im Browser '' | + | |
| - | + | ||
| - | ==== 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 | + | |
| - | + | ||
| - | < | + | |
| - | Bekannter FRITZ!OS-Bug: | + | |
| - | sich das Adressfeld für "immer gleiche IPv4-Adresse zuweisen" | + | |
| - | 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 | + | |
| - | " | + | |
| - | sudo nmcli connection modify " | + | |
| - | ipv4.addresses 192.168.1.2/ | + | |
| - | sudo nmcli connection down " | + | |
| - | (NETZWERKNAME = Name des WLANs, z. B. " | + | |
| - | mit "nmcli connection show" auf dem Pi anzeigen lassen) | + | |
| - | </ | + | |
| - | + | ||
| - | ==== 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" | + | |
| - | - Dort eine **leere Datei ohne Dateiendung** namens '' | + | |
| - | < | + | |
| - | lsblk | + | |
| - | sudo mkdir -p / | + | |
| - | sudo mount / | + | |
| - | sudo touch / | + | |
| - | sudo umount / | + | |
| - | </ | + | |
| - | (Gerätenamen mit '' | + | |
| - | - SD-Karte zurück in den Pi, Strom wieder anschließen, | + | |
| - | + | ||
| - | Danach ist SSH-Login möglich: | + | |
| - | + | ||
| - | < | + | |
| - | ssh pi@192.168.1.5 | + | |
| - | </ | + | |
| - | (Adresse aus der FRITZ!Box-Geräteliste, | + | |
| - | + | ||
| - | < | + | |
| - | Hinweis zu " | + | |
| - | Wurde eine IP-Adresse während der Einrichtung mehrfach für | + | |
| - | unterschiedliche Geräte verwendet (z. B. testweise), merkt sich | + | |
| - | SSH pro Adresse einen " | + | |
| - | Änderung Alarm – das ist in diesem Fall harmlos (kein Angriff), | + | |
| - | sondern nur die Folge der Testerei mit IP-Adressen. Lösung: | + | |
| - | ssh-keygen -f ' | + | |
| - | und danach erneut verbinden. | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Schritt 4: EmonCMS-Ersteinrichtung ==== | + | |
| - | + | ||
| - | - Im Browser die feste IP-Adresse des Pi aufrufen (solange die WLAN-Umstellung noch nicht abgeschlossen ist, weiterhin '' | + | |
| - | - Anmeldung mit den Standard-Zugangsdaten: | + | |
| - | - **Sofort das Passwort ändern** (über die Konto-Einstellungen) | + | |
| - | - Unter **Administration → Setup** lässt sich der Systemstatus prüfen (Dienste emonhub, feedwriter, redis-server, | + | |
| - | - Inputs und Feeds werden erst angelegt, sobald die ersten Sensor-Boxen Daten senden – siehe Teil 3 | + | |
| - | + | ||
| - | < | + | |
| - | Optionales System-Update: | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | Wichtiger Hinweis zu PHPFina-Feeds: | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | ==== 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/ | + | |
| - | + | ||
| - | Die vollständige Einrichtung (Verkabelung, | + | |
| - | + | ||
| - | ==== 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 '' | + | |
| - | * **Emoncms-Login mit '' | + | |
| - | * **Feste IP-Adresse in der FRITZ!Box vergessen: | + | |
| - | * **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“: | + | |
| - | * **Feeds zeigen aktuelle „Last value“, aber Diagramm/ | + | |
| - | + | ||
| - | ===== Teil 3: Sensor-Boxen (Klimamessbox & Raummessbox) ===== | + | |
| - | + | ||
| - | Beide Sensor-Boxen basieren auf demselben Grundprinzip: | + | |
| - | + | ||
| - | < | + | |
| - | Der vollständige Programmcode (inkl. eines einfachen Testsensors | + | |
| - | zum Ausprobieren der EmonCMS-Einrichtung ohne fertige Box) steht | + | |
| - | auf einer eigenen Seite: [[biebl: | + | |
| - | der Sensor-Boxen]]. Diese Seite hier beschreibt nur Pin-Belegung, | + | |
| - | Konfiguration und Funktionsprinzipien. | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Klimamessbox (Außenbereich) ==== | + | |
| - | + | ||
| - | **Verbaute Sensoren: | + | |
| - | * **BME280** (I²C) – Temperatur, Luftfeuchtigkeit, | + | |
| - | * **MH-Z19B** (UART) – CO2-Gehalt | + | |
| - | * **SDS011** (UART) – Feinstaub PM2.5 und PM10 | + | |
| - | * **LDR** (analog) – Helligkeit | + | |
| - | + | ||
| - | **Hardware: | + | |
| - | + | ||
| - | **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, | + | |
| - | | 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): | + | |
| - | + | ||
| - | < | + | |
| - | #define SENSOR_ID 134 // Eindeutige Nummer je Sensor-Box (bestimmt Name UND IP-Adresse) | + | |
| - | #define MODE_LIVE false // true = echte Daten (LIVE-API-Key), | + | |
| - | #define CO2_OFFSET 40 // Kalibrierungs-Offset, | + | |
| - | #define MESSINTERVALL_MS 120000 | + | |
| - | #define DEBUG true // Ausführliche serielle Ausgaben zur Fehlersuche | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | Sicherheitshinweis: | + | |
| - | 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 = "< | + | |
| - | const char* password = "< | + | |
| - | const char* APIKEY_LIVE = "< | + | |
| - | const char* APIKEY_TEST = "< | + | |
| - | + | ||
| - | Die API-Keys findet man in EmonCMS unter dem jeweiligen Nutzerkonto | + | |
| - | ("My Account" | + | |
| - | </ | + | |
| - | + | ||
| - | **Wichtige Funktionsprinzipien: | + | |
| - | + | ||
| - | * **Feste IP statt DHCP:** Jede Box bekommt ihre IP direkt aus '' | + | |
| - | * **Server-Adresse: | + | |
| - | * **CO2-Kalibrierung: | + | |
| - | * **SDS011-Energiesparmodus: | + | |
| - | * **Robuste Datenübertragung: | + | |
| - | * **Watchdog: | + | |
| - | + | ||
| - | **Ü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: | + | |
| - | + | ||
| - | **EmonCMS-Einrichtung pro Box:** | + | |
| - | + | ||
| - | - Node/ | + | |
| - | - Für jedes der sieben Felder oben einen **Feed** anlegen (PHPFina, Interval **300 Sekunden (5 Min.)** – muss zum '' | + | |
| - | + | ||
| - | ==== 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, | + | |
| - | + | ||
| - | Im Gegensatz zur Außenbox entfällt der Feinstaubsensor (SDS011) – dafür kommt die LED-Ampel als zusätzliche Ausgabe hinzu. | + | |
| - | + | ||
| - | **Hardware: | + | |
| - | + | ||
| - | **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: | + | |
| - | | LDR | A0 (analog) | Invertiert ausgewertet (hell → kleiner Wert) | | + | |
| - | | NeoPixel-LED-Band | D4 (GPIO2) | 4- oder 5-LED-Variante, | + | |
| - | + | ||
| - | **Konfiguration (nur diese Zeilen pro Box anpassen): | + | |
| - | + | ||
| - | < | + | |
| - | #define SENSOR_ID 106 // Eindeutige Nummer je Sensor-Box (bestimmt Name UND IP-Adresse) | + | |
| - | #define MODE_LIVE true // true = echte Daten (LIVE-API-Key), | + | |
| - | #define NUM_LEDS | + | |
| - | #define CO2_OFFSET 40 // Kalibrierungs-Offset, | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | Sicherheitshinweis: | + | |
| - | Sketch echte Zugangsdaten (WLAN-Passwort, | + | |
| - | Auch hier gilt: niemals in die öffentliche Wiki-Seite kopieren, | + | |
| - | sondern durch eigene, geheime Werte ersetzen (siehe Hinweis-Kasten | + | |
| - | bei der Klimamessbox oben). | + | |
| - | </ | + | |
| - | + | ||
| - | **Besonderheiten gegenüber der Klimamessbox: | + | |
| - | + | ||
| - | * **Kürzeres Messintervall: | + | |
| - | * **CO2-Ampel über NeoPixel-LEDs: | + | |
| - | * **'' | + | |
| - | * **Kein Feinstaubsensor: | + | |
| - | + | ||
| - | **Ü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/ | + | |
| - | - 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: | + | |
| - | * **BME280 wird nicht gefunden (Endlosschleife beim Boot):** I²C-Verkabelung prüfen (SDA/SCL vertauscht? | + | |
| - | * **SDS011 liefert dauerhaft Fehler:** Meist Verkabelungsfehler bei RX/TX (leicht zu vertauschen) oder zu kurze Aufwachzeit bei sehr kurz eingestelltem '' | + | |
| - | * **Zwei Boxen mit derselben '' | + | |
| - | * **Box startet ständig neu (Watchdog): | + | |
| - | * **LED-Band zeigt bei der Raummessbox falsche/ | + | |
| - | * **BMP180 wird nicht gefunden (Endlosschleife beim Boot der Raummessbox): | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 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 '' | + | |
| - | + | ||
| - | **Empfohlene Aufnahmen: | + | |
| - | + | ||
| - | * FRITZ!Box von hinten/ | + | |
| - | * Aufbau Raspberry Pi (Gehäuse, SD-Karte, Stromversorgung) im Praxiseinsatz | + | |
| - | * Klimamessbox (Außenbereich): | + | |
| - | * Klimamessbox: | + | |
| - | * Raummessbox (Innenbereich): | + | |
| - | * Raummessbox: | + | |
| - | * Montageort im Klassenraum bzw. draußen (Beispielfoto für Aufhängung/ | + | |
| - | * Screenshot des EmonCMS-Dashboards mit Live-Daten | + | |
| - | * Schaltplan/ | + | |
| - | + | ||
| - | < | + | |
| - | {{ : | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Übersicht vergebener SENSOR_IDs ===== | + | |
| - | + | ||
| - | Damit beim Nachbau nicht versehentlich zwei Boxen dieselbe '' | + | |
| - | + | ||
| - | ^ 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.... | ... | ... | ... | ... | | + | |
| - | + | ||
| - | < | + | |
| - | Empfehlung zur Nummernvergabe: | + | |
| - | reservieren, | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 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/ | + | |
| - | + | ||
| - | **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: '' | + | |
| - | - Sauber herunterfahren: | + | |
| - | - **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, | + | |
| - | + | ||
| - | < | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Wichtige Zugänge – Checkliste ===== | + | |
| - | + | ||
| - | < | + | |
| - | 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/ | + | |
| - | 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. | + | |
| - | </ | + | |
| - | + | ||
| - | Bei der Einrichtung werden vier voneinander unabhängige Zugänge gesetzt bzw. sichtbar: | + | |
| - | + | ||
| - | ^ # ^ Zugang ^ Wo gesetzt/ | + | |
| - | | 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 '' | + | |
| - | | 4 | **EmonCMS – Weblogin** (Benutzer '' | + | |
| - | + | ||
| - | < | + | |
| - | Empfehlung: Für jede Installation (Produktiv-Pi UND ggf. separater | + | |
| - | Test-/ | + | |
| - | 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. | + | |
| </ | </ | ||