mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
add C2 error message, fix a uom
This commit is contained in:
@@ -52,6 +52,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
// common for all boilers
|
// common for all boilers
|
||||||
register_telegram_type(0x10, F("UBAErrorMessage1"), false, MAKE_PF_CB(process_UBAErrorMessage));
|
register_telegram_type(0x10, F("UBAErrorMessage1"), false, MAKE_PF_CB(process_UBAErrorMessage));
|
||||||
register_telegram_type(0x11, F("UBAErrorMessage2"), false, MAKE_PF_CB(process_UBAErrorMessage));
|
register_telegram_type(0x11, F("UBAErrorMessage2"), false, MAKE_PF_CB(process_UBAErrorMessage));
|
||||||
|
register_telegram_type(0xC2, F("UBAErrorMessage3"), false, MAKE_PF_CB(process_UBAErrorMessage2));
|
||||||
register_telegram_type(0x14, F("UBATotalUptime"), true, MAKE_PF_CB(process_UBATotalUptime));
|
register_telegram_type(0x14, F("UBATotalUptime"), true, MAKE_PF_CB(process_UBATotalUptime));
|
||||||
register_telegram_type(0x15, F("UBAMaintenanceData"), false, MAKE_PF_CB(process_UBAMaintenanceData));
|
register_telegram_type(0x15, F("UBAMaintenanceData"), false, MAKE_PF_CB(process_UBAMaintenanceData));
|
||||||
register_telegram_type(0x1C, F("UBAMaintenanceStatus"), false, MAKE_PF_CB(process_UBAMaintenanceStatus));
|
register_telegram_type(0x1C, F("UBAMaintenanceStatus"), false, MAKE_PF_CB(process_UBAMaintenanceStatus));
|
||||||
@@ -226,7 +227,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
FL_(wwSelTempSingle),
|
FL_(wwSelTempSingle),
|
||||||
DeviceValueUOM::DEGREES,
|
DeviceValueUOM::DEGREES,
|
||||||
MAKE_CF_CB(set_warmwater_temp_single));
|
MAKE_CF_CB(set_warmwater_temp_single));
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::NONE);
|
register_device_value(TAG_BOILER_DATA_WW, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::LIST);
|
||||||
register_device_value(
|
register_device_value(
|
||||||
TAG_BOILER_DATA_WW, &wwComfort_, DeviceValueType::ENUM, FL_(enum_comfort), FL_(wwComfort), DeviceValueUOM::LIST, MAKE_CF_CB(set_warmwater_mode));
|
TAG_BOILER_DATA_WW, &wwComfort_, DeviceValueType::ENUM, FL_(enum_comfort), FL_(wwComfort), DeviceValueUOM::LIST, MAKE_CF_CB(set_warmwater_mode));
|
||||||
register_device_value(
|
register_device_value(
|
||||||
@@ -277,6 +278,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
// fetch some initial data
|
// fetch some initial data
|
||||||
EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors)
|
EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors)
|
||||||
EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors)
|
EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors)
|
||||||
|
EMSESP::send_read_request(0xC2, device_id); // read last errorcode on start (only published on errors)
|
||||||
EMSESP::send_read_request(0x15, device_id); // read maintenace data on start (only published on change)
|
EMSESP::send_read_request(0x15, device_id); // read maintenace data on start (only published on change)
|
||||||
EMSESP::send_read_request(0x1C, device_id); // read maintenace status on start (only published on change)
|
EMSESP::send_read_request(0x1C, device_id); // read maintenace status on start (only published on change)
|
||||||
}
|
}
|
||||||
@@ -824,6 +826,24 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr<const Telegram> telegram) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 0xC2
|
||||||
|
|
||||||
|
void Boiler::process_UBAErrorMessage2(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
if (telegram->offset > 0 || telegram->message_length < 14) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char code[4];
|
||||||
|
uint16_t codeNo;
|
||||||
|
uint32_t timecode;
|
||||||
|
code[0] = telegram->message_data[5];
|
||||||
|
code[1] = telegram->message_data[6];
|
||||||
|
code[2] = telegram->message_data[7];
|
||||||
|
code[3] = 0;
|
||||||
|
telegram->read_value(codeNo, 8);
|
||||||
|
telegram->read_value(timecode, 11, 3);
|
||||||
|
snprintf(lastCode_, sizeof(lastCode_), "%s(%d) %d minutes ago", code, codeNo, timecode - UBAuptime_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 0x15
|
// 0x15
|
||||||
void Boiler::process_UBAMaintenanceData(std::shared_ptr<const Telegram> telegram) {
|
void Boiler::process_UBAMaintenanceData(std::shared_ptr<const Telegram> telegram) {
|
||||||
@@ -862,7 +882,7 @@ bool Boiler::set_warmwater_temp(const char * value, const int8_t id) {
|
|||||||
write_command(EMS_TYPE_UBAParameterWWPlus, 6, v, EMS_TYPE_UBAParameterWWPlus);
|
write_command(EMS_TYPE_UBAParameterWWPlus, 6, v, EMS_TYPE_UBAParameterWWPlus);
|
||||||
} else {
|
} else {
|
||||||
// some boiler have it in 0x33, some in 0x35
|
// some boiler have it in 0x33, some in 0x35
|
||||||
write_command(EMS_TYPE_UBAFlags, 3, v, 0x34); // for i9000, see #397
|
write_command(EMS_TYPE_UBAFlags, 3, v, EMS_TYPE_UBAParameterWW); // for i9000, see #397
|
||||||
write_command(EMS_TYPE_UBAParameterWW, 2, v, EMS_TYPE_UBAParameterWW); // read seltemp back
|
write_command(EMS_TYPE_UBAParameterWW, 2, v, EMS_TYPE_UBAParameterWW); // read seltemp back
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -215,6 +215,7 @@ class Boiler : public EMSdevice {
|
|||||||
void process_UBAMaintenanceStatus(std::shared_ptr<const Telegram> telegram);
|
void process_UBAMaintenanceStatus(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_UBAMaintenanceData(std::shared_ptr<const Telegram> telegram);
|
void process_UBAMaintenanceData(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_UBAErrorMessage(std::shared_ptr<const Telegram> telegram);
|
void process_UBAErrorMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_UBAErrorMessage2(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_UBAMonitorWWPlus(std::shared_ptr<const Telegram> telegram);
|
void process_UBAMonitorWWPlus(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_UBAInformation(std::shared_ptr<const Telegram> telegram);
|
void process_UBAInformation(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_UBAEnergySupplied(std::shared_ptr<const Telegram> telegram);
|
void process_UBAEnergySupplied(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|||||||
Reference in New Issue
Block a user