mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-11 18:54:28 +05:00
Added DHW present switch
This commit is contained in:
38
lib/WiFiManagerParameters/WiFiManagerParameters.h
Normal file
38
lib/WiFiManagerParameters/WiFiManagerParameters.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
class IntParameter : public WiFiManagerParameter {
|
||||||
|
public:
|
||||||
|
IntParameter(const char* id, const char* label, int value, const uint8_t length = 10) : WiFiManagerParameter("") {
|
||||||
|
init(id, label, String(value).c_str(), length, "", WFM_LABEL_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
int getValue() {
|
||||||
|
return atoi(WiFiManagerParameter::getValue());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CheckboxParameter : public WiFiManagerParameter {
|
||||||
|
public:
|
||||||
|
const char* checked = "type=\"checkbox\" checked";
|
||||||
|
const char* noChecked = "type=\"checkbox\"";
|
||||||
|
const char* trueVal = "T";
|
||||||
|
|
||||||
|
CheckboxParameter(const char* id, const char* label, bool value): WiFiManagerParameter("") {
|
||||||
|
init(id, label, value ? trueVal : "0", 1, "", WFM_LABEL_AFTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* getValue() const override {
|
||||||
|
return trueVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* getCustomHTML() const override {
|
||||||
|
return strcmp(WiFiManagerParameter::getValue(), trueVal) == 0 ? checked : noChecked;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getCheckboxValue() {
|
||||||
|
return strcmp(WiFiManagerParameter::getValue(), trueVal) == 0 ? true : false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class SeparatorParameter : public WiFiManagerParameter {
|
||||||
|
public:
|
||||||
|
SeparatorParameter(): WiFiManagerParameter("<hr>") {}
|
||||||
|
};
|
||||||
@@ -1807,6 +1807,42 @@ public:
|
|||||||
return client.publish((F("homeassistant/sensor/") + _prefix + F("/indoor_temp/config")).c_str(), NULL, true);
|
return client.publish((F("homeassistant/sensor/") + _prefix + F("/indoor_temp/config")).c_str(), NULL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool deleteSwitchDHW() {
|
||||||
|
return client.publish((F("homeassistant/switch/") + _prefix + F("/dhw/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteSensorCurrentDHWMinTemp() {
|
||||||
|
return client.publish((F("homeassistant/sensor/") + _prefix + F("/current_dhw_min_temp/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteSensorCurrentDHWMaxTemp() {
|
||||||
|
return client.publish((F("homeassistant/sensor/") + _prefix + F("/current_dhw_max_temp/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteNumberDHWMinTemp() {
|
||||||
|
return client.publish((F("homeassistant/number/") + _prefix + F("/dhw_min_temp/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteNumberDHWMaxTemp() {
|
||||||
|
return client.publish((F("homeassistant/number/") + _prefix + F("/dhw_max_temp/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteBinSensorDHW() {
|
||||||
|
return client.publish((F("homeassistant/binary_sensor/") + _prefix + F("/dhw/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteSensorDHWTemp() {
|
||||||
|
return client.publish((F("homeassistant/sensor/") + _prefix + F("/dhw_temp/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteNumberDHWTarget() {
|
||||||
|
return client.publish((F("homeassistant/number/") + _prefix + F("/dhw_target/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteClimateDHW() {
|
||||||
|
return client.publish((F("homeassistant/climate/") + _prefix + F("_dhw/config")).c_str(), NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
String _prefix = "opentherm";
|
String _prefix = "opentherm";
|
||||||
String _deviceVersion = "1.0";
|
String _deviceVersion = "1.0";
|
||||||
|
|||||||
@@ -394,14 +394,6 @@ protected:
|
|||||||
haHelper.publishNumberHeatingMinTemp(false);
|
haHelper.publishNumberHeatingMinTemp(false);
|
||||||
haHelper.publishNumberHeatingMaxTemp(false);
|
haHelper.publishNumberHeatingMaxTemp(false);
|
||||||
|
|
||||||
// dhw
|
|
||||||
haHelper.publishSwitchDHW(false);
|
|
||||||
//haHelper.publishNumberDHWTarget(false);
|
|
||||||
haHelper.publishSensorCurrentDHWMinTemp(false);
|
|
||||||
haHelper.publishSensorCurrentDHWMaxTemp(false);
|
|
||||||
haHelper.publishNumberDHWMinTemp(false);
|
|
||||||
haHelper.publishNumberDHWMaxTemp(false);
|
|
||||||
|
|
||||||
// pid
|
// pid
|
||||||
haHelper.publishSwitchPID();
|
haHelper.publishSwitchPID();
|
||||||
haHelper.publishNumberPIDFactorP();
|
haHelper.publishNumberPIDFactorP();
|
||||||
@@ -424,7 +416,6 @@ protected:
|
|||||||
haHelper.publishBinSensorStatus();
|
haHelper.publishBinSensorStatus();
|
||||||
haHelper.publishBinSensorOtStatus();
|
haHelper.publishBinSensorOtStatus();
|
||||||
haHelper.publishBinSensorHeating();
|
haHelper.publishBinSensorHeating();
|
||||||
haHelper.publishBinSensorDHW();
|
|
||||||
haHelper.publishBinSensorFlame();
|
haHelper.publishBinSensorFlame();
|
||||||
haHelper.publishBinSensorFault();
|
haHelper.publishBinSensorFault();
|
||||||
haHelper.publishBinSensorDiagnostic();
|
haHelper.publishBinSensorDiagnostic();
|
||||||
@@ -439,12 +430,11 @@ protected:
|
|||||||
haHelper.publishNumberIndoorTemp();
|
haHelper.publishNumberIndoorTemp();
|
||||||
//haHelper.publishNumberOutdoorTemp();
|
//haHelper.publishNumberOutdoorTemp();
|
||||||
haHelper.publishSensorHeatingTemp();
|
haHelper.publishSensorHeatingTemp();
|
||||||
haHelper.publishSensorDHWTemp();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool publishNonStaticHaEntities(bool force = false) {
|
static bool publishNonStaticHaEntities(bool force = false) {
|
||||||
static byte _heatingMinTemp, _heatingMaxTemp, _dhwMinTemp, _dhwMaxTemp;
|
static byte _heatingMinTemp, _heatingMaxTemp, _dhwMinTemp, _dhwMaxTemp;
|
||||||
static bool _editableOutdoorTemp, _editableIndoorTemp;
|
static bool _editableOutdoorTemp, _editableIndoorTemp, _dhwPresent;
|
||||||
|
|
||||||
bool published = false;
|
bool published = false;
|
||||||
bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable;
|
bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable;
|
||||||
@@ -453,6 +443,33 @@ protected:
|
|||||||
bool editableOutdoorTemp = settings.sensors.outdoor.type == 1;
|
bool editableOutdoorTemp = settings.sensors.outdoor.type == 1;
|
||||||
bool editableIndoorTemp = settings.sensors.indoor.type == 1;
|
bool editableIndoorTemp = settings.sensors.indoor.type == 1;
|
||||||
|
|
||||||
|
if (force || _dhwPresent != settings.opentherm.dhwPresent) {
|
||||||
|
_dhwPresent = settings.opentherm.dhwPresent;
|
||||||
|
|
||||||
|
if (_dhwPresent) {
|
||||||
|
haHelper.publishSwitchDHW(false);
|
||||||
|
haHelper.publishSensorCurrentDHWMinTemp(false);
|
||||||
|
haHelper.publishSensorCurrentDHWMaxTemp(false);
|
||||||
|
haHelper.publishNumberDHWMinTemp(false);
|
||||||
|
haHelper.publishNumberDHWMaxTemp(false);
|
||||||
|
haHelper.publishBinSensorDHW();
|
||||||
|
haHelper.publishSensorDHWTemp();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
haHelper.deleteSwitchDHW();
|
||||||
|
haHelper.deleteSensorCurrentDHWMinTemp();
|
||||||
|
haHelper.deleteSensorCurrentDHWMaxTemp();
|
||||||
|
haHelper.deleteNumberDHWMinTemp();
|
||||||
|
haHelper.deleteNumberDHWMaxTemp();
|
||||||
|
haHelper.deleteBinSensorDHW();
|
||||||
|
haHelper.deleteSensorDHWTemp();
|
||||||
|
haHelper.deleteNumberDHWTarget();
|
||||||
|
haHelper.deleteClimateDHW();
|
||||||
|
}
|
||||||
|
|
||||||
|
published = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (force || _heatingMinTemp != heatingMinTemp || _heatingMaxTemp != heatingMaxTemp) {
|
if (force || _heatingMinTemp != heatingMinTemp || _heatingMaxTemp != heatingMaxTemp) {
|
||||||
if (settings.heating.target < heatingMinTemp || settings.heating.target > heatingMaxTemp) {
|
if (settings.heating.target < heatingMinTemp || settings.heating.target > heatingMaxTemp) {
|
||||||
settings.heating.target = constrain(settings.heating.target, heatingMinTemp, heatingMaxTemp);
|
settings.heating.target = constrain(settings.heating.target, heatingMinTemp, heatingMaxTemp);
|
||||||
@@ -467,7 +484,7 @@ protected:
|
|||||||
published = true;
|
published = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (force || _dhwMinTemp != vars.parameters.dhwMinTemp || _dhwMaxTemp != vars.parameters.dhwMaxTemp) {
|
if (_dhwPresent && (force || _dhwMinTemp != vars.parameters.dhwMinTemp || _dhwMaxTemp != vars.parameters.dhwMaxTemp)) {
|
||||||
_dhwMinTemp = vars.parameters.dhwMinTemp;
|
_dhwMinTemp = vars.parameters.dhwMinTemp;
|
||||||
_dhwMaxTemp = vars.parameters.dhwMaxTemp;
|
_dhwMaxTemp = vars.parameters.dhwMaxTemp;
|
||||||
|
|
||||||
|
|||||||
@@ -36,25 +36,30 @@ protected:
|
|||||||
WARN("Slave member id failed");
|
WARN("Slave member id failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool heatingEnable = (vars.states.emergency || settings.heating.enable) && pump && isReady();
|
bool _heatingEnabled = (vars.states.emergency || settings.heating.enable) && pump && isReady();
|
||||||
localResponse = ot->setBoilerStatus(
|
localResponse = ot->setBoilerStatus(
|
||||||
heatingEnable,
|
_heatingEnabled,
|
||||||
settings.dhw.enable,
|
settings.opentherm.dhwPresent && settings.dhw.enable,
|
||||||
false, false, true, false, false
|
false, false, true, false, false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!ot->isValidResponse(localResponse)) {
|
if (!ot->isValidResponse(localResponse)) {
|
||||||
WARN_F("Invalid response after setBoilerStatus: %s\r\n", ot->statusToString(ot->getLastResponseStatus()));
|
WARN_F("Invalid response after setBoilerStatus: %s\r\n", ot->statusToString(ot->getLastResponseStatus()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
INFO_F("Heating enabled: %d\r\n", heatingEnable);
|
if ( heatingEnabled != _heatingEnabled ) {
|
||||||
setMaxModulationLevel(heatingEnable ? 100 : 0);
|
heatingEnabled = _heatingEnabled;
|
||||||
|
INFO_F("Heating enabled: %s\r\n", heatingEnabled ? "on\0" : "off\0");
|
||||||
|
}
|
||||||
|
|
||||||
vars.states.heating = ot->isCentralHeatingActive(localResponse);
|
vars.states.heating = ot->isCentralHeatingActive(localResponse);
|
||||||
vars.states.dhw = ot->isHotWaterActive(localResponse);
|
vars.states.dhw = settings.opentherm.dhwPresent ? ot->isHotWaterActive(localResponse) : false;
|
||||||
vars.states.flame = ot->isFlameOn(localResponse);
|
vars.states.flame = ot->isFlameOn(localResponse);
|
||||||
vars.states.fault = ot->isFault(localResponse);
|
vars.states.fault = ot->isFault(localResponse);
|
||||||
vars.states.diagnostic = ot->isDiagnostic(localResponse);
|
vars.states.diagnostic = ot->isDiagnostic(localResponse);
|
||||||
|
|
||||||
|
setMaxModulationLevel(heatingEnabled ? 100 : 0);
|
||||||
yield();
|
yield();
|
||||||
|
|
||||||
// Команды чтения данных котла
|
// Команды чтения данных котла
|
||||||
@@ -65,7 +70,9 @@ protected:
|
|||||||
DEBUG_F("Master type: %u, version: %u\r\n", vars.parameters.masterType, vars.parameters.masterVersion);
|
DEBUG_F("Master type: %u, version: %u\r\n", vars.parameters.masterType, vars.parameters.masterVersion);
|
||||||
DEBUG_F("Slave type: %u, version: %u\r\n", vars.parameters.slaveType, vars.parameters.slaveVersion);
|
DEBUG_F("Slave type: %u, version: %u\r\n", vars.parameters.slaveType, vars.parameters.slaveVersion);
|
||||||
|
|
||||||
updateMinMaxDhwTemp();
|
if ( settings.opentherm.dhwPresent ) {
|
||||||
|
updateMinMaxDhwTemp();
|
||||||
|
}
|
||||||
updateMinMaxHeatingTemp();
|
updateMinMaxHeatingTemp();
|
||||||
|
|
||||||
if (settings.sensors.outdoor.type == 0) {
|
if (settings.sensors.outdoor.type == 0) {
|
||||||
@@ -85,28 +92,28 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
updatePressure();
|
updatePressure();
|
||||||
if ( settings.dhw.enable || settings.heating.enable || heatingEnable ) {
|
if ((settings.opentherm.dhwPresent && settings.dhw.enable) || settings.heating.enable || heatingEnabled ) {
|
||||||
updateModulationLevel();
|
updateModulationLevel();
|
||||||
}
|
}
|
||||||
yield();
|
yield();
|
||||||
|
|
||||||
if ( settings.dhw.enable ) {
|
if ( settings.opentherm.dhwPresent && settings.dhw.enable ) {
|
||||||
updateDHWTemp();
|
updateDHWTemp();
|
||||||
} else {
|
} else {
|
||||||
vars.temperatures.dhw = 0;
|
vars.temperatures.dhw = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( settings.heating.enable || heatingEnable ) {
|
//if ( settings.heating.enable || heatingEnabled ) {
|
||||||
updateHeatingTemp();
|
updateHeatingTemp();
|
||||||
} else {
|
//} else {
|
||||||
vars.temperatures.heating = 0;
|
// vars.temperatures.heating = 0;
|
||||||
}
|
//}
|
||||||
yield();
|
yield();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Температура ГВС
|
// Температура ГВС
|
||||||
byte newDHWTemp = settings.dhw.target;
|
byte newDHWTemp = settings.dhw.target;
|
||||||
if (settings.dhw.enable && newDHWTemp != currentDHWTemp) {
|
if (settings.opentherm.dhwPresent && settings.dhw.enable && newDHWTemp != currentDHWTemp) {
|
||||||
if (newDHWTemp < vars.parameters.dhwMinTemp || newDHWTemp > vars.parameters.dhwMaxTemp) {
|
if (newDHWTemp < vars.parameters.dhwMinTemp || newDHWTemp > vars.parameters.dhwMaxTemp) {
|
||||||
newDHWTemp = constrain(newDHWTemp, vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp);
|
newDHWTemp = constrain(newDHWTemp, vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp);
|
||||||
}
|
}
|
||||||
@@ -124,7 +131,7 @@ protected:
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Температура отопления
|
// Температура отопления
|
||||||
if (heatingEnable && fabs(vars.parameters.heatingSetpoint - currentHeatingTemp) > 0.0001) {
|
if (heatingEnabled && fabs(vars.parameters.heatingSetpoint - currentHeatingTemp) > 0.0001) {
|
||||||
INFO_F("Setting heating temp = %u \n", vars.parameters.heatingSetpoint);
|
INFO_F("Setting heating temp = %u \n", vars.parameters.heatingSetpoint);
|
||||||
|
|
||||||
// Записываем заданную температуру
|
// Записываем заданную температуру
|
||||||
@@ -194,6 +201,7 @@ protected:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool pump = true;
|
bool pump = true;
|
||||||
|
bool heatingEnabled = false;
|
||||||
unsigned long prevUpdateNonEssentialVars = 0;
|
unsigned long prevUpdateNonEssentialVars = 0;
|
||||||
unsigned long startupTime = millis();
|
unsigned long startupTime = millis();
|
||||||
|
|
||||||
@@ -224,23 +232,23 @@ protected:
|
|||||||
//=======================================================================================
|
//=======================================================================================
|
||||||
|
|
||||||
unsigned long response = ot->sendRequest(ot->buildRequest(OpenThermRequestType::READ, OpenThermMessageID::SConfigSMemberIDcode, 0)); // 0xFFFF
|
unsigned long response = ot->sendRequest(ot->buildRequest(OpenThermRequestType::READ, OpenThermMessageID::SConfigSMemberIDcode, 0)); // 0xFFFF
|
||||||
/*uint8_t flags = (response & 0xFFFF) >> 8;
|
|
||||||
DEBUG_F(
|
|
||||||
"MasterMemberIdCode:\r\n DHW present: %u\r\n Control type: %u\r\n Cooling configuration: %u\r\n DHW configuration: %u\r\n Pump control: %u\r\n CH2 present: %u\r\n Remote water filling function: %u\r\n Heat/cool mode control: %u\r\n Slave MemberID Code: %u\r\n",
|
|
||||||
flags & 0x01,
|
|
||||||
flags & 0x02,
|
|
||||||
flags & 0x04,
|
|
||||||
flags & 0x08,
|
|
||||||
flags & 0x10,
|
|
||||||
flags & 0x20,
|
|
||||||
flags & 0x40,
|
|
||||||
flags & 0x80,
|
|
||||||
response & 0xFF
|
|
||||||
);*/
|
|
||||||
|
|
||||||
if (ot->isValidResponse(response)) {
|
if (ot->isValidResponse(response)) {
|
||||||
vars.parameters.slaveMemberIdCode = response & 0xFF;
|
vars.parameters.slaveMemberIdCode = response & 0xFF;
|
||||||
|
|
||||||
|
/*uint8_t flags = (response & 0xFFFF) >> 8;
|
||||||
|
DEBUG_F(
|
||||||
|
"MasterMemberIdCode:\r\n DHW present: %u\r\n Control type: %u\r\n Cooling configuration: %u\r\n DHW configuration: %u\r\n Pump control: %u\r\n CH2 present: %u\r\n Remote water filling function: %u\r\n Heat/cool mode control: %u\r\n Slave MemberID Code: %u\r\n",
|
||||||
|
flags & 0x01,
|
||||||
|
flags & 0x02,
|
||||||
|
flags & 0x04,
|
||||||
|
flags & 0x08,
|
||||||
|
flags & 0x10,
|
||||||
|
flags & 0x20,
|
||||||
|
flags & 0x40,
|
||||||
|
flags & 0x80,
|
||||||
|
response & 0xFF
|
||||||
|
);*/
|
||||||
|
|
||||||
} else if ( settings.opentherm.memberIdCode <= 0 ) {
|
} else if ( settings.opentherm.memberIdCode <= 0 ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ struct Settings {
|
|||||||
byte inPin = 4;
|
byte inPin = 4;
|
||||||
byte outPin = 5;
|
byte outPin = 5;
|
||||||
unsigned int memberIdCode = 0;
|
unsigned int memberIdCode = 0;
|
||||||
|
bool dhwPresent = true;
|
||||||
} opentherm;
|
} opentherm;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
@@ -1,23 +1,28 @@
|
|||||||
#include <WiFiManager.h>
|
#include <WiFiManager.h>
|
||||||
|
#include <WiFiManagerParameters.h>
|
||||||
|
|
||||||
// Wifimanager
|
// Wifimanager
|
||||||
WiFiManager wm;
|
WiFiManager wm;
|
||||||
WiFiManagerParameter* wmHostname;
|
WiFiManagerParameter* wmHostname;
|
||||||
WiFiManagerParameter* wmMqttServer;
|
WiFiManagerParameter* wmMqttServer;
|
||||||
WiFiManagerParameter* wmMqttPort;
|
IntParameter* wmMqttPort;
|
||||||
WiFiManagerParameter* wmMqttUser;
|
WiFiManagerParameter* wmMqttUser;
|
||||||
WiFiManagerParameter* wmMqttPassword;
|
WiFiManagerParameter* wmMqttPassword;
|
||||||
WiFiManagerParameter* wmMqttPrefix;
|
WiFiManagerParameter* wmMqttPrefix;
|
||||||
WiFiManagerParameter* wmMqttPublishInterval;
|
IntParameter* wmMqttPublishInterval;
|
||||||
WiFiManagerParameter* wmOtInPin;
|
IntParameter* wmOtInPin;
|
||||||
WiFiManagerParameter* wmOtOutPin;
|
IntParameter* wmOtOutPin;
|
||||||
WiFiManagerParameter* wmOtMemberIdCode;
|
IntParameter* wmOtMemberIdCode;
|
||||||
WiFiManagerParameter* wmOutdoorSensorPin;
|
CheckboxParameter* wmOtDHWPresent;
|
||||||
WiFiManagerParameter* wmIndoorSensorPin;
|
IntParameter* wmOutdoorSensorPin;
|
||||||
|
IntParameter* wmIndoorSensorPin;
|
||||||
|
|
||||||
class WifiManagerTask: public Task {
|
SeparatorParameter* wmSep1;
|
||||||
|
SeparatorParameter* wmSep2;
|
||||||
|
|
||||||
|
class WifiManagerTask : public Task {
|
||||||
public:
|
public:
|
||||||
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0): Task(_enabled, _interval) {}
|
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setup() {
|
void setup() {
|
||||||
@@ -30,41 +35,43 @@ protected:
|
|||||||
wmMqttServer = new WiFiManagerParameter("mqtt_server", "MQTT server", settings.mqtt.server, 80);
|
wmMqttServer = new WiFiManagerParameter("mqtt_server", "MQTT server", settings.mqtt.server, 80);
|
||||||
wm.addParameter(wmMqttServer);
|
wm.addParameter(wmMqttServer);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.mqtt.port);
|
wmMqttPort = new IntParameter("mqtt_port", "MQTT port", settings.mqtt.port, 6);
|
||||||
wmMqttPort = new WiFiManagerParameter("mqtt_port", "MQTT port", buffer, 6);
|
|
||||||
wm.addParameter(wmMqttPort);
|
wm.addParameter(wmMqttPort);
|
||||||
|
|
||||||
wmMqttUser = new WiFiManagerParameter("mqtt_user", "MQTT username", settings.mqtt.user, 32);
|
wmMqttUser = new WiFiManagerParameter("mqtt_user", "MQTT username", settings.mqtt.user, 32);
|
||||||
wm.addParameter(wmMqttUser);
|
wm.addParameter(wmMqttUser);
|
||||||
|
|
||||||
wmMqttPassword = new WiFiManagerParameter("mqtt_password", "MQTT password", settings.mqtt.password, 32);
|
wmMqttPassword = new WiFiManagerParameter("mqtt_password", "MQTT password", settings.mqtt.password, 32, "type=\"password\"");
|
||||||
wm.addParameter(wmMqttPassword);
|
wm.addParameter(wmMqttPassword);
|
||||||
|
|
||||||
wmMqttPrefix = new WiFiManagerParameter("mqtt_prefix", "MQTT prefix", settings.mqtt.prefix, 32);
|
wmMqttPrefix = new WiFiManagerParameter("mqtt_prefix", "MQTT prefix", settings.mqtt.prefix, 32);
|
||||||
wm.addParameter(wmMqttPrefix);
|
wm.addParameter(wmMqttPrefix);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.mqtt.interval);
|
wmMqttPublishInterval = new IntParameter("mqtt_publish_interval", "MQTT publish interval", settings.mqtt.interval, 5);
|
||||||
wmMqttPublishInterval = new WiFiManagerParameter("mqtt_publish_interval", "MQTT publish interval", buffer, 5);
|
|
||||||
wm.addParameter(wmMqttPublishInterval);
|
wm.addParameter(wmMqttPublishInterval);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.opentherm.inPin);
|
wmSep1 = new SeparatorParameter();
|
||||||
wmOtInPin = new WiFiManagerParameter("ot_in_pin", "Opentherm pin IN", buffer, 2);
|
wm.addParameter(wmSep1);
|
||||||
|
|
||||||
|
wmOtInPin = new IntParameter("ot_in_pin", "Opentherm pin IN", settings.opentherm.inPin, 2);
|
||||||
wm.addParameter(wmOtInPin);
|
wm.addParameter(wmOtInPin);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.opentherm.outPin);
|
wmOtOutPin = new IntParameter("ot_out_pin", "Opentherm pin OUT", settings.opentherm.outPin, 2);
|
||||||
wmOtOutPin = new WiFiManagerParameter("ot_out_pin", "Opentherm pin OUT", buffer, 2);
|
|
||||||
wm.addParameter(wmOtOutPin);
|
wm.addParameter(wmOtOutPin);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.opentherm.memberIdCode);
|
wmOtMemberIdCode = new IntParameter("ot_member_id_code", "Opentherm member id", settings.opentherm.memberIdCode, 5);
|
||||||
wmOtMemberIdCode = new WiFiManagerParameter("ot_member_id_code", "Opentherm member id", buffer, 5);
|
|
||||||
wm.addParameter(wmOtMemberIdCode);
|
wm.addParameter(wmOtMemberIdCode);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.sensors.outdoor.pin);
|
wmOtDHWPresent = new CheckboxParameter("ot_dhw_present", "Opentherm DHW present", settings.opentherm.dhwPresent);
|
||||||
wmOutdoorSensorPin = new WiFiManagerParameter("outdoor_sensor_pin", "Outdoor sensor pin", buffer, 2);
|
wm.addParameter(wmOtDHWPresent);
|
||||||
|
|
||||||
|
wmSep2 = new SeparatorParameter();
|
||||||
|
wm.addParameter(wmSep2);
|
||||||
|
|
||||||
|
wmOutdoorSensorPin = new IntParameter("outdoor_sensor_pin", "Outdoor sensor pin", settings.sensors.outdoor.pin, 2);
|
||||||
wm.addParameter(wmOutdoorSensorPin);
|
wm.addParameter(wmOutdoorSensorPin);
|
||||||
|
|
||||||
sprintf(buffer, "%d", settings.sensors.indoor.pin);
|
wmIndoorSensorPin = new IntParameter("indoor_sensor_pin", "Indoor sensor pin", settings.sensors.indoor.pin, 2);
|
||||||
wmIndoorSensorPin = new WiFiManagerParameter("indoor_sensor_pin", "Indoor sensor pin", buffer, 2);
|
|
||||||
wm.addParameter(wmIndoorSensorPin);
|
wm.addParameter(wmIndoorSensorPin);
|
||||||
|
|
||||||
//wm.setCleanConnect(true);
|
//wm.setCleanConnect(true);
|
||||||
@@ -110,16 +117,17 @@ protected:
|
|||||||
void static saveParamsCallback() {
|
void static saveParamsCallback() {
|
||||||
strcpy(settings.hostname, wmHostname->getValue());
|
strcpy(settings.hostname, wmHostname->getValue());
|
||||||
strcpy(settings.mqtt.server, wmMqttServer->getValue());
|
strcpy(settings.mqtt.server, wmMqttServer->getValue());
|
||||||
settings.mqtt.port = atoi(wmMqttPort->getValue());
|
settings.mqtt.port = wmMqttPort->getValue();
|
||||||
strcpy(settings.mqtt.user, wmMqttUser->getValue());
|
strcpy(settings.mqtt.user, wmMqttUser->getValue());
|
||||||
strcpy(settings.mqtt.password, wmMqttPassword->getValue());
|
strcpy(settings.mqtt.password, wmMqttPassword->getValue());
|
||||||
strcpy(settings.mqtt.prefix, wmMqttPrefix->getValue());
|
strcpy(settings.mqtt.prefix, wmMqttPrefix->getValue());
|
||||||
settings.mqtt.interval = atoi(wmMqttPublishInterval->getValue());
|
settings.mqtt.interval = wmMqttPublishInterval->getValue();
|
||||||
settings.opentherm.inPin = atoi(wmOtInPin->getValue());
|
settings.opentherm.inPin = wmOtInPin->getValue();
|
||||||
settings.opentherm.outPin = atoi(wmOtOutPin->getValue());
|
settings.opentherm.outPin = wmOtOutPin->getValue();
|
||||||
settings.opentherm.memberIdCode = atoi(wmOtMemberIdCode->getValue());
|
settings.opentherm.memberIdCode = wmOtMemberIdCode->getValue();
|
||||||
settings.sensors.outdoor.pin = atoi(wmOutdoorSensorPin->getValue());
|
settings.opentherm.dhwPresent = wmOtDHWPresent->getCheckboxValue();
|
||||||
settings.sensors.indoor.pin = atoi(wmIndoorSensorPin->getValue());
|
settings.sensors.outdoor.pin = wmOutdoorSensorPin->getValue();
|
||||||
|
settings.sensors.indoor.pin = wmIndoorSensorPin->getValue();
|
||||||
|
|
||||||
INFO_F(
|
INFO_F(
|
||||||
"New settings:\r\n"
|
"New settings:\r\n"
|
||||||
@@ -132,6 +140,7 @@ protected:
|
|||||||
" OT in pin: %d\r\n"
|
" OT in pin: %d\r\n"
|
||||||
" OT out pin: %d\r\n"
|
" OT out pin: %d\r\n"
|
||||||
" OT member id code: %d\r\n"
|
" OT member id code: %d\r\n"
|
||||||
|
" OT DHW present: %d\r\n"
|
||||||
" Outdoor sensor pin: %d\r\n"
|
" Outdoor sensor pin: %d\r\n"
|
||||||
" Indoor sensor pin: %d\r\n",
|
" Indoor sensor pin: %d\r\n",
|
||||||
settings.hostname,
|
settings.hostname,
|
||||||
@@ -144,6 +153,7 @@ protected:
|
|||||||
settings.opentherm.inPin,
|
settings.opentherm.inPin,
|
||||||
settings.opentherm.outPin,
|
settings.opentherm.outPin,
|
||||||
settings.opentherm.memberIdCode,
|
settings.opentherm.memberIdCode,
|
||||||
|
settings.opentherm.dhwPresent,
|
||||||
settings.sensors.outdoor.pin,
|
settings.sensors.outdoor.pin,
|
||||||
settings.sensors.indoor.pin
|
settings.sensors.indoor.pin
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user