Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Nach kurzer Schaffenspause geht es hier nun endlich weiter. In diesem Beitrag dreht es sich um den recht bekannten Feinstaubsensor (PM-Sensor) SDS011, dessen Zusammenbau sowie natürlich die FHEM-Integration. Den Feinstaubsensor verwende ich zur Messung in meinem Heizraum.

Einleitung

Da ich in der Nähe zu Stuttgart wohne und arbeite spielt das Thema “Feinstaub” in meinem Alltag eine größere Rolle und so bin ich zwangsläufig auf das Projekt “luftdaten.info” aufmerksam geworden. Hierbei geht es darum sich mit günstigen Komponenten einen Feinstaubsensor selber zusammenzubauen um dann den Feinstaub in seiner Umgebung zu messen. Optional können dann auch die Werte der eigenen “Messstation” hochgeladen und mit der Allgemeinheit geteilt werden um so eine möglichst detaillierte Feinstaub-Karte zu erhalten.

Genau hier setzt auch mein Beitrag an. Ich verwende den Feinstaubsensor in meinem Heizraum mit den gleichen Komponenten und der gleichen Software wie im “luftdaten.info”-Projekt erweitert um einige für mich nützliche Funktionen.

Komponenten

Für die Komponenten meiner Variante des Feinstaubsensors kann man sich zuerst an der Einkaufsliste des “luftdaten-info”-Projekts orientieren.

Statt dem NodeMCU verwende ich einen WeMos D1 Mini mit dem gleichen ESP8266 Chip. Der neue WeMos D1 Mini Pro hat bei mir nicht funktioniert. Ich hätte lieber diesen verwendet, weil man hier eine externe Antenne für besseren WLAN-Empfang anschließen kann.

  • SDS011 Feinstaubsensor / PM-Sensor
  • WeMos D1 Mini
  • Dupont Kabel
  • USB-Kabel mit offenem Ende
  • PVC-Schlauch 6x9mm

 

Zusätzlich verwende ich noch einen HM-LC-Sw1-PCB Homematic-Aktor um den Feinstaubsensor bei Bedarf, also nur wenn die Ölheizung oder der Holzvergaser läuft, einzuschalten. Den Aktor habe ich in diesem Betrag schon mal vorgestellt.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Zur Stromversorgung verwende ich ein 12V Meanwell-Hutschienennetzteil, an dem auch mehrere andere Geräte noch mit dranhängen sowie einen Step-Down-Converter um auf die benötigte 5V-Versorgungsspannung zu kommen. Wer nur den den Sensor betreiben möchte kann auch direkt zur 5V-Variante des Nezteils greifen oder ein normales USB-Steckernetzteil verwenden und sich den Step-Down-Converter sowie das USB-Kabel mit offenem Ende sparen.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Achtung!

Dieses Netzteil wird direkt am 230V-Stromnetz angeschlossen. Bei Fehlern besteht Brandgefahr oder Gefahr eines elektrischen Schlages!

Um die Kabel zu verbinden verwende ich kleine Wago-Klemmen der 221-Serie

Die restlichen Kabel, inbesondere für die Spannungsversorgung (rot/schwarz), sind aus einem Brandmeldekabel, welches ich eigentlich für die 1-wire-Verdrahtung verwendet habe, sich aber hier auch sehr gut eignet.

20m Brandmeldekabel Profi-Line 2x2x0,8mm² rot*
Verschiedene Kabel Hersteller aus der EU
12,99 EUR

 

Zur Anzeige der Sensordaten verwende ich ein einfaches 1602-Display

 

Alles zusammen wird in ein Spelsberg Leergehäuse TK PC 2518-11-tm mit Hutschiende und M20 Kabelverschraubungen gepackt.

Spelsberg NS – DIN-Schiene 35 – 216*
Spelsberg - Werkzeug
8,77 EUR

 

3D-Druck

Um alle Komponenten sauber in das Spelsberg-Gehäuse zu bekommen, habe ich mich entschieden eine Art Grundplatte zu konstruieren. Auf dieser können dann die einzelnen Komponenten passgenau verschraubt und verklebt werden.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

 

