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 - 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 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)
### Fixed ### Fixed
- set boiler warm water temp on Junkers/Bosch HT3 - 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); uint8_t t = atoi((char *)data);
if (t) { if (t) {
ems_setSettingsDisplay(t-1); ems_setSettingsDisplay(t - 1);
} }
return; return;
} }

View File

@@ -104,7 +104,8 @@ void ems_init() {
EMS_Thermostat.write_supported = false; EMS_Thermostat.write_supported = false;
EMS_Thermostat.device_id = EMS_ID_NONE; EMS_Thermostat.device_id = EMS_ID_NONE;
// settings // 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.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.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 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) { 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)); 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 // 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 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.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.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, &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 _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) { if (extTemp != 100) {
// code as signed short, to benefit from negative value rendering // 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 _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_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(lg) { switch (lg) {
case EMS_VALUE_IBASettings_LANG_FRENCH: case EMS_VALUE_IBASettings_LANG_FRENCH:
case EMS_VALUE_IBASettings_LANG_GERMAN: case EMS_VALUE_IBASettings_LANG_GERMAN:
case EMS_VALUE_IBASettings_LANG_DUTCH: case EMS_VALUE_IBASettings_LANG_DUTCH:
case EMS_VALUE_IBASettings_LANG_ITALIAN: 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; EMS_TxTelegram.dataValue = lg;
break; break;
default: default:
@@ -2845,11 +2847,11 @@ void ems_setSettingsBuilding(uint8_t bg) {
EMS_TxTelegram.timestamp = millis(); // set timestamp EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(bg) { switch (bg) {
case EMS_VALUE_IBASettings_BUILDING_LIGHT: case EMS_VALUE_IBASettings_BUILDING_LIGHT:
case EMS_VALUE_IBASettings_BUILDING_MEDIUM: case EMS_VALUE_IBASettings_BUILDING_MEDIUM:
case EMS_VALUE_IBASettings_BUILDING_HEAVY: 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; EMS_TxTelegram.dataValue = bg;
break; break;
default: default:
@@ -2875,7 +2877,7 @@ void ems_setSettingsDisplay(uint8_t ds) {
EMS_TxTelegram.timestamp = millis(); // set timestamp EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter EMS_Sys_Status.txRetryCount = 0; // reset retry counter
switch(ds) { switch (ds) {
case EMS_VALUE_IBASettings_DISPLAY_INTTEMP: case EMS_VALUE_IBASettings_DISPLAY_INTTEMP:
case EMS_VALUE_IBASettings_DISPLAY_INTSETPOINT: case EMS_VALUE_IBASettings_DISPLAY_INTSETPOINT:
case EMS_VALUE_IBASettings_DISPLAY_EXTTEMP: 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_TIME:
case EMS_VALUE_IBASettings_DISPLAY_DATE: case EMS_VALUE_IBASettings_DISPLAY_DATE:
case EMS_VALUE_IBASettings_DISPLAY_SMOKETEMP: 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; EMS_TxTelegram.dataValue = ds;
break; break;
default: default:

View File

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