Temperature usermod update (pin management).
This commit is contained in:
parent
bb8d5ac13f
commit
e6cf1dc98d
@ -5,11 +5,13 @@
|
|||||||
#include <DallasTemperature.h> //DS18B20
|
#include <DallasTemperature.h> //DS18B20
|
||||||
|
|
||||||
//Pin defaults for QuinLed Dig-Uno
|
//Pin defaults for QuinLed Dig-Uno
|
||||||
|
#ifndef TEMPERATURE_PIN
|
||||||
#ifdef ARDUINO_ARCH_ESP32
|
#ifdef ARDUINO_ARCH_ESP32
|
||||||
#define TEMPERATURE_PIN 18
|
#define TEMPERATURE_PIN 18
|
||||||
#else //ESP8266 boards
|
#else //ESP8266 boards
|
||||||
#define TEMPERATURE_PIN 14
|
#define TEMPERATURE_PIN 14
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// the frequency to check temperature, 1 minute
|
// the frequency to check temperature, 1 minute
|
||||||
#ifndef USERMOD_DALLASTEMPERATURE_MEASUREMENT_INTERVAL
|
#ifndef USERMOD_DALLASTEMPERATURE_MEASUREMENT_INTERVAL
|
||||||
@ -58,6 +60,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void getTemperature() {
|
void getTemperature() {
|
||||||
|
if (strip.isUpdating()) return;
|
||||||
#ifdef USERMOD_DALLASTEMPERATURE_CELSIUS
|
#ifdef USERMOD_DALLASTEMPERATURE_CELSIUS
|
||||||
temperature = sensor.getTempC(sensorDeviceAddress);
|
temperature = sensor.getTempC(sensorDeviceAddress);
|
||||||
#else
|
#else
|
||||||
@ -80,18 +83,21 @@ class UsermodTemperature : public Usermod {
|
|||||||
disabled = !sensor.getAddress(sensorDeviceAddress, 0);
|
disabled = !sensor.getAddress(sensorDeviceAddress, 0);
|
||||||
|
|
||||||
if (!disabled) {
|
if (!disabled) {
|
||||||
DEBUG_PRINTLN("Dallas Temperature found");
|
DEBUG_PRINTLN(F("Dallas Temperature found"));
|
||||||
// set the resolution for this specific device
|
// set the resolution for this specific device
|
||||||
sensor.setResolution(sensorDeviceAddress, 9, true);
|
sensor.setResolution(sensorDeviceAddress, 9, true);
|
||||||
// do not block waiting for reading
|
// do not block waiting for reading
|
||||||
sensor.setWaitForConversion(false);
|
sensor.setWaitForConversion(false);
|
||||||
|
// allocate pin & prevent other use
|
||||||
|
if (!pinManager.allocatePin(TEMPERATURE_PIN,false))
|
||||||
|
disabled = true;
|
||||||
} else {
|
} else {
|
||||||
DEBUG_PRINTLN("Dallas Temperature not found");
|
DEBUG_PRINTLN(F("Dallas Temperature not found"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if (disabled) {
|
if (disabled || strip.isUpdating()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +131,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
// dont publish super low temperature as the graph will get messed up
|
// dont publish super low temperature as the graph will get messed up
|
||||||
// the DallasTemperature library returns -127C or -196.6F when problem
|
// the DallasTemperature library returns -127C or -196.6F when problem
|
||||||
// reading the sensor
|
// reading the sensor
|
||||||
strcat(subuf, "/temperature");
|
strcat_P(subuf, PSTR("/temperature"));
|
||||||
mqtt->publish(subuf, 0, true, String(temperature).c_str());
|
mqtt->publish(subuf, 0, true, String(temperature).c_str());
|
||||||
} else {
|
} else {
|
||||||
// publish something else to indicate status?
|
// publish something else to indicate status?
|
||||||
@ -140,33 +146,59 @@ class UsermodTemperature : public Usermod {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObject user = root["u"];
|
JsonObject user = root[F("u")];
|
||||||
if (user.isNull()) user = root.createNestedObject("u");
|
if (user.isNull()) user = root.createNestedObject(F("u"));
|
||||||
|
|
||||||
JsonArray temp = user.createNestedArray("Temperature");
|
JsonArray temp = user.createNestedArray(F("Temperature"));
|
||||||
|
|
||||||
if (!getTemperatureComplete) {
|
if (!getTemperatureComplete) {
|
||||||
// if we haven't read the sensor yet, let the user know
|
// if we haven't read the sensor yet, let the user know
|
||||||
// that we are still waiting for the first measurement
|
// that we are still waiting for the first measurement
|
||||||
temp.add((USERMOD_DALLASTEMPERATURE_FIRST_MEASUREMENT_AT - millis()) / 1000);
|
temp.add((USERMOD_DALLASTEMPERATURE_FIRST_MEASUREMENT_AT - millis()) / 1000);
|
||||||
temp.add(" sec until read");
|
temp.add(F(" sec until read"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (temperature <= -100) {
|
if (temperature <= -100) {
|
||||||
temp.add(0);
|
temp.add(0);
|
||||||
temp.add(" Sensor Error!");
|
temp.add(F(" Sensor Error!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
temp.add(temperature);
|
temp.add(temperature);
|
||||||
#ifdef USERMOD_DALLASTEMPERATURE_CELSIUS
|
#ifdef USERMOD_DALLASTEMPERATURE_CELSIUS
|
||||||
temp.add("°C");
|
temp.add(F("°C"));
|
||||||
#else
|
#else
|
||||||
temp.add("°F");
|
temp.add(F("°F"));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
|
||||||
|
* Values in the state object may be modified by connected clients
|
||||||
|
* Add "pin_Temperature" to json state. This can be used to check which GPIO pin usermod uses.
|
||||||
|
*/
|
||||||
|
void addToJsonState(JsonObject &root)
|
||||||
|
{
|
||||||
|
root[F("pin_Temperature")] = TEMPERATURE_PIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
|
||||||
|
* Values in the state object may be modified by connected clients
|
||||||
|
* Read "pin_Temperature" from json state and and change GPIO pin used.
|
||||||
|
*/
|
||||||
|
void readFromJsonState(JsonObject &root)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
if (root[F("pin_Temperature")] != nullptr)
|
||||||
|
{
|
||||||
|
if (pinManager.allocatePin((int)root[F("pin_Temperature")],false))
|
||||||
|
temperaturePin = (int)root["PIRenabled"];
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t getId()
|
uint16_t getId()
|
||||||
{
|
{
|
||||||
return USERMOD_ID_TEMPERATURE;
|
return USERMOD_ID_TEMPERATURE;
|
||||||
|
Loading…
Reference in New Issue
Block a user