mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
add mixer values #1554
This commit is contained in:
@@ -45,6 +45,7 @@ Mixer::Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c
|
|||||||
if (device_id >= 0x20 && device_id <= 0x27) {
|
if (device_id >= 0x20 && device_id <= 0x27) {
|
||||||
register_telegram_type(device_id - 0x20 + 0x02D7, "MMPLUSStatusMessage_HC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_HC));
|
register_telegram_type(device_id - 0x20 + 0x02D7, "MMPLUSStatusMessage_HC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_HC));
|
||||||
// register_telegram_type(device_id - 0x20 + 0x02E1, "MMPLUSSetMessage_HC", true, MAKE_PF_CB(process_MMPLUSSetMessage_HC));
|
// register_telegram_type(device_id - 0x20 + 0x02E1, "MMPLUSSetMessage_HC", true, MAKE_PF_CB(process_MMPLUSSetMessage_HC));
|
||||||
|
register_telegram_type(2 * (device_id - 0x20) + 0x02CC, "MMPLUSSetMessage_HC", false, MAKE_PF_CB(process_MMPLUSSetMessage_HC));
|
||||||
type_ = Type::HC;
|
type_ = Type::HC;
|
||||||
hc_ = device_id - 0x20 + 1;
|
hc_ = device_id - 0x20 + 1;
|
||||||
uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1;
|
uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1;
|
||||||
@@ -52,6 +53,17 @@ Mixer::Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c
|
|||||||
register_device_value(tag, &status_, DeviceValueType::INT, FL_(mixerStatus), DeviceValueUOM::PERCENT);
|
register_device_value(tag, &status_, DeviceValueType::INT, FL_(mixerStatus), DeviceValueUOM::PERCENT);
|
||||||
register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp));
|
register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp));
|
||||||
register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump));
|
register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump));
|
||||||
|
register_device_value(tag, &activated_, DeviceValueType::BOOL, FL_(activated), DeviceValueUOM::NONE, MAKE_CF_CB(set_activated));
|
||||||
|
register_device_value(tag,
|
||||||
|
&setValveTime_,
|
||||||
|
DeviceValueType::UINT,
|
||||||
|
DeviceValueNumOp::DV_NUMOP_MUL10,
|
||||||
|
FL_(mixerSetTime),
|
||||||
|
DeviceValueUOM::SECONDS,
|
||||||
|
MAKE_CF_CB(set_setValveTime),
|
||||||
|
10,
|
||||||
|
600);
|
||||||
|
register_device_value(tag, &flowTempOffset_, DeviceValueType::UINT, FL_(flowtempoffset), DeviceValueUOM::K, MAKE_CF_CB(set_flowTempOffset), 0, 20);
|
||||||
} else if (device_id >= 0x28 && device_id <= 0x29) {
|
} else if (device_id >= 0x28 && device_id <= 0x29) {
|
||||||
register_telegram_type(device_id - 0x28 + 0x0331, "MMPLUSStatusMessage_WWC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_WWC));
|
register_telegram_type(device_id - 0x28 + 0x0331, "MMPLUSStatusMessage_WWC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_WWC));
|
||||||
register_telegram_type(device_id - 0x28 + 0x0313, "MMPLUSConfigMessage_WWC", true, MAKE_PF_CB(process_MMPLUSConfigMessage_WWC));
|
register_telegram_type(device_id - 0x28 + 0x0313, "MMPLUSConfigMessage_WWC", true, MAKE_PF_CB(process_MMPLUSConfigMessage_WWC));
|
||||||
@@ -273,16 +285,23 @@ void Mixer::process_IPMHydrTemp(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, HydrTemp_, 0);
|
has_update(telegram, HydrTemp_, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mixer Setting 0x2CC
|
||||||
|
void Mixer::process_MMPLUSSetMessage_HC(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
has_update(telegram, activated_, 0); // on = 0xFF
|
||||||
|
has_update(telegram, setValveTime_, 1); // valve runtime in 10 sec, max 120 s
|
||||||
|
has_update(telegram, flowTempOffset_, 2); // Mixer increase [0-20 K]
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
|
||||||
// Thermostat(0x10) -> Mixer(0x20), ?(0x2E1), data: 01 1C 64 00 01
|
// Thermostat(0x10) -> Mixer(0x20), ?(0x2E1), data: 01 1C 64 00 01
|
||||||
// Thermostat(0x10) -> Mixing Module(0x20), (0x2E1), data: 01 00 00 00 01
|
// Thermostat(0x10) -> Mixing Module(0x20), (0x2E1), data: 01 00 00 00 01
|
||||||
// Thermostat(0x10) -> Mixing Module(0x20), (0x2EB), data: 00
|
// Thermostat(0x10) -> Mixing Module(0x20), (0x2EB), data: 00
|
||||||
void Mixer::process_MMPLUSSetMessage_HC(std::shared_ptr<const Telegram> telegram) {
|
// void Mixer::process_MMPLUSSetMessage_HC(std::shared_ptr<const Telegram> telegram) {
|
||||||
// pos 1: setpoint
|
// pos 1: setpoint
|
||||||
// pos2: pump
|
// pos2: pump
|
||||||
}
|
// }
|
||||||
|
|
||||||
// unknown, 2 examples from older threads
|
// unknown, 2 examples from older threads
|
||||||
// Thermostat(0x10) -> Mixer(0x28), ?(0x33B), data: 01 01 00
|
// Thermostat(0x10) -> Mixer(0x28), ?(0x33B), data: 01 01 00
|
||||||
@@ -373,6 +392,11 @@ bool Mixer::set_activated(const char * value, const int8_t id) {
|
|||||||
write_command(0xAA, 0, b ? 0xFF : 0, 0xAA);
|
write_command(0xAA, 0, b ? 0xFF : 0, 0xAA);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) {
|
||||||
|
uint8_t hc = device_id() - 0x20;
|
||||||
|
write_command(0x2CC + hc * 2, 0, b ? 0xFF : 0, 0x2CC + hc * 2);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -386,6 +410,12 @@ bool Mixer::set_setValveTime(const char * value, const int8_t id) {
|
|||||||
write_command(0xAA, 1, v, 0xAA);
|
write_command(0xAA, 1, v, 0xAA);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) {
|
||||||
|
v = (v + 5) / 10;
|
||||||
|
uint8_t hc = device_id() - 0x20;
|
||||||
|
write_command(0x2CC + hc * 2, 1, v, 0x2CC + hc * 2);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -498,4 +528,17 @@ bool Mixer::set_wwHystOff(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Mixer::set_flowTempOffset(const char * value, const int8_t id) {
|
||||||
|
int v;
|
||||||
|
if (!Helpers::value2number(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) {
|
||||||
|
uint8_t hc = device_id() - 0x20;
|
||||||
|
write_command(0x2CC + hc * 2, 2, v, 0x2CC + hc * 2);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ class Mixer : public EMSdevice {
|
|||||||
bool set_pump(const char * value, const int8_t id);
|
bool set_pump(const char * value, const int8_t id);
|
||||||
bool set_activated(const char * value, const int8_t id);
|
bool set_activated(const char * value, const int8_t id);
|
||||||
bool set_setValveTime(const char * value, const int8_t id);
|
bool set_setValveTime(const char * value, const int8_t id);
|
||||||
|
bool set_flowTempOffset(const char * value, const int8_t id);
|
||||||
|
|
||||||
bool set_wwMaxTemp(const char * value, const int8_t id);
|
bool set_wwMaxTemp(const char * value, const int8_t id);
|
||||||
bool set_wwDiffTemp(const char * value, const int8_t id);
|
bool set_wwDiffTemp(const char * value, const int8_t id);
|
||||||
@@ -80,6 +81,7 @@ class Mixer : public EMSdevice {
|
|||||||
uint8_t flowSetTemp_;
|
uint8_t flowSetTemp_;
|
||||||
uint8_t activated_;
|
uint8_t activated_;
|
||||||
uint8_t setValveTime_;
|
uint8_t setValveTime_;
|
||||||
|
uint8_t flowTempOffset_;
|
||||||
|
|
||||||
// MM100wwParam - 0x0313, 0x033B
|
// MM100wwParam - 0x0313, 0x033B
|
||||||
uint8_t wwMaxTemp_;
|
uint8_t wwMaxTemp_;
|
||||||
|
|||||||
Reference in New Issue
Block a user