Überwachung der Kohlendioxid-Konzentration

Beim Atmen wandeln Menschen und Tiere eingeatmeten Sauerstoff und im Körper gespeicherten Kohlenstoff in Kohlendioxid um. Daher hat die ausgeatmete Luft eine höhere CO2-Konzentration als die eingeatmete. Das ist ein ganz normaler biologischer Prozess. Im Freien ist das völlig unkritisch, da Pflanzen genau das Gegenteil tun und die CO2-Konzentration damit stabil bleibt (wir vergessen hier mal die Erhöhung der CO2-Konzentration durch das Verbrennen fossiler Brennstoffe).
In geschlossenen Räumen kann sich die CO2-Konzentration allerdings schon deutlich erhöhen. Gerade modernere Gebäude ohne Lüftungssystem sind da recht problematisch. Daher ist es hier keine schlechte Idee, die CO2-Konzentration zu messen um ggf. stärker zu lüften.

Im Freien liegt die CO2-Konzentration in der Regel zwischen 250 und 350 ppm (parts per million – CO2 Anteil pro 1 Million), in Innenräumen kann die Konzentration recht schnell auf mehrere tausend PPM steigen (1000 ppm entsprechen dann 0.1% CO2 Anteil). In diesem englischsprachigen Dokument kann man gut sehen, dass CO2-Konzentrationen über 1000ppm zu Müdigkeit, schlechter Konzentration, erhöhtem Puls und anderen unerwünschten Nebenwirkungen führen kann.

Eine einfache Methode zur Messung von CO2 sind sogenannte An easy method to monitor CO2 levels are nichtdispersive Infrarotsensoren. Um diese an einem PC or Raspberry Pi zu nutzen, ist es am einfachsten, einen Sensor mit einer seriellen Schnittstelle zu wählen. Der MH-Z19 ist dafür eine gute Wahl. Er ist recht günstig, bietet eine serielle Schnittstelle und läuft mit einer Betriebsspannung von 3.3V. Damit kann er direkt an einen Raspberry Pi angeschlossen werden bzw. mit einem einfachen Konverter auch an PC oder Mac.

Schaut man von unten auf den Sensor, so sieht man die folgenden Anschlüsse:

hmz19-pinout

Der Pinabstand beträgt 2.54mm, damit kann man ganz einfach entsprechende Header anlöten:

co2sensor_pins

Nun lässt sich der Sensor einfach mit Kabeln mit z.B. an einen Raspberry Pi anstecken::

co2sensor_cables

Verbinden mit dem Raspberry Pi

Der Sensor kann direkt an einige Pins des 40-poligen GPIO-Anschlusses angesteckt werden:

Funktion Pin MH-Z19 Pin RPI
VCC 6 1
GND 7 6
RX 2 8
TX 3 10

Anschluss an PC und Mac

Um den Sensor an PC oder Mac anzuschliessen, wird zusätzlich ein kleiner USB/seriell Adapter benötigt:

usbser1

Für diese Konverter gibt es keine standardisierten Anschlüsse. Daher muss man hier schauen, wie der Konverter belegt ist. Dann verbindet man den Sensor wie folgt: VCC auf 3.3V, TX auf RX, RX auf TX und GND auf GND.

Software

Der Sensor ist recht einfach mit einem eigenen Programm auszulesen. Allerdings geht es auch komplett ohne Programmierung. Am einfachsten geht das mit Home Assistant, denn hierfür haben wir bereits ein Modul entwickelt. Dieses muss nur in der Konfiguration aktiviert werden:

sensor 3:
  platform: mhz19
  serial_device: /dev/serial0

Wer selst etwas programmieren will, kann z.B unsere pmsensor Bibliothek nutzen, die diesen Sensor auch direkt unterstützt.

MP1584 buck converter module

