mak@thon, 2020-11-13

Aufgabe
  1. Entwicklung einer CO2-Ampel für Klassenräume
  2. Monitoring aller Klassenräume an einen zentralen PC, Kommunikation über das Schul-WLAN oder weite Entfernungen (z.B. LoRa)
  3. Ausgestaltung der Komponenten (analog/digital)
Kommunikationskanäle
LoRa-Gateways der Community Ortenau

Implementierung

  • ESPs arbeiten als reine Clients
    • Grund: Erfahrung sagt, dass bei konkurrierendem Zugriff der Server nicht stabil läuft
  • Server
    • PaaS: Cloud / RPi / VM / PC
    • SaaS: Grafana / InfluxDB
    • Fragen
      • wo liegen die Daten?
      • wie aufwendig ist das Setup?
  • Kommunikation
    • Primär: WLAN
      • weil:
        • sollte überall vorhanden sein (oder mit wenig Geld aufbaubar)
        • ist in der Aufgabenstellung zuerst genannt
        • weniger Komplexität als LoRa

Anleitung

  • Software
    • Arduino
      • Integration ESP-Board
        • Einstellungen (Unter Windows Datei → Voreinstellung) → Zusätzliche Board-Verwalter-URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json Quelle
        • Werkzeuge → Board → Board-Verwalter → In Suchfeld „ESP“ eingeben → „esp32 by Espressif Systems“ → installieren (v1.0.4)
        • Werkzeuge → Board → Abschnitt ESP32 → Heltec Wifi LoRa 32(V2)
        • Werkzeuge → Port: auswählen (/dev/ttyUSB0 unter Linux) (unter Windows zum rausfinden, USB Kabel vom Board abstecken, Liste angucken, neu anstecken, neuer COM ist das Board)
      • Einbinden Bibliothek für CO2-Sensor
        • Sketch → Bibliothek einbinden → Bibliothek verwalten → Suche nach „SCD30“ → „SparkFun SCD30 Arduino Library“ (v1.0.8)
    • Code
      • Anpassungen:
        • wlan_settings.h.template kopieren in wlan_settings.h
        • WLAN-SSID anpassen
        • WLAN-Passwort anpassen
        • uuids.h.template kopieren in uuids.h
    • UUIDs auf volkszaehler erzeugen:
      • CO2:
        • Kanal hinzufügen
          • Kanal erstellen
            • Typ: CO2-Konzentration
            • sinnvollen Titel setzen
            • Erstellen → UUID notieren und in Source eintragen (in uuids.h in der Zeile mit „airSensor.getCO2“)
      • Temperatur:
        • Kanal hinzufügen
          • Kanal erstellen
            • Typ: Temperatur
            • sinnvollen Titel setzen
            • Erstellen → UUID notieren und in Source eintragen (in uuids.h in der Zeile mit „airSensor.getTemperature“)
      • Luftfeuchtigkeit:
        • Kanal hinzufügen
          • Kanal erstellen
            • Typ: Luftfeuchtigkeit
            • sinnvollen Titel setzen
            • Erstellen → UUID notieren und in Source eintragen (in uuids.h in der Zeile mit „airSensor.getHumidity“)
      • Software flashen
        • Sketch → Hochladen
Was fehlt uns noch?
  • Video
    • Inhalt
      • Konzept
        • Kommunikationsprotokolle
          • WLAN, Fallback auf LoRa
        • Visualisierung in Grafana
      • Demo - jeweils gemappt auf die Aufgabenstellung
        1. Entwicklung einer CO2 Ampel für Klassenräume
          • Aufbau der Einheit, die im Klassenzimmer steht → Justin
            • inkl. LED mit Zuständen
          • Grafana → André (Dashboard mit der Einzelansicht eines Klassenzimmers)
          • Darstellung in volkszaehler.org (Darstellung eines Wertes inkl. Verlauf oder auch einer Gruppe von Werten - mal sehen)
          • inkl. Use cases: Darstellung auf einem Handy, auf dem Beamer im Klassenraum, …
        2. Monitoring aller Klassenräume an einem Zentralen PC, Kommunikation über das Schul-WLAN oder weite Entfernungen (z.B. LoRa)
          • Grafana → André (Dashboard Übersicht aller Räume)
          • Gesamtarchitektur (inkl. grafischer Darstellung)
            • ESPs als Sensoren und Clients, nicht als Server wg. Betriebsstabilität und Erreichbarkeit, Skalierbarkeit, Erweiterbarkeit
            • Backend und Middleware auf einem zentralen System (vor Ort oder in der Cloud)
            • Einfache Nachbaubarkeit
            • Alerting (Mattermost, …)
          • Aufbau, verwendete Software
            • Arduino Ökosystem (was wird auf dem Display und über die LED angezeigt)
            • Grafana
            • Influxdb
            • docker
            • volkszaehler.org
              • primär für elektronische Stromzähler („Smart Meter“)
              • Datenschutz: die gespeicherten Daten sind nicht personenbeziehbar, jeder kann sich einen Server auch selbst betreiben, die Software ist frei
              • lässt sich auch für andere Datentypen verwenden (wir haben einen Datentyp für CO2-Konzentration zum Projekt hinzugfügt)
        3. Ausgestaltung der Komponenten (analog/digital)
          • Elektronik - vielleicht auch nicht, weil entsprechend Vorgabe
          • Gehäuse
            • Erstellt mit OpenSCAD
            • Quelldateien liegen im github (Plain Text)
            • Druckdauer ca. 3,5h (nur ein Testdruck für die Front; leichte Anpassungen, dann finaler Druck des Prototypen)
            • Bauteile sind eingeklebt (Heißkleber)
            • Deckel ist eine Presspassung - keine Schrauben erforderlich
      • Ausblick / mögliche Erweiterungen (s. Abschnitt unten)
      • Material
        • Time Lapse und Fotos vom Druck
        • Fotos von der Elektronik (Breadboard → André; fliegend verdrahtet; ins Gehäuse eingebaut → Justin)
        • grafische Darstellung der Architektur
        • Demo
          • Grafana-Boards
            • auch auf dem Handy?
          • Sensor
        • Tonspuren
          • s. Kärtchen von André
  • Tests - check!
    • docker / Middleware/Frontend-Setup - check!
  • Doku
    • docker / Middleware/Frontend-Setup
  • Display-Unterstützung - check!
  • LoRa - check!
  • Gehäuse - check!
Weitere Ideen, die es nicht in den Prototypen geschafft haben
  • Gehäuse
    • Halterungen für die Bauteile (im Prototyp nur geklebt)
    • kompakter durch passende Leitungslängen oder Platine
    • Gehäuse für die LoRa-Wifi-Bridge
  • Elektronik
    • Einbau eines LiPo-Akkus → mobiler Betrieb; Controller hat schon Laderegler integriert
    • z.B. für Grundschulen ein 3D gedrucktes Haus mit Fenster. Ein Servo öffnet die Fenster bei überschreiten des Grenzwerts (anstelle einer roten LED)
  • Software
    • ESP in der Klasse: Lineare Regression über die letzten 5min C02 Werte um die voraussichtliche Zeit bis zum Überschreiten des Grenzwertes zu berechnen.
    • ESP in der Klasse: Abfallen der CO2 Konzentration erkennen und den asymptotischen Verlauf erkennen. Empfehlung zum Schließen der Fenster geben, wenn Änderungsrate unter Schwellwert fällt. Hintergrund Energiesparen, nur so lange Lüften wie auch Sinn macht.
  • Rollout
    • automatische Erzeugung von UUIDs, die das Flashen mit identischen Binaries erlaubt (vzero)