Im 3D-Modell habe soweit möglich alle Originalmodelle eingebaut. Da wo ich keine Modelle gefunden habe, wurden einfach Platzhalter-Klötze eingebaut. Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

 

Der Halter für die Hutschiene rastet auf der einen Seite in eine normale 35mm Hutschiene ein und kann auf der anderen Seite die Grundplatte aufnehmen.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

 

Da wir seit einiger Zeit den Creality CR-10 3D-Drucker besitzen (siehe Patricks Blogbeitrag dazu) bot es sich natürlich an die Teile sofort auszudrucken und zu testen. Die 3D-Drucke wurde mit 0.3mm Schichtdichte und hoher Geschwindigkeit gedruckt und sehen deshalb etwas grob aus. Trotzdem ist die Passgenauigkeit und Festigkeit absolut in Ordnung. Das Material ist graues PETG.

Meine 3D-Modelle habe ich auf die Plattform “thingiverse” hochgeladen. Dort stehen Sie kostenlos zur Verfügung.

Download 3D-Modelle

Link zu thingverse

 

Zusammenbau

Zuerst das Anschrauben an die Wand und Anbringen der Hutschienenhalter. Hutschiene und Kabelverschraubung wurden vormontiert.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Auch die Öffnung zum Druckausgleich wurde vorher herausgeschlagen und mit etwas Gitter abgedeckt sowie mit Heißkleber fixiert. Sollte doch zu viel Kleinvieh da durch gelangen, werde ich eine wasserdichte und luftdurchlässige Membran einbauen. Hinweis für die, die es brauchen: IP65 ist so natürlich nicht mehr gewährleistet.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Danach wird die Grundplatte auf Vorder- und Rückseite bestückt.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Der Homematic-Aktor, der WeMos Mini und die Wago-Klemmen wurden verklebt, der Rest verschraubt.

Zur Verschraubung kann ich Kunststofffurchende 3x8mm Schrauben empfehlen, welche sehr gut halten. Diese habe ich mir mittlerweile auch gekauft und verbaut. Auf allen Bildern sind aber noch weniger geeignete Holzschrauben zu sehen.

Für alle Heißklebeaktionen verwende ich mittlerweile eine die Steinel Heißklebe-Pistole Gluematic 5000 samt passendem Heißkleber und feiner Düse

Für das Aufspielen der Software und die Verkabelung zwischen SDS011, WeMos Mini und Display kann die ausgezeichnete “Bauanleitung” auf “luftdaten.info” verwendet werden.

Zur Verlegung der Stromkabel siehe die Bilder. Hier ist zu erwähnen, das Sensor und Display direkt mit dem Ausgang des Step-Down-Converters verbunden sind und nicht die Versorgungsspannung aus dem WeMos beziehen. Die beiden Wago-Klemmen auf der Rückseite waren zuerst nicht geplant erleichtern aber später die Montage auf der Hutschiene und minimieren die Fummelei.

Jetzt kann die Grundplatte in das Gehäuse eingesetzt werden und mit dem Stromkabel verbunden werden. Der Ausgang des Sensors fluchtet genau mit dem Loch im Gehäuse. Die Kabelverschraubung muss allerdings nochmal kurz entfernt werden.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Wichtig: Alle Komponenten sind noch nicht mit dem Step-Down-Converter verbunden (siehe Wago-Klemmen und USB-Anschluss), da an ihm zuerst noch die korrekte Ausgangsspannung von ca. 5V eingestellt werden muss. Wer schon vorher alles anschließt und einschaltet gefährdet seine Bauteile, denn es liegen uneingestellt ca. 12V am Ausgang an (Eingangsspannung=Ausgangsspannung).

Nach Montage des Schlauchs und der Kabelverschraubung kann ein erster Funktionstest durchgeführt werden.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Fertig zusammengebaut und beschriftet

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Feinstaubsensor einrichten

Das Einrichten ist des Sensors ist eigentlich selbsterklärend, deshalb im Folgenden wenig Text und mehr Bilder. Logisch aber trotzdem ergänzend noch der Hinweis, das ich meine Daten nicht zum “Projekt” hochlade, denn ich messe ja nur in meinem Heizraum und nicht draußen.

