Multi sensor Homeyduino

Multi sensor Homeyduino

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 komt, kost hij toch bijna € 60 per stuk. Ons Doe-Het-Zelf hobby project is voor een fractie van deze kosten zelf te maken is.

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

De benodigdheden:

Geen tijd of geduld om op levering uit China te wachten? Conrad heeft het ook en levert direct vanuit Nederland!

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:

SensorNodeMCU pin
DHT11D5
LDRA0
PIRD7
  

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 https://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

 
 

Sketch uploaden

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.

Homeyduino sensoren koppelen in Homey 2.0? Hoe je dat doet lees je hier!

Onderstaande manier geldt enkel voor Homey 1.0:

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.
Multi-sensor Homeyduino PIR LDR DHT11 | Huisvanvandaag.nl
Foto van eind resultaat, het aansluiten en wegwerken van de draden kan uiteraard netter.
Multi-sensor Homeyduino PIR LDR DHT11 | Huisvanvandaag.nl
Met veel gepuzzel past het uiteindelijk in de behuizing.  Deze kun je bij vrijwel iedere bouwmarkt kopen voor rond de € 2,-   Alle sensoren zitten uiteraard aan de buitenzijde van de behuizing.

Wat voor slimme toepassingen kun jij nog bedenken met een dergelijke sensor? Of heb je deze ook gemaakt maar dan met een fraaiere afwerking? Laat het me weten.

Mike | Huisvanvandaag

13 reacties op “Multi sensor Homeyduino

  1. Super omschrijving, ik heb alles aangesloten en aangepast om te kunnen schrijven. Ik helaas de board niet vinden zoals je het omschreven hebt. Kan je me daarmee op weg helpen?

      1. Mike!

        Super happy, dat was de oplossing. File geschreven en gekoppeld aan Homey!

        Luchtvochtigheid, temperatuur en helderheid werken perfect. Alleen het bewegingsalarm blijft in Homey (en ook in de monitor van Arduino) continu beweging detecteren. Ook als er geen beweging is en ook na het loskoppelen van de bewegingssensor.

        1. Mooi dat het zover al gelukt is. Die PIR sensor is een kwestie van even goed afstellen, dat kan op de sensor zelf.

          Let er wel op dat het ongeveer een 30-60 seconden duurt voordat de sensor echt naar behoren werkt, in die tijd kun je het. Zie dit als een soort calibratie, in deze tijd kun je het beste zorgen dat er weinig tot geen beweging gedetecteerd word.

          Hopelijk kun je hier wat mee.

  2. Hoi Aaron,

    Uit de foutcode denk ik op te maken dat, zoals code zelf aangeeft, je meerdere bibliotheken hebt met dezelfde naam.

    Navigeer even naar de volgende mappen op je computer:
    – /Users/mijnnaam/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/libraries/ESP8266WiFi
    – /Users/mijnnaam/Documents/Arduino/libraries/Homeyduino
    – /Users/mijnnaam/Documents/Arduino/libraries/SimpleDHT

    En kijk of hier inderdaad meerdere bestanden eindigend op .h met dezelfde naam staan.
    Indien dit het geval is kun je deze even knippen en opslaan in een aparte map, zodat je overal nog maar één bestand van hebt staan.

    Probeer nu even opnieuw te uploaden.

    Succes en laat even weten of het gelukt is.

    Mvg,

    Mike | Huisvanvandaag.nl

    1. Hoi Henk, de weerstand is overbodig. Hier in huis functioneert het al bijna twee jaar zonder, denk dat deze erin is geslopen tijdens het betere kopieer en plakwerk.

  3. Hi, mooie tutorial. Ik gan denk ik binnenkort de bedrade sensoren van mij defecte alarmsysteem maar eens nieuw leven in blazen. Derhalve een vraag over ‘capabilities’. Is het zo dat je mbv de Homeyduino library per ‘capability’ maar een enkele sensor kunt gebruiken (zie: “Homey.addCapability(“alarm_motion”);”)? Ik stel deze vraag omdat ik 10+ sensoren van de capability “Tamper Alarm” heb en ik deze het liefst allen met een enkele Arduino Mega wil enablen voor de Homey. Op de developer website van Athom zie ik dat “Tamper Alarm” de property “title” heeft. Is deze zelf te zetten in de Arduino code? Dit zou betekenen dat het mogelijke probleem welke ik beschrijf er niet is.

    1. Hey Robert,

      Mooi project om je bestaande installatie zo een tweede leven te geven.
      Zolang je de sensoren naast de ID naam: alarm_tamper allemaal een unieke naam geeft (bijvoorbeeld: alarm sensor 1, alarm sensor 2, etc.) zou dit moeten werken. Je Arduino Mega weet dan welke input langs welke sensor binnen komt en de naam die je eraan hangt is vervolgens de sensor naam zoals Homey deze leest en dus uniek per alarm sensor. Mocht je er niet aan uit komen wil ik graag een keer meekijken naar je code.

      Succes en laat met weten hoe het gaat!

    1. Hey Konrad,

      You can have a multitude of the same sensors in Homeyduino, as long as you give them all different names. but you have to change the name beforehand in the Arduino sketch, before you upload.
      If you try to change the name on Homey itself it probably won’t work.

      I will update the article with a picture of my completed sensor, just don’t expect to much of it, since I still don’t have a 3D printer.

Geef een reactie

Aanbevolen
Na lang wachten zijn dan van de maand eindelijk m'n nieuwe sensoren en ESP boards…
Translate »