This small module MP1584 buck-converter module seems to be a good solution to power small circuits from higher voltages. Especially cool with this chip is that it accepts input voltages up to 29V. This makes it a perfect candidate for additional circuits that connect to a KNX bus. But it’s not limited to KNX buses. If you want to build a WiFi interface for your Roomba, you also have to down-regulate the 15V battery voltage to 5V or even 3.3V. You want to something to power a circuit from a car battery? This seems to be a perfect circuit for there use cases.

mp1584With it’s tiny dimensions of 17 x 22mm it’s size is around the size of 2 MicroSD cards (and much smaller than a single SD card).

The output voltage of the module is controlled by a tiny potentiometer. You will need a multimeter to check the output voltage before connecting it to a circuit.

While the plain voltage range data seems to be quite good, how does the circuit behave on different loads? Some Chinese dealers claim that similar modules should handle 3A load. If you just look at the size of the inductor you might already start thinking that this most likely isn’t true. However, DC resistance of the inductor is approximately 10mOhm (I miss my Kelvin probes and therefore could only measure this very roughly).

Let’s start with 29V input voltage – this will bring everything to the limit. Output voltage is fixed to 5V in this experiment. Without any current drawn, it still looks a bit rough:

29_0

However, a voltage swing of (Vpp) 98mV is no problem at all. Between 0.1A and 0.9A the circuit behaves quite well. Vpp is around 0.2V (a bit lower on low currents, higher in higher currents)

29_0.5

We reach the end at 1A. Now the regulator doesn’t provide a stable output voltage anymore:
29_1

But what about lower input voltages? Let’s go the the other “extreme”: 9V (it will work with even less, but let’s give it a bit headroom).

Almost perfectly clean with no load:
9_0

A bit more stable than at 29V for currents between 0.1A and 0.7A:

9_0.4

And at 0.7A we reach the end of the useable current range:

9_0.7

Conclusion: This module works fine for almost every embedded use case: Arduino, ESP8266 WiFi modules and even a Raspberry Pi without any additional USB devices plugged in.

Here are 2 animation that shows the output voltage under different loads:

29V input, 5V output, 0-1A in 0.1A steps:

29v_animated

9V input, %V output, 0-0.7A in 0.1A steps:

9v_animated

Coole Sensoren für das nächste Automatisierungsprojekt

Hausautomatisierung bedeutet nicht “ich schalte mein Licht mit dem Smartphone an”. Es heisst nämlich “Automatisierung”. Eine Steuerung sollte in erster Linie einen Komfortgewinn bringen und Dinge automatisch tun. Dazu muss das System natürlich wissen, was ringsherum passiert. Und dafür braucht es Sensoren.Einige Sensortypen sind weitverbreitet und bekannt, es gibt aber auch exotischere Sensoren, die dennoch für den kleinen Geldbeutel des Bastlers erschwinglich sind.

Temperatur

35040-img_0674Fast jeder experimentiert mit Temperatursensoren. Der DS18B20 ist ein 1-Wire-Sensor, den man leicht an verschiedenste Geräte (Arduino, Raspberry Pi, …) anschliessen kann. Auch entsprechende Software findet man wie Sand am Meet. Mit einer Genauigkeit von 0.5°C passt dieser Sensor für fast alle Anwendungsfälle. Wer also einfach die Temperatur überwachen möchte, für den ist dieser Sensor perfekt.

Luftfeuchtigkeit

dht-11-1Die DHT-11 und DHT-22 sind zwei Luftfeuchtigkeitssensoren. Sie sind deutlich teurer als ein einfacher Temperatursensor. Dafür bieten Sie auch zusätzliche Anwendungsmöglichkeiten. So könnte z.B. ein Luftbefeuchter eingeschaltet werden, wenn die Luftfeuchtigkeit zu gering ist. Oder wie wäre es mit automatischem Lüften, wenn die Luftfeuchtigkeit zu hoch ist? Der Sensor benutzt ein ähnliches Protokoll wie der 18B20 Temperatursensor, die beiden sind aber inkompatibel. Man kann daher nicht beide an den gleichen Pin eines Mikrocontrollers anschliessen. Allerdings ist das auch nicht notwendig, die diese Sensoren nicht nur die Luftfeuchtigkeit, sondern auch die Temperatur messen können.

