2 Commits

Author SHA1 Message Date
Yurii
14826c10cd chore: `byte to uint8_t` 2025-09-23 04:03:36 +03:00
Yurii
28a5218b7c fix: various fixes
Found by PVS-Studio
2025-09-23 04:02:40 +03:00
9 changed files with 61 additions and 62 deletions

View File

@@ -4,8 +4,8 @@
class CustomOpenTherm : public OpenTherm { class CustomOpenTherm : public OpenTherm {
public: public:
typedef std::function<void(unsigned int)> DelayCallback; typedef std::function<void(unsigned int)> DelayCallback;
typedef std::function<void(unsigned long, byte)> BeforeSendRequestCallback; typedef std::function<void(unsigned long, uint8_t)> BeforeSendRequestCallback;
typedef std::function<void(unsigned long, unsigned long, OpenThermResponseStatus, byte)> AfterSendRequestCallback; typedef std::function<void(unsigned long, unsigned long, OpenThermResponseStatus, uint8_t)> AfterSendRequestCallback;
CustomOpenTherm(int inPin = 4, int outPin = 5, bool isSlave = false, bool alwaysReceive = false) : OpenTherm(inPin, outPin, isSlave, alwaysReceive) {} CustomOpenTherm(int inPin = 4, int outPin = 5, bool isSlave = false, bool alwaysReceive = false) : OpenTherm(inPin, outPin, isSlave, alwaysReceive) {}
~CustomOpenTherm() {} ~CustomOpenTherm() {}
@@ -106,15 +106,14 @@ public:
return isValidResponse(response) && isValidResponseId(response, OpenThermMessageID::RemoteRequest); return isValidResponse(response) && isValidResponseId(response, OpenThermMessageID::RemoteRequest);
} }
static bool isCh2Active(unsigned long response) static bool isCh2Active(unsigned long response) {
{
return response & 0x20; return response & 0x20;
} }
static bool isValidResponseId(unsigned long response, OpenThermMessageID id) { static bool isValidResponseId(unsigned long response, OpenThermMessageID id) {
byte responseId = (response >> 16) & 0xFF; uint8_t responseId = (response >> 16) & 0xFF;
return (byte)id == responseId; return (uint8_t)id == responseId;
} }
static uint8_t getResponseMessageTypeId(unsigned long response) { static uint8_t getResponseMessageTypeId(unsigned long response) {

View File

@@ -35,7 +35,7 @@ namespace NetworkUtils {
return this; return this;
} }
NetworkMgr* setApCredentials(const char* ssid, const char* password = nullptr, byte channel = 0) { NetworkMgr* setApCredentials(const char* ssid, const char* password = nullptr, uint8_t channel = 0) {
this->apName = ssid; this->apName = ssid;
this->apPassword = password; this->apPassword = password;
this->apChannel = channel; this->apChannel = channel;
@@ -43,7 +43,7 @@ namespace NetworkUtils {
return this; return this;
} }
NetworkMgr* setStaCredentials(const char* ssid = nullptr, const char* password = nullptr, byte channel = 0) { NetworkMgr* setStaCredentials(const char* ssid = nullptr, const char* password = nullptr, uint8_t channel = 0) {
this->staSsid = ssid; this->staSsid = ssid;
this->staPassword = password; this->staPassword = password;
this->staChannel = channel; this->staChannel = channel;
@@ -140,7 +140,7 @@ namespace NetworkUtils {
return this->staPassword; return this->staPassword;
} }
byte getStaChannel() { uint8_t getStaChannel() {
return this->staChannel; return this->staChannel;
} }
@@ -377,7 +377,7 @@ namespace NetworkUtils {
} }
} }
static byte rssiToSignalQuality(short int rssi) { static uint8_t rssiToSignalQuality(short int rssi) {
return constrain(map(rssi, -100, -50, 0, 100), 0, 100); return constrain(map(rssi, -100, -50, 0, 100), 0, 100);
} }
@@ -397,11 +397,11 @@ namespace NetworkUtils {
const char* hostname = "esp"; const char* hostname = "esp";
const char* apName = "ESP"; const char* apName = "ESP";
const char* apPassword = nullptr; const char* apPassword = nullptr;
byte apChannel = 1; uint8_t apChannel = 1;
const char* staSsid = nullptr; const char* staSsid = nullptr;
const char* staPassword = nullptr; const char* staPassword = nullptr;
byte staChannel = 0; uint8_t staChannel = 0;
bool useDhcp = true; bool useDhcp = true;
IPAddress staticIp; IPAddress staticIp;

View File

@@ -3,8 +3,8 @@
class HaHelper : public HomeAssistantHelper { class HaHelper : public HomeAssistantHelper {
public: public:
static const byte TEMP_SOURCE_HEATING = 0; static const uint8_t TEMP_SOURCE_HEATING = 0;
static const byte TEMP_SOURCE_INDOOR = 1; static const uint8_t TEMP_SOURCE_INDOOR = 1;
static const char AVAILABILITY_OT_CONN[]; static const char AVAILABILITY_OT_CONN[];
static const char AVAILABILITY_SENSOR_CONN[]; static const char AVAILABILITY_SENSOR_CONN[];
@@ -1170,7 +1170,7 @@ public:
} }
bool publishClimateHeating(UnitSystem unit = UnitSystem::METRIC, byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) { bool publishClimateHeating(UnitSystem unit = UnitSystem::METRIC, uint8_t minTemp = 20, uint8_t maxTemp = 90, bool enabledByDefault = true) {
JsonDocument doc; JsonDocument doc;
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->statusTopic.c_str(); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->statusTopic.c_str();
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
@@ -1222,7 +1222,7 @@ public:
return this->publish(this->makeConfigTopic(FPSTR(HA_ENTITY_CLIMATE), F("heating"), '_').c_str(), doc); return this->publish(this->makeConfigTopic(FPSTR(HA_ENTITY_CLIMATE), F("heating"), '_').c_str(), doc);
} }
bool publishClimateDhw(UnitSystem unit = UnitSystem::METRIC, byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) { bool publishClimateDhw(UnitSystem unit = UnitSystem::METRIC, uint8_t minTemp = 40, uint8_t maxTemp = 60, bool enabledByDefault = true) {
JsonDocument doc; JsonDocument doc;
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->statusTopic.c_str(); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->statusTopic.c_str();
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;

View File

@@ -557,7 +557,7 @@ protected:
} }
bool publishNonStaticHaEntities(bool force = false) { bool publishNonStaticHaEntities(bool force = false) {
static byte _heatingMinTemp, _heatingMaxTemp, _dhwMinTemp, _dhwMaxTemp = 0; static uint8_t _heatingMinTemp, _heatingMaxTemp, _dhwMinTemp, _dhwMaxTemp = 0;
static bool _indoorTempControl, _dhwSupport = false; static bool _indoorTempControl, _dhwSupport = false;
bool published = false; bool published = false;

View File

@@ -19,8 +19,8 @@ protected:
CustomOpenTherm* instance = nullptr; CustomOpenTherm* instance = nullptr;
unsigned long instanceCreatedTime = 0; unsigned long instanceCreatedTime = 0;
byte instanceInGpio = 0; uint8_t instanceInGpio = 0;
byte instanceOutGpio = 0; uint8_t instanceOutGpio = 0;
bool initialized = false; bool initialized = false;
unsigned long connectedTime = 0; unsigned long connectedTime = 0;
unsigned long disconnectedTime = 0; unsigned long disconnectedTime = 0;
@@ -31,7 +31,7 @@ protected:
unsigned long heatingSetTempTime = 0; unsigned long heatingSetTempTime = 0;
unsigned long dhwSetTempTime = 0; unsigned long dhwSetTempTime = 0;
unsigned long ch2SetTempTime = 0; unsigned long ch2SetTempTime = 0;
byte configuredRxLedGpio = GPIO_IS_NOT_CONFIGURED; uint8_t configuredRxLedGpio = GPIO_IS_NOT_CONFIGURED;
#if defined(ARDUINO_ARCH_ESP32) #if defined(ARDUINO_ARCH_ESP32)
const char* getTaskName() override { const char* getTaskName() override {
@@ -90,7 +90,7 @@ protected:
Log.sinfoln(FPSTR(L_OT), F("Started. GPIO IN: %hhu, GPIO OUT: %hhu"), settings.opentherm.inGpio, settings.opentherm.outGpio); Log.sinfoln(FPSTR(L_OT), F("Started. GPIO IN: %hhu, GPIO OUT: %hhu"), settings.opentherm.inGpio, settings.opentherm.outGpio);
this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) { this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, uint8_t attempt) {
Log.sverboseln( Log.sverboseln(
FPSTR(L_OT), FPSTR(L_OT),
F("ID: %4d Request: %8lx Response: %8lx Msg type: %s Attempt: %2d Status: %s"), F("ID: %4d Request: %8lx Response: %8lx Msg type: %s Attempt: %2d Status: %s"),

View File

@@ -334,7 +334,7 @@ public:
uint8_t valueId = (uint8_t) valueType; uint8_t valueId = (uint8_t) valueType;
if (!isValidValueId(valueId)) { if (!isValidValueId(valueId)) {
return false; return 0;
} }
float value = 0.0f; float value = 0.0f;

View File

@@ -385,7 +385,7 @@ protected:
continue; continue;
} }
const float sensorResistance = value > 0.001f const float sensorResistance = value > 1
? DEFAULT_NTC_REF_RESISTANCE / (DEFAULT_NTC_VREF / (float) value - 1.0f) ? DEFAULT_NTC_REF_RESISTANCE / (DEFAULT_NTC_VREF / (float) value - 1.0f)
: 0.0f; : 0.0f;
const float rawTemp = 1.0f / ( const float rawTemp = 1.0f / (
@@ -577,7 +577,7 @@ protected:
bool subscribeToBleDevice(const uint8_t sensorId, NimBLEClient* pClient) { bool subscribeToBleDevice(const uint8_t sensorId, NimBLEClient* pClient) {
auto& sSensor = Sensors::settings[sensorId]; auto& sSensor = Sensors::settings[sensorId];
auto pAddress = pClient->getPeerAddress().toString().c_str(); auto pAddress = pClient->getPeerAddress().toString();
NimBLERemoteService* pService = nullptr; NimBLERemoteService* pService = nullptr;
NimBLERemoteCharacteristic* pChar = nullptr; NimBLERemoteCharacteristic* pChar = nullptr;
@@ -588,13 +588,13 @@ protected:
if (!pService) { if (!pService) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to find env service (%s) on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to find env service (%s) on device %s"),
sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found env service (%s) on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found env service (%s) on device %s"),
sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress.c_str()
); );
// 0x2A6E - Notify temperature x0.01C (pvvx) // 0x2A6E - Notify temperature x0.01C (pvvx)
@@ -606,7 +606,7 @@ protected:
if (pChar && (pChar->canNotify() || pChar->canIndicate())) { if (pChar && (pChar->canNotify() || pChar->canIndicate())) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found temp char (%s) in env service on device %s"),
sensorId, sSensor.name, charUuid.toString().c_str(), pAddress sensorId, sSensor.name, charUuid.toString().c_str(), pAddress.c_str()
); );
pChar->unsubscribe(); pChar->unsubscribe();
@@ -661,14 +661,14 @@ protected:
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to temp char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to temp char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} }
} }
@@ -683,7 +683,7 @@ protected:
if (pChar && (pChar->canNotify() || pChar->canIndicate())) { if (pChar && (pChar->canNotify() || pChar->canIndicate())) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found temp char (%s) in env service on device %s"),
sensorId, sSensor.name, charUuid.toString().c_str(), pAddress sensorId, sSensor.name, charUuid.toString().c_str(), pAddress.c_str()
); );
pChar->unsubscribe(); pChar->unsubscribe();
@@ -738,14 +738,14 @@ protected:
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to temp char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to temp char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to temp char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} }
} }
@@ -754,7 +754,7 @@ protected:
if (!tempNotifyCreated) { if (!tempNotifyCreated) {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported temp chars in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported temp chars in env service on device %s"),
sensorId, sSensor.name, pAddress sensorId, sSensor.name, pAddress.c_str()
); );
pClient->disconnect(); pClient->disconnect();
@@ -772,7 +772,7 @@ protected:
if (pChar && (pChar->canNotify() || pChar->canIndicate())) { if (pChar && (pChar->canNotify() || pChar->canIndicate())) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found humidity char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found humidity char (%s) in env service on device %s"),
sensorId, sSensor.name, charUuid.toString().c_str(), pAddress sensorId, sSensor.name, charUuid.toString().c_str(), pAddress.c_str()
); );
pChar->unsubscribe(); pChar->unsubscribe();
@@ -827,14 +827,14 @@ protected:
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to humidity char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to humidity char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to humidity char (%s) in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to humidity char (%s) in env service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} }
} }
@@ -843,7 +843,7 @@ protected:
if (!humidityNotifyCreated) { if (!humidityNotifyCreated) {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported humidity chars in env service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported humidity chars in env service on device %s"),
sensorId, sSensor.name, pAddress sensorId, sSensor.name, pAddress.c_str()
); );
} }
} }
@@ -857,13 +857,13 @@ protected:
if (!pService) { if (!pService) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to find battery service (%s) on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to find battery service (%s) on device %s"),
sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found battery service (%s) on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found battery service (%s) on device %s"),
sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress sensorId, sSensor.name, serviceUuid.toString().c_str(), pAddress.c_str()
); );
// 0x2A19 - Notify the battery charge level 0..99% (pvvx) // 0x2A19 - Notify the battery charge level 0..99% (pvvx)
@@ -875,7 +875,7 @@ protected:
if (pChar && (pChar->canNotify() || pChar->canIndicate())) { if (pChar && (pChar->canNotify() || pChar->canIndicate())) {
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found battery char (%s) in battery service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': found battery char (%s) in battery service on device %s"),
sensorId, sSensor.name, charUuid.toString().c_str(), pAddress sensorId, sSensor.name, charUuid.toString().c_str(), pAddress.c_str()
); );
pChar->unsubscribe(); pChar->unsubscribe();
@@ -930,14 +930,14 @@ protected:
Log.straceln( Log.straceln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to battery char (%s) in battery service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': subscribed to battery char (%s) in battery service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} else { } else {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to battery char (%s) in battery service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': failed to subscribe to battery char (%s) in battery service on device %s"),
sensorId, sSensor.name, sensorId, sSensor.name,
charUuid.toString().c_str(), pAddress charUuid.toString().c_str(), pAddress.c_str()
); );
} }
} }
@@ -946,7 +946,7 @@ protected:
if (!batteryNotifyCreated) { if (!batteryNotifyCreated) {
Log.swarningln( Log.swarningln(
FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported battery chars in battery service on device %s"), FPSTR(L_SENSORS_BLE), F("Sensor #%hhu '%s': not found supported battery chars in battery service on device %s"),
sensorId, sSensor.name, pAddress sensorId, sSensor.name, pAddress.c_str()
); );
} }
} }

