add values/settings for #878, #879, #880

This commit is contained in:
MichaelDvP
2023-01-02 10:09:40 +01:00
parent 718ede8439
commit 49113edeff
5 changed files with 139 additions and 0 deletions

View File

@@ -154,6 +154,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
register_telegram_type(0x267, "RC300Floordry", false, MAKE_PF_CB(process_RC300Floordry));
register_telegram_type(0x240, "RC300Settings", true, MAKE_PF_CB(process_RC300Settings));
register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings));
register_telegram_type(0x23E, "PVSettings", true, MAKE_PF_CB(process_PVSettings));
// JUNKERS/HT3
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
@@ -883,6 +884,12 @@ void Thermostat::process_HybridSettings(std::shared_ptr<const Telegram> telegram
has_update(telegram, tempDiffBoiler_, 19); // relative degrees
}
// 0x23E PV settings
void Thermostat::process_PVSettings(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, pvRaiseHeat_, 0);
has_update(telegram, pvLowerCool_, 5);
}
void Thermostat::process_JunkersSetMixer(std::shared_ptr<const Telegram> telegram) {
std::shared_ptr<Thermostat::HeatingCircuit> hc = heating_circuit(telegram);
if (hc == nullptr) {
@@ -1503,6 +1510,24 @@ bool Thermostat::set_tempDiffBoiler(const char * value, const int8_t id) {
return true;
}
bool Thermostat::set_pvRaiseHeat(const char * value, const int8_t id) {
int v;
if (Helpers::value2temperature(value, v, true)) {
write_command(0x23E, 0, v, 0x23E);
return true;
}
return false;
}
bool Thermostat::set_pvLowerCool(const char * value, const int8_t id) {
int v;
if (Helpers::value2temperature(value, v, true)) {
write_command(0x23E, 5, v, 0x23E);
return true;
}
return false;
}
// 0xA5 - Set minimum external temperature
bool Thermostat::set_minexttemp(const char * value, const int8_t id) {
int mt;
@@ -3536,6 +3561,22 @@ void Thermostat::register_device_values() {
MAKE_CF_CB(set_tempDiffBoiler),
1,
99);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&pvRaiseHeat_,
DeviceValueType::INT,
FL_(pvRaiseHeat),
DeviceValueUOM::DEGREES_R,
MAKE_CF_CB(set_pvRaiseHeat),
0,
5);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&pvLowerCool_,
DeviceValueType::INT,
FL_(pvLowerCool),
DeviceValueUOM::DEGREES_R,
MAKE_CF_CB(set_pvLowerCool),
-5,
0);
break;
case EMS_DEVICE_FLAG_RC10:
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,