Die optimale Luftqualität in Werkstätten spielt eine entscheidende Rolle für Sicherheit, Gesundheit und die Qualität der durchgeführten Arbeiten. In Teil 1 unserer Serie zur Luftqualitätsüberwachung haben wir dir die Sensoren detailliert vorgestellt und gezeigt, wie du sie an den ESP8266 anbinden kannst. Jetzt, im zweiten Teil, vertiefen wir das technische Fundament und konzentrieren uns auf den ESP8266 Datenempfang mit Node.js und die Speicherung dieser Daten in MongoDB.
MongoDB zählt zu den populärsten NoSQL-Datenbanken. Sie ist dokumentenorientiert und überzeugt durch ihre Flexibilität und Skalierbarkeit. Das macht sie zur idealen Wahl für Projekte, die schnelle und effiziente Datenverarbeitung benötigen. In unserem Kontext erlaubt MongoDB die strukturierte und sichere Speicherung der Luftqualitätsdaten, die vom ESP8266 gesendet werden.
Mit dem ESP8266 Datenempfang über Node.js baust du eine Brücke zwischen Datensammlung und -analyse. Node.js und Express optimieren nicht nur den Datenempfang, sondern garantieren auch die reibungslose Integration in MongoDB. Dies gewährleistet, dass alle gesammelten Daten effektiv für zukünftige Analysen und Überwachungsmaßnahmen genutzt werden.
Aber wir sind noch nicht am Ende! Im dritten Teil dieser Serie zeigen wir dir, wie du den Quellcode aus Teil 1 anpasst, um die genauen Daten an unsere Node.js- und MongoDB-Infrastruktur zu senden. Und für alle, die sich auf eine visuelle Darstellung freuen: Im vierten Teil führen wir dich in die Welt eines Webfrontends, in dem die Daten aus MongoDB grafisch dargestellt werden.
Tauche mit uns in die technischen Details ein und finde heraus, wie der ESP8266 Datenempfang mit Node.js, die Integration in MongoDB und die zukünftige visuelle Präsentation die Überwachung der Luftqualität in deiner Werkstatt revolutionieren können.
Installation von Node.js und VSCode auf Ubuntu
Bevor wir in die Tiefen des ESP8266 Datenempfangs mit Node.js eintauchen, brauchst du die richtigen Werkzeuge. Ubuntu, als eine der beliebtesten Linux-Distributionen, bietet eine stabile Plattform für unser Vorhaben. Starten wir also mit der Installation der notwendigen Softwarekomponenten.
Node.js ist das Herzstück unseres Backends. Um es auf Ubuntu zu installieren, öffne dein Terminal und gib die folgenden Befehle ein:
sudo apt update
sudo apt install nodejs
Nach der Installation kannst du die Version überprüfen mit:
node -v
Als Nächstes installieren wir Visual Studio Code (VSCode), einen vielseitigen Editor, der ideal für unsere Entwicklungsarbeit ist. Um VSCode auf Ubuntu zu installieren, nutze:
sudo apt update
sudo apt install code
Mit diesen beiden essenziellen Tools bist du bestens gerüstet, um in die Programmierung des ESP8266 Datenempfangs mit Node.js einzusteigen und die in der vorherigen Einleitung beschriebenen Prozesse umzusetzen.
Auschecken, Kompilieren und Starten des Projekts
Ich habe ein Projekt für euch vorbereitet, welches ihr direkt mit Git aus Gitlab auschecken und starten könnt.
- Projekt aus Git auschecken:
Um das Projekt zu klonen, öffne dein Terminal und gib den folgenden Befehl ein:
git clone git@gitlab.com:ratzownal-de-public/feinstaub-backend-ts.git
Wechsle danach in das Projektverzeichnis:
cd feinstaub-backend-ts
- Abhängigkeiten installieren:
Bevor du das Projekt startest, musst du die notwendigen Abhängigkeiten installieren. Das geht einfach mit:
npm install
- Projekt kompilieren:
Da das Projekt in TypeScript geschrieben ist, musst du es zuerst kompilieren. Das geht mit dem in der package.json definierten Befehl:
npm run build
Dieser Befehl nutzt den TypeScript-Compiler (tsc), um den TypeScript-Code in ausführbaren JavaScript-Code zu überführen. Die kompilierten Dateien werden im dist-Ordner abgelegt.
- Projekt starten:
Nun, da das Projekt kompiliert ist, kannst du es starten. Zum Starten im Produktionsmodus:
npm start
Wenn du im Entwicklungsmodus arbeiten möchtest, welcher Änderungen in Echtzeit widerspiegelt und das Neustarten des Servers bei Codeänderungen überflüssig macht, nutze:
npm run dev
Nach dem Ausführen des vorherigen Befehls startet das Backend. Die Ausgabe in der Konsole sollte wie folgt aussehen:
feinstaub-backend-ts git:(main) ✗ npm run dev
> feinstaub-backend-ts@1.0.0 dev
> ts-node src/server.ts
Server läuft auf Port 3000
Verbindung zur MongoDB hergestellt.
Mit diesen Schritten hast du das Projekt erfolgreich aus dem Git-Repository ausgecheckt, kompiliert und gestartet. Lass uns nun schauen, wie wir diese Schnittstelle aufrufen und welche Parameter erwartet werden.
Testen der Kommunikation mit dem Backend über CURL
Die Digitalisierung ermöglicht es uns, fortschrittliche Systeme zur Luftqualitätsüberwachung zu erstellen. Der Schlüssel dazu? Daten! Genau hier kommt unser Backend ins Spiel. Nachdem du den Server erfolgreich gestartet hast, möchten wir dir zeigen, wie du diesen über eine Schnittstelle aufrufst und Daten sendest. Und das alles mit einem einfachen, aber leistungsstarken Tool: CURL. In diesem Abschnitt konzentrieren wir uns auf den ESP8266 Datenempfang mit Node.js und wie man Daten an unsere API sendet.
Der bereitgestellte Quelltext gibt uns einen guten Einblick in die Funktionsweise der Backend-Architektur. Durch die Verwendung von Modulen wie express, cors, body-parser und mongoose ist die App in der Lage, Daten sicher zu empfangen und in einer MongoDB-Datenbank zu speichern. Ein besonderes Highlight ist die Route /add-data, die es ermöglicht, Daten über eine HTTP-POST-Anfrage zu senden.
Möchtest du nun Daten an diese Route senden? Hier ist ein einfacher CURL-Befehl, den du verwenden kannst:
curl -v -H "Content-Type: application/json" -d '{"pm2_5": 12, "pm10": 25, "temperature": 22, "humidity": 55, "pressure": 1012}' http://localhost:3000/add-data
Mit diesem CURL-Befehl sendest du einen JSON-Body mit Daten für PM2.5, PM10, Temperatur, Luftfeuchtigkeit und Druck an den Server. Das Backend verarbeitet diese Daten und speichert sie in der MongoDB. Achte darauf, dass die Daten im richtigen Format und Typ gesendet werden, um Fehler zu vermeiden.
Beispiel eines und der Antwort mit Rückmeldung des HTTP Status 201 (Created):
~ curl -v -H "Content-Type: application/json" -d '{"pm2_5": 12, "pm10": 25, "temperature": 22, "humidity": 55, "pressure": 1012}' http://localhost:3000/add-data
* Trying 127.0.0.1:3000...
* Connected to localhost (127.0.0.1) port 3000 (#0)
> POST /add-data HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.81.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 88
>
< HTTP/1.1 201 Created
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Content-Type: text/plain; charset=utf-8
< Content-Length: 7
< ETag: W/"7-rM9AyJuqT6iOan/xHh+AW+7K/T8"
< Date: Wed, 01 Nov 2023 11:37:21 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host localhost left intact
Created
Zusammengefasst ermöglicht dir der ESP8266 Datenempfang mit Node.js nicht nur das Sammeln von Daten, sondern auch das einfache Senden und Speichern von Daten mit Hilfe von CURL und dem bereitgestellten Backend.
Jetzt, da du weißt, wie du Daten an das Backend senden kannst, steht dir die Welt der Luftqualitätsüberwachung offen. Mach weiter und erkunde die Möglichkeiten!
Überblick über die Abhängigkeiten des Projekts
Das fertige Projekt nutzt eine Kombination aus nützlichen Bibliotheken und Tools, die gemeinsam ein leistungsstarkes Backend bilden. Lass uns einen genaueren Blick auf diese Abhängigkeiten werfen:
- mongoose und @types/mongoose: Mongoose ist ein elegantes MongoDB-Objektmodellierungstool für Node.js. Es erleichtert die Interaktion mit MongoDB, indem es Schema-basierte Modelle bereitstellt und die Datenvalidierung, Query-Building und Geschäftslogik erleichtert. Die @types/mongoose Abhängigkeit bringt TypeScript-Definitionen für Mongoose, sodass du den vollen Vorteil von Typsicherheit und IntelliSense in VSCode nutzen kannst.
- body-parser und @types/body-parser: Der body-parser ist eine Middleware, die den Body von eingehenden HTTP-Anfragen analysiert. Dies ist besonders nützlich, wenn du Daten aus POST-Requests extrahieren möchtest. Mit den TypeScript-Definitionen von @types/body-parser kannst du die Bibliothek nahtlos in deinem TypeScript-Projekt verwenden.
- cors und @types/cors: CORS (Cross-Origin Resource Sharing) ist ein Express-Middleware, der es ermöglicht, Cross-Origin-Anfragen in deinem Webdienst zu definieren und zu handhaben. Dies ist entscheidend, wenn du vorhast, dein Backend mit Frontends zu verbinden, die von verschiedenen Ursprüngen stammen.
- express und @types/express: Express ist das meistverwendete Web-Framework für Node.js. Es erleichtert das Routing, die Middleware-Integration und viele weitere Aspekte der Webanwendungsentwicklung. Mit den @types/express Definitionen ist die Arbeit mit Express in TypeScript nahtlos.
- Dev-Abhängigkeiten:
- @types/node: Diese Bibliothek bietet TypeScript-Definitionen für Node.js, was essentiell ist, um Node.js-spezifische Funktionen in TypeScript zu nutzen.
- ts-node: Ein Tool, das die Ausführung von TypeScript-Code direkt ermöglicht, ohne zuvor transpilieren zu müssen.
- typescript: Der TypeScript-Compiler, um deinen TypeScript-Code in JavaScript umzuwandeln.
Mit dieser Mischung aus Abhängigkeiten hast du alles, was du brauchst, um ein leistungsfähiges, typsicheres und modernes Backend zu erstellen und zu optimieren.
Ausblick: Integrierte Sensordaten-Übertragung mit dem ESP8266
In Teil 2 haben wir gemeinsam die Basis für den ESP8266 Datenempfang mit Node.js geschaffen und gelernt, wie diese Daten in MongoDB gespeichert werden. Nun bist du bereit für den nächsten großen Schritt: In Teil 3 werden wir deinen ESP8266 mit den Sensoren SDS011 und BME280 so programmieren, dass er nicht nur misst, sondern die gewonnenen Daten auch direkt an deine Node.js-Schnittstelle sendet.
Freue dich darauf, den Quellcode des ESP8266 so anzupassen, dass er Teil deines IoT-Netzwerkes wird. Damit transformierst du deinen Mikrocontroller in ein autonomes System, das Umweltdaten in Echtzeit erfasst und übermittelt. Wir zeigen dir, wie du diese Datenströme effizient nutzen kannst, um die Luftqualität in deiner Werkstatt kontinuierlich zu überwachen.
Begleite uns im nächsten Artikel, wenn es darum geht, dein ESP8266-Projekt auf das nächste Level zu heben. Wir werden Schritt für Schritt durchgehen, wie die Daten von den Sensoren gelesen, aufbereitet und schließlich an deine Datenbank gesendet werden. So bist du nicht nur auf dem neuesten Stand der Technik, sondern leistest auch einen aktiven Beitrag zum Umweltschutz in deinem Arbeitsbereich. Bleib dran und sei gespannt, wie du mit ein paar Code-Zeilen deine Werkstatt smarter machst!