diff --git a/docs/how_to_build.de.md b/docs/how_to_build.de.md deleted file mode 100644 index fce1b56..0000000 --- a/docs/how_to_build.de.md +++ /dev/null @@ -1,253 +0,0 @@ ---- -description: Du willst selbst einen Datenzwerg bauen? Hier findest du eine Bauanleitung! ---- - -# Wie man einen Datenzwerg baut - -!!! warning "Warnung" - - Der Datenzwerg wurde für das [CCCamp23](https://events.ccc.de/camp/2023/infos/) entwickelt und später angepasst für den [37c3](https://events.ccc.de/congress/2023/infos/index.html). Hardware, Firmware und Modelle wurden für einen bestimmten Zweck und eine bestimmte Nutzungsdauer entwickelt und sind möglicherweise nicht für andere Anwendungsfälle geeignet. Der Datenzwerg wird wie er ist ohne jegliche Garantie, Pläne zur Verbesserung oder Behebung oder andere Unterstützung bereitgestellt. Wenn du deinen eigenen Datenzwerg bauen möchtest, bist du auf dich allein gestellt. - -## Voraussetzungen - -Einen Datenzwerg zu bauen erfordert etwas Löterfahrung und 3D-Druckkenntnisse. - -Die Firmware, die für den Datenzwerg zur Verfügung gestellt wird, erfordert, dass du ihr Zugangsdaten für ein vorhandenes WiFi-Netzwerk (SSID und Passwort) und auch Zugang zu einer InfluxDB2-Instanz (Host, Port, Organisations-ID, Bucket-Name und schreibfähiges Zugriffstoken) zur Verfügung stellst. Du musst diese Zugangsdaten in einer Datei namens secrets.yaml im Verzeichnis firmware angeben. Eine Vorlage für diese Datei findest du in firmware/secrets-template.yaml. - -## Teile - -### Elektronik - -Um deinen eigenen Datenzwerg zu bauen, benötigst du folgende Teile: - -| Menge | Teil | Funktion | Link | -| ----- | ---- | -------- | ---- | -| 1 | Wemos D1 Mini | MCU | [AliExpress](https://aliexpress.com/item/1005004967205772.html), [Reichelt elektronik](https://www.reichelt.de/d1-mini-kompatibles-esp8266-board-v2-0-d1-mini-p253978.html?&nbc=1) | -| 1 | BME280 | Environment Sensor | [AliExpress](https://aliexpress.com/item/1005003676342598.html), [Reichelt elektronik](https://www.reichelt.de/kombo-sensor-luftdruck-luftfeuchtigkeit-temp--bme-280-p159825.html?&nbc=1) | -| 1 | SGP30 | TVOC/eCO2 Sensor | [AliExpress](https://aliexpress.com/item/1005004680000599.html) | -| 1 | VEML6075 | UV Sensor | [AliExpress](https://aliexpress.com/item/1005004653958045.html)| -| 1 | ADS1115 | 4 Port ADC | [AliExpress](https://aliexpress.com/item/32817162654.html), [Reichelt elektronik](https://www.reichelt.de/raspberry-a-d-wandler-ads1115-rpi-adc-1115-p316202.html?&nbc=1) | -| 1 | GY-MAX4466 | Sound sensor | [Amazon](https://www.amazon.de/dp/B07YDG3VZF), [Reichelt elektronik](https://www.reichelt.de/entwicklerboards-mikrofonverstaerker-max4466-debo-amp-mic-p235481.html?&nbc=1) | -| 3 | male 3-pin JST connectors + cables | Sensor & power connectors | [Amazon](https://www.amazon.de/gp/product/B08ZJ6JGB5) | -| 2 | male 4-pin JST connectors + cables | I2C connector | [Amazon](https://www.amazon.de/gp/product/B09LCRCTQG) | -| 2 | male 8-pin headers, male and female | ESP8266 connector | [Amazon](https://www.amazon.de/dp/B07DBY753C/), [reichelt elektronik](https://www.reichelt.de/buchsenleiste-2-54mm-1x20-trennbar-vergoldet-fis-bl1-20-g-p283787.html?&trstct=vrt_pdn&nbc=1) | -| 1 | male 10-pin header, male and female | ADS1115 connector | [Amazon](https://www.amazon.de/dp/B07DBY753C/), [reichelt elektronik](https://www.reichelt.de/buchsenleiste-2-54mm-1x20-trennbar-vergoldet-fis-bl1-20-g-p283787.html?&trstct=vrt_pdn&nbc=1) | - -Zusätzlich benötigst du einen Lötkolben, Lötzinn, Litze und Schrumpfschlauch. - -!!! warning "Warnung" - - Wir benutzen einen BM**E** sensor. Diese werden oft mit den BM**P** sensoren verwechselt. Diesen fehlt aber der Sensor für Luftfeuchte. Du kannst dein Modul mit der Hilfe [dieser Seite](https://homematic-forum.de/forum/viewtopic.php?t=68558) identifizieren. - -!!! warning "Warnung" - - Falls du deinen Zwerg mit Batterien betreiben willst, verzichte auf den SGP30 Sensor. Er benötigt konstant Strom um korrekt zu arbeiten und funktioniert nicht mit Deep Sleep. Lass ihn einfach weg und pass die Firmware entsprechend an, wie unten beschrieben. - -!!! note "Hinweis" - - Wir empfehlen, alle Teile der BOM zu verwenden. Wenn du jedoch etwas Geld sparen möchtest, kannst du die Sensoren direkt an das Board löten, und so das Geld für die JST Verbinder sparen. Du kannst auch den TP4056 weg lassen und die Kabel direkt an den LiPo löten. Sei jedoch gewarnt, dass das Modul Undervoltage-Schutz für den LiPo bereit stellt. - -### Zwergenkörper - -Wenn du die Elektronik in einen Zwergenkörper bauen willst, benötigst du folgende Teile: - -| Anzahl | Teil | Funktion | Link | -| ----- | ---- | -------- | ---- | -| 1 | 3D printed gnome body top | Gnome body | [Download](https://raw.githubusercontent.com/romses/Datenzwerg/main/models/datenzwerg_40p_1.2mm_top.stl) | -| 1 | 3D printed gnome body bottom | Gnome body | [Download (closed)](https://raw.githubusercontent.com/romses/Datenzwerg/main/models/datenzwerg_40p_1.2mm_bottom.stl) or [Download (cable throughholes)](https://raw.githubusercontent.com/romses/Datenzwerg/main/models/datenzwerg_40p_1.2mm_bottom_poe.stl) | -| 6 | 6x1mm neodymium disc magnets | Connecting the top and bottom of the gnome body | [Amazon](https://www.amazon.de/dp/B007JTKX3Y) | -| 1 | ~3mm thick sanded and polished cut-off of a 5mm rod of 0A070GT Plexiglas XT | UV transmissive rain cover for the UV sensor | [Sample from the manufacturer](https://www.plexiglas-shop.com/en-de/products/plexiglas-xt/sr0a070gt.html) | - -Für den Zusammenbau benötigst du Heißkleber, Sekundenkleber und UV reaktives Harz. - -!!! note "Hinweis" - - Es wird dringend empfohlen, den Zwergenkörper mit einer 0.6mm Düse und einer Schichthöhe von 0.4mm zu drucken. Das Modell wurde speziell für diese Parameter entworfen und möglicherweise kommt es zu unerwünschten Ergebnissen, wenn eine andere Düsengröße oder Schichthöhe verwendet wird. - - Mit diesem Setup werden die Modelle mit 3 Wänden und 3 Top/Bottom-Layers sowie 20% Infill gedruckt und Tree-Supports gedruckt. Das Drucken des Oberteils sollte ca. 5 Stunden dauernd, das Unterteil etwa eine Stunde. - -!!! note "Hinweis" - - Wir konnten ein 100mm Sample des XT Plexiglasstabes für etwa 3€ bekommen. Wir haben einen Dremel und [dieses 3D-gedruckte Schneidetool](https://www.printables.com/model/113887-rod-and-tube-cutter-for-dremel-with-limiter) genutzt, um den Stab zuzuschneiden, dann wurde der Abschnitt mit 240er und 400er Körnung glatt geschmirgelt und mit einer Universalpoliturpaste poliert ("Elsterglanz")[^2]. - - ![Die vier Phasen eines Regenschutzes: Roher Abschnitt direkt vom Stab, mit 240er Körnung geschmirgelt, mit 400er Körning geschmirgelt, poliert.](assets/images/rain-cover-stages.jpg) - -### Batteriemodul - -Falls du den Datenzwerg mit Batterien betreiben willst, benötigst du zusätzlich folgende Teile: - -| Anzahl | Teil | Funktion | Link | -| ----- | ---- | -------- | ---- | -| 1 | TP4056 | Lipo Charger | [AliExpress](https://aliexpress.com/item/32624444293.html) | -| 1 | 5V MT3608 boost converter | Power supply | [AliExpress](https://de.aliexpress.com/item/4001066566291.html) | -| 1 | 18650 LiPo battery | Power source | (on hand)[^1] | -| 1 | 18650 LiPo battery holder | Battery holder | [Amazon](https://www.amazon.de/dp/B08Y5R63YB) | -| 1 | male 2-pin JST cable male + JST cable female | Battery cable | [Amazon](https://www.amazon.de/GTIWUNG-Steckverbinder-Pin-Verbindungsstecker-Connector-Kabeldraht/dp/B07VYR7J49) | - -### MicroUSB Modul - -Falls du den Datenzwerg mit einem MicroUSB Kabel betreiben willst, benötigst du zusätzlich folgende Teile: - -| Anzahl | Teil | Funktion | Link | -| ----- | ---- | -------- | ---- | -| 1 | Micro USB breakout board | Power connector | [Amazon](https://www.amazon.de/gp/product/B0BZDL6GKC/) | - -Du solltest dann auch den Zwergenunterkörper mit Kabeldurchlass wählen. - -## Zusammenbau - -### Mainboard - -=== "Platine" - - Wir haben für den Datenzwerg eine Platine designed und produzieren lassen. Du kannst die Gerberdateien [hier](https://github.com/romses/Datenzwerg/tree/main/hardware/pcbs/v1.1) finden. - - Das Datenzwerg-Mainboard auf solch einem Platine aufzubauen ist recht simpel. Löte die 4-pin JST Header in die ENV und TVOC Plätze und die 3-pin JST Header in die UV, SND und Power Plätze. Dann löte zwei 8-pin Buchsenleisten an den Platz des ESPs und eine 10-pin Buchsenleiste an den ADS1115-Platz. - - ![Die Datenzwerg-Mainboard-Platine in Version 1.1](assets/images/pcb-v1.1.jpg) - - Dann ist leider ein bisschen manuelle Nacharbeit nötig: Verlöte auf der Unterseite der Platine ein Stück Draht zwischen dem 3v3 Pin des ESP8266 und dem 3v3 Pin von TVOC oder ENV Sensor. - - ![Die Datenzwerg-Mainboard-Platine in Version 1.1 mit dem angelöteten Draht](assets/images/pcb-v1.1-rework.jpg) - -=== "Handgelötet auf Lochraster (nur v1.0)" - - Das Mainboard ist der schwierigste Teil des Zusammenbaus. Wir empfehlen, zuerst die 3V3 Stromversorgung (orange im Fritzing-Schaltplan) und die GND Verbindungen (schwarz) zu verdrahten, dann die I2C Verbindung (grün und gelb). - - Das sind die kompliziertesten Verbindungen. Als nächstes die 5V Verbindungen (rot) und schließlich die analogen Signale (cyan). - - ![Der Fritzing-Schaltplan des Datenzwerg-Mainboards](assets/images/ Datenzwerg-Komplett-Fritzing.png) - - Der Fritzing-Schaltplan zeigt den ESP in seiner Standardorientierung. Wir haben uns jedoch entschlossen, den ESP umzuwenden. Das Diagramm zeigt auch den ADS1115 in einer gedrehten Orientierung. Dies macht das Fritzing-Diagramm viel einfacher zu verstehen. - - ![PCB-Skizze des Datenzwerg-Mainboards](assets/images/Datenzwerg-pcb.svg) {: style="width:100%"} - - Die PCB-Skizze zeigt den ESP und den ADS1115 in der korrekten Orientierung. Diese Skizze ist viel näher an unseren handgelöteten Platinen als im Fritzing-Diagramm gezeigt. - - ![Das Datenzwerg-Mainboard auf Lochraster](assets/images/ Datenzwerg-komplett.png) - - !!! note "Hinweis" - - Wir haben eine spezielle Art von Lochraster verwendet. Die Gruppierung von jeweils drei Löchern erleichtert die Organisation der Kabel erheblich. - - ![Lochrasterbeispiel](assets/images/perfboard.png) - -Sobald du das Mainboard verlötet hast, empfehlen wir, die Unterseite in breiten Streifen mit Kaptonband abzudecken, um Kurzschlüsse zu vermeiden. Alternativ kannst du auch Isolierband verwenden. - -!!! note "Hinweis" - - Dinge, die nach dem Löten zu überprüfen sind: - - - UV-Sensor, BME280, SGP30 und Soundsensor werden mit 3V3 vom ESP versorgt. - - ADS1115 und ESP sind mit 5V von der Stromversorgung versorgt. - - Alle GNDs sind verbunden. - - Keine Kurzschlüsse zwischen den Pins, insbesondere zwischen benachbarten Pins, Brücken können schnell entstehen. Verwende ein Multimeter, um Kurzschlüsse zu überprüfen. - -### Sensoren - -#### UV- und Schallsensor - -Die UV- und Schallsensoren werden an JST Verbindungskabel gelötet, um die Sensoren austauschbar zu machen. Stelle das Potentiometer auf der Rückseite des Schallsensors (vorsichtig!) auf die linke (im Uhrzeigersinn) Position ein, das setzt den Verstärkungsfaktor auf 25x, was der Firmware entspricht. Verpacke die Lötstellen in Schrumpfschlauch, um sie zu schützen und die Wahrscheinlichkeit von Kurzschlüssen zu verringern. - -![Das UV-Modul](assets/images/UV-module.png) -![Das UV-Modul als Fritzing-Zeichnung, die zeigt, wie der JST Verbinder anzubringen ist. Orange an VCC, Schwarz an GND, Gelb an Signal](assets/images/UV-module-fritzing.png) - -#### BME280 und SGP30 - -Der BME280 Sensor wird an einen 4-poligen JST Verbinder gelötet. Verwende Schrumpfschlauch, um die Lötstellen zu schützen und die Wahrscheinlichkeit von Kurzschlüssen zu verringern. - -![Das BME Modul](assets/images/BME280.png) -![Das BME module als Fritzing-Schaltplan, worauf zu sehen ist, wie der JST Header zu verbinden ist. Orange an Vin, Schwarz an GND, Gelb an SCL, Grün an SDA](assets/images/BME280-fritzing.png) - -!!! note "Hinweis" - - Die Temperatur im Inneren des Datenzwergs kann sehr viel wärmer werden als die Außentemperatur. Wir haben festgestellt, dass die Temperaturmessungen bei direkter Sonneneinstrahlung selbst dann noch erhöht waren, wenn wir den Sensor durch den Schlitz im Datenzwerggehäuse nach außen verlegt haben, möglicherweise aufgrund der Abwärme des erhitzten Gehäuses selbst. Wir haben uns entschieden, mit diesem Problem zu leben und es einfach in der Dokumentation zu erwähnen. Ein anderes Gehäusedesign könnte dieses Problem möglicherweise lösen. - -### Stromversorgnung - -=== "Batterieversorgung" - - Die Stromversorung ist die zweite komplexe Komponente des Datenzwergs. - - In unserem ursprünglichen Design war es der Plan, die LiPos direkt mittels der verbauten TP4056 Module zu laden. In unseren Tests zeigte sich jedoch, dass diese Module beim Laden sehr sehr heiß werden - wir sahen bis zu 86° C, und das war uns zu heiß, um sie auf dem möglicherweise sehr trockenen Feld des CCCamps zu laden. - - Aus diesem Grund laden wir die LiPos extern in einem handelsüblichen LiPo Ladegerät. Wir haben die Module jedoch behalten, um eine Tiefentladung zu verhindern. - - Die BAT+ und BAT- Anschlüsse sind mit VIN+ und VIN- von Boost-Konvertern verbunden, die auf 5V Ausgangsspannung eingestellt sind. Sowohl der ADS1115 als auch der ESP8266 können mit 3V3 betrieben werden. Der TP4056 liefert jedoch die Batteriespannung. Daher war der einfachste Weg, die Spannung auf 5V zu erhöhen, indem wir einen Boost-Konverter verwendeten, um sowohl den ESP8266 als auch den ADS1115 mit Strom zu versorgen. Dies hat auch den Vorteil, dass wir die Batteriespannung mit dem ADS1115 messen können, der Spannungen bis Vcc + 0,3V messen kann. Wir haben daher den dritten Draht des 3-poligen JST-Steckers, der für die Verbindung zum Mainboard verwendet wird, mit VIN+ verbunden, während die anderen beiden Drähte mit VOUT+ und VOUT- verbunden sind. - - Verwende Schrumpfschlauch, um die Lötstellen zu schützen und die Wahrscheinlichkeit von Kurzschlüssen zu verringern. - - ![Das zusammengebaute Stromversorgungsmodul](assets/images/Power-Module. png) - ![Die Stromversorung als Fritzing-Schaltplan, Verbindungen wie im Text beschrieben.](assets/images/Power-Module-fritzing.png) - -=== "MicroUSB-Versorgung" - - Das MicroUSB-Modul ist wesentlich simpler als das Batteriemodul. Es ist schlicht ein MicroUSB-Breakout-Board an einem 3-pin JST Kabel, rot an 5V, schwarz an GND. Gelb ist einfach abgeschnitten. Verwende Schrumpfschlauch, um die Lötstellen zu schützen und die Wahrscheinlichkeit von Kurzschlüssen zu verringern. - - ![Das zusammengebaute MicroUSB-Modul](assets/images/microusb-cable.jpg) - -### Zwergenkörper - -Klebe die Magnete mit Sekundenkleber in die Löcher im Boden des Zwergenkörpers. Achte auf die richtige Polarität, d.h. die Magnete ziehen sich gegenseitig an, wenn Ober- und Unterteil aufeinander gesetzt werden. Die Magnete sollten bündig mit der Oberfläche des Zwergenkörpers abschließen. - -Stecke den Acryl-Regenschutz in das obere der beiden Löcher und halte ihn von hinten mit dem Finger fest. Wenn sie nicht sofort passt, sleife das Loch im Druck vorsichtig größer, bis er passt. Er sollte bündig mit der Innenseite des Zwergenkörpers abschließen, es ist in Ordnung, wenn er auf der Vorderseite ein wenig übersteht. Achte unbedingt darauf auf, dass kein UV-Resin auf die Oberfläche der Acrylscheibe gelangt. Das UV-Resin darf nur auf die Ränder kommen. Härte es dann mit einer UV-Lampe aus. - -!!! warning "Warnung" - - Achte darauf, dass kein UV-Resin auf die Oberfläche der Acrylscheibe gelangt. Wenn das passiert, wird sie dauerhaft getrübt sein. - -Verwende einen kleinen Schraubenzieher oder ein anderes Werkzeug um den UV-Sensor an seinem Schrumpfschlauch festzuhalten. Klebe Heißkleber auf den Schrumpfschlauch und befestige den Sensor an seinem Platz so dass der eigentliche Sensor im Zentrum des Acrylfensters zu sehen ist. - -Klebe Heißkleber auf den Schrumpfschlauch des BME Sensors und klebe diesen an seinen Platz neben dem Schlitz im unteren Bereich des Oberteils, mit dem Sensor nach unten zeigend. - -## Flashen der Firmware - -Vergewissere Dich, dass die Stromzufuhr zur Hauptplatine des Datenzwergs unterbrochen ist. Ziehe den D1 mini von der Hauptplatine ab und schließe ihn über USB an den Computer an. - -!!! note "Hinweis" - - Das Mainboard verbindet D0 mit RST. Solange diese beiden Pins miteinander verbunden sind, lässt sich der ESP nicht flashen. - -Installiere Python 3.11. Clone das [GitHub repository](https://github.com/romses/Datenzwerg) und führe folgende Schritte aus: - -1. `python -m venv venv` -2. `source venv/bin/activate` -3. `pip install -r requirements.txt` - -Dadurch werden alle Abhängigkeiten, die zum Erstellen der Firmware und der Dokumentation erforderlich sind, in einer virtuellen Umgebung installiert und aktiviert. - -Wechsel dann in das Verzeichnis `firmware`. Kopieren die secrets-template.yaml nach secrets.yaml und gib Deine WiFi-, MQTT- und InfluxDB2-Anmeldedaten ein und vergib ein OTA-Passwort, falls gewünscht. Führe dann - -``` -esphome -s name -s eco2_baseline -s tvoc_baseline run datenzwerg.yaml -``` - -um die Firmware für den Datenzwerg mit dem Namen , der eCO2 Baseline `` und der TVOC Baseline `` zu kompilieren und zu flashen. - -Wenn z.B. die Firmware für den Zwerg mit dem Namen `zwerg`, der eCO2 Baseline `0x7F10` und der TVOC Baseline `0x88B4` geflashet werden soll, führe `esphome -s name zwerg -s eco2_baseline 0x7F10 -s tvoc_baseline 0x88B4 run datenzwerg.yaml` aus. Falls du noch keine Baseline Werte hast, kannst du sie auch weglassen: `esphome -s name zwerg run datenzwerg.yaml`. - -!!! warning "Warnung" - - Die aktuell eingecheckte Fassung der Firmware is optimiert für v1.1 mit MicroUSB-Versorgung, da der eCO2/TVOC-Sensor, der in v1.1 hinzugefügt wurde, eine konstante Stromversorgung benötigt, um sinnvolle Werte auszuspucken. - - Falls du die Firmware mit einem batteriegetriebenen Zwerg verwenden willst, musst du die Konfiguration anpassen, um Deep Sleep zu aktivieren, in dem du das `deepsleep` package in `firmware/datenzwerg.yaml` aktivierest und die `tvoc` und `uptime` Packages auskommentierst: - - ```yaml - packages: - base: !include packages/base.yaml # base v1.0 sensor package - #tvoc: !include packages/tvoc.yaml # TVOC sensor added in v1.1, incompatible to battery power - deepsleep: !include packages/deepsleep.yaml # enable this on battery power - #uptime: !include packages/uptime.yaml # disable this on battery power - - # these should not be enabled in production - #ota: !include packages/ota.yaml - #webserver: !include packages/webserver.yaml - - ``` - - Wenn du ohne das `tvoc` Package die Firmware kompilierst, kannst du auch die `eco2_baseline` und `tvoc_baseline` Parameter weg lassen. - -Stecke den D1 mini wieder in die Hauptplatine und schließe ihn wieder an die Stromversorgung an. Es sollte sich mit dem WiFi verbinden und Daten an die konfigurierte InfluxDB senden. - -[^1]: Wir haben die Lipos aus alten Powerbanks recycled -[^2]: Das geht am einfachsten, indem die Scheibe mit einer Zange festhalten wird. Zum Schleifen drücke die Scheibe gegen einen Schwingschleifer auf der niedrigsten Stufe und mit der richtigen Körnung. Zum Polieren reibe die Scheibe immer wieder von Hand auf einem Mikrofasertuch mit aufgetragener Polierpaste ab. Vergiss nicht, beide Seiten zu bearbeiten! diff --git a/docs/how_to_build.en.md b/docs/how_to_build.md similarity index 100% rename from docs/how_to_build.en.md rename to docs/how_to_build.md diff --git a/docs/index.de.md b/docs/index.de.md deleted file mode 100644 index 3064613..0000000 --- a/docs/index.de.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -description: "Der Datenzwerg ist ein Gartenzwerg mit einer Mission: Umweltdaten zu sammeln und öffentlich zugänglich zu machen." ---- - -# Der Datenzwerg - -![Datenzwerg Logo](assets/images/logo.png){: class="logo" :} - - - -## Was ist der Datenzwerg? - -Der Datenzwerg ist ein Gartenzwerg mit einer Mission: Umweltdaten zu sammeln und öffentlich zugänglich zu machen. - -Ursprünglich wurde er für das [Chaos Communication Camp 2023](https://events.ccc.de/camp/2023/infos/) entwickelt, -wo wir ([@romses](https://chaos.social/@romses) und [@foosel](https://chaos.social/@foosel)) eine kleine Armee -von 10 Datenzwergen über das Camp-Gelände verteilt hatten: Happy, Doc, Grumpy, Dopey, Bashful, Sleepy, Sneezy, -Nerdy, Kinky und Hefty[^1]. - -Die Datenzwerge haben sich außerdem über einen Besuch auf dem [37c3](https://events.ccc.de/congress/2023/infos/index.html) gefreut -und werden wenn alles klappt zumindest teilweise auch auf der [GPN22](https://entropia.de/GPN22) vertreten sein. - -Der Datenzwerg besteht aus einem 3D-gedruckten Gartenzwerg, einer eigenen Platine mit einem ESP8266 D1 Mini Mikrocontroller, einem BME280, SGP30, UV- und Schallsensor und optional einer 18650 Batterie. Er wird von [ESPHome](https://esphome.io/) betrieben und sendet seine Daten an eine [InfluxDB](https://www.influxdata.com/) Instanz. Die Firmware zeichnet derzeit Temperatur, relative und absolute Luftfeuchtigkeit, Luftdruck, Taupunkt, UV-Index eCO2, TVOC und Schalldruck auf. - -Wir haben ChatGPT gebeten, den Datenzwerg für uns zu beschreiben[^2] und das ist dabei herausgekommen: - -> Willkommen in der Welt des Datenzwergs, einem bezaubernden Gartenzwerg mit einem technologischen Twist! -> Diese entzückende kleine Kreatur mag wie eine gewöhnliche Gartendekoration aussehen, -> aber sie birgt eine geheime Mission, die so faszinierend wie wichtig ist. -> Der Datenzwerg ist auf einer Mission, Umweltdaten zu sammeln und sie für das Wohl aller öffentlich zugänglich zu machen. -> -> [...] -> -> Durch die Nutzung seines einzigartigen Standpunktes in Gärten und Außenbereichen -> bietet der Datenzwerg eine beispiellose Perspektive auf die Umwelt um uns herum. -> -> Alle von diesen umweltfreundlichen Wächtern gesammelten Daten werden frei -> über eine intuitive Online-Plattform zur Verfügung gestellt. -> -> [...] -> -> Auf dem kommenden Chaos Communication Camp freuen wir uns, den Datenzwerg einer -> breiteren Öffentlichkeit von Technikbegeisterten, Hackern und Umweltaktivisten vorzustellen. -> Diese außergewöhnliche Verbindung von Natur und Technologie zeigt das Potenzial für -> bürgerschaftliches Umweltmonitoring auf. - -## Eine kurze Geschichte des Datenzwergs - -2023-06-11 -: Die Idee des Datenzwergs wird am letzten Tag der [GPN21](https://entropia.de/GPN21) geboren, kurz vor der gemeinsamen - Barschicht von [@romses](https://chaos.social/@romses) und [@foosel](https://chaos.social/@foosel). Die ruhigeren - Momente der Barschicht sowie die Rückfahrt ins Rhein-Main-Gebiet werden für die Diskussion der Idee genutzt. Romses - registriert eine Domain. - -2023-06-30 -: romses und foosel treffen sich für eine gemeinsame Bastelsession. Die ersten zwei Mainboards werden gebaut. Der Datenzwerg lebt! - -2023-07-08 -: Eine weitere gemeinsame Bastelsession. Weitere 8 Mainboards werden gebaut. Die Datenzwerg-Armee wächst! - -2023-07-19 -: Nachdem das Modell fertiggestellt und 60+ Stunden gesamte Druckzeit vergangen sind, sind alle 10 Datenzwerg-Körper gedruckt. - -2023-07-23 -: Die Grundinfrastruktur geht live. Sensoren beginnen, an die offiziellen Server unter [datagnome.de](https://datagnome.de) zu berichten. - -: Alle Datenzwerg-Körper werden für die Installation ihrer Elektronik vorbereitet: Magnete werden eingeklebt, die UV-durchlässigen Scheiben werden installiert und alle Löcher mit Milliput gefüllt. - -2023-07-24 -: Die Firmware erreicht einen ersten funktionsfähigen Zustand. - -2023-07-28 -: Alle Zwerge stecken jetzt in ihren Körpern und senden fleißig Daten. - -2023-08-04 -: Die Webseite erreicht einen ersten vollständigen Zustand in Deutsch und Englisch. - -2023-08-09 -: Die Daten sind öffentlich via InfluxDB und MQTT zugänglich. - -: Es erfolgen letzte Anpassungen der Firmware für das Deployment auf dem Camp. - -2023-08-11 -: Die Zwerge sind vorübergehend wieder offline. Nächster Halt: CCCamp! - -2023-08-15 - 2023-08-19 -: Datenzwerg Einsatz auf dem [CCCamp23](https://events.ccc.de/camp/2023/infos/). - -2023-08-19 -: Die Zwerge haben (fast) alle das Camp verlassen und sind auf dem Weg zurück ins Rhein-Main-Gebiet. Vielen Dank für das rege Interesse! - -2023-08-22 -: Die Zwerge sind wieder zuhause und werden für zukünftige Einsätze vorbereitet. Der Datenexport from CCCamp ist [im Repository verfügbar](https://github.com/romses/Datenzwerg/tree/main/camp23_data). - -2023-08-28 -: Die Infrastruktur ist vorerst offline und nur noch diese Webseite und der Sourcecode bleiben verfügbar. Die Datenzwerge gönnen sich eine wohlverdiente Pause. - -2023-10-30 -: Es geht los mit der 37c3 Edition der Datenzwerge. Der Plan ist es, TVOC Monitoring zur Sensor-Suite hinzuzufügen. Eine neue Platine wurde entworfen, bestellt, und zehn neue Mainboards wurden gelötet. - -2023-12-08 -: Eine alternative Version des Datenzwergunterteils wurde erstellt, die die Durchführung eines Kabels erlaubt. Zehn neue Unterteile wurden gedruckt und magnetisiert, und erlauben damit den Einsatz von USB oder POE für die Stromversorgung auf dem 37c3. Damit sind die Vorbereitungen der Hardware für den 37c3 abgeschlossen. - -2023-12-11 -: Die Server-Infstruktur ist wieder am Start und die ersten Datenzwerge senden wieder Daten. - -2023-12-26 - 2023-12-30 -: Die Datenzwerge sind auf dem 37c3 im Einsatz. - -2024-05-30 - 2024-06-02 -: Fünf der Datenzwerge sind auf der GPN22 im Einsatz. - -## FAQ - -### Was für Daten werden vom Datenzwerg aufgezeichnet? - -Der Datenzwerg hat Sensoren, die die folgenden Daten aufzeichnen: - -- Temperatur -- Relative Luftfeuchtigkeit -- Luftdruck -- eCO2 -- TVOC -- UV-Sensor-Spannung -- Mikrofon-Spannung -- Batteriespannung -- WiFi-Signalstärke - -Wir berechnet Taupunkt und absolute Luftfeuchtigkeit aus den Temperatur- und relativen Luftfeuchtigkeitswerten, UV-Index aus der Spannung des UV-Sensors und Schalldruck (Lautstärke) aus der Mikrofonspannung. Die Berechnungen werden in der Firmware durchgeführt. - -### Nehmt ihr Audio auf? - -Nein. Zwar hat jeder Datenzwerg ein Mikrofon im Inneren, das an den ADC des ESPs angeschlossen ist, wir nutzen es jedoch nur, um alle 5s jeweils 1s an Audiosamples zu loggen, aus denen wir dann die Peak-to-Peak-Spannung und daraus den Schalldruck auf dem Datenzwerg selbst berechnen. Die Abtastrate ist viel zu niedrig und ungleichmäßig, um irgendwelches sinnvolles Audio aufzuzeichnen, und das Rauschen auf der Leitung vs. dem 10-Bit-ADC würde auch für eine schlechte Erfahrung sorgen, wenn das unser Ziel wäre. Wir sind nicht an Audio interessiert, wir sind an Lautstärke interessiert. - -### Wie lange hält die Batterie? - -In unseren Tests hält ein Datenzwerg zwischen drei und vier Tagen mit einer einzigen Ladung unserer 18650 LiPos, die von 1600mAh bis 2800 mAh reichen. Dies hängt natürlich von der Zellkapazität ab, aber auch von der Temperatur und anderen Umweltfaktoren. - -Mit dem TVOC Sensor an Bord reicht eine einzelne 18650 Zelle leider nicht aus. - -### Warum sind die Temperaturdaten tagsüber so hoch? - -Wir müssen die Zwerge in die direkte Sonne stellen, damit der UV Sensor messen kann. Darüber hinaus sondern der ESP und nun auch der TVOC-Sensor selbst Wärme ab. Wir haben versucht, genug Luftdurchfluss im Zwerg zu erzeugen, leider strahlt das Material sehr stark ab. Von daher sind die Temperaturen, insbesondere bei direkter Sonneneinstrahlung, leider verfälscht. - -### Wo kann ich die Daten sehen? - -Jeder Datenzwerg sendet seine Daten an eine zentrale, selbst gehostete InfluxDB-Instanz. Die Daten werden dann mit Grafana visualisiert. - -Einige dieser Visualisierungen sowie auch die Zugangsdaten um die Rohdaten selbst abzufragen, sowie Links zu Exports vergangener Veranstaltungen können [hier](./sensors/) gefunden werden. - -### Wo finde ich den Sourcecode? - -Alles kann in diesem GitHub-Repository gefunden werden: [romses/Datenzwerg](https://github.com/romses/Datenzwerg). - -## Medienecho - -- Die Datenzwerge waren der Opener des Camp reviews 2023 [media.ccc.de](https://media.ccc.de/v/camp2023-57105-cccamp23_review). -- romses und foosel waren zu Gast beim [Datenleben Podcast](https://www.datenleben.de/index.php/2023/10/14/dl043-perspektiven-auf-data-science/) und haben über die Datenzwerge gesprochen. - -## Credits & Danksagung - -Der Datenzwerg ist ein Gemeinschaftsprojekt von [@romses](https://chaos.social/@romses) und [@foosel](https://chaos.social/@foosel). - -Das Datenzwerg-Logo wurde von D.B. entworfen. - -Das Datenzwerg-Modell basiert auf [diesem "Garden Gnome" Modell](https://www.printables.com/model/260908-garden-gnome) von [Sci3D](https://www.printables.com/@Sci3D), das unter CC-BY veröffentlicht ist. Unser Remix kann [hier](https://www.printables.com/model/534875-datenzwerg-enclosure) und natürlich auch [im GitHub Repository](https://github.com/romses/Datenzwerg/tree/main/models) gefunden werden. - -Die SCD41 sensoren wurden gesponsort von [@dx@mastodon.social](https://chaos.social/@dx@mastodon.social). - -[^1]: Ja, die letzten drei genannten Namen sind nicht canon, und einer von ihnen gehört sogar einem Schlumpf - na und, Chaos ftw! -[^2]: Prompt: 'Write me a text for a website that gives an overview of the "Datenzwerg". The Datenzwerg is a garden gnome that collects environmental data, and makes it publicly available. The Datenzwerg will be presented at the Chaos Communication Camp.' diff --git a/docs/index.en.md b/docs/index.md similarity index 100% rename from docs/index.en.md rename to docs/index.md diff --git a/docs/mastowall.de.md b/docs/mastowall.de.md deleted file mode 100644 index 1a578e0..0000000 --- a/docs/mastowall.de.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: "Unsere Mastowall mit allen Beiträgen, die mit #DatenzwergLeaks oder #Datenzwerg getaggt sind." ---- - -# Mastowall - - - -Du kannst dir die Mastowall auch [direkt hier ansehen](https://foosel.github.io/mastowall/?hashtags=DatenzwergLeaks,Datenzwerg&server=https://chaos.social&embed=true). - diff --git a/docs/mastowall.en.md b/docs/mastowall.md similarity index 100% rename from docs/mastowall.en.md rename to docs/mastowall.md diff --git a/docs/sensors.de.md b/docs/sensors.de.md deleted file mode 100644 index 8f871d9..0000000 --- a/docs/sensors.de.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: "Ein Blick auf die aktuellen Datenzwerg-Sensordaten." ---- - -# Aktuelle Datenzwergdaten - - - -## Umgebungsdaten - -{% for env in grafana.environment %} -=== "{{ env.name.de }}" - -{% endfor %} - -## Interne Daten - -{% for env in grafana.internal %} -=== "{{ env.name.de }}" - -{% endfor %} - -Mehr Dashboards sind unter grafana.datagnome.de verfügbar - -## Rohdaten - -Wenn du an den Rohdaten interessiert bist, verbinde dich einfach auf unsere InfluxDB oder MQTT (Lesezugriff): - - - InfluxDB: - - Host: `influxdb.datagnome.de` - - Port: 8068 - - Organization: `datagnome` - - Bucket: `datagnome` - - Auth token: `5amv72PFZxPmnbUISjntEVxtElDYMhkeofg9Deo1ykO6Zy2XIba_iWPcyxyAp_R0dHsvHm5moE4YBCwxGIEriw==` - - MQTT: - - Host: `mqtt.datagnome.de` - - Port: 1883 - - User: `readonly` - - Password: `readonly` - -## Exporte vergangener Events - -Du kannst den Datenexport von CCCamp23 [im Repo finden](https://github.com/romses/Datenzwerg/tree/main/exports/cccamp2023). diff --git a/docs/sensors.en.md b/docs/sensors.md similarity index 96% rename from docs/sensors.en.md rename to docs/sensors.md index b5e89f4..d030b73 100644 --- a/docs/sensors.en.md +++ b/docs/sensors.md @@ -11,14 +11,14 @@ There is currently no current Datenzwerg data. Check again when they are back at ## Environmental data {% for env in grafana.environment %} -=== "{{ env.name.en }}" +=== "{{ env.name }}" {% endfor %} ## Internal data {% for env in grafana.internal %} -=== "{{ env.name.en }}" +=== "{{ env.name }}" {% endfor %} diff --git a/mkdocs.yml b/mkdocs.yml index be5f27d..0de5a86 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -33,77 +33,39 @@ theme: name: Switch to light mode extra: - alternate: - - name: English - link: !ENV [I18N_EN, "/en/"] - lang: en - - name: Deutsch - link: !ENV [I18N_DE, "/de/"] - lang: de - grafana: base_url: !ENV [GRAFANA_BASE, "https://grafana.datagnome.de/d-solo/" ] environment: - - name: - en: Temperature - de: Temperatur + - name: Temperature panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=3 - - name: - en: Humidity - de: Luftfeuchtigkeit + - name: Humidity panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=2 - - name: - en: Air pressure - de: Luftdruck + - name: Air pressure panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=4 - - name: - en: CO2 - de: CO2 + - name: CO2 panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=21 - - name: - en: TVOC - de: TVOC + - name: TVOC panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=22 - #- name: - # en: UV index - # de: UV Index + #- name: UV index # panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=18 - - name: - en: Sound pressure - de: Schalldruck + - name: Sound pressure panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=17 - - name: - en: Dew point - de: Taupunkt + - name: Dew point panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=14 - - name: - en: Absolute humidity - de: Absolute Luftfeuchte + - name: Absolute humidity panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=15 internal: - #- name: - # en: Battery voltage - # de: Batteriespannung + #- name: Battery voltage # panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=1 - - name: - en: Wifi signal - de: Wifisignal + - name: Wifi signal panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=5 - - name: - en: Uptime - de: Uptime + - name: Uptime panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=31 - - name: - en: UV sensor voltage - de: UV-Sensorspannung + - name: UV sensor voltage panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=6 - - name: - en: Sound sensor RMS voltage - de: Schallsensor-RMS-Spannung + - name: Sound sensor RMS voltage panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=16 - - name: - en: Metadata - de: Metadata + - name: Metadata panel: f17a6449-84ed-4733-b982-21c0d480c42a/?orgId=1&panelId=26 social: @@ -156,22 +118,7 @@ markdown_extensions: plugins: - search: - macros: - - i18n: - docs_structure: suffix - fallback_to_default: true - languages: - - build: true - default: true - locale: en - name: English - - build: true - default: false - locale: de - name: Deutsch - reconfigure_material: true - reconfigure_search: true - social: cards_layout_options: background_color: "#111111" color: "#ffffff" -