mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
add thermostat C0 message #2501
This commit is contained in:
@@ -194,6 +194,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
|||||||
register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday));
|
register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday));
|
||||||
}
|
}
|
||||||
register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent));
|
register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent));
|
||||||
|
register_telegram_type(0xC0, "RCErrorMessage", false, MAKE_PF_CB(process_RCErrorMessage2));
|
||||||
|
|
||||||
// JUNKERS/HT3
|
// JUNKERS/HT3
|
||||||
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
||||||
@@ -1751,6 +1752,49 @@ void Thermostat::process_RCErrorMessage(std::shared_ptr<const Telegram> telegram
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 0xC0 error log for RC300
|
||||||
|
void Thermostat::process_RCErrorMessage2(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
if (telegram->offset > 0 || telegram->message_length < 20) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
uint8_t code[4] = {telegram->message_data[5], telegram->message_data[6], telegram->message_data[7], 0};
|
||||||
|
uint16_t codeNo = telegram->message_data[8] * 256 + telegram->message_data[9];
|
||||||
|
uint16_t year = (telegram->message_data[10] & 0x7F) + 2000;
|
||||||
|
uint8_t month = telegram->message_data[11];
|
||||||
|
uint8_t day = telegram->message_data[13];
|
||||||
|
uint8_t hour = telegram->message_data[12];
|
||||||
|
uint8_t min = telegram->message_data[14];
|
||||||
|
uint16_t year1 = (telegram->message_data[15] & 0x7F) + 2000;
|
||||||
|
uint8_t month1 = telegram->message_data[16];
|
||||||
|
uint8_t day1 = telegram->message_data[18];
|
||||||
|
uint8_t hour1 = telegram->message_data[17];
|
||||||
|
uint8_t min1 = telegram->message_data[19];
|
||||||
|
if (isprint(code[0]) && isprint(code[1]) && isprint(code[2])) {
|
||||||
|
if (year == 2000) { // no clock
|
||||||
|
uint32_t min2 = 65536 * telegram->message_data[11] + 256 * telegram->message_data[12] + telegram->message_data[13];
|
||||||
|
snprintf(lastCode_, sizeof(lastCode_), "%s(%d) %d min", code, codeNo, min2);
|
||||||
|
} else if (year1 == 2000) {
|
||||||
|
snprintf(lastCode_, sizeof(lastCode_), "%s(%d) %02d.%02d.%d %02d:%02d", code, codeNo, day, month, year, hour, min);
|
||||||
|
} else {
|
||||||
|
snprintf(lastCode_,
|
||||||
|
sizeof(lastCode_),
|
||||||
|
"%s(%d) %02d.%02d.%d %02d:%02d-%02d.%02d.%d %02d:%02d",
|
||||||
|
code,
|
||||||
|
codeNo,
|
||||||
|
day,
|
||||||
|
month,
|
||||||
|
year,
|
||||||
|
hour,
|
||||||
|
min,
|
||||||
|
day1,
|
||||||
|
month1,
|
||||||
|
year1,
|
||||||
|
hour1,
|
||||||
|
min1);
|
||||||
|
}
|
||||||
|
has_update(lastCode_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -411,6 +411,7 @@ class Thermostat : public EMSdevice {
|
|||||||
void process_RCTime(std::shared_ptr<const Telegram> telegram);
|
void process_RCTime(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RCError(std::shared_ptr<const Telegram> telegram);
|
void process_RCError(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RCErrorMessage(std::shared_ptr<const Telegram> telegram);
|
void process_RCErrorMessage(std::shared_ptr<const Telegram> telegram);
|
||||||
|
void process_RCErrorMessage2(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RC35wwSettings(std::shared_ptr<const Telegram> telegram);
|
void process_RC35wwSettings(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RC35wwTimer(std::shared_ptr<const Telegram> telegram);
|
void process_RC35wwTimer(std::shared_ptr<const Telegram> telegram);
|
||||||
void process_RC35Monitor(std::shared_ptr<const Telegram> telegram);
|
void process_RC35Monitor(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|||||||
Reference in New Issue
Block a user