Skip to content

Commit

Permalink
#26 code cleanup and improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
dentra committed Mar 19, 2024
1 parent de17262 commit 35a4b48
Show file tree
Hide file tree
Showing 67 changed files with 857 additions and 527 deletions.
93 changes: 82 additions & 11 deletions CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,25 @@
Каждая сущность минимально конфигурируется тремя обязательными
параметрами - платформой `tion`, типом и именем. Пример:
```yaml
# Платформа
- platform: tion
# Тип
type: entity_type
# Имя
name: Entity Name
# Необязательный параметр, определяется автоматически,
# необходим при конфигурации нескольких бризеров в одной прошивке.
# Дальнее всегда будет опущен.
#tion_id: tion_api
```
Исключение составляют сущности в домене [climate](#домен-climate) и [fan](#домен-fan), для них указание типа отсутствует.

Некоторые сущности могут содерждать дополнительные параметры.

Если не описаны ограничения, то сущность поддерживается для всех моделей бризеров.

Во всех сущностях можно испольовать стандартные для их домена переменные и автоматизации,
документация доступна по ссылке в имени домена.
Во всех сущностях можно использовать стандартные для их домена переменные и автоматизации,
документация доступна по ссылке в разделе, в названии домена.

> [!IMPORTANT]
> В силу особенностей реализации генерации идентификаторов в ESPHome,
Expand Down Expand Up @@ -107,13 +114,13 @@ binary_sensor:
Состояние заслонки.

> [!TIP]
> Алиасы: `gate_state`, `gate_position`
> Алиасы: `gate_state`, `gate_position`, `damper`

### error
### Тип error

Индикатор наличия ошибки бризера.

### boost
### Тип boost

Состояние работы турбо-режима `Boost`.

Expand Down Expand Up @@ -154,6 +161,12 @@ sensor:

Текущая производительность бризера.

### Тип power
Текущаяя потребляемая мощность бризера.

> [!NOTE]
> Вычисляется как сумма `sensor[type=heater_power]` + `sensor[type=fan_power]`

### Тип heater_var

Процент потребления можности работы нагревателя.
Expand All @@ -165,16 +178,47 @@ sensor:

Данные о потреблении нагревателя.

> [!IMPORTANT]
> Поддерживаемые модели: 4S, Lite.
> [!NOTE]
> Для бризеров 4S и Lite - состояние определяется аппаратно.
>
> Для бризеров 3S и O2 - при включенном обогреве состояние константа - 1450 Вт.

### Тип fan_power

Данные о петребляемой мощности работы вентилятора (констаны от скорости).
Данные о петребляемой мощности работы вентилятора.

Используются следующие константы:
#### Tion O2:
* Дежурный режим: 0.73 Вт
* 1 скорость: 10.3 Вт
* 2 скорость: 19.0 Вт
* 3 скорость: 19.4 Вт
* 4 скорость: 23.0 Вт
#### Tion 3S:
* Дежурный режим: 0.73 Вт
* 1 скорость: 17 Вт
* 2 скорость: 21 Вт
* 3 скорость: 26 Вт
* 4 скорость: 23 Вт
* 5 скорость: 27 Вт
* 6 скорость: 29 Вт
#### Tion 4S:
* Дежурный режим: 0.73 Вт
* 1 скорость: 15.1 Вт
* 2 скорость: 16.2 Вт
* 3 скорость: 23.3 Вт
* 4 скорость: 23.8 Вт
* 5 скорость: 25.2 Вт
* 6 скорость: 30.7 Вт
#### Tion Lite:
На текущий момент константы показания потребления экивалентны Tion 4S.

> [!NOTE]
> Если у вас есть возможность точно измерить потрребление, я с удовольствием изменю константы и обновлю эту иформацию.

### Тип filter_time_left

Данные об оставшимся времени ресурса фильтра.
Данные об оставшимся времени жизни ресурса фильтра.

### Тип boost_time_left

Expand Down Expand Up @@ -281,6 +325,8 @@ switch:

### Тип sound

Отображает и изменяет состояние звуковых оповещений.

> [!TIP]
> Алиасы: `buzzer`

Expand All @@ -289,6 +335,8 @@ switch:

### Тип led

Отображает и изменяет состояние световых оповещений.

> [!TIP]
> Алиасы: `light`

Expand All @@ -299,11 +347,30 @@ switch:

### Тип recirculation

Отображает и переключает состояние заслоники между забором воздуха с улицы или из помещения.

> [!IMPORTANT]
> Поддерживаемые модели: 3S, 4S.

### Тип boost

Отображает и изменяет состояние турбо-режима `Boost`.
Работа этого режима тесно связяна с `tion.update_interval`,
автоматическое завершение возможно только в момент обновления состояния,
на практике это не влияет на использование данной функции т.к. обновление
состояния обычно происхходит не менее раза в миниту.

Дополнительные параметры (все являются необязательными):
* `duration`, тип uint - задает время работы режима.
Минимальное значение `1min`, максимальное `60min`, по умолчанию: <отсутствует>.
* `heater`, тип boolean - задает состояние обогревателя во время работы режима.
Если не установлен, то будет использовано текущее состояние обогревателя. По умолчанию: <отсутствует>.
* `temperature`, тип uint - задает целевую температуру нагрева во время работы режима.
Если не установлен или установлен в 0, то будет использована текущая температура нагрева. По умолчанию: <отсутствует>.

> [!IMPORTANT]
> Параметр `duration` не совместим с параметром `number[type=boost_time]`,
> при использовании совместно поведение определить невозможно.

## Домен [number]

Expand Down Expand Up @@ -333,8 +400,9 @@ number:
Отображает и позволяет изменить время работы турбо режима `Boost`.

Дополнительные параметры:
* `initial_value`, тип [Time](https://esphome.io/guides/configuration-types#config-time) - позволяет задать стартовое значение при инициализации
* `restore_value`, тип boolean - сохранять текущее значение и испольовать после перезагрузки
* `initial_value`, тип [Time](https://esphome.io/guides/configuration-types#config-time) -
позволяет задать стартовое значение при инициализации
* `restore_value`, тип boolean - сохранять текущее значение и использовать после перезагрузки

```yaml
number:
Expand All @@ -345,6 +413,9 @@ number:
restore_value: true
```

> [!IMPORTANT]
> Тип `boost_time` не совместим с параметром `switch[type=boost].duration`,
> при использовании совместно поведение определить невозможно.

## Домен [select]

Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
[license-shield]: https://img.shields.io/static/v1?label=Лицензия&message=MIT&color=orange&logo=license
[license]: https://opensource.org/licenses/MIT

[esphome-release-shield]: https://img.shields.io/static/v1?label=ESPHome&message=2024.2.0&color=green&logo=esphome
[esphome-release-shield]: https://img.shields.io/static/v1?label=ESPHome&message=2024.2.2&color=green&logo=esphome
[esphome-release]: https://github.com/esphome/esphome/releases/

[open-in-vscode-shield]: https://img.shields.io/static/v1?label=+&message=Открыть+в+VSCode&color=blue&logo=visualstudiocode
Expand Down Expand Up @@ -69,6 +69,7 @@ English version of this page is available via [google translate](https://github-
* Версия програмного обеспечения бризера
* Измерение энергопотребления (только для 4S и Lite)
* Контроль состояния заслонки (только для Lite)
* Внутренняя температрура (только для 4S и Lite)

А так же:
* Конфигурация пресетов сервисом
Expand All @@ -81,7 +82,8 @@ English version of this page is available via [google translate](https://github-
Полный список возможностей смотрите в [инструкции по конфигурации](CONFIGURATION.md).

> [!CAUTION]
> ## **ВНИМАНИЕ: Все что вы делаете, вы делаете исключительно на свой страх и риск!**
> ## ⚠️ **ВНИМАНИЕ: Все что вы делаете, вы делаете исключительно на свой страх и риск!**
>
## Подключение

Expand All @@ -107,7 +109,7 @@ UART подключние различно для разных моделей б

Для UART-подключения `Tion O2` использется штатный, но доступный только при небольшой
разборке бризера, разъем. Требуются начальные навыки работы с паяльником для подключения
разъема типа XH2.54 4pin к ESP (есть возможность найти переходник на Aliexpress).
разъема типа XH2.54 4pin male к ESP (есть возможность найти переходник на Aliexpress).

По вопросам подключения велкам в чат [Telegram][telegram].

Expand Down Expand Up @@ -141,6 +143,9 @@ UART подключние различно для разных моделей б

Дополнительно, только для `Tion 3S`, необходимо нажать кнопку `Pair` в Home Assistant.

> [!NOTE]
> Рекомендуется испольовать ESP c двумя ядрами, например из линейки ESP32 или ESP32-S3.
## Использование в режиме UART

Никаких дополнительный действий не требуется.
Expand Down Expand Up @@ -187,7 +192,7 @@ broker, port и т.д. установите согласно настройка
или предыдущего ответа запроса на изменение. Так как ответ может прийти медленней
чем придет новый запрос (актуально для скриптов) реализован механизм пакетной
отправки команд на изменение. Поступивший запрос на изменение стартует таймер,
время сработки которого задается параметром `climate.batch_timeout`, каждый последующий
время сработки которого задается параметром `tion.batch_timeout`, каждый последующий
запрос до сработки таймера объединяется с предыдущим и рестартует таймер, после
сработки таймера объединенный запрос отправляется бризеру на выполнение.

Expand Down
6 changes: 5 additions & 1 deletion README.md.j2
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ English version of this page is available via [google translate](https://github-
* Версия програмного обеспечения бризера
* Измерение энергопотребления (только для 4S и Lite)
* Контроль состояния заслонки (только для Lite)
* Внутренняя температрура (только для 4S и Lite)

А так же:
* Конфигурация пресетов сервисом
Expand Down Expand Up @@ -108,7 +109,7 @@ UART подключние различно для разных моделей б

Для UART-подключения `Tion O2` использется штатный, но доступный только при небольшой
разборке бризера, разъем. Требуются начальные навыки работы с паяльником для подключения
разъема типа XH2.54 4pin к ESP (есть возможность найти переходник на Aliexpress).
разъема типа XH2.54 4pin male к ESP (есть возможность найти переходник на Aliexpress).

По вопросам подключения велкам в чат [Telegram][telegram].

Expand Down Expand Up @@ -142,6 +143,9 @@ UART подключние различно для разных моделей б

Дополнительно, только для `Tion 3S`, необходимо нажать кнопку `Pair` в Home Assistant.

> [!NOTE]
> Рекомендуется испольовать ESP c двумя ядрами, например из линейки ESP32 или ESP32-S3.

## Использование в режиме UART

Никаких дополнительный действий не требуется.
Expand Down
4 changes: 0 additions & 4 deletions components/tion-api/tion-api-3s.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ class Tion3sApi : public TionApiBase {
bool reset_filter(const tion::TionState &state) const;
bool factory_reset(const tion::TionState &state) const;

#ifdef TION_ENABLE_HEARTBEAT
bool send_heartbeat() const { return false; }
#endif

void request_state() override;
void write_state(tion::TionStateCall *call) override {
this->write_state(this->make_write_state_(call), ++this->request_id_);
Expand Down
2 changes: 1 addition & 1 deletion components/tion-api/tion-api-defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
// 3 скорость: 19.4 Вт
// 4 скорость: 23.0 Вт
// https://ammo1.ru/21851
#define TION_O2_MAX_FAN_POWER0 74 // 0.73 Вт
#define TION_O2_MAX_FAN_POWER0 73 // 0.73 Вт
#define TION_O2_MAX_FAN_POWER1 10300 // 10.3 Вт
#define TION_O2_MAX_FAN_POWER2 19000 // 19.0 Вт
#define TION_O2_MAX_FAN_POWER3 19400 // 19.4 Вт
Expand Down
20 changes: 12 additions & 8 deletions components/tion-api/tion-api-firmware.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

#include <cstdint>

namespace dentra {
namespace tion {
namespace firmware {

enum {
// Шаг 1. Запрос на подготовку бризера к обновлению.
// Пакет пустой.
Expand Down Expand Up @@ -41,16 +45,14 @@ enum {
};

// Использется при ответе FRAME_TYPE_UPDATE_PREPARE_RSP.
// NOLINTNEXTLINE(readability-identifier-naming)
struct firmware_versions_t {
struct FirmwareVersions {
uint32_t device_type;
uint16_t unknown1; // always 0
uint16_t hardware_version;
};

// Использется при запросе FRAME_TYPE_UPDATE_START_REQ.
// NOLINTNEXTLINE(readability-identifier-naming)
struct firmware_info_t {
struct FirmwareInfo {
// firmware_size + sizeof(this->data) + crc_size
uint32_t size;
// заполнено "мусором", приложение просто инкрементирует счетчик,
Expand All @@ -59,17 +61,19 @@ struct firmware_info_t {
};

// Использется при запросе FRAME_TYPE_UPDATE_CHUNK_REQ.
// NOLINTNEXTLINE(readability-identifier-naming)
struct firmware_chunk_t {
struct FirmwareChunk {
enum { SIZE = 512 }; // в приложении 1000
uint32_t offset;
uint8_t data[SIZE];
};

// Использется при запросе FRAME_TYPE_UPDATE_CHUNK_REQ.
// NOLINTNEXTLINE(readability-identifier-naming)
struct firmware_chunk_crc_t {
struct FirmwareChunkCRC {
enum { MARKER = 0xFFFFFFFF };
uint32_t marker{MARKER};
uint16_t crc;
};

} // namespace firmware
} // namespace tion
} // namespace dentra
4 changes: 0 additions & 4 deletions components/tion-api/tion-api-lt.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ class TionLtApi : public TionApiBase {
bool factory_reset(const TionState &state, uint32_t request_id = 1) const;
bool reset_errors(const TionState &state, uint32_t request_id = 1) const;

#ifdef TION_ENABLE_HEARTBEAT
bool send_heartbeat() const { return false; }
#endif

void set_button_presets(const dentra::tion_lt::button_presets_t &button_presets);

void request_state() override;
Expand Down
Loading

0 comments on commit 35a4b48

Please sign in to comment.