Erdfeuchtigkeit

13995201090Die Pflanzen sind mal wieder tot, weil jemand vergessen hat, sie zu giessen? Um dem entgegen zu wirken gibt es Sensoren, die die Feuchtigkeit der Pflanzenerde messen können. Es existieren 2 Typen: resistive und kapazitive Sensoren. Resistive Sensoren messen einfach den Widerstand. Feuchte Erde hat einen geringeren Widerstand als trockene. Allerdings können diese Sensoren schnell korrodieren. Ein relativ neuer Sensortyp sind kapazitive Sensoren. Diese sind allerdings teurer und etwas weniger genau. Man muss also etwas experimentieren um den richtigen Schwellwert zu finden, ab dem die Software alarmieren soll.

Bewegungssensoren

pir-motion-sensor-536x408Ist jemand zu Hause? Bewegungssensoren können hier weiterhelfen. Die gängigen PIR-Typen messen Infrarotstrahlung sich bewegender Objekte. Sie sind relativ günstig und können zuverlässig Menschen, aber auch Haustiere erkennen. Wenn eine Person still sitzt oder schläft, wird dieser Sensortyp jedoch nicht ansprechen. Für einige Anwendungsfälle ist das aber auch kein grosses Problem.

Lautstärke

grove-Sound-SensorDa ist man mal einen Abend nicht zu Hause, aber der 14-jährige Sohn. Was da passieren wird, kann man sich denken. Und die Nachbarn werden es einem am nächsten Tag erzählen. Wie wäre es, die Lautstärke der Stereoanlage zu reduzieren, wenn ein gewisser Schallpegel überschritten ist. Das lässt sich auch recht gut zeitlich steuern, denn um 17 Uhr darf es ja ruhig etwas lauter sein als um 23 Uhr. Ein Lautstärkesensor ist hierfür das richtige Mittel. Das wird natürlich nur funktionieren, solange der Sohn den Sensor nicht entdeckt hat und ihm mit Dämmwolle bearbeitet.

Feinstaub

Particle sensorKleinste Staubpartikel können ein problem für einige Menschen sein – besonders für Asthmatiker. Feinstaub kann verschiedenste Ursachen haben. Die Konzentration dauerhaft zu messen, kann helfen, die Quelle zu finden. Feinstaubsensoren arbeiten mit einer optischen Abtastung und einfache Sensoren für den Heimgebrauch sind recht günstig. Eine Feinstaubmessung in der eigenen Wohnung muss also nicht teuer sein.

433 MHz Fenstersensor

Auf eBay, Alibaba und anderen Webseiten findet man oft günstige Fenstersensoren, die über Funk informieren, wenn ein Fenster geöffnet wird. Sie kosten of unter 10€, das macht sie für Bastler interessant.

Diese Geräte sehen etwas so aus:

Newest-High-quality-1Pcs-433-MHZ-Wireless-Home-Security-Door-Window-Sensor-Detector-with-Battery-for

Aber wie sieht das ganze von innen aus? Das kleine Teil, welches am Fensterflügel befestigt wird ist einfach ein Magnet. Dann kann man sich schon denken, wie es auf der anderen Seite aussehen wird. Das Gegenstück ist wohl ein Reed-Relais. Aber was sonst noch?

Die Schaltung basiert auf dem HS1527. Das gute an diesem Chip ist, dass das Funkprotokoll so trivial ist, dass man es problemlos mit einem Raspberry Pi oder Arduino und einem günstigen 433MHz-Empfänger dekodieren kann. Auch positiv ist der Standby-Stromverbrauch von 1uA. Damit sollte selbst die kleine 12V Batterie (ich habe diese Bauform noch nie vorher gesehen) eine ganze Weile halten.