Die Übersichtsseite

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Meine Einstellungen

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Noch kurz warten bevor die erste Messung startet

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Die ersten Messergebnisse

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

 

FHEM-Integration und Grafana

Die FHEM-Integration gestaltet sich einfach, denn es steht schon ein passendes Modul zur Verfügung.

Wie üblich sollte erst einmal die FHEM-Instanz auf den neuesten Stand gebracht werden.

In das Eingabefeld wird dazu der Befehl update eingegeben und anschließend mit shutdown restart neu gestartet.

Die Definition in FHEM inkl. Datenbankanbindung sieht dann so aus

#########################################################################
## PM-Sensor/LuftdatenInfo
#########################################################################
define UG.Heizraum.PM.Sensor.1 LuftdatenInfo local 192.168.178.38
attr UG.Heizraum.PM.Sensor.1 event-on-change-reading PM10,PM2.5
attr UG.Heizraum.PM.Sensor.1 group UG.Heizraum.PM.Sensor.1
attr UG.Heizraum.PM.Sensor.1 room PM-Sensor

define InfluxDBLog_UG.Heizraum.PM.Sensor.1 InfluxDBLog 192.168.178.143 8186 fhem_environment dbuser passwort UG.Heizraum.PM.Sensor.1:.*
attr InfluxDBLog_UG.Heizraum.PM.Sensor.1 group InfluxDBLog
attr InfluxDBLog_UG.Heizraum.PM.Sensor.1 room PM-Sensor

 

Wichtig für mich noch folgender Code mit dem das Blockieren der FHEM-Instanz verhindert wird falls mal die IP-Adresse bzw. der Sensor nicht erreichbar sein sollte

define UG.Heizraum.PM.Sensor.1.presence PRESENCE lan-ping 192.168.178.38 120 600
attr UG.Heizraum.PM.Sensor.1.presence devStateIcon present:general_an@green absent:general_aus@red
attr UG.Heizraum.PM.Sensor.1.presence event-on-change-reading state,presence
attr UG.Heizraum.PM.Sensor.1.presence group presence
attr UG.Heizraum.PM.Sensor.1.presence room PM-Sensor

define UG.Heizraum.PM.Sensor.1.presence.Schalter.doif DOIF ([UG.Heizraum.PM.Sensor.1.presence] eq "absent") (attr UG.Heizraum.PM.Sensor.1 disable 1;;save) DOELSEIF ([UG.Heizraum.PM.Sensor.1.presence] eq "present") (deleteattr UG.Heizraum.PM.Sensor.1 disable;;save)
attr UG.Heizraum.PM.Sensor.1.presence.Schalter.doif group DOIF
attr UG.Heizraum.PM.Sensor.1.presence.Schalter.doif room PM-Sensor

Die Definition des Homematic-Aktors samt Datenbankanbindung ist nichts neues und sieht wie folgt aus

#########################################################################
## UG.Heizraum.PM.Sensor.1.Aktor
#########################################################################
define UG.Heizraum.PM.Sensor.1.Aktor CUL_HM XXXXXX
attr UG.Heizraum.PM.Sensor.1.Aktor IODev HomematicLANGateway3
attr UG.Heizraum.PM.Sensor.1.Aktor IOgrp VCCU:HomematicLANGateway3
attr UG.Heizraum.PM.Sensor.1.Aktor autoReadReg 4_reqStatus
attr UG.Heizraum.PM.Sensor.1.Aktor expert 2_raw
attr UG.Heizraum.PM.Sensor.1.Aktor devStateIcon on:general_an@orange off:general_aus@blue
attr UG.Heizraum.PM.Sensor.1.Aktor event-on-change-reading .*
attr UG.Heizraum.PM.Sensor.1.Aktor firmware 2.8
attr UG.Heizraum.PM.Sensor.1.Aktor model HM-LC-Sw1-PCB
attr UG.Heizraum.PM.Sensor.1.Aktor peerIDs 00000000,
attr UG.Heizraum.PM.Sensor.1.Aktor room Geräte
attr UG.Heizraum.PM.Sensor.1.Aktor group PM-Sensor
attr UG.Heizraum.PM.Sensor.1.Aktor serialNr XXXXXXXXXXXX
attr UG.Heizraum.PM.Sensor.1.Aktor subType switch
attr UG.Heizraum.PM.Sensor.1.Aktor webCmd :

