Things/things/DeviceLdr.h

50 lines
1.1 KiB
C
Raw Normal View History

2016-04-08 08:18:59 +00:00
#ifndef DEVICELDR_H
#define DEVICELDR_H
#include "Device.h"
#include <Homie.h>
class DeviceLdr : public Device {
public:
inline DeviceLdr(byte ldrPin) {
pin = ldrPin;
}
virtual void setup();
virtual void homieRegister();
virtual void loop();
private:
byte pin;
const int INTERVAL_LDR = 60;
unsigned long lastSentLDR = 0;
int ldr = 0;
2016-04-09 22:20:50 +00:00
HomieNode ldrNode = HomieNode("ldr", "ldr");
2016-04-08 08:18:59 +00:00
};
void DeviceLdr::setup() {
pinMode(pin, INPUT);
}
void DeviceLdr::homieRegister() {
Homie.registerNode(ldrNode);
}
void DeviceLdr::loop() {
if (millis() - lastSentLDR >= INTERVAL_LDR * 1000UL || lastSentLDR == 0) {
int ldr_new = analogRead(pin);
if (ldr_new != ldr) {
ldr = ldr_new;
float ldr_float = map(ldr, 0, 1023, 0, 10000) / 100.0;
Serial.print("LDR: ");
Serial.println(ldr_float);
if (!Homie.setNodeProperty(ldrNode, "value", String(ldr_float), true)) {
Serial.println("Sending failed");
}
} else {
Serial.println("LDR value unchanged");
}
lastSentLDR = millis();
}
}
#endif