Dit keer een combinatie van enkele eerder gemaakte sensoren, namelijk de DHT11 luchtvochtigheid en temperatuur sensor, de LDR (Light Dependent Resistor) Sensor en de PIR (Passive InfraRed) Sensor. Deze multi-sensor meet dus de hoeveelheid licht, de luchtvochtigheid, temperatuur en detecteert eventuele beweging in een ruimte. 

Een dergelijke sensor kun je gebruiken om simpelweg meerdere sensoren aan één WiFi board te koppelen en dus als afzonderlijke triggers te gebruiken. Of je gebruikt het om juist complexere triggers te maken door een combinatie van de sensoren te gebruiken.

Enkele voorbeelden:

  • Beweging gedetecteerd en lage lichtintensiteit? Schakel verlichting in.
  • Beweging gedetecteerd, hoge luchtvochtigheid en lage lichtintensiteit? Schakel ventilator en verlichting in.
  • Snelle en abnormale veranderingen in temperatuur en luchtvochtigheid? Ontvang dan een waarschuwing per telefoon of spraak.

Kant en klaar alternatief

Kant en klaar alternatieven zijn ook in dit geval weer verkrijgbaar,  bijvoorbeeld de Fibaro Z-Wave Multi-Sensor, deze registreert ook beweging, meet de temperatuur en lichtintensiteit. En hoewel deze sensor er erg strak en futuristisch uitziet en met een handige app geleverd word, je toch bijna € 60 per stuk kost en ons Doe-Het-Zelf hobby project weer voor een fractie van de kosten zelf te maken is.

 

Hieronder vind je een overzicht van de benodigdheden voor dit project, de code en een aansluitschema.

De benodigdheden:

 

Ook nodig maar enkel op de boel eenmalig te configureren, een computer of laptop met daarop geïnstalleerd:

 

 

ESP8266 ESP-12 NodeMCU Lua WiFi

 

AliExpress.com Product – WeMos D1 mini , WiFi board  met ESP8266 intergratie  + 32Mb flash

 

Passive Infrared Sensor – Gevonden op AliExpress.com  | Thuisbezorgd en al voor €0,70 

 

10  stuks  Light Dependent Resistor LDR 5MM Photoresistor gevonden op AliExpress.com | Thuisbezorgd en al voor € 0,73

 

AliExpress.com Product – Single Bus DHT11 Digital Temperature and Humidity Sensor

 

5 stuks Soldeerloze Prototype Breadboard 170 Tie-points PCB Test Board – Gevonden op AliExpress.com | Thuis bezorgd en al voor €1,60 

10 stuke LED en 40 stuks diverse weerstanden  – Gevonden op AliExpress.com | Gratis thuisbezorgd voor nog geen € 0,63 

 

Aansluitschema

Volg onderstaand schema op de sensoren aan te sluiten op je board. Voor de volledigheid:

Sensor NodeMCU pin
DHT11 D5
LDR A0
PIR D7

Mocht één en ander toch nog onduidelijk zijn lees dan eerste aandachtig hoe je de sensoren afzonderlijk aansluit. Klik hiervoor op bovenstaande sensor naam om de uitgebreide beschrijving te lezen.

 

Aansluitschema voor de Homeyduino Multi-Sensor met bewegings-, licht-, temperatuur en luchtvochtigheidsdetectie | Huisvanvandaag.nl

Aansluitschema voor de Homeyduino Multi-Sensor met bewegings-, licht-, temperatuur en luchtvochtigheidsdetectie

 

Arduino IDE

Installeer Arduino IDE, dit is de software die nodig is om de code op je ESP8266 board te kunnen zetten. Eerst moeten we hiervoor de Homeyduino Library installeren.

Open een nieuw venster, klik op de bovenste balk op Schets > Bibliotheek gebruiken > Bibliotheken beheren.

 

Arduino IDE, eerst de Homeyduino library installeren | Huisvanvandaag.nl

Arduino IDE, eerst de Homeyduino library installeren

In het scherm dat nu opent zoek je op Homeyduino en vervolgens installeer je deze.

