Skip to content

Commit

Permalink
more weather compensation entities emsesp#1642
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDvP committed Feb 28, 2024
1 parent 8699bd4 commit 7c73e70
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
43 changes: 43 additions & 0 deletions src/devices/boiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,19 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curveOn_, DeviceValueType::BOOL, FL_(curveOn), DeviceValueUOM::NONE, MAKE_CF_CB(set_curveOn));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curveBase_, DeviceValueType::UINT, FL_(curveBase), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_curveBase));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curveEnd_, DeviceValueType::UINT, FL_(curveEnd), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_curveEnd));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&summerTemp_,
DeviceValueType::UINT,
FL_(summertemp),
DeviceValueUOM::DEGREES,
MAKE_CF_CB(set_summerTemp));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nofrost_, DeviceValueType::BOOL, FL_(nofrostmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_nofrost));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&nofrostTemp_,
DeviceValueType::UINT,
FL_(nofrosttemp),
DeviceValueUOM::DEGREES,
MAKE_CF_CB(set_nofrostTemp));
}
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&heatingActivated_,
Expand Down Expand Up @@ -2004,6 +2017,9 @@ void Boiler::process_WeatherComp(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, curveOn_, 0);
has_update(telegram, curveEnd_, 1);
has_update(telegram, curveBase_, 2);
has_update(telegram, summerTemp_, 3);
has_update(telegram, nofrost_, 4);
has_update(telegram, nofrostTemp_, 5);
}

// HIU Settings
Expand Down Expand Up @@ -3176,4 +3192,31 @@ bool Boiler::set_curveEnd(const char * value, const int8_t id) {
return true;
}

bool Boiler::set_summerTemp(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 3, v);
return true;
}

bool Boiler::set_nofrost(const char * value, const int8_t id) {
bool v;
if (Helpers::value2bool(value, v)) {
write_command(0x28, 4, v ? 0xFF : 0);
return true;
}
return false;
}

bool Boiler::set_nofrostTemp(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 5, v);
return true;
}

} // namespace emsesp
6 changes: 6 additions & 0 deletions src/devices/boiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ class Boiler : public EMSdevice {
uint8_t curveOn_;
uint8_t curveBase_;
uint8_t curveEnd_;
uint8_t summerTemp_;
uint8_t nofrost_;
uint8_t nofrostTemp_;

// info
uint32_t upTimeTotal_; // Operating time
Expand Down Expand Up @@ -532,6 +535,9 @@ class Boiler : public EMSdevice {
bool set_curveOn(const char * value, const int8_t id);
bool set_curveBase(const char * value, const int8_t id);
bool set_curveEnd(const char * value, const int8_t id);
bool set_summerTemp(const char * value, const int8_t id);
bool set_nofrost(const char * value, const int8_t id);
bool set_nofrostTemp(const char * value, const int8_t id);

bool set_nrgHeat(const char * value, const int8_t id);
bool set_nrgWw(const char * value, const int8_t id);
Expand Down

0 comments on commit 7c73e70

Please sign in to comment.