diff --git a/components/aux_ac/aux_ac.h b/components/aux_ac/aux_ac.h index 6fc2f05..a0a96fd 100644 --- a/components/aux_ac/aux_ac.h +++ b/components/aux_ac/aux_ac.h @@ -82,7 +82,7 @@ enum acsm_state : uint8_t { **/ #define AC_HEADER_SIZE 8 #define AC_MAX_BODY_SIZE 24 -#define AC_BUFFER_SIZE 34 +#define AC_BUFFER_SIZE 35 /** * таймаут загрузки пакета @@ -174,6 +174,7 @@ struct packet_big_info_body_t { // пакет может рассылаться и в дежурном режиме (без запроса со стороны wifi-модуля) // в этом случае тут могут быть значения, отличные от 0x21 uint8_t byte_C0; // не расшифрован, всегда 0xC0 + // для RoyalClima18HNI: всегда 0xE0 uint8_t unknown1; // не расшифрован, как-то связан с режимом работы сплита; как вариант, отражает режим работы // компрессора во внешнем блоке или что-то такое, потому что иногда включение сплита не сразу приводит к изменениям в этом байте // @@ -188,6 +189,7 @@ struct packet_big_info_body_t { // 0xC4 - режим OFF, выключен давно, зима // 0xC5 - режим FAN uint8_t zero1; // всегда 0x00 + // для RoyalClima18HNI: режим разморозки внешнего блока - 0x20, в других случаях 0x00 uint8_t fanSpeed; // в ответах на команды wifi-модуля в этом байте скорость работы вентилятора // fanSpeed: OFF=0x00, LOW=0x02, MID=0x04, HIGH=0x06, TURBO=0x07; режим CLEAN=0x01 // в дежурных пакетах тут похоже что-то другое @@ -209,18 +211,25 @@ struct packet_big_info_body_t { uint8_t zero4; // всегда 0x00 uint8_t zero5; // всегда 0x00 uint8_t zero6; // всегда 0x00 + // для RoyalClima18HNI: похоже на какую-то температуру, точно неизвестно + // температура внешнего теплообменника влияет на это значение (при работе на обогрев - понижает, при охлаждении или при разморозке - повышает) uint8_t zero7; // всегда 0x00 + // для RoyalClima18HNI: 0x20 uint8_t zero8; // всегда 0x00 + // для RoyalClima18HNI: 0x20 uint8_t zero9; // всегда 0x00 uint8_t zero10; // всегда 0x00 + // для RoyalClima18HNI: мощность инвертора (от 0 до 100) в % + // например, разморозка внешнего блока происходит при 80% uint8_t zero11; // всегда 0x00 uint8_t zero12; // всегда 0x00 uint8_t zero13; // всегда 0x00 uint8_t zero14; // всегда 0x00 uint8_t zero15; // всегда 0x00 uint8_t zero16; // всегда 0x00 - uint8_t ambient_temperature_frac; // дробная часть комнатной температуры воздуха с датчика на внутреннем блоке сплит-системы + uint8_t ambient_temperature_frac; // младшие 4 бита - дробная часть комнатной температуры воздуха с датчика на внутреннем блоке сплит-системы // подробнее смотреть ambient_temperature_int + // для RoyalClima18HNI: старшие 4 бита - 0x2 }; // тело малого информационного пакета @@ -1024,7 +1033,7 @@ class AirCon : public esphome::Component, public esphome::climate::Climate { big_info_body = (packet_big_info_body_t *) (_inPacket.body); // температура воздуха в помещении по версии сплит-систему - stateFloat = big_info_body->ambient_temperature_int - 0x20 + (float)big_info_body->ambient_temperature_frac/10.0; + stateFloat = big_info_body->ambient_temperature_int - 0x20 + (float)(big_info_body->ambient_temperature_frac & 0x0f) / 10.0; stateChangedFlag = stateChangedFlag || (_current_ac_state.temp_ambient != stateFloat); _current_ac_state.temp_ambient = stateFloat; @@ -1476,7 +1485,7 @@ class AirCon : public esphome::Component, public esphome::climate::Climate { // проверяем ответ bool relevant = true; relevant = (relevant && (_inPacket.header->packet_type == AC_PTYPE_INFO)); - relevant = (relevant && (_inPacket.header->body_length == 0x18)); + relevant = (relevant && (_inPacket.header->body_length == 0x18 || _inPacket.header->body_length == 0x19)); // канальник Royal Clima отвечает пакетом длиной 0x19 relevant = (relevant && (_inPacket.body[0] == 0x01)); relevant = (relevant && (_inPacket.body[1] == AC_CMD_STATUS_BIG)); diff --git a/docs/AC_TESTED.md b/docs/AC_TESTED.md index dbc41f1..cac02ba 100644 --- a/docs/AC_TESTED.md +++ b/docs/AC_TESTED.md @@ -9,10 +9,11 @@ + Roda (models: RS-AL09F) + Rovex (models: RS-07ALS1, RS-09ALS1, RS-12ALS1) + Samurai (models: SMA-07HRN1 ION, SMA-09HRN1 ION) -+ Subtropic (models: SUB-07HN1_18Y) ++ Subtropic (models: SUB-07HN1, SUB-12HN1) ++ Royal Clima (models: CO-D 18HNI/CO-E 18HNI) ## Tested and INCOMPATIBLE air conditioners ## ACs from the list below are **INCOMPATIBLE** with `aux_ac`.
Кондиционеры из списка ниже протестированы и оказались **НЕСОВМЕСТИМЫ** с компонентом `aux_ac`. -+ Kentatsu KSGMA26HFAN1 was tested and **isn't supported** \ No newline at end of file ++ Kentatsu KSGMA26HFAN1 was tested and **isn't supported**