Im trying to get this code from http://www.instructables.com/id/Intro-ESP8266-Garage-Door-Opener-With-TemperatureH/ to work with my ESP8266 D1-mini, but it keeps getting me the same error with the line bool openerHandler(HomieRange range, String value) { when i compile. All the necessary and up-to-date libraries has been installed but it keeps giving me errors.
The errors are:
src/main.cpp:24:20: error: 'HomieRange' was not declared in this scope
bool openerHandler(HomieRange range, String value) {
^
src/main.cpp:24:45: error: expected primary-expression before 'value'
bool openerHandler(HomieRange range, String value) {
^
src/main.cpp:24:50: error: expression list treated as compound expression in initializer [-fpermissive]
bool openerHandler(HomieRange range, String value) {
^
src/main.cpp:24:52: error: expected ',' or ';' before '{' token
bool openerHandler(HomieRange range, String value) {
^
*** [.pioenvs/d1_mini/src/main.o] Error 1
#include Homie.h
#include DHT.h
#define FW_NAME "garage-door"
#define FW_VERSION "1.0.1"
#define PIN_RELAY D1
#define PIN_SENSOR D5
#define OPENER_EVENT_MS 1000
#define DEBOUNCER_MS 250
#define DHT_PIN D4
#define DHT_TYPE DHT22
#define PUB_INTERVAL 60
DHT
dht(DHT_PIN, DHT_TYPE);
unsigned long lastTemperatureSent = 0;
unsigned long openerEvent = 0;
Bounce debouncer = Bounce();
int lastSensorValue = -1;
HomieNode openerNode("opener", "relay");
HomieNode doorNode("door", "sensor");
HomieNode temperatureNode("temperature", "temperature");
HomieNode humidityNode("humidity", "humidity");
bool openerHandler(HomieRange range, String value) {
if (value == "1" || value == "ON" || value == "true") {
digitalWrite(PIN_RELAY, HIGH);
openerEvent = millis();
}
return true;
}
void setupHandler() {
pinMode(PIN_RELAY, OUTPUT);
pinMode(PIN_SENSOR, INPUT_PULLUP);
digitalWrite(PIN_RELAY, LOW);
Homie.setNodeProperty(temperatureNode, "unit").setRetained(true).send("f");
Homie.setNodeProperty(humidityNode, "unit").setRetained(true).send("%");
dht.begin();
debouncer.attach(PIN_SENSOR);
debouncer.interval(DEBOUNCER_MS);
}
void loopHandler() {
int sensorValue = debouncer.read();
if (sensorValue != lastSensorValue) {
Serial.print("Door is now: ");
Serial.println(sensorValue ? "open" : "close");
Homie.setNodeProperty(doorNode, "open").send(sensorValue ? "true" : "false");
lastSensorValue = sensorValue;
}
if (millis() - lastTemperatureSent >= PUB_INTERVAL * 1000UL || lastTemperatureSent == 0) {
float temp_c = dht.readTemperature();
float humidity = dht.readHumidity();
float temp_f = (temp_c* 9 +2)/5+32;
Homie.setNodeProperty(temperatureNode, "degrees").send(String(temp_f));
Homie.setNodeProperty(humidityNode, "relative").send(String(humidity));
lastTemperatureSent = millis();
}
}
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
Homie_setFirmware(FW_NAME, FW_VERSION);
openerNode.advertise("press").settable(openerHandler);
doorNode.advertise("open");
temperatureNode.advertise("unit");
temperatureNode.advertise("degrees");
Homie.setSetupFunction(setupHandler);
Homie.setLoopFunction(loopHandler);
Homie.setup();
}
void loop() {
if (openerEvent && (millis() - openerEvent >= OPENER_EVENT_MS)) {
digitalWrite(PIN_RELAY, LOW);
openerEvent = 0;
}
Homie.loop();
debouncer.update();
}