Added info.sensor properties for motion and temperature
(HA integration)
This commit is contained in:
parent
44f9bc5f0e
commit
f57b606f72
@ -320,6 +320,10 @@ public:
|
|||||||
} else {
|
} else {
|
||||||
infoArr.add(F("disabled"));
|
infoArr.add(F("disabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JsonObject sensor = root[F("sensor")];
|
||||||
|
if (sensor.isNull()) sensor = root.createNestedObject(F("sensor"));
|
||||||
|
sensor[F("motion")] = sensorPinState || offTimerStart>0 ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +37,8 @@ class UsermodTemperature : public Usermod {
|
|||||||
// used to determine when we can read the sensors temperature
|
// used to determine when we can read the sensors temperature
|
||||||
// we have to wait at least 93.75 ms after requestTemperatures() is called
|
// we have to wait at least 93.75 ms after requestTemperatures() is called
|
||||||
unsigned long lastTemperaturesRequest;
|
unsigned long lastTemperaturesRequest;
|
||||||
float temperature = -100; // default to -100, DS18B20 only goes down to -50C
|
float temperature = -100.f; // default to -100, DS18B20 only goes down to -50C
|
||||||
|
bool errorReading = false;
|
||||||
// indicates requestTemperatures has been called but the sensor measurement is not complete
|
// indicates requestTemperatures has been called but the sensor measurement is not complete
|
||||||
bool waitingForConversion = false;
|
bool waitingForConversion = false;
|
||||||
// flag set at startup if DS18B20 sensor not found, avoids trying to keep getting
|
// flag set at startup if DS18B20 sensor not found, avoids trying to keep getting
|
||||||
@ -78,9 +79,16 @@ class UsermodTemperature : public Usermod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void readTemperature() {
|
void readTemperature() {
|
||||||
temperature = readDallas();
|
float newTemp = readDallas();
|
||||||
lastMeasurement = millis();
|
|
||||||
waitingForConversion = false;
|
waitingForConversion = false;
|
||||||
|
if (temperature > -100.f && abs(newTemp-temperature)>10.) {
|
||||||
|
lastMeasurement = millis() - readingInterval + 5000; // speed up next reading
|
||||||
|
errorReading = true;
|
||||||
|
} else {
|
||||||
|
lastMeasurement = millis();
|
||||||
|
errorReading = false;
|
||||||
|
temperature = newTemp;
|
||||||
|
}
|
||||||
//DEBUG_PRINTF("Read temperature %2.1f.\n", temperature); // does not work properly on 8266
|
//DEBUG_PRINTF("Read temperature %2.1f.\n", temperature); // does not work properly on 8266
|
||||||
DEBUG_PRINT(F("Read temperature "));
|
DEBUG_PRINT(F("Read temperature "));
|
||||||
DEBUG_PRINTLN(temperature);
|
DEBUG_PRINTLN(temperature);
|
||||||
@ -200,17 +208,21 @@ class UsermodTemperature : public Usermod {
|
|||||||
if (user.isNull()) user = root.createNestedObject("u");
|
if (user.isNull()) user = root.createNestedObject("u");
|
||||||
|
|
||||||
JsonArray temp = user.createNestedArray(FPSTR(_name));
|
JsonArray temp = user.createNestedArray(FPSTR(_name));
|
||||||
//temp.add(F("Loaded."));
|
|
||||||
|
|
||||||
if (temperature <= -100.0 || (!sensorFound && temperature == -1.0)) {
|
if (temperature <= -100.0 || errorReading) {
|
||||||
temp.add(0);
|
temp.add(0);
|
||||||
temp.add(F(" Sensor Error!"));
|
temp.add(F(" Sensor Error!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
temp.add(degC ? temperature : (float)temperature * 1.8f + 32);
|
temp.add(degC ? temperature : (float)temperature * 1.8f + 32);
|
||||||
if (degC) temp.add(F("°C"));
|
temp.add(degC ? F("°C") : F("°F"));
|
||||||
else temp.add(F("°F"));
|
|
||||||
|
JsonObject sensor = root[F("sensor")];
|
||||||
|
if (sensor.isNull()) sensor = root.createNestedObject(F("sensor"));
|
||||||
|
temp = sensor.createNestedArray(F("temp"));
|
||||||
|
temp.add(degC ? temperature : (float)temperature * 1.8f + 32);
|
||||||
|
temp.add(degC ? F("°C") : F("°F"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user