Merge remote-tracking branch 'origin/dev' into idf4
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -29,7 +29,7 @@ assignees: ''
|
|||||||
*If applicable, add screenshots to help explain your problem.*
|
*If applicable, add screenshots to help explain your problem.*
|
||||||
|
|
||||||
**Device information**
|
**Device information**
|
||||||
*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api?device=system&cmd=info*
|
*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api/system*
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
*Add any other context about the problem here.*
|
*Add any other context about the problem here.*
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ assignees: ''
|
|||||||
*If applicable, add screenshots to help explain your problem.*
|
*If applicable, add screenshots to help explain your problem.*
|
||||||
|
|
||||||
**Device information**
|
**Device information**
|
||||||
*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api?device=system&cmd=info*
|
*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api/system*
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
*Add any other context about the problem here.*
|
*Add any other context about the problem here.*
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ Note, EMS-ESP requires a small hardware circuit that can convert the EMS bus dat
|
|||||||
- Native support for Home Assistant and Domoticz via [MQTT Discovery](https://www.home-assistant.io/docs/mqtt/discovery/)
|
- Native support for Home Assistant and Domoticz via [MQTT Discovery](https://www.home-assistant.io/docs/mqtt/discovery/)
|
||||||
- Can run standalone as an independent WiFi Access Point or join an existing WiFi network
|
- Can run standalone as an independent WiFi Access Point or join an existing WiFi network
|
||||||
- Easy first-time configuration via a web Captive Portal
|
- Easy first-time configuration via a web Captive Portal
|
||||||
- Support for more than [80 EMS devices](https://emsesp.github.io/docs/#/Supported-EMS-Devices) (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways)
|
- Support for more than [100 EMS devices](https://emsesp.github.io/docs/#/Supported-EMS-Devices) (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways)
|
||||||
|
|
||||||
## **Demo**
|
## **Demo**
|
||||||
|
|
||||||
|
|||||||
14
interface/package-lock.json
generated
@@ -15,7 +15,7 @@
|
|||||||
"@mui/material": "^5.8.0",
|
"@mui/material": "^5.8.0",
|
||||||
"@table-library/react-table-library": "^3.1.2",
|
"@table-library/react-table-library": "^3.1.2",
|
||||||
"@types/lodash": "^4.14.182",
|
"@types/lodash": "^4.14.182",
|
||||||
"@types/node": "^17.0.34",
|
"@types/node": "^17.0.35",
|
||||||
"@types/react": "^17.0.43",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.14",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
@@ -3867,9 +3867,9 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "17.0.34",
|
"version": "17.0.35",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.34.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
|
||||||
"integrity": "sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA=="
|
"integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -20574,9 +20574,9 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "17.0.34",
|
"version": "17.0.35",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.34.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
|
||||||
"integrity": "sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA=="
|
"integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
"@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"@mui/material": "^5.8.0",
|
"@mui/material": "^5.8.0",
|
||||||
"@table-library/react-table-library": "^3.1.2",
|
"@table-library/react-table-library": "^3.1.2",
|
||||||
"@types/lodash": "^4.14.182",
|
"@types/lodash": "^4.14.182",
|
||||||
"@types/node": "^17.0.34",
|
"@types/node": "^17.0.35",
|
||||||
"@types/react": "^17.0.43",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.14",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
|
|||||||
@@ -376,22 +376,22 @@ const SettingsCustomization: FC = () => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ToggleButton value="8">
|
<ToggleButton value="8">
|
||||||
<Tooltip arrow placement="top" title="mark it as favorite to be listed at the top of the Dashboard">
|
<Tooltip arrow placement="top" title="filter favorites">
|
||||||
<StarIcon sx={{ fontSize: 14 }} />
|
<StarIcon sx={{ fontSize: 14 }} />
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton value="4">
|
<ToggleButton value="4">
|
||||||
<Tooltip arrow placement="top" title="make it read-only, only if it has write operation available">
|
<Tooltip arrow placement="top" title="filter entities with write action disabled">
|
||||||
<EditOffOutlinedIcon sx={{ fontSize: 14 }} />
|
<EditOffOutlinedIcon sx={{ fontSize: 14 }} />
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton value="2">
|
<ToggleButton value="2">
|
||||||
<Tooltip arrow placement="top" title="excluded it from MQTT and API outputs">
|
<Tooltip arrow placement="top" title="filter entities excluded from MQTT and API outputs">
|
||||||
<CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} />
|
<CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} />
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton value="1">
|
<ToggleButton value="1">
|
||||||
<Tooltip arrow placement="top" title="hide it from the Dashboard">
|
<Tooltip arrow placement="top" title="filter entities hidden from Web Dashboard">
|
||||||
<VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} />
|
<VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} />
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
@@ -403,6 +403,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
<VisibilityOffOutlinedIcon color="primary" sx={{ fontSize: 14, verticalAlign: 'middle' }} />:
|
<VisibilityOffOutlinedIcon color="primary" sx={{ fontSize: 14, verticalAlign: 'middle' }} />:
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item>
|
<Grid item>
|
||||||
|
<Tooltip arrow placement="top" title="mark shown entities to be all visible and output ">
|
||||||
<Button
|
<Button
|
||||||
size="small"
|
size="small"
|
||||||
sx={{ fontSize: 10 }}
|
sx={{ fontSize: 10 }}
|
||||||
@@ -412,8 +413,10 @@ const SettingsCustomization: FC = () => {
|
|||||||
>
|
>
|
||||||
enable
|
enable
|
||||||
</Button>
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item>
|
<Grid item>
|
||||||
|
<Tooltip arrow placement="top" title="mark shown entities to be not visible or output ">
|
||||||
<Button
|
<Button
|
||||||
size="small"
|
size="small"
|
||||||
sx={{ fontSize: 10 }}
|
sx={{ fontSize: 10 }}
|
||||||
@@ -423,6 +426,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
>
|
>
|
||||||
disable
|
disable
|
||||||
</Button>
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Table data={{ nodes: shown_data }} theme={entities_theme} sort={entity_sort} layout={{ custom: true }}>
|
<Table data={{ nodes: shown_data }} theme={entities_theme} sort={entity_sort} layout={{ custom: true }}>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 139 KiB |
BIN
media/web_sensor.png
Normal file
|
After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 78 KiB |
@@ -238,7 +238,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
DeviceValueUOM::NONE,
|
DeviceValueUOM::NONE,
|
||||||
MAKE_CF_CB(set_energyCostRatio),
|
MAKE_CF_CB(set_energyCostRatio),
|
||||||
0,
|
0,
|
||||||
19.9);
|
20);
|
||||||
register_device_value(DeviceValueTAG::TAG_BOILER_DATA,
|
register_device_value(DeviceValueTAG::TAG_BOILER_DATA,
|
||||||
&fossileFactor_,
|
&fossileFactor_,
|
||||||
DeviceValueType::UINT,
|
DeviceValueType::UINT,
|
||||||
@@ -393,13 +393,29 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
FL_(wwComfort),
|
FL_(wwComfort),
|
||||||
DeviceValueUOM::NONE,
|
DeviceValueUOM::NONE,
|
||||||
MAKE_CF_CB(set_ww_mode));
|
MAKE_CF_CB(set_ww_mode));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
||||||
|
&wwComfort1_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_comfort1),
|
||||||
|
FL_(wwComfort1),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_ww_mode1));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
||||||
&wwFlowTempOffset_,
|
&wwFlowTempOffset_,
|
||||||
DeviceValueType::UINT,
|
DeviceValueType::UINT,
|
||||||
nullptr,
|
nullptr,
|
||||||
FL_(wwFlowTempOffset),
|
FL_(wwFlowTempOffset),
|
||||||
DeviceValueUOM::DEGREES_R,
|
DeviceValueUOM::DEGREES_R,
|
||||||
MAKE_CF_CB(set_ww_flowTempOffset));
|
MAKE_CF_CB(set_ww_flowTempOffset),
|
||||||
|
0,
|
||||||
|
40);
|
||||||
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
||||||
|
&wwChargeOptimization_,
|
||||||
|
DeviceValueType::BOOL,
|
||||||
|
nullptr,
|
||||||
|
FL_(wwChargeOptimization),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_ww_chargeOptimization));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
|
||||||
&wwMaxPower_,
|
&wwMaxPower_,
|
||||||
DeviceValueType::UINT,
|
DeviceValueType::UINT,
|
||||||
@@ -773,11 +789,24 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr<const Telegram> telegram
|
|||||||
has_update(telegram, wwSelTemp_, 6); // setting here
|
has_update(telegram, wwSelTemp_, 6); // setting here
|
||||||
has_update(telegram, wwHystOn_, 7);
|
has_update(telegram, wwHystOn_, 7);
|
||||||
has_update(telegram, wwHystOff_, 8);
|
has_update(telegram, wwHystOff_, 8);
|
||||||
|
has_update(telegram, wwFlowTempOffset_, 9);
|
||||||
has_update(telegram, wwCircPump_, 10); // 0x01 means yes
|
has_update(telegram, wwCircPump_, 10); // 0x01 means yes
|
||||||
has_update(telegram, wwCircMode_, 11); // 1=1x3min... 6=6x3min, 7=continuous
|
has_update(telegram, wwCircMode_, 11); // 1=1x3min... 6=6x3min, 7=continuous
|
||||||
has_update(telegram, wwDisinfectionTemp_, 12); // setting here, status in E9
|
has_update(telegram, wwDisinfectionTemp_, 12); // setting here, status in E9
|
||||||
has_update(telegram, wwSelTempSingle_, 16);
|
has_update(telegram, wwSelTempSingle_, 16);
|
||||||
has_update(telegram, wwSelTempLow_, 18);
|
has_update(telegram, wwSelTempLow_, 18);
|
||||||
|
has_update(telegram, wwChargeOptimization_, 25);
|
||||||
|
|
||||||
|
uint8_t wwComfort1 = EMS_VALUE_UINT_NOTSET;
|
||||||
|
telegram->read_value(wwComfort1, 13);
|
||||||
|
if (wwComfort1 == 0) {
|
||||||
|
wwComfort1 = 0; // High_Comfort
|
||||||
|
} else if (wwComfort1 == 0xD8) {
|
||||||
|
wwComfort1 = 1; // Eco
|
||||||
|
} else {
|
||||||
|
wwComfort1 = EMS_VALUE_UINT_NOTSET;
|
||||||
|
}
|
||||||
|
has_update(wwComfort1_, wwComfort1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0xE9 - WW monitor ems+
|
// 0xE9 - WW monitor ems+
|
||||||
@@ -1249,7 +1278,11 @@ bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
||||||
|
write_command(EMS_TYPE_UBAParameterWWPlus, 9, v, EMS_TYPE_UBAParameterWWPlus);
|
||||||
|
} else {
|
||||||
write_command(EMS_TYPE_UBAParameterWW, 5, v, EMS_TYPE_UBAParameterWW);
|
write_command(EMS_TYPE_UBAParameterWW, 5, v, EMS_TYPE_UBAParameterWW);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1350,6 +1383,23 @@ bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set ww charge optimization
|
||||||
|
bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) {
|
||||||
|
bool v = false;
|
||||||
|
if (!Helpers::value2bool(value, v)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
||||||
|
write_command(EMS_TYPE_UBAParameterWWPlus, 25, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// set dhw max power
|
// set dhw max power
|
||||||
bool Boiler::set_ww_maxpower(const char * value, const int8_t id) {
|
bool Boiler::set_ww_maxpower(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v = 0;
|
||||||
@@ -1485,6 +1535,31 @@ bool Boiler::set_ww_mode(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wwcomfort1 for RC310
|
||||||
|
// on a RC310 it's 1=high, 2=eco
|
||||||
|
bool Boiler::set_ww_mode1(const char * value, const int8_t id) {
|
||||||
|
uint8_t set;
|
||||||
|
if (!Helpers::value2enum(value, set, FL_(enum_comfort1))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (set == 0) {
|
||||||
|
// LOG_INFO(F("Setting boiler dhw to High"));
|
||||||
|
} else if (set == 1) {
|
||||||
|
// LOG_INFO(F("Setting boiler dhw to Eco"));
|
||||||
|
set = 0xD8;
|
||||||
|
} else {
|
||||||
|
return false; // do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
write_command(EMS_TYPE_UBAParameterWWPlus, 13, set, EMS_TYPE_UBAParameterWWPlus);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// turn on/off dhw
|
// turn on/off dhw
|
||||||
bool Boiler::set_ww_activated(const char * value, const int8_t id) {
|
bool Boiler::set_ww_activated(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v = false;
|
||||||
|
|||||||
@@ -58,8 +58,10 @@ class Boiler : public EMSdevice {
|
|||||||
uint8_t wwSelTempSingle_; // DHW single charge temperature
|
uint8_t wwSelTempSingle_; // DHW single charge temperature
|
||||||
uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer
|
uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer
|
||||||
uint8_t wwComfort_; // WW comfort mode
|
uint8_t wwComfort_; // WW comfort mode
|
||||||
|
uint8_t wwComfort1_; // WW comfort mode RC310
|
||||||
uint8_t wwCircPump_; // DHW circulation pump available
|
uint8_t wwCircPump_; // DHW circulation pump available
|
||||||
uint8_t wwChargeType_; // DHW charge type (pump or 3-way-valve)
|
uint8_t wwChargeType_; // DHW charge type (pump or 3-way-valve)
|
||||||
|
uint8_t wwChargeOptimization_; // DHW charge optimization
|
||||||
uint8_t wwDisinfectionTemp_; // DHW disinfection temperature to prevent infection
|
uint8_t wwDisinfectionTemp_; // DHW disinfection temperature to prevent infection
|
||||||
uint8_t wwCircMode_; // DHW circulation pump mode
|
uint8_t wwCircMode_; // DHW circulation pump mode
|
||||||
uint8_t wwCirc_; // Circulation on/off
|
uint8_t wwCirc_; // Circulation on/off
|
||||||
@@ -240,6 +242,7 @@ class Boiler : public EMSdevice {
|
|||||||
|
|
||||||
// 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);
|
||||||
|
bool set_ww_mode1(const char * value, const int8_t id);
|
||||||
bool set_ww_activated(const char * value, const int8_t id);
|
bool set_ww_activated(const char * value, const int8_t id);
|
||||||
bool set_tapwarmwater_activated(const char * value, const int8_t id);
|
bool set_tapwarmwater_activated(const char * value, const int8_t id);
|
||||||
bool set_ww_onetime(const char * value, const int8_t id);
|
bool set_ww_onetime(const char * value, const int8_t id);
|
||||||
@@ -253,6 +256,7 @@ class Boiler : public EMSdevice {
|
|||||||
bool set_ww_disinfect_temp(const char * value, const int8_t id);
|
bool set_ww_disinfect_temp(const char * value, const int8_t id);
|
||||||
bool set_ww_maxpower(const char * value, const int8_t id);
|
bool set_ww_maxpower(const char * value, const int8_t id);
|
||||||
bool set_ww_flowTempOffset(const char * value, const int8_t id);
|
bool set_ww_flowTempOffset(const char * value, const int8_t id);
|
||||||
|
bool set_ww_chargeOptimization(const char * value, const int8_t id);
|
||||||
bool set_flow_temp(const char * value, const int8_t id);
|
bool set_flow_temp(const char * value, const int8_t id);
|
||||||
bool set_burn_power(const char * value, const int8_t id);
|
bool set_burn_power(const char * value, const int8_t id);
|
||||||
bool set_heating_activated(const char * value, const int8_t id);
|
bool set_heating_activated(const char * value, const int8_t id);
|
||||||
|
|||||||
@@ -3723,7 +3723,7 @@ void Thermostat::register_device_values() {
|
|||||||
DeviceValueUOM::NONE,
|
DeviceValueUOM::NONE,
|
||||||
MAKE_CF_CB(set_energyCostRatio),
|
MAKE_CF_CB(set_energyCostRatio),
|
||||||
0,
|
0,
|
||||||
19.9);
|
20);
|
||||||
register_device_value(DeviceValueTAG::TAG_THERMOSTAT_DATA,
|
register_device_value(DeviceValueTAG::TAG_THERMOSTAT_DATA,
|
||||||
&fossileFactor_,
|
&fossileFactor_,
|
||||||
DeviceValueType::UINT,
|
DeviceValueType::UINT,
|
||||||
@@ -3835,8 +3835,13 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
|||||||
tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype));
|
tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype));
|
||||||
register_device_value(
|
register_device_value(
|
||||||
tag, &hc->summersetmode, DeviceValueType::ENUM, FL_(enum_summermode), FL_(summersetmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_summermode));
|
tag, &hc->summersetmode, DeviceValueType::ENUM, FL_(enum_summermode), FL_(summersetmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_summermode));
|
||||||
register_device_value(
|
register_device_value(tag,
|
||||||
tag, &hc->hpoperatingmode, DeviceValueType::ENUM, FL_(enum_hpoperatingmode), FL_(hpoperatingmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_summermode));
|
&hc->hpoperatingmode,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_hpoperatingmode),
|
||||||
|
FL_(hpoperatingmode),
|
||||||
|
DeviceValueUOM::NONE,
|
||||||
|
MAKE_CF_CB(set_summermode));
|
||||||
register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
|
register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
|
||||||
register_device_value(
|
register_device_value(
|
||||||
tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode));
|
tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode));
|
||||||
|
|||||||
@@ -262,6 +262,7 @@ MAKE_PSTR_WORD(continuous)
|
|||||||
MAKE_PSTR(3wayvalve, "3-way valve")
|
MAKE_PSTR(3wayvalve, "3-way valve")
|
||||||
MAKE_PSTR(chargepump, "charge pump")
|
MAKE_PSTR(chargepump, "charge pump")
|
||||||
MAKE_PSTR_WORD(hot)
|
MAKE_PSTR_WORD(hot)
|
||||||
|
MAKE_PSTR_WORD(high_comfort)
|
||||||
MAKE_PSTR_WORD(eco)
|
MAKE_PSTR_WORD(eco)
|
||||||
MAKE_PSTR_WORD(intelligent)
|
MAKE_PSTR_WORD(intelligent)
|
||||||
MAKE_PSTR_WORD(flow)
|
MAKE_PSTR_WORD(flow)
|
||||||
@@ -277,6 +278,7 @@ MAKE_PSTR_LIST(enum_off_time_date_manual, F_(off), F_(time), F_(date), F_(manual
|
|||||||
MAKE_PSTR_LIST(enum_freq, F_(off), F_(1x3min), F_(2x3min), F_(3x3min), F_(4x3min), F_(5x3min), F_(6x3min), F_(continuous))
|
MAKE_PSTR_LIST(enum_freq, F_(off), F_(1x3min), F_(2x3min), F_(3x3min), F_(4x3min), F_(5x3min), F_(6x3min), F_(continuous))
|
||||||
MAKE_PSTR_LIST(enum_charge, F_(chargepump), F_(3wayvalve))
|
MAKE_PSTR_LIST(enum_charge, F_(chargepump), F_(3wayvalve))
|
||||||
MAKE_PSTR_LIST(enum_comfort, F_(hot), F_(eco), F_(intelligent))
|
MAKE_PSTR_LIST(enum_comfort, F_(hot), F_(eco), F_(intelligent))
|
||||||
|
MAKE_PSTR_LIST(enum_comfort1, F_(high_comfort), F_(eco))
|
||||||
MAKE_PSTR_LIST(enum_flow, F_(off), F_(flow), F_(bufferedflow), F_(buffer), F_(layeredbuffer))
|
MAKE_PSTR_LIST(enum_flow, F_(off), F_(flow), F_(bufferedflow), F_(buffer), F_(layeredbuffer))
|
||||||
MAKE_PSTR_LIST(enum_reset, F("-"), F_(maintenance), F_(error))
|
MAKE_PSTR_LIST(enum_reset, F("-"), F_(maintenance), F_(error))
|
||||||
// MAKE_PSTR_LIST(enum_bool, F_(off), F_(on))
|
// MAKE_PSTR_LIST(enum_bool, F_(off), F_(on))
|
||||||
@@ -535,6 +537,7 @@ MAKE_PSTR_LIST(wwSelTempSingle, F("wwseltempsingle"), F("single charge temperatu
|
|||||||
MAKE_PSTR_LIST(wwSetTemp, F("wwsettemp"), F("set temperature"))
|
MAKE_PSTR_LIST(wwSetTemp, F("wwsettemp"), F("set temperature"))
|
||||||
MAKE_PSTR_LIST(wwType, F("wwtype"), F("type"))
|
MAKE_PSTR_LIST(wwType, F("wwtype"), F("type"))
|
||||||
MAKE_PSTR_LIST(wwComfort, F("wwcomfort"), F("comfort"))
|
MAKE_PSTR_LIST(wwComfort, F("wwcomfort"), F("comfort"))
|
||||||
|
MAKE_PSTR_LIST(wwComfort1, F("wwcomfort1"), F("comfort mode"))
|
||||||
MAKE_PSTR_LIST(wwFlowTempOffset, F("wwflowtempoffset"), F("flow temperature offset"))
|
MAKE_PSTR_LIST(wwFlowTempOffset, F("wwflowtempoffset"), F("flow temperature offset"))
|
||||||
MAKE_PSTR_LIST(wwMaxPower, F("wwmaxpower"), F("max power"))
|
MAKE_PSTR_LIST(wwMaxPower, F("wwmaxpower"), F("max power"))
|
||||||
MAKE_PSTR_LIST(wwCircPump, F("wwcircpump"), F("circulation pump available"))
|
MAKE_PSTR_LIST(wwCircPump, F("wwcircpump"), F("circulation pump available"))
|
||||||
@@ -551,6 +554,7 @@ MAKE_PSTR_LIST(wwActivated, F("wwactivated"), F("activated"))
|
|||||||
MAKE_PSTR_LIST(wwOneTime, F("wwonetime"), F("one time charging"))
|
MAKE_PSTR_LIST(wwOneTime, F("wwonetime"), F("one time charging"))
|
||||||
MAKE_PSTR_LIST(wwDisinfecting, F("wwdisinfecting"), F("disinfecting"))
|
MAKE_PSTR_LIST(wwDisinfecting, F("wwdisinfecting"), F("disinfecting"))
|
||||||
MAKE_PSTR_LIST(wwCharging, F("wwcharging"), F("charging"))
|
MAKE_PSTR_LIST(wwCharging, F("wwcharging"), F("charging"))
|
||||||
|
MAKE_PSTR_LIST(wwChargeOptimization, F("wwchargeoptimization"), F("charge optimization"))
|
||||||
MAKE_PSTR_LIST(wwRecharging, F("wwrecharging"), F("recharging"))
|
MAKE_PSTR_LIST(wwRecharging, F("wwrecharging"), F("recharging"))
|
||||||
MAKE_PSTR_LIST(wwTempOK, F("wwtempok"), F("temperature ok"))
|
MAKE_PSTR_LIST(wwTempOK, F("wwtempok"), F("temperature ok"))
|
||||||
MAKE_PSTR_LIST(wwActive, F("wwactive"), F("active"))
|
MAKE_PSTR_LIST(wwActive, F("wwactive"), F("active"))
|
||||||
|
|||||||