mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-03-15 14:16:32 +03:00
add pumpkick #2965, dev.8
This commit is contained in:
@@ -65,6 +65,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
register_telegram_type(0xE6, "UBAParametersPlus", true, MAKE_PF_CB(process_UBAParametersPlus));
|
||||
register_telegram_type(0xE9, "UBAMonitorWWPlus", false, MAKE_PF_CB(process_UBAMonitorWWPlus));
|
||||
register_telegram_type(0xEA, "UBAParameterWWPlus", true, MAKE_PF_CB(process_UBAParameterWWPlus));
|
||||
register_telegram_type(0xEB, "PumpKick", true, MAKE_PF_CB(process_PumpKick));
|
||||
register_telegram_type(0x28, "WeatherComp", true, MAKE_PF_CB(process_WeatherComp));
|
||||
register_telegram_type(0x2E0, "UBASetPoints", false, MAKE_PF_CB(process_UBASetPoints2));
|
||||
register_telegram_type(0x2CC, "HPPressure", true, MAKE_PF_CB(process_HpPressure));
|
||||
@@ -355,6 +356,24 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pc1On_, DeviceValueType::BOOL, FL_(pc1On), DeviceValueUOM::NONE);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pc1Rate_, DeviceValueType::UINT8, FL_(pc1Rate), DeviceValueUOM::PERCENT);
|
||||
|
||||
register_device_value(
|
||||
DeviceValueTAG::TAG_DEVICE_DATA, &pumpKickHour_, DeviceValueType::UINT8, FL_(pumpKickHour), DeviceValueUOM::HOURS, MAKE_CF_CB(set_pumpKickHour), 0, 23);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&pumpKickDay_,
|
||||
DeviceValueType::ENUM,
|
||||
FL_(enum_dayOfWeek),
|
||||
FL_(pumpKickDay),
|
||||
DeviceValueUOM::NONE,
|
||||
MAKE_CF_CB(set_pumpKickDay));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&pumpKickDelay_,
|
||||
DeviceValueType::UINT16,
|
||||
FL_(pumpKickDelay),
|
||||
DeviceValueUOM::MINUTES,
|
||||
MAKE_CF_CB(set_pumpKickDelay),
|
||||
0,
|
||||
32767);
|
||||
|
||||
/*
|
||||
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
|
||||
* thermostat always overwrites settings in boiler
|
||||
@@ -2246,6 +2265,13 @@ void Boiler::process_HpPowerLimit(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, hpPowerLimit_, 0);
|
||||
}
|
||||
|
||||
// 0x0EB
|
||||
void Boiler::process_PumpKick(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, pumpKickHour_, 0);
|
||||
has_enumupdate(telegram, pumpKickDay_, 1, 1); // 1-mo, ...
|
||||
has_update(telegram, pumpKickDelay_, 2);
|
||||
}
|
||||
|
||||
// Boiler(0x08) -B-> All(0x00), ?(0x2E), data: 00 00 1C CE 00 00 05 E8 00 00 00 18 00 00 00 02
|
||||
void Boiler::process_Meters(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, gasMeterHeat_, 0);
|
||||
@@ -3628,4 +3654,32 @@ bool Boiler::set_shutdown(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Boiler::set_pumpKickHour(const char * value, const int8_t id) {
|
||||
int v;
|
||||
if (Helpers::value2number(value, v, 0, 23)) {
|
||||
write_command(0xEB, 0, v, 0xEB);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Boiler::set_pumpKickDay(const char * value, const int8_t id) {
|
||||
uint8_t v;
|
||||
if (Helpers::value2enum(value, v, FL_(enum_dayOfWeek))) {
|
||||
write_command(0xEB, 1, v + 1, 0xEB);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Boiler::set_pumpKickDelay(const char * value, const int8_t id) {
|
||||
int v;
|
||||
if (Helpers::value2number(value, v, 0, 32767)) {
|
||||
uint8_t data[2] = {(uint8_t)(v >> 8), (uint8_t)v};
|
||||
write_command(0xEB, 2, data, 2, 0xEB);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace emsesp
|
||||
|
||||
Reference in New Issue
Block a user