merge of Yves' "Added retrieving settings (0xA5)" feature

This commit is contained in:
Paul
2020-03-23 11:40:48 +01:00
parent 2545361984
commit b51d34add0
6 changed files with 80 additions and 77 deletions

View File

@@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- MQTT publish messages are queued and gracefully published every second to avoid TCP blocks
- 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 Thermostat retrieving settings (0xA5) (validated on RC30N) with MQTT support (thanks Yves @ypaindaveine. See #352)
### Fixed
- set boiler warm water temp on Junkers/Bosch HT3

View File

@@ -2130,7 +2130,7 @@ void MQTTCallback(unsigned int type, const char * topic, const char * message) {
}
uint8_t t = atoi((char *)data);
if (t) {
ems_setSettingsDisplay(t-1);
ems_setSettingsDisplay(t - 1);
}
return;
}

View File

@@ -104,7 +104,8 @@ void ems_init() {
EMS_Thermostat.write_supported = false;
EMS_Thermostat.device_id = EMS_ID_NONE;
// settings
EMS_Thermostat.ibaMainDisplay = EMS_VALUE_INT_NOTSET; // display on Thermostat: 0 int. temp, 1 int. setpoint, 2 ext. temp., 3 boiler temp., 4 ww temp, 5 functioning mode, 6 time, 7 data, 9 smoke temp
EMS_Thermostat.ibaMainDisplay =
EMS_VALUE_INT_NOTSET; // display on Thermostat: 0 int. temp, 1 int. setpoint, 2 ext. temp., 3 boiler temp., 4 ww temp, 5 functioning mode, 6 time, 7 data, 9 smoke temp
EMS_Thermostat.ibaLanguage = EMS_VALUE_INT_NOTSET; // language on Thermostat: 0 german, 1 dutch, 2 french, 3 italian
EMS_Thermostat.ibaCalIntTemperature = EMS_VALUE_INT_NOTSET; // offset int. temperature sensor, by * 0.1 Kelvin
EMS_Thermostat.ibaMinExtTemperature = EMS_VALUE_SHORT_NOTSET; // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
@@ -960,7 +961,6 @@ void _checkActive() {
if (EMS_Boiler.selFlowTemp != EMS_VALUE_INT_NOTSET && EMS_Boiler.burnGas != EMS_VALUE_INT_NOTSET) {
EMS_Boiler.heatingActive = ((EMS_Boiler.selFlowTemp >= EMS_BOILER_SELFLOWTEMP_HEATING) && (EMS_Boiler.burnGas == EMS_VALUE_BOOL_ON));
}
}
/**
@@ -1305,14 +1305,16 @@ void _process_IBASettingsMessage(_EMS_RxTelegram * EMS_RxTelegram) {
// values validated for RC30N
uint8_t extTemp = 100; // Min. ext temperature is coded as int8, 0xF6=-10, 0x0 = 0, 0xFF=-1. 100 is out of permissible range
_setValue(EMS_RxTelegram, &EMS_Thermostat.ibaMainDisplay, EMS_OFFSET_IBASettings_Display); // display on Thermostat: 0 int. temp, 1 int. setpoint, 2 ext. temp., 3 burner temp., 4 ww temp, 5 functioning mode, 6 time, 7 data, 9 smoke temp
_setValue(EMS_RxTelegram,
&EMS_Thermostat.ibaMainDisplay,
EMS_OFFSET_IBASettings_Display); // display on Thermostat: 0 int. temp, 1 int. setpoint, 2 ext. temp., 3 burner temp., 4 ww temp, 5 functioning mode, 6 time, 7 data, 9 smoke temp
_setValue(EMS_RxTelegram, &EMS_Thermostat.ibaLanguage, EMS_OFFSET_IBASettings_Language); // language on Thermostat: 0 german, 1 dutch, 2 french, 3 italian
_setValue(EMS_RxTelegram, &EMS_Thermostat.ibaBuildingType, EMS_OFFSET_IBASettings_Building); // building type: 0 = light, 1 = medium, 2 = heavy
_setValue(EMS_RxTelegram, &EMS_Thermostat.ibaCalIntTemperature, EMS_OFFSET_IBASettings_CalIntTemp); // offset int. temperature sensor, by * 0.1 Kelvin
_setValue(EMS_RxTelegram, &extTemp, EMS_OFFSET_IBASettings_MinExtTemp); // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
if (extTemp != 100) {
// code as signed short, to benefit from negative value rendering
EMS_Thermostat.ibaMinExtTemperature = (int16_t)(extTemp > 127) ? (extTemp-256) : extTemp;
EMS_Thermostat.ibaMinExtTemperature = (int16_t)(extTemp > 127) ? (extTemp - 256) : extTemp;
}
_setValue(EMS_RxTelegram, &EMS_Thermostat.ibaClockOffset, EMS_OFFSET_IBASettings_ClockOffset); // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s
@@ -2814,12 +2816,12 @@ void ems_setSettingsLanguage(uint8_t lg) {
EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(lg) {
switch (lg) {
case EMS_VALUE_IBASettings_LANG_FRENCH:
case EMS_VALUE_IBASettings_LANG_GERMAN:
case EMS_VALUE_IBASettings_LANG_DUTCH:
case EMS_VALUE_IBASettings_LANG_ITALIAN:
myDebug_P(PSTR("Setting language to %d"),lg);
myDebug_P(PSTR("Setting language to %d"), lg);
EMS_TxTelegram.dataValue = lg;
break;
default:
@@ -2845,11 +2847,11 @@ void ems_setSettingsBuilding(uint8_t bg) {
EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(bg) {
switch (bg) {
case EMS_VALUE_IBASettings_BUILDING_LIGHT:
case EMS_VALUE_IBASettings_BUILDING_MEDIUM:
case EMS_VALUE_IBASettings_BUILDING_HEAVY:
myDebug_P(PSTR("Setting building to %d"),bg);
myDebug_P(PSTR("Setting building to %d"), bg);
EMS_TxTelegram.dataValue = bg;
break;
default:
@@ -2875,7 +2877,7 @@ void ems_setSettingsDisplay(uint8_t ds) {
EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(ds) {
switch (ds) {
case EMS_VALUE_IBASettings_DISPLAY_INTTEMP:
case EMS_VALUE_IBASettings_DISPLAY_INTSETPOINT:
case EMS_VALUE_IBASettings_DISPLAY_EXTTEMP:
@@ -2885,7 +2887,7 @@ void ems_setSettingsDisplay(uint8_t ds) {
case EMS_VALUE_IBASettings_DISPLAY_TIME:
case EMS_VALUE_IBASettings_DISPLAY_DATE:
case EMS_VALUE_IBASettings_DISPLAY_SMOKETEMP:
myDebug_P(PSTR("Setting display to %d"),ds);
myDebug_P(PSTR("Setting display to %d"), ds);
EMS_TxTelegram.dataValue = ds;
break;
default:

View File

@@ -1 +1 @@
#define APP_VERSION "1.9.5b57"
#define APP_VERSION "1.9.5b58"