Allerdings gibt es ein recht grosses Problem: Der Sensor sendet lediglich ein Datenpaket, wenn das Fenster geöffnet wird. Das ist ganz ok, wenn man es nur als Einbruchssensor nutzen will. Allerdings kann man damit nicht den Status eines Fensters (offen/geschlossen) prüfen, da beim Schliessen des Fensters kein Signal gesendet wird. Damit ist der Sensor für Anwendungsfälle wie das Ausschalten der Heizung bei geöffnetem Fenster nicht brauchbar.

Daher kann ich diesen Sensortyp für Automatisierungsanwendungen nicht empfehlen.

Raspberry Pi as a Home Automation Server

The Raspberry Pi is a credit card-sized Linux computer on a single circuit board that runs on an SD card. It is powered off a 5V supply – so it can run all day it uses very little electricity and only costs around £25 – £45. The Raspberry Pi has a graphical output with a HDMI plug and a good standard of audio processing. It has networking capabilities, so you can plug it into your home network if you want to and configure it to automatically connect in the future, or you can plug it into a USB Wi-Fi dongle. As it is wireless, you can then place this server anywhere in your house because it is so portable (in a cupboard, below your desk, in the garage – even outside). The server is low cost, high performing and as of 2015, Raspberry Pi had sold over 8 million computers after launching in just 2012). The latest model is the Raspberry Pi 3 – modified to include wireless LAN and Bluetooth; making IoT and mobile projects more accessible. They were first designed to teach children how computers are made/ work, but are increasingly being used for a variety of other projects.

Moving your home automation code and programs over to the Raspberry Pi makes is simplistic in nature. You can connect low-level electronics to it, so you can read from sensors, but at the same time run Python scripts and interface with other devices on your network such as a Philips Hue hub – as well as pulling data from the internet. You also have the ability to create a graphical display if you want to; you can plug it into a monitor and plug in a keyboard and mouse and use it like a fully graphical-interfaced computer to do the programming. And because it is a Linux server too, you can connect to it via SSH on your home network.

The Raspberry Pi Foundation is committed to helping people learn about computers and how to solve problems in the digital world, so the company’s profits go straight into funding the training of teachers to help people use the technology they offer. They are a forward-thinking company, solving the modern-day shortage of programmers and coders by educating, training and enabling people to build their own HA servers in their own homes.

Home Security with Raspberry Pi and a Webcam

Home security has never been easier. Though the terms “front end development” and “open source” may be daunting to some, Raspberry Pi hardware is a cost-effective and efficient solution that makes Home Automation a DIY commodity.

For $39.99, Raspberry Pi, is paired with a Mirco SD card (at least 2GB), USB Hub and a compatible webcam, to create a simple means of home security.

The Raspberry Pi is a self-powered motherboard, that either remotely or connected to a monitor and keyboard via its own USB ports. Having inserted a formatted SD card into the slot of the Motherboard, you can begin set up your Home Automation system. Your Webcam needs to be connected to a USB hub which is then connected to the motherboard in order to supply power to your camera.

First, Raspberry Pi needs to install an operating system to its motherboard. Whereas you can access your OS’s terminal directly, use of NOOBS’ Raspbian integrated OS, is the most convenient set up for beginners. Note that this option can be booted directly onto your Raspberry Pi, through a preloaded SD card.

Having inserted your SD card into your computer’s card reader, you will first need to format it to FAT-32. Following this, you can then download NOOBS and its integrated Raspbian software. Upon installing Raspbian on your computer, Windows Clients will need to download Win32 in order to burn this OS to an SD card, whereas Mac and Linux clients can do so by opening the Disk Utility and Terminal.

Once this is done, your SD card can be inserted into the Raspberry Pi.

For the convenience of simply controlling your electronics; such as a webcam, Raspberry Pi can then be controlled remotely from another device over a local network using a Secure Shell (SSH).