define DbLog_UG.Heizraum.PM.Sensor.1.Aktor DbLog ./contrib/dblog/db_extern.conf UG.Heizraum.PM.Sensor.1.Aktor:.*
attr DbLog_UG.Heizraum.PM.Sensor.1.Aktor asyncMode 1
attr DbLog_UG.Heizraum.PM.Sensor.1.Aktor group Geräte
attr DbLog_UG.Heizraum.PM.Sensor.1.Aktor room DbLog

Mit diesem Code wird der Sensor eingeschaltet, wenn der Holzvergaser eine Abgastemperatur von 80°C überschritten hat, was in der Regel nach wenigen Minuten passiert

define UG.Heizraum.PM.Sensor.1.Aktor.einschalten.Atmos.HV.DOIF DOIF ([Atmos_Holzvergaser.cD:Abgas] > 80) (set UG.Heizraum.PM.Sensor.1.Aktor on) DOELSE
attr UG.Heizraum.PM.Sensor.1.Aktor.einschalten.Atmos.HV.DOIF room Heizung

Mit diesem Code wird der Sensor eingeschaltet, wenn die Buderus Ölheizung bzw. der Ölbrenner läuft

define UG.Heizraum.PM.Sensor.1.Aktor.einschalten.Buderus.KM271.DOIF DOIF ([UG.Heizraum.Buderus.Oelbrenner.Einschaltverhalten] == 1) (set UG.Heizraum.PM.Sensor.1.Aktor on) DOELSE
attr UG.Heizraum.PM.Sensor.1.Aktor.einschalten.Buderus.KM271.DOIF room Heizung

Mit diesem Code wird der Sensor ausgeschaltet, wenn weder Holzvergaser noch Ölbrenner laufen

define UG.Heizraum.PM.Sensor.1.Aktor.ausschalten.DOIF DOIF ([Atmos_Holzvergaser.cD:O2] > 20.2 and [UG.Heizraum.Buderus.Oelbrenner.Einschaltverhalten] == 0) (set UG.Heizraum.PM.Sensor.1.Aktor off) DOELSE
attr UG.Heizraum.PM.Sensor.1.Aktor.ausschalten.DOIF room Heizung

 

Im Artikel CODE-QUICKIE: HEIZUNG VISUALISIEREN MIT GRAFANA habe ich den Feinstaubsensor schon mal erwähnt. Die Visualisierung in Grafana hatte ich dort bereits vorgestellt und vorbereitet.

Fazit

Der Feinstaubssensor SDS011 ist eine schöne Ergänzung zu den anderen Sensoren im Heizraum. Mit ihm konnte ich z.B. feststellen, das die Feinstaubbelastung besoners beim Nachlegen von Brennholz sehr hoch ist, wenn auch nur kurz.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Generell ist die Feinstaubbelastung im Heizraum sehr niedrig, zum Teil sogar niedriger wie in den Wohnräumen, was ich so auch nicht erwartet hatte.

Code-Quickie / 3D-Druck: Feinstaub PM-Sensor für den Heizraum inkl. FHEM-Integration

Reinhard

Autor von frombeyond.de. Smart-Home-Verrückter.

Nutzt Zuhause FHEM zusammen mit HomeMatic, JeeLink, 1-Wire, Flammtronik / Atmos HV, Buderus KM271, Philips HUE, Xiaomi Yeelight, Alexa, Sonos, FritzBox, Ubiquiti UniFi APs, APC UPS, APC PDU, IPMI. MariaDB, InfluxDB und Grafana zur Auswertung. Als Hardware-Untersatz kommen mehrere RaspberryPis und Supermicro Serverhardware zum Einsatz. Softwareseitig werden hauptsächlich Raspbian, Ubuntu, ESXi und Docker verwendet.

*Diese Links führen zu Amazon- oder anderen Online-Angeboten, keine Verfügbarkeitsgarantie, keine Garantie auf günstigsten Preis, Preise können variieren, Preise inkl. MwSt. / evtl. zzgl. Versandkosten, alle Angaben ohne Gewähr. Letzte Aktualisierung am 16.12.2017