mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 08:49:52 +03:00
add 9 heatpump settings #892 (without translation)
This commit is contained in:
@@ -83,6 +83,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
register_telegram_type(0x48B, "HPPumps", true, MAKE_PF_CB(process_HpPumps));
|
register_telegram_type(0x48B, "HPPumps", true, MAKE_PF_CB(process_HpPumps));
|
||||||
register_telegram_type(0x491, "HPAdditionalHeater", true, MAKE_PF_CB(process_HpAdditionalHeater));
|
register_telegram_type(0x491, "HPAdditionalHeater", true, MAKE_PF_CB(process_HpAdditionalHeater));
|
||||||
register_telegram_type(0x499, "HPDhwSettings", true, MAKE_PF_CB(process_HpDhwSettings));
|
register_telegram_type(0x499, "HPDhwSettings", true, MAKE_PF_CB(process_HpDhwSettings));
|
||||||
|
register_telegram_type(0x49C, "HPSettings2", true, MAKE_PF_CB(process_HpSettings2));
|
||||||
|
register_telegram_type(0x49D, "HPSettings3", true, MAKE_PF_CB(process_HpSettings3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -555,6 +557,40 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
MAKE_CF_CB(set_tempDiffCool),
|
MAKE_CF_CB(set_tempDiffCool),
|
||||||
3,
|
3,
|
||||||
10);
|
10);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &vp_cooling_, DeviceValueType::BOOL, FL_(vp_cooling), DeviceValueUOM::NONE, MAKE_CF_CB(set_vp_cooling));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatCable_, DeviceValueType::BOOL, FL_(heatCable), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatCable));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &VC0valve_, DeviceValueType::BOOL, FL_(VC0valve), DeviceValueUOM::NONE, MAKE_CF_CB(set_VC0valve));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &primePump_, DeviceValueType::BOOL, FL_(primePump), DeviceValueUOM::NONE, MAKE_CF_CB(set_primePump));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&primePumpMod_,
|
||||||
|
DeviceValueType::UINT,
|
||||||
|
FL_(primePumpMod),
|
||||||
|
DeviceValueUOM::PERCENT,
|
||||||
|
MAKE_CF_CB(set_primePumpMod));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&hp3wayValve_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(hp3wayValve),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_hp3wayValve));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&elHeatStep1_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(elHeatStep1),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_elHeatStep1));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&elHeatStep2_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(elHeatStep2),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_elHeatStep2));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
|
&elHeatStep3_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
FL_(elHeatStep3),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_elHeatStep3));
|
||||||
// heatpump DHW settings
|
// heatpump DHW settings
|
||||||
register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW,
|
register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW,
|
||||||
&wwComfOffTemp_,
|
&wwComfOffTemp_,
|
||||||
@@ -1448,6 +1484,25 @@ void Boiler::process_HpDhwSettings(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, wwEcoPlusOffTemp_, 5);
|
has_update(telegram, wwEcoPlusOffTemp_, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0x49C:
|
||||||
|
// Boiler(0x08) -B-> All(0x00), ?(0x049C), data: 00 00 00 00
|
||||||
|
void Boiler::process_HpSettings2(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, vp_cooling_, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0x49D
|
||||||
|
// Boiler(0x08) -B-> All(0x00), ?(0x049D), data: 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
void Boiler::process_HpSettings3(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, heatCable_, 2);
|
||||||
|
has_update(telegram, VC0valve_, 3);
|
||||||
|
has_update(telegram, primePump_, 4);
|
||||||
|
has_update(telegram, primePumpMod_, 5);
|
||||||
|
has_update(telegram, hp3wayValve_, 6);
|
||||||
|
has_update(telegram, elHeatStep1_, 7);
|
||||||
|
has_update(telegram, elHeatStep2_, 8);
|
||||||
|
has_update(telegram, elHeatStep3_, 9);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
||||||
* thermostat always overwrites settings in boiler
|
* thermostat always overwrites settings in boiler
|
||||||
@@ -2350,4 +2405,67 @@ bool Boiler::set_hpCircPumpWw(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_vp_cooling(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49C, 3, v ? 1 : 0, 0x49C);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_heatCable(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49D, 2, v ? 1 : 0, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_VC0valve(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49D, 3, v ? 1 : 0, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_primePump(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49D, 4, v ? 1 : 0, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_primePumpMod(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (Helpers::value2number(value, v)) {
|
||||||
|
write_command(0x49D, 5, v, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_hp3wayValve(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49D, 6, v ? 1 : 0, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Boiler::set_elHeatStep(const char * value, const int8_t id) {
|
||||||
|
bool v;
|
||||||
|
if (Helpers::value2bool(value, v)) {
|
||||||
|
write_command(0x49D, 6 + id, v ? 1 : 0, 0x49D);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -235,6 +235,16 @@ class Boiler : public EMSdevice {
|
|||||||
uint8_t wwEcoOffTemp_;
|
uint8_t wwEcoOffTemp_;
|
||||||
uint8_t wwEcoPlusOffTemp_;
|
uint8_t wwEcoPlusOffTemp_;
|
||||||
|
|
||||||
|
uint8_t vp_cooling_;
|
||||||
|
uint8_t heatCable_;
|
||||||
|
uint8_t VC0valve_;
|
||||||
|
uint8_t primePump_;
|
||||||
|
uint8_t primePumpMod_;
|
||||||
|
uint8_t hp3wayValve_;
|
||||||
|
uint8_t elHeatStep1_;
|
||||||
|
uint8_t elHeatStep2_;
|
||||||
|
uint8_t elHeatStep3_;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
// Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
||||||
// thermostat always overwrites settings in boiler
|
// thermostat always overwrites settings in boiler
|
||||||
@@ -287,6 +297,8 @@ class Boiler : public EMSdevice {
|
|||||||
void process_HpValve(std::shared_ptr<const Telegram> telegram);
|
void process_HpValve(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpPumps(std::shared_ptr<const Telegram> telegram);
|
void process_HpPumps(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_HpDhwSettings(std::shared_ptr<const Telegram> telegram);
|
void process_HpDhwSettings(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_HpSettings2(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_HpSettings3(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|
||||||
// commands - none of these use the additional id parameter
|
// commands - none of these use the additional id parameter
|
||||||
bool set_ww_mode(const char * value, const int8_t id);
|
bool set_ww_mode(const char * value, const int8_t id);
|
||||||
@@ -395,6 +407,22 @@ class Boiler : public EMSdevice {
|
|||||||
inline bool set_wwEcoPlusOffTemp(const char * value, const int8_t id) {
|
inline bool set_wwEcoPlusOffTemp(const char * value, const int8_t id) {
|
||||||
return set_wwOffTemp(value, 5);
|
return set_wwOffTemp(value, 5);
|
||||||
}
|
}
|
||||||
|
bool set_vp_cooling(const char * value, const int8_t id);
|
||||||
|
bool set_heatCable(const char * value, const int8_t id);
|
||||||
|
bool set_VC0valve(const char * value, const int8_t id);
|
||||||
|
bool set_primePump(const char * value, const int8_t id);
|
||||||
|
bool set_primePumpMod(const char * value, const int8_t id);
|
||||||
|
bool set_hp3wayValve(const char * value, const int8_t id);
|
||||||
|
bool set_elHeatStep(const char * value, const int8_t id);
|
||||||
|
inline bool set_elHeatStep1(const char * value, const int8_t id) {
|
||||||
|
return set_elHeatStep(value, 1);
|
||||||
|
}
|
||||||
|
inline bool set_elHeatStep2(const char * value, const int8_t id) {
|
||||||
|
return set_elHeatStep(value, 2);
|
||||||
|
}
|
||||||
|
inline bool set_elHeatStep3(const char * value, const int8_t id) {
|
||||||
|
return set_elHeatStep(value, 3);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
bool set_hybridStrategy(const char * value, const int8_t id);
|
bool set_hybridStrategy(const char * value, const int8_t id);
|
||||||
bool set_switchOverTemp(const char * value, const int8_t id);
|
bool set_switchOverTemp(const char * value, const int8_t id);
|
||||||
|
|||||||
@@ -405,6 +405,14 @@ MAKE_PSTR_LIST(auxMaxTemp, "auxmaxtemp", "aux heater max temperature", "Zusatzhe
|
|||||||
MAKE_PSTR_LIST(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung", "", "", "", "", "") // TODO translate
|
MAKE_PSTR_LIST(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung", "", "", "", "", "") // TODO translate
|
||||||
MAKE_PSTR_LIST(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "", "", "", "", "") // TODO translate
|
MAKE_PSTR_LIST(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "", "", "", "", "") // TODO translate
|
||||||
MAKE_PSTR_LIST(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "", "", "", "", "", "") // TODO translate
|
MAKE_PSTR_LIST(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "", "", "", "", "", "") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(vp_cooling, "vpcooling", "valve/pump cooling") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(VC0valve, "vc0valve", "VC0 valve") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(primePump, "primepump", "primary heatpump") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(primePumpMod, "primepumpmod", "primary heatpump modulation") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(hp3wayValve, "hp3way", "3-way valve") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(elHeatStep1, "elheatstep1", "el. heater step 1") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(elHeatStep2, "elheatstep2", "el. heater step 2") // TODO translate
|
||||||
|
MAKE_PSTR_LIST(elHeatStep3, "elheatstep3", "el. heater step 3") // TODO translate
|
||||||
|
|
||||||
// hybrid heatpump
|
// hybrid heatpump
|
||||||
MAKE_PSTR_LIST(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride")
|
MAKE_PSTR_LIST(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride")
|
||||||
|
|||||||
Reference in New Issue
Block a user