For remote access, you will need to download a free IP Scanner client and an SSH client such as Putty.  This will identify your Raspberry Pi from your OS. Taking note of your hardware’s IP address in the scan, you can remotely configure your Pi through the SSH client.

To install the camera connected to your USB hub, you will need to configure your Raspberry Pi’s terminal to enable it, and create a webcam server. Over a remote control server, the webcam can then be accessed from using the Pi’s IP address. There is also configuration available online to access your webcam stream from an internet browser. Alternatively, you can connect a camera module to Raspberry Pi’s CSI port, enabling your Raspberry Pi to become its own IP webcam.

Bluetooth-Probleme mit dem Raspberry Pi 3

Der “Bluetooth tracker” in Home Assistant ist eine spannende Funktion. Sie erlaubt es, festzustellen, ob Personen an einem bestimmten Ort sind (z.B. zu Hause). Dafür kann z.B. das Mobiltelefon genutzt werden.  Der Raspberry Pi 3 kommt mit einem integrierten Bluetooth chip. Das heisst, um die Tracking-Funktion auf Bluetooth-Basis zu nutzen, ist keine zusätzliche Hardware erforderlich. Ziemlich cool! Allerdings hatte ich ziemlich grosse Problem, diese Funktion zum Laufen zu bringen.Bluetooth war auf dem Raspberry Pi  aktiviert, dennoch hat Home Assistant keine Bluetooth-Geräte gefunden. Wo liegt das Problem?

Fangen wir mal an, auf der Kommandozeile nach Bluetooth-Geräten zu suchen:

[email protected]:~# hcitool scan
Scanning ...

Nichts! Dabei sind diverse Bluetooth-Geräte aktiv. Versuchen wir es als nächstes mit “blutoothctl”:

[email protected]:~# sudo bluetoothctl
[NEW] Controller B8:27:EB:76:70:7C raspberrypi [default]
[bluetooth]# devices
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:76:70:7C Discovering: yes
[NEW] Device 04:69:F8:xx:xx:xx 04-69-F8-xx-xx-xx
[NEW] Device 88:C6:26:xx:xx:xx 88-C6-26-xx-xx-xx
[bluetooth]# quit
[DEL] Controller B8:27:EB:76:70:7C raspberrypi [default]

Da sind die ganzen Geräte. Wieso findet hcitool die nicht? Gibt es evtl. Probleme mit einem Serverprozess?

[email protected]:~# systemctl status bluetooth
● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
   Active: active (running) since Mon 2016-06-13 15:53:36 UTC; 1h 54min ago
     Docs: man:bluetoothd(8)
 Main PID: 729 (bluetoothd)
   Status: "Running"
   CGroup: /system.slice/bluetooth.service
           └─729 /usr/lib/bluetooth/bluetoothd

Jun 13 15:53:36 raspberrypi systemd[1]: Starting Bluetooth service...
Jun 13 15:53:36 raspberrypi bluetoothd[729]: Bluetooth daemon 5.23
Jun 13 15:53:36 raspberrypi systemd[1]: Started Bluetooth service.
Jun 13 15:53:36 raspberrypi bluetoothd[729]: Starting SDP server
Jun 13 15:53:36 raspberrypi bluetoothd[729]: Bluetooth management interface 1.10 initialized
Jun 13 15:53:36 raspberrypi bluetoothd[729]: Sap driver initialization failed.
Jun 13 15:53:36 raspberrypi bluetoothd[729]: sap-server: Operation not permitted (1)

Das sieht etwas seltsam aus. Der Serverprozess läuft zwar, aber es gibt dort eine seltsame Fehlermeldung. Wenn man nun nach dieser sucht, findet man sehr viel Text dazu auf  raspberypi.org. Um das in den Griff zu bekommen, muss man wohl das SAP-Plugin abschalten.

Dazu bearbeitet man die Datei /etc/systemd/system/bluetooth.target.wants/bluetooth.service und fügt die Option “–noplugin=sap” an der “ExecStart”-Zeile an:

