Heb nu een 4 relais module een DS18B20 temperatuur sensor en een DHT11 sensor aan de Nodemcu ESP8266 gemaakt.
3 van de 4 relais werken met een dimmer van 0 tot 1
relais 4 is aan uit
DS18B20 temperatuur sensor heb ik als dB waarde ingevoerd omdat 2 temperatuur sensoren niet wil in homey.?
en de DHT11 sensor maar die heb ik nog niet aangesloten.
De Code
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Homey.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SimpleDHT.h>
#define PIN_RELAY_1 D0
#define PIN_RELAY_2 D1
#define PIN_RELAY_3 D2
#define PIN_RELAY_4 D3
#define PIN_DHT D4
#define ONE_WIRE_BUS D5
OneWire oneWire(ONE_WIRE_BUS);
SimpleDHT11 dht11;
DallasTemperature sensors(&oneWire);
float Celcius=0;
float Fahrenheit=0;
float ledBrightness = 0;
void wifi() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin(“WIFI”, “Wachtwoord”);
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(“Verbonden met WiFi! (”);
Serial.print(WiFi.localIP());
Serial.println(")");
}
}
}
bool state = false;
unsigned long previousMillis = 0;
const unsigned long interval = 100; //Interval in milliseconds
void setup(void){
Serial.begin(115200); // indien niet werkt, veranderen in 9600
pinMode(PIN_RELAY_1, OUTPUT); //Set relay pin to output
digitalWrite(PIN_RELAY_1, HIGH); //Turn output on
pinMode(PIN_RELAY_2, OUTPUT); //Set relay pin to output
digitalWrite(PIN_RELAY_2, HIGH); //Turn output on
pinMode(PIN_RELAY_3, OUTPUT); //Set relay pin to output
digitalWrite(PIN_RELAY_3, HIGH); //Turn output on
pinMode(PIN_RELAY_4, OUTPUT); //Set relay pin to output
digitalWrite(PIN_RELAY_4, HIGH); //Turn output on
Homey.begin(“Bk_ESP8266”);
Homey.setClass(“sensor”);
Homey.addCapability(“measure_noise”); // DS18B20 temp measure_luminance
Homey.addCapability(“measure_humidity”); // DHT11
Homey.addCapability(“measure_temperature”);// DHT11
Homey.setClass(“light”);
Homey.addCapability(“dim”, setLightDim); //number 0.00 - 1.00
Homey.setClass(“socket”);
Homey.addCapability(“onoff”, setState);
Homey.addAction(“output”, setState);
Homey.addCondition(“state”, getState);
}
void loop(void) //temp
{
wifi();
Homey.loop();
// unsigned long currentMillis = millis();
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
Fahrenheit=sensors.toFahrenheit(Celcius);
Serial.print(Celcius);
Serial.print (" C ");
Homey.setCapabilityValue(“measure_noise”, (int) Celcius);
delay(1000);
}
void setState() {
state = Homey.value.toInt();
applyState();
}
void applyState() { //Relay4
digitalWrite(PIN_RELAY_4, !state);
Serial.println("applyState(): new state is " + String(state));
Homey.setCapabilityValue(“onoff”, state);
Homey.trigger(“state”, state);
}
void updateSensor() { // DHT11
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(PIN_DHT, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print(“Read DHT11 failed, err=”); Serial.println(err);
return;
}
Serial.print((int)temperature); Serial.print(" *C, “);
Serial.print((int)humidity); Serial.println(” H");
Homey.setCapabilityValue(“measure_temperature”, (int) temperature);
Homey.setCapabilityValue(“measure_humidity”, (int) humidity);
}
void getState() {
Serial.println("getState(): state is " + String(state));
return Homey.returnResult(state);
}
void setLightDim( void ) {
float ledBrightness = Homey.value.toFloat(); //number 0.00 - 1.00
Serial.print (String (ledBrightness));
if (ledBrightness > 0.66 ) { activate_R3();}
else if (ledBrightness > 0.33 ) {activate_R2();}
else if (ledBrightness > 0.02 ) {activate_R1();}
else {activate_R0();}
}
void activate_R0() {
digitalWrite(PIN_RELAY_1, HIGH);
digitalWrite(PIN_RELAY_2, HIGH);
digitalWrite(PIN_RELAY_3, HIGH);
}
void activate_R1() {
digitalWrite(PIN_RELAY_1, LOW);
digitalWrite(PIN_RELAY_2, HIGH);
digitalWrite(PIN_RELAY_3, HIGH);
}
void activate_R2() {
digitalWrite(PIN_RELAY_1, HIGH);
digitalWrite(PIN_RELAY_2, LOW);
digitalWrite(PIN_RELAY_3, HIGH);
}
void activate_R3() {
digitalWrite(PIN_RELAY_1, HIGH);
digitalWrite(PIN_RELAY_2, HIGH);
digitalWrite(PIN_RELAY_3, LOW);
}
Werkt perfect alleen jammer van de temperatuur in dB maar dat gaat om de waarde.