mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 16:29:51 +03:00
modifications for RC35 temps - https://github.com/proddy/EMS-ESP/issues/162
This commit is contained in:
13
CHANGELOG.md
13
CHANGELOG.md
@@ -5,13 +5,13 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.9.1 beta] 2019-09-16
|
||||
## [1.9.1 beta] 2019-09-27
|
||||
|
||||
### Added
|
||||
|
||||
- Support for multiple Heating Circuits (RC35 only for now and writing via telnet) - https://github.com/proddy/EMS-ESP/issues/162
|
||||
- mqttlog command also shows which MQTT topics it is subscribed too
|
||||
- Optimized event log loading in web and added integrity checks on all config and log files
|
||||
- Support for multiple Heating Circuits - https://github.com/proddy/EMS-ESP/issues/162
|
||||
- new `mqttlog` command also shows which MQTT topics it is subscribed too
|
||||
- Optimized event log loading in web and added integrity checks on all config and log files during boot
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -21,10 +21,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
### Changed
|
||||
|
||||
- Web login password is now mandatory
|
||||
- Faster detection of EMS devices on bus by using the 0x07 telegram instead of the brute-force scan
|
||||
- Fixes to the default HA climate component .yaml file to support latest Home Assistance ('heat' added)
|
||||
- Update documentation in Wiki on MQTT and troubleshooting
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed `heating_circuit` parameter
|
||||
- Removed `heating_circuit` config setting
|
||||
|
||||
## [1.9.0] 2019-09-01
|
||||
|
||||
|
||||
@@ -631,15 +631,22 @@ void showInfo() {
|
||||
// only show if we have data for the Heating Circuit
|
||||
if (EMS_Thermostat.hc[hc_num - 1].active) {
|
||||
myDebug_P(PSTR(" Heating Circuit %d"), hc_num);
|
||||
// Render Current & Setpoint Room Temperature for each thermostat type
|
||||
_renderShortValue(" Setpoint room temperature", "C", EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp, _m_setpoint);
|
||||
_renderShortValue(" Current room temperature", "C", EMS_Thermostat.hc[hc_num - 1].curr_roomTemp, _m_curr);
|
||||
|
||||
// Render Day/Night/Holiday Temperature on RC35s
|
||||
// there is no single setpoint temp, but one for day, night and vacation
|
||||
if (model == EMS_MODEL_RC35) {
|
||||
if (EMS_Thermostat.hc[hc_num - 1].summer_mode) {
|
||||
myDebug_P(PSTR(" Program is set to Summer mode"));
|
||||
} else if (EMS_Thermostat.hc[hc_num - 1].holiday_mode) {
|
||||
myDebug_P(PSTR(" Program is set to Holiday mode"));
|
||||
}
|
||||
|
||||
_renderIntValue(" Day temperature", "C", EMS_Thermostat.hc[hc_num - 1].daytemp, 2); // convert to a single byte * 2
|
||||
_renderIntValue(" Night temperature", "C", EMS_Thermostat.hc[hc_num - 1].nighttemp, 2); // convert to a single byte * 2
|
||||
_renderIntValue(" Vacation temperature", "C", EMS_Thermostat.hc[hc_num - 1].holidaytemp, 2); // convert to a single byte * 2
|
||||
} else {
|
||||
_renderShortValue(" Setpoint room temperature", "C", EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp, _m_setpoint);
|
||||
}
|
||||
|
||||
// Render Termostat Mode, if we have a mode
|
||||
|
||||
33
src/ems.cpp
33
src/ems.cpp
@@ -256,8 +256,10 @@ void ems_init() {
|
||||
for (uint8_t i = 0; i < EMS_THERMOSTAT_MAXHC; i++) {
|
||||
EMS_Thermostat.hc[i].hc = i + 1;
|
||||
EMS_Thermostat.hc[i].active = false;
|
||||
EMS_Thermostat.hc[i].mode = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].mode = EMS_VALUE_INT_NOTSET; // night, day, auto
|
||||
EMS_Thermostat.hc[i].day_mode = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].summer_mode = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].holiday_mode = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].daytemp = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].nighttemp = EMS_VALUE_INT_NOTSET;
|
||||
EMS_Thermostat.hc[i].holidaytemp = EMS_VALUE_INT_NOTSET;
|
||||
@@ -1400,28 +1402,37 @@ void _process_RC30StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||
* 10 0B 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00
|
||||
* 10 0B 5C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00
|
||||
*
|
||||
* For reading the temp values only
|
||||
* night mode:
|
||||
* 10 00 3E 00 04 03 00 7D 00 00 00 00 00 00 00 00 00 11 05 00
|
||||
* 10 00 48 00 00 00 10 00 E9 00 00 00 00 00 00 00 00 11 05 00
|
||||
*
|
||||
* day mode:
|
||||
* 10 0B 3E 00 04 03 00 7D 00 00 00 00 00 00 00 00 00 11 05 00
|
||||
* 10 0B 48 00 00 00 10 00 E8 00 00 00 00 00 00 00 00 11 05 00
|
||||
*
|
||||
* auto day:
|
||||
* 10 00 3E 00 04 03 00 7D 00 00 00 00 00 00 00 00 00 11 05 00
|
||||
* 10 0B 48 00 04 03 00 00 EB 00 00 00 00 00 00 00 00 11 05 00
|
||||
*
|
||||
* For reading the current room temperature only and picking up the modes
|
||||
* received every 60 seconds
|
||||
*/
|
||||
void _process_RC35StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||
// ignore if first byte is 0x00
|
||||
if (EMS_RxTelegram->data[0] == 0x00) {
|
||||
// ignore if 14th byte is 0x00, which I think is flow temp?
|
||||
if (EMS_RxTelegram->data[14] == 0x00) {
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it?
|
||||
|
||||
// check if setpoint temp sensor is unavailable
|
||||
if (EMS_RxTelegram->data[EMS_OFFSET_RC35StatusMessage_setpoint] != 0x7D) {
|
||||
EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp = _toByte(EMS_OFFSET_RC35StatusMessage_setpoint); // is * 2
|
||||
}
|
||||
|
||||
// check if current temp sensor is unavailable
|
||||
if (EMS_RxTelegram->data[EMS_OFFSET_RC35StatusMessage_curr] != 0x7D) {
|
||||
EMS_Thermostat.hc[hc_num - 1].curr_roomTemp = _toShort(EMS_OFFSET_RC35StatusMessage_curr); // is * 10
|
||||
}
|
||||
|
||||
EMS_Thermostat.hc[hc_num - 1].day_mode = _bitRead(EMS_OFFSET_RC35StatusMessage_mode, 1); // get day mode flag
|
||||
EMS_Thermostat.hc[hc_num - 1].day_mode = _bitRead(EMS_OFFSET_RC35StatusMessage_mode, 1); // get day mode flag
|
||||
EMS_Thermostat.hc[hc_num - 1].summer_mode = _bitRead(EMS_OFFSET_RC35StatusMessage_mode, 0); // summer mode?
|
||||
EMS_Thermostat.hc[hc_num - 1].holiday_mode = _bitRead(EMS_OFFSET_RC35StatusMessage_mode1, 5); // holiday mode?
|
||||
|
||||
EMS_Thermostat.hc[hc_num - 1].circuitcalctemp = _toByte(EMS_OFFSET_RC35Set_circuitcalctemp); // calculated temperature
|
||||
|
||||
@@ -1623,7 +1634,7 @@ void _process_RC35Set(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||
|
||||
uint8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it?
|
||||
|
||||
EMS_Thermostat.hc[hc_num - 1].mode = _toByte(EMS_OFFSET_RC35Set_mode);
|
||||
EMS_Thermostat.hc[hc_num - 1].mode = _toByte(EMS_OFFSET_RC35Set_mode); // night, day, auto
|
||||
EMS_Thermostat.hc[hc_num - 1].daytemp = _toByte(EMS_OFFSET_RC35Set_temp_day); // is * 2
|
||||
EMS_Thermostat.hc[hc_num - 1].nighttemp = _toByte(EMS_OFFSET_RC35Set_temp_night); // is * 2
|
||||
EMS_Thermostat.hc[hc_num - 1].holidaytemp = _toByte(EMS_OFFSET_RC35Set_temp_holiday); // is * 2
|
||||
|
||||
@@ -385,8 +385,10 @@ typedef struct {
|
||||
bool active; // true if there is data for this HC
|
||||
int16_t setpoint_roomTemp; // current set temp
|
||||
int16_t curr_roomTemp; // current room temp
|
||||
uint8_t mode; // 0=low, 1=manual, 2=auto
|
||||
bool day_mode; // 0=night, 1=day
|
||||
uint8_t mode; // 0=low, 1=manual, 2=auto (or night, day on RC35s)
|
||||
uint8_t day_mode; // 0=night, 1=day
|
||||
uint8_t summer_mode;
|
||||
uint8_t holiday_mode;
|
||||
uint8_t daytemp;
|
||||
uint8_t nighttemp;
|
||||
uint8_t holidaytemp;
|
||||
|
||||
@@ -97,7 +97,9 @@
|
||||
|
||||
#define EMS_OFFSET_RC35StatusMessage_setpoint 2 // desired temp
|
||||
#define EMS_OFFSET_RC35StatusMessage_curr 3 // current temp
|
||||
#define EMS_OFFSET_RC35StatusMessage_mode 1 //day mode
|
||||
#define EMS_OFFSET_RC35StatusMessage_mode 1 // day mode, also summer on RC3's
|
||||
#define EMS_OFFSET_RC35StatusMessage_mode1 0 // for holiday mode
|
||||
|
||||
|
||||
#define EMS_TYPE_RC35Set_HC1 0x3D // for setting values like temp and mode (Working mode HC1)
|
||||
#define EMS_TYPE_RC35Set_HC2 0x47 // for setting values like temp and mode (Working mode HC2)
|
||||
|
||||
Reference in New Issue
Block a user