[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=sap
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1

[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service

Wie sieht es jetzt aus?

[email protected]:~# systemctl status bluetooth
● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
   Active: active (running) since Mon 2016-06-13 17:56:35 UTC; 9s ago
     Docs: man:bluetoothd(8)
 Main PID: 19106 (bluetoothd)
   Status: "Running"
   CGroup: /system.slice/bluetooth.service
           └─19106 /usr/lib/bluetooth/bluetoothd --noplugin=sap

Jun 13 17:56:35 raspberrypi bluetoothd[19106]: Bluetooth daemon 5.23
Jun 13 17:56:35 raspberrypi bluetoothd[19106]: Starting SDP server
Jun 13 17:56:35 raspberrypi bluetoothd[19106]: Excluding (cli) sap
Jun 13 17:56:35 raspberrypi bluetoothd[19106]: Bluetooth management interface 1.10 initialized
Jun 13 17:56:35 raspberrypi systemd[1]: Started Bluetooth service.

Die Fehlermeldung ist weg. Allerdings zeigt

hcitool scan

weiterhin keine Bluetooth-Gerät an.

Wird fortgesetzt…

Home Assistant für Hausautomation

Wer auf der Suche nach Hausautomatisierungen-Software ist, wird auf viele verschiedene Projekte stossen. Im Moment ist das Thema “hip” und viele Entwickler arbeiten an Hausautomatisierungeprojekten. Viele Projekte legen den Hauptfokus auf die Visualisierung. Zwar ist eine gut aussehendes und gut bedienbare Benutzerschnittstelle wichtig, aber eigentlich sollte eine Hausautomatisierung die meisten Sachen automatisch tun.

Ein Projekt, welches im Bereich “Automatisierung” sehr flexibel ist ist Home Assistant. Die Systemarchitektur ist sehr klar und einfach. Es gibt eine saubere Trennung zwischen Visualisierung und Backend. Durch eine Webschnittstelle ist es einfach möglich, für die Visualisierung und die Steuerung ein eigenes GUI zu entwickeln und nutzen. Für mich persönlich ist es auch ein Vorteil, dass die Software in Python geschrieben ist, was die Erweiterung um zusätzliche Funktionalitäten vereinfacht.

Eine Home Assistent Architecture könnte wir folgt aussehen:

ha-architecture

KNX ist im Moment (Mitte Juni 2016) noch nicht unterstützt, aber ich arbeite gerade an einem Modul. Ich hoffe, dass dieses demnächst in Home Assistant integriert werden kann.

Installation eines MQTT-Brokers auf dem Raspberry Pi

Nicht nur für Hausautomatisierunge-Projekte, ein kleiner zentraler MQTT-Broker ist ein gutes Tool, um Sensordaten zu sammeln und an Steuerungsapplikationen weiterzuleiten. MQTT ist für solche Aufgaben gut geeignet, da es sich um ein leichtgewichtiges Protokoll handelt, was spezifisch für Sensorapplikationen entwickelt wurde. Daher funktioniert es auch sehr gut “nebenbei” auf einem Raspberry Pi.

Es gibt verschiedene MQTT-Implementationen. Sehr einfach lässt sich auf dem Raspberry Pi unter Raspbian Mosquitto nutzen. Die Installation ist sehr einfach:

sudo apt-get install -y mosquitto mosquitto-clients

Nun sollte der Moquitto-Server bereits laufen. Das kann wie folgt einfach getestet werden:

mosquitto_sub -h localhost -v -t test

Mit diesem Befehl wird ein MQTT Subscriber gestartet, der auf Nachrichten im “Test”-Kanal wartet.

Jetzt kann man eine zweite Verbindung zum Raspberry Pi starten und eine Nachricht absetzen:

mosquitto_pub -h localhost -t test -m "Hello world, Mosquitto"

Jetzt sollte der Subscriber die Nachricht “Hello world, Mosquitto” auf dem Bildschirm anzeigen.