View File

@@ -12,13 +12,13 @@ struct NetworkSettings {
struct { struct {
char ssid[33] = DEFAULT_AP_SSID; char ssid[33] = DEFAULT_AP_SSID;
char password[65] = DEFAULT_AP_PASSWORD; char password[65] = DEFAULT_AP_PASSWORD;
byte channel = 6; uint8_t channel = 6;
} ap; } ap;
struct { struct {
char ssid[33] = DEFAULT_STA_SSID; char ssid[33] = DEFAULT_STA_SSID;
char password[65] = DEFAULT_STA_PASSWORD; char password[65] = DEFAULT_STA_PASSWORD;
byte channel = 0; uint8_t channel = 0;
} sta; } sta;
} networkSettings; } networkSettings;
@@ -42,7 +42,7 @@ struct Settings {
} ntp; } ntp;
UnitSystem unitSystem = UnitSystem::METRIC; UnitSystem unitSystem = UnitSystem::METRIC;
byte statusLedGpio = DEFAULT_STATUS_LED_GPIO; uint8_t statusLedGpio = DEFAULT_STATUS_LED_GPIO;
} system; } system;
struct { struct {
@@ -54,9 +54,9 @@ struct Settings {
struct { struct {
UnitSystem unitSystem = UnitSystem::METRIC; UnitSystem unitSystem = UnitSystem::METRIC;
byte inGpio = DEFAULT_OT_IN_GPIO; uint8_t inGpio = DEFAULT_OT_IN_GPIO;
byte outGpio = DEFAULT_OT_OUT_GPIO; uint8_t outGpio = DEFAULT_OT_OUT_GPIO;
byte rxLedGpio = DEFAULT_OT_RX_LED_GPIO; uint8_t rxLedGpio = DEFAULT_OT_RX_LED_GPIO;
uint8_t memberId = 0; uint8_t memberId = 0;
uint8_t flags = 0; uint8_t flags = 0;
float minPower = 0.0f; float minPower = 0.0f;
@@ -105,8 +105,8 @@ struct Settings {
float target = DEFAULT_HEATING_TARGET_TEMP; float target = DEFAULT_HEATING_TARGET_TEMP;
float hysteresis = 0.5f; float hysteresis = 0.5f;
float turboFactor = 7.5f; float turboFactor = 7.5f;
byte minTemp = DEFAULT_HEATING_MIN_TEMP; uint8_t minTemp = DEFAULT_HEATING_MIN_TEMP;
byte maxTemp = DEFAULT_HEATING_MAX_TEMP; uint8_t maxTemp = DEFAULT_HEATING_MAX_TEMP;
uint8_t maxModulation = 100; uint8_t maxModulation = 100;
struct { struct {
@@ -123,8 +123,8 @@ struct Settings {
struct { struct {
bool enabled = true; bool enabled = true;
float target = DEFAULT_DHW_TARGET_TEMP; float target = DEFAULT_DHW_TARGET_TEMP;
byte minTemp = DEFAULT_DHW_MIN_TEMP; uint8_t minTemp = DEFAULT_DHW_MIN_TEMP;
byte maxTemp = DEFAULT_DHW_MAX_TEMP; uint8_t maxTemp = DEFAULT_DHW_MAX_TEMP;
uint8_t maxModulation = 100; uint8_t maxModulation = 100;
struct { struct {
@@ -161,7 +161,7 @@ struct Settings {
struct { struct {
bool use = false; bool use = false;
byte gpio = DEFAULT_EXT_PUMP_GPIO; uint8_t gpio = DEFAULT_EXT_PUMP_GPIO;
unsigned short postCirculationTime = 600; unsigned short postCirculationTime = 600;
unsigned int antiStuckInterval = 2592000; unsigned int antiStuckInterval = 2592000;
unsigned short antiStuckTime = 300; unsigned short antiStuckTime = 300;
@@ -170,15 +170,15 @@ struct Settings {
struct { struct {
struct { struct {
bool enabled = false; bool enabled = false;
byte gpio = GPIO_IS_NOT_CONFIGURED; uint8_t gpio = GPIO_IS_NOT_CONFIGURED;
byte invertState = false; bool invertState = false;
unsigned short thresholdTime = 60; unsigned short thresholdTime = 60;
} input; } input;
struct { struct {
bool enabled = false; bool enabled = false;
byte gpio = GPIO_IS_NOT_CONFIGURED; uint8_t gpio = GPIO_IS_NOT_CONFIGURED;
byte invertState = false; bool invertState = false;
unsigned short thresholdTime = 60; unsigned short thresholdTime = 60;
bool onFault = true; bool onFault = true;
bool onLossConnection = true; bool onLossConnection = true;

View File

@@ -72,7 +72,7 @@ time_t mkgmtime(const struct tm *ptm) {
inline bool isDigit(const char* ptr) { inline bool isDigit(const char* ptr) {
char* endPtr; char* endPtr;
strtol(ptr, &endPtr, 10); auto tmp = strtol(ptr, &endPtr, 10);
return *endPtr == 0; return *endPtr == 0;
} }
@@ -1324,7 +1324,7 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
if (!src[FPSTR(S_HEATING)][FPSTR(S_MIN_TEMP)].isNull()) { if (!src[FPSTR(S_HEATING)][FPSTR(S_MIN_TEMP)].isNull()) {
unsigned char value = src[FPSTR(S_HEATING)][FPSTR(S_MIN_TEMP)].as<unsigned char>(); unsigned char value = src[FPSTR(S_HEATING)][FPSTR(S_MIN_TEMP)].as<unsigned char>();
if (value != dst.heating.minTemp && value >= vars.slave.heating.minTemp && value < vars.slave.heating.maxTemp && value != dst.heating.minTemp) { if (value != dst.heating.minTemp && value >= vars.slave.heating.minTemp && value < vars.slave.heating.maxTemp && value != dst.heating.maxTemp) {
dst.heating.minTemp = value; dst.heating.minTemp = value;
changed = true; changed = true;
} }
@@ -1333,7 +1333,7 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
if (!src[FPSTR(S_HEATING)][FPSTR(S_MAX_TEMP)].isNull()) { if (!src[FPSTR(S_HEATING)][FPSTR(S_MAX_TEMP)].isNull()) {
unsigned char value = src[FPSTR(S_HEATING)][FPSTR(S_MAX_TEMP)].as<unsigned char>(); unsigned char value = src[FPSTR(S_HEATING)][FPSTR(S_MAX_TEMP)].as<unsigned char>();
if (value != dst.heating.maxTemp && value > vars.slave.heating.minTemp && value <= vars.slave.heating.maxTemp && value != dst.heating.maxTemp) { if (value != dst.heating.maxTemp && value > vars.slave.heating.minTemp && value <= vars.slave.heating.maxTemp && value != dst.heating.minTemp) {
dst.heating.maxTemp = value; dst.heating.maxTemp = value;
changed = true; changed = true;
} }
@@ -1894,7 +1894,7 @@ bool jsonToSensorSettings(const uint8_t sensorId, const JsonVariantConst src, Se
// gpio // gpio
if (!src[FPSTR(S_GPIO)].isNull()) { if (!src[FPSTR(S_GPIO)].isNull()) {
if (dst.type != Sensors::Type::DALLAS_TEMP && dst.type == Sensors::Type::BLUETOOTH && dst.type == Sensors::Type::NTC_10K_TEMP) { if (dst.type != Sensors::Type::DALLAS_TEMP && dst.type != Sensors::Type::NTC_10K_TEMP) {
if (dst.gpio != GPIO_IS_NOT_CONFIGURED) { if (dst.gpio != GPIO_IS_NOT_CONFIGURED) {
dst.gpio = GPIO_IS_NOT_CONFIGURED; dst.gpio = GPIO_IS_NOT_CONFIGURED;
changed = true; changed = true;