mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
merged with PR366 with fixed to RC20 and MM50
This commit is contained in:
@@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Added features to WW messages (0x33, 0x34) to improve WW monitoring. (PR#338 by @ypaindaveine)
|
- Added features to WW messages (0x33, 0x34) to improve WW monitoring. (PR#338 by @ypaindaveine)
|
||||||
- Added mixing log and stub for EMS type 0xAC (PR#338 by @ypaindaveine)
|
- Added mixing log and stub for EMS type 0xAC (PR#338 by @ypaindaveine)
|
||||||
- Added Thermostat retrieving settings (0xA5) (validated on RC30N) with MQTT support (thanks Yves @ypaindaveine. See #352)
|
- Added Thermostat retrieving settings (0xA5) (validated on RC30N) with MQTT support (thanks Yves @ypaindaveine. See #352)
|
||||||
|
- Merged with PR https://github.com/proddy/EMS-ESP/pull/366 from @MichaelDvP fixing RC20 and MM50
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- set boiler warm water temp on Junkers/Bosch HT3
|
- set boiler warm water temp on Junkers/Bosch HT3
|
||||||
|
|||||||
Binary file not shown.
26
src/ems.cpp
26
src/ems.cpp
@@ -1948,7 +1948,7 @@ void _process_Version(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
EMS_Thermostat.device_desc_p = device_desc_p;
|
EMS_Thermostat.device_desc_p = device_desc_p;
|
||||||
strlcpy(EMS_Thermostat.version, version, sizeof(EMS_Thermostat.version));
|
strlcpy(EMS_Thermostat.version, version, sizeof(EMS_Thermostat.version));
|
||||||
ems_getThermostatValues(); // get Thermostat values
|
ems_getThermostatValues(); // get Thermostat values
|
||||||
ems_getSettingsValues() ; // get Settings from Thermostat
|
ems_getSettingsValues(); // get Settings from Thermostat
|
||||||
}
|
}
|
||||||
} else if (type == EMS_DEVICE_TYPE_SOLAR) {
|
} else if (type == EMS_DEVICE_TYPE_SOLAR) {
|
||||||
EMS_SolarModule.device_id = device_id;
|
EMS_SolarModule.device_id = device_id;
|
||||||
@@ -2441,7 +2441,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
myDebug_P(PSTR("Setting thermostat temperature to %s for heating circuit %d, mode %s"), _float_to_char(s, temperature), hc, mode_str);
|
myDebug_P(PSTR("Setting thermostat temperature to %s for heating circuit %d, mode %s"), _float_to_char(s, temperature), hc, mode_str);
|
||||||
|
|
||||||
if (model == EMS_DEVICE_FLAG_RC10) {
|
if (model == EMS_DEVICE_FLAG_RC10) {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
EMS_TxTelegram.type = EMS_TYPE_RC10Set;
|
EMS_TxTelegram.type = EMS_TYPE_RC10Set;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC10Set_temp;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC10Set_temp;
|
||||||
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC10StatusMessage;
|
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC10StatusMessage;
|
||||||
@@ -2449,7 +2449,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
}
|
}
|
||||||
|
|
||||||
else if (model == EMS_DEVICE_FLAG_RC20) {
|
else if (model == EMS_DEVICE_FLAG_RC20) {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
EMS_TxTelegram.type = EMS_TYPE_RC20Set;
|
EMS_TxTelegram.type = EMS_TYPE_RC20Set;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC20Set_temp;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC20Set_temp;
|
||||||
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC20StatusMessage;
|
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC20StatusMessage;
|
||||||
@@ -2457,7 +2457,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
}
|
}
|
||||||
|
|
||||||
else if (model == EMS_DEVICE_FLAG_RC20N) {
|
else if (model == EMS_DEVICE_FLAG_RC20N) {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
EMS_TxTelegram.type = EMS_TYPE_RC20NSet;
|
EMS_TxTelegram.type = EMS_TYPE_RC20NSet;
|
||||||
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC20NStatusMessage;
|
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC20NStatusMessage;
|
||||||
EMS_TxTelegram.type_validate = EMS_TxTelegram.type;
|
EMS_TxTelegram.type_validate = EMS_TxTelegram.type;
|
||||||
@@ -2476,7 +2476,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
}
|
}
|
||||||
|
|
||||||
else if (model == EMS_DEVICE_FLAG_RC30) {
|
else if (model == EMS_DEVICE_FLAG_RC30) {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
EMS_TxTelegram.type = EMS_TYPE_RC30Set;
|
EMS_TxTelegram.type = EMS_TYPE_RC30Set;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC30Set_temp;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC30Set_temp;
|
||||||
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC30StatusMessage;
|
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_RC30StatusMessage;
|
||||||
@@ -2484,7 +2484,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
}
|
}
|
||||||
|
|
||||||
else if ((model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) {
|
else if ((model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
// check mode to determine offset
|
// check mode to determine offset
|
||||||
if (EMS_Thermostat.hc[hc - 1].mode == 1) { // auto
|
if (EMS_Thermostat.hc[hc - 1].mode == 1) { // auto
|
||||||
EMS_TxTelegram.offset = 0x08; // auto offset
|
EMS_TxTelegram.offset = 0x08; // auto offset
|
||||||
@@ -2512,21 +2512,21 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30N)) {
|
else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30N)) {
|
||||||
switch (temptype) {
|
switch (temptype) {
|
||||||
case EMS_THERMOSTAT_MODE_NIGHT: // change the night temp
|
case EMS_THERMOSTAT_MODE_NIGHT: // change the night temp
|
||||||
EMS_Thermostat.hc[hc- 1].nighttemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].nighttemp = temperature * 2;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_night;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_night;
|
||||||
break;
|
break;
|
||||||
case EMS_THERMOSTAT_MODE_DAY: // change the day temp
|
case EMS_THERMOSTAT_MODE_DAY: // change the day temp
|
||||||
EMS_Thermostat.hc[hc- 1].daytemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].daytemp = temperature * 2;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_day;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_day;
|
||||||
break;
|
break;
|
||||||
case EMS_THERMOSTAT_MODE_HOLIDAY: // change the holiday temp
|
case EMS_THERMOSTAT_MODE_HOLIDAY: // change the holiday temp
|
||||||
EMS_Thermostat.hc[hc- 1].holidaytemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].holidaytemp = temperature * 2;
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_holiday;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_holiday;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case EMS_THERMOSTAT_MODE_AUTO: // automatic selection, if no type is defined, we use the standard code
|
case EMS_THERMOSTAT_MODE_AUTO: // automatic selection, if no type is defined, we use the standard code
|
||||||
if (model == EMS_DEVICE_FLAG_RC35) {
|
if (model == EMS_DEVICE_FLAG_RC35) {
|
||||||
switch(EMS_Thermostat.hc[hc - 1].mode) {
|
switch (EMS_Thermostat.hc[hc - 1].mode) {
|
||||||
case 0: // if in nightmode, change nighttemp, seltemp is set automatically
|
case 0: // if in nightmode, change nighttemp, seltemp is set automatically
|
||||||
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_night;
|
EMS_TxTelegram.offset = EMS_OFFSET_RC35Set_temp_night;
|
||||||
break;
|
break;
|
||||||
@@ -2540,7 +2540,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
} else {
|
} else {
|
||||||
EMS_TxTelegram.offset = (EMS_Thermostat.hc[hc - 1].mode_type == 0) ? EMS_OFFSET_RC35Set_temp_night : EMS_OFFSET_RC35Set_temp_day;
|
EMS_TxTelegram.offset = (EMS_Thermostat.hc[hc - 1].mode_type == 0) ? EMS_OFFSET_RC35Set_temp_night : EMS_OFFSET_RC35Set_temp_day;
|
||||||
}
|
}
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2; // set temperature for immediate publish back
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2; // set temperature for immediate publish back
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2562,7 +2562,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
|
|
||||||
else if ((model == EMS_DEVICE_FLAG_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
else if ((model == EMS_DEVICE_FLAG_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
||||||
EMS_TxTelegram.emsplus = true; // Assuming here that all Junkers use EMS+
|
EMS_TxTelegram.emsplus = true; // Assuming here that all Junkers use EMS+
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
|
|
||||||
// figure out if we have older or new thermostats
|
// figure out if we have older or new thermostats
|
||||||
// Heating Circuits on 0x65 or 0x79
|
// Heating Circuits on 0x65 or 0x79
|
||||||
@@ -2587,7 +2587,7 @@ void ems_setThermostatTemp(float temperature, uint8_t hc, _EMS_THERMOSTAT_MODE t
|
|||||||
EMS_TxTelegram.type = EMS_TYPE_JunkersSetMessage1_HC1 + hc - 1; // 0x65
|
EMS_TxTelegram.type = EMS_TYPE_JunkersSetMessage1_HC1 + hc - 1; // 0x65
|
||||||
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_JunkersStatusMessage_HC1 + hc - 1;
|
EMS_TxTelegram.comparisonPostRead = EMS_TYPE_JunkersStatusMessage_HC1 + hc - 1;
|
||||||
} else {
|
} else {
|
||||||
EMS_Thermostat.hc[hc- 1].setpoint_roomTemp = temperature * 2;
|
EMS_Thermostat.hc[hc - 1].setpoint_roomTemp = temperature * 2;
|
||||||
// EMS_DEVICE_FLAG_JUNKERS2
|
// EMS_DEVICE_FLAG_JUNKERS2
|
||||||
switch (temptype) {
|
switch (temptype) {
|
||||||
case EMS_THERMOSTAT_MODE_NOFROST:
|
case EMS_THERMOSTAT_MODE_NOFROST:
|
||||||
|
|||||||
@@ -335,7 +335,6 @@ static const _EMS_Device EMS_Devices[] = {
|
|||||||
|
|
||||||
// Sieger
|
// Sieger
|
||||||
{76, EMS_DEVICE_TYPE_THERMOSTAT, "Sieger ES73", EMS_DEVICE_FLAG_RC35}, // 0x10
|
{76, EMS_DEVICE_TYPE_THERMOSTAT, "Sieger ES73", EMS_DEVICE_FLAG_RC35}, // 0x10
|
||||||
{113, EMS_DEVICE_TYPE_THERMOSTAT, "RC20/Sieger ES72", EMS_DEVICE_FLAG_RC20N}, // 0x17
|
|
||||||
{113, EMS_DEVICE_TYPE_THERMOSTAT, "Sieger ES72/Buderus RC20", EMS_DEVICE_FLAG_RC20N}, // 0x17
|
{113, EMS_DEVICE_TYPE_THERMOSTAT, "Sieger ES72/Buderus RC20", EMS_DEVICE_FLAG_RC20N}, // 0x17
|
||||||
|
|
||||||
// Junkers - all 0x10
|
// Junkers - all 0x10
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define APP_VERSION "1.9.5b58"
|
#define APP_VERSION "1.9.5b59"
|
||||||
|
|||||||
Reference in New Issue
Block a user