Hetzelfde doe je ook met de volgende termen: ESP8266 en SimpleDHT, deze zoek en installeer je ook.

 

Homeyduino Code

Wanneer je de bovenstaande stappen hebt gevolgd open je een nieuw scherm van Arduino IDE en vervang je de tekst door onderstaande code. Let er even op dat je hier de juiste netwerk gegevens invult (zie rode tekst)

Wanneer je van plan bent meerdere Multi sensoren in je huis te plaatsen is het belangrijk dat je ze allemaal een unieke naam geeft (zie tweede rode tekst).

// Code aangepast voor Homeyduino door Domoticablog http://huisvanvandaag.nl. 
// Kijk op de site voor meer Homeyduino en andere Smart Home gerelateerde posts.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Homey.h>
#include <SimpleDHT.h>
#define PIN_DHT D5 // DHT11
SimpleDHT11 dht11; // DHT11
int sensor = 13; //D7 // PIR
unsigned long previousMillis = 0; // DHT11
const unsigned long interval = 10000; //Interval in milliseconds // DHT11
int LDRsensor = A0; // LDR
void wifi() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin("SSID”, "PASSWORD");
uint8_t timeout = 30;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (timeout<1) break;
}
if (WiFi.status() == WL_CONNECTED) {
//Print IP address
Serial.print("Connected to WiFi! (");
Serial.print(WiFi.localIP());
Serial.println(")");
}
}
}
void setup() { // DHT11
Serial.begin(9600);
Homey.begin("Multi-sensor"); // Indien je meerdere sensoren wilt plaatsen, geef ze dan ieder een unieke naam
Homey.setClass("sensor");
Homey.addCapability("measure_humidity"); // DHT11
Homey.addCapability("measure_temperature");// DHT11
Homey.addCapability("alarm_motion"); // PIR
pinMode(sensor, INPUT); // declare sensor as input   PIR
Homey.addCapability("measure_luminance"); // LDR
}
void  pirloop() { // void voor PIR
wifi(); // Beide
Homey.loop(); // Beide
long state = digitalRead(sensor); // PIR
delay(5000); // was 1000  // PIR
if(state == HIGH){ // PIR
//  digitalWrite (Status, HIGH); // PIR
Homey.setCapabilityValue("alarm_motion", (true)); // PIR
Serial.println("Motion detected!"); // PIR
}
else { // PIR
//   digitalWrite (Status, LOW); // PIR
Homey.setCapabilityValue("alarm_motion", (false)); // PIR
Serial.println("Motion absent!"); // PIR
}
} 
void dhtloop() { // void voor DHT11
wifi(); // Beide
Homey.loop(); // Beide
unsigned long currentMillis = millis(); // DHT11
if(currentMillis - previousMillis > interval) { // DHT11
previousMillis = currentMillis; // DHT11
updateSensor(); // DHT11
}
}
void updateSensor() { // DHT11
byte temperature = 0; // DHT11
byte humidity = 0; // DHT11
int err = SimpleDHTErrSuccess; // DHT11
if ((err = dht11.read(PIN_DHT, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { // DHT11
Serial.print("Read DHT11 failed, err="); Serial.println(err); // DHT11
return; // DHT11
}
Serial.print((int)temperature); Serial.print(" *C, "); // DHT11
Serial.print((int)humidity); Serial.println(" H"); // DHT11
Homey.setCapabilityValue("measure_temperature", (int) temperature); // DHT11
Homey.setCapabilityValue("measure_humidity", (int) humidity); // DHT11
}
void ldrloop() {
// print LDR waarde via seriele monitor
wifi();
Homey.loop();
// Serial.print("LDR waarde: ");
Serial.print(analogRead( LDRsensor));
Serial.println("");
Homey.setCapabilityValue("measure_luminance", analogRead( LDRsensor));
delay(1000); // wacht 1 minuut 60000 ms
}
void loop(){ // Beide
// wifi(); // Beide
//Homey.loop(); // Beide
dhtloop();    //maakt er twee aparte voids aan, één per originele code
pirloop();      //maakt er twee aparte voids aan, één per originele code
ldrloop();      //maakt er twee aparte voids aan, één per originele code
} 
Multi Sensor ESP8266: DHT11, LDR en PIR

 

Voordat we de code naar het board gaan schrijven moeten we kijken of we het goede board geselecteerd hebben in Arduino IDE, anders krijg je het niet aan de praat. In ons geval is dat de “NodeMCU 1.0 (ESP-12E Module)”

Wanneer dit allemaal goed staat klikken we op het pijltje in de iconen balk (tweede icoontje van links) > Upload.

 

Het juiste NodeMCU board selecteren in Arduino IDE | Huisvanvandaag,nl

Het juiste NodeMCU board selecteren in Arduino IDE

 

Testen

Nu het je gelukt is om de code te uploaden gaan we deze meteen testen. Dit doen we  door de Seriële Monitor in Arduino IDE te openen, klik hiervoor op Hulpmiddelen en dan Seriële Monitor of gebruik de sneltoets CTRL+SHIFT+M.

Vervolgens opent er een scherm waarop je de waardes van de sensor uit kunt lezen. Omdat we in dit geval meerdere sensoren gekoppeld hebben via de resultaten van de sensoren elkaar opvolgen. Zolang je van ieder sensor resultaat krijgt is het in orde.

 

Via de seriële monitor kun je de waardes van de sensoren uitlezen | Huisvanvandaag.nl

Via de seriële monitor kun je de waardes van de sensoren uitlezen.

Koppelen aan Homey

Nadat je de software naar het board geschreven hebt gaan we het board koppelen aan Homey. Klik hiervoor op de + > Apparaat toevoegen > Homeyduino

Nu zie je een lijst met Homeyduino apparaten op jouw netwerk, kies degene met de de naam die je zojuist hebt opgegeven.

 

Voeg de Sensor toe aan Homey via de Homeyduino app | Huisvanvandaag.nl

Voeg de Sensor toe aan Homey via de Homeyduino app

Nu zie je een lijst met Homeyduino apparaten op jouw netwerk, kies degene met de de naam die je zojuist hebt opgegeven. Zoals je kunt zien heb ik meerdere sensoren, ook van dezelfde soort. Zolang je deze allemaal van een unieke naam voorziet werkt dit prima.

 

Overzicht van de Homeyduino sensoren | Huisvanvandaag.nl

Kies de juiste sensor en klik op volgende.

 

Nadat je de sensor hebt toegevoegd kun je nu de waardes uitlezen via Homey en deze vervolgens als ‘trigger’ gebruiken in een ‘flow’. Een voorbeeld hiervan lees je zo.

 

Hier kun je waardes van je verschillende sensoren uitlezen | Huisvanvandaag.nl

Hier kun je waardes van je verschillende sensoren uitlezen.

 

Sensoren uitlezen

Zoals op bovenstaande afbeelding te zien is heb je nu een sensor die dus vier verschillende zaken meet, namelijk: temperatuur, luchtvochtigheid, lichtsterkte en beweging. Zelf kun je waarschijnlijk ook voldoende toepassingen hiervoor bedenken.

Voorbeelden van flows

Een voorbeeld van hoe ik het gebruik is in de badkamer, waar de sensor werkt als schakelaar voor zowel de verlichting als voor de ventilator. Waarbij het licht getriggerd word een bepaalde ondergrens in de gemeten lichtintensiteit in combinatie met beweging.

En  de ventilator automatisch aangaat wanneer de gemeten luchtvochtigheid een bepaalde waarde overschrijdt.

 

DHT11 sensor 'flow' die de badkamer ventilator 'triggert' wanneer de luchtvochtigheid te hoog word | Huisvanvandaag.nl

DHT11 sensor ‘flow’ die de badkamer ventilator ‘triggert’ wanneer de luchtvochtigheid te hoog word

 

Homey flow van de multi-sensor die de verlichting schakelt aan hand van gemeten lichtintensiteit en beweging | Huisvanvandaag.nl

Homey flow van de multi-sensor die de verlichting schakelt aan hand van gemeten lichtintensiteit en beweging.

Wat voor slimme toepassingen kun jij nog bedenken met een dergelijke sensor? Laat het me weten.