Coder Social home page Coder Social logo

dentra / esphome-tion Goto Github PK

View Code? Open in Web Editor NEW
78.0 12.0 11.0 44.26 MB

ESPHome Tion Breezers control and monitoring

License: MIT License

Dockerfile 0.13% Shell 0.97% C++ 65.32% Python 13.83% C 12.88% CMake 0.57% Jinja 1.30% Jupyter Notebook 5.01%
esphome esp32 tion tion-4s tion-lite ble climate air-ventilation breezer mqtt

esphome-tion's Introduction

Version License ESPHome release Telegram Support author Support author Open in Visual Studio Code

Tion

English version of this page is available via google translate.

Компонет ESPHome для управления бризерами Tion с помощью ESP в вашей системе управления умным домом. Поддерживаются Home Asistant API и любые другие системы управления умным домом через протокол MQTT.

Поддерживаемые модели и протоколы:

  • Tion 4S (BLE/UART)
  • Tion Lite (BLE)
  • Tion 3S (BLE/UART)

Компонент построен на платформе climate и позволяет управлять функциями:

  • Включение/Выключение
  • Обогрев
  • Целевая температуры нагрева
  • Скорость притока воздуха
  • Звуковое оповещение
  • Световое оповещение (только для 4S и Lite)
  • Режим приток/рециркуляция (только для 4S)
  • Режим приток/рециркуляция/смешанный (только для 3S)
  • Поддержка пресетов
  • Настройка времени пресета "Турбо"
  • Сброс ресурса фильтров
  • Подтверждение сброса ресурса фильтра

Дополнительно осуществляется мониториг следующих показателей:

  • Температура снаружи
  • Температура внутри
  • Текущая потребяемая мощность нагревателя (только для 4S и Lite)
  • Оставшееся время жизни фильтра
  • Индикация о требущейся замене/очистке фильтра
  • Оставшееся время работы режима "Турбо"
  • Счетчик прошедшего воздуха (только для 4S и Lite)
  • Текущая производительностью бризера
  • Версия програмного обеспечения бризера
  • Измерение энергопотребления (только для 4S и Lite)
  • Контроль состояния заслонки (только для Lite)

А так же:

  • Конфигурация пресетов сервисом
  • Задание максимальной температуры нагрева 30°C, в том числе для Lite
  • Дамп и сброс внутренних таймеров (только для 4S)
  • Защита от обмерзания (только для 3S)
  • Контроль и зависимость состояния нагревателя от соостояния заслонки (только для 3S и 4S)

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

Подключение

Доступно два вида подключения BLE и UART.

BLE подключение работает так же как ваш пульт или официальное приложение. UART подключние различно для разных моделей бризеров.

Для UART-подключения Tion 4S используется штатный интеграционный разъем бризера. Рекомендуется приобрести стик Lilygo T-Dongle S3, проще всего это сделать на Aliexpress. Или собрать самостоятельно на базе ESP32.

ВАЖНО: Собрка и работа компонента на ESP8266 возможна, но стабильность не гарантируется, так же, в этом направлении, не будет оказана никакая поддержка, используйте ESP32!

Для UART-подключения Tion 3S использется штатный, но доступный только при небольшой разборке бризера, разъем. Здесь рекумендуется использовать любую ESP8266 (ESP32 не тянет по питанию) используя схему подключения. При использовании ESP-01S не будет доступено подключение штатного модуля BLE, в остальных случаях подключение будет полным.

Буду благодарен за любые экперименты по использованию совремнных модулей ESP32, например, серий S2, S3 или C3.

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

Прошивка

Вы можете загрузить и использовать примеры конфигурации для Tion 4S BLE, Tion 4S UART, Tion Lite BLE, Tion 3S BLE и Tion 3S UART, все файлы с подробным описанием (на английском)

  • Скачайте конфигурацию соотствующую модели вашего бризера
  • Измените секцию substitutions согласно вашим предпочтениям
  • Измените набор подключаемых пакетов по вашему вкусу
  • Поместите модифицированный файл в директорию с конфигурацией ESPHome
  • Запустите сборку и прошивку вашей конфигурации
  • Добавьте появившееся устройство в Home Assistant

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

После прошивки и перед первым использование вам необъходимо ввести свой бризер в режим сопряжения (см. инструкцию) и только потом включать ESP или провести перезагрузку ESP с помощью фукции Restart.

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

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

Никаких дополнительный действий не требуется.

Полезности

Просмотр и/или сброс внутренних таймеров Tion 4S

Добавьте в свою конфигурацию пакет tion_4s_timers.yaml:

packages:
  tion:
...
  files:
...
    - packages/tion_4s_timers.yaml

Использование с системами УД отличными от Home Assistant

Вы можете испольовать этот компонент с любой системой УД через протокол MQTT. Для этого в файле конфигурации найдите и раскомментуйте секцию mqtt, дополнительные параметры broker, port и т.д. установите согласно настройкам вашей системы УД. Со списком всех параметров можно ознакомиться на странице документации.

Испольование с УД Sprut.Hub

Наобходимо настроить mqtt согласно описанию из секции выше и установить шаблон досупный в закрепленных сообщениях в группе Telegram.

Принцип работы и тонкая настройка

Получение состояния

Состояние бризера храниться исключительно в самом бризере и синхронизируется раз в настраиваемый интервал времени climate.update_interval или сразу же после отработки запроса на изменение. Если состояние получить невозможно, то об этом информирует сенсор climate.state_warnout, таймаут получения ответа на запрос состояния настраивается climate.state_timeout и должен быть меньше интервала опроса climate.update_interval.

Изменение состояния

Изменение состояния происходит относительно последнего ответа на запрос состояния или предыдущего ответа запроса на изменение. Так как ответ может прийти медленней чем придет новый запрос (актуально для скриптов) реализован механизм пакетной отправки команд на изменение. Поступивший запрос на изменение стартует таймер, время сработки которого задается параметром climate.batch_timeout, каждый последующий запрос до сработки таймера объединяется с предыдущим и рестартует таймер, после сработки таймера объединенный запрос отправляется бризеру на выполнение.

Отправка команд

Все запросы выстраиваются в очередь и выполняются с интервалом vport.command_interval. Размер очереди задается параметром vport.command_size. Минимальный интервал 0s будет срабатывать один раз в итерацию основного цикла.

Планы на будущее

  • Поддержка физического подключения через интеграционный разъем для Tion 4S (так же исследую возможность для 3S и Lite)
  • Управление сбросом ресура фильтров
  • Автоматическое управление притоком от внешнего датчика CO2

Решение проблем и поддержка новых функций

Не стесняйтесь открывать задачи для сообщений об ошибках и запросов новых функций.

Так же вы можете воспользоваться группой в Telegram.

Ваша благодарность

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

Коммерческое использование

По вопросам коммерческого использования или заказной разработки/доработки, обращийтесь по почте dennis.trachuk на gmail.com

esphome-tion's People

Contributors

dentra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esphome-tion's Issues

Постоянное подключение к бризеру

На Tion 4S испытываю периодический отвал бризера с невозможностью дальнейшего подключения. Иногда помогает перезагрузка ESP, иногда только полная перезагрузка бризера.

Возможно имеет смысл рассмотреть опциональную возможность постоянного соединения с бризером? Моим бризером управляет только HA и подключение других клиентов не требуется.

У себя попробовал реализовать это патчем ниже, посмотрим на стабильность работы в течение нескольких дней

--- a/components/tion_4s/tion_4s.cpp
+++ b/components/tion_4s/tion_4s.cpp
@@ -26,7 +26,6 @@ void Tion4s::read(const tion_dev_status_t &status) {
   // this->request_timers();

   this->request_state();
-  this->schedule_disconnect(this->state_timeout_);
 };

 void Tion4s::read(const tion4s_time_t &tion_time) {
@@ -161,9 +160,6 @@ void Tion4s::read(const tion4s_state_t &state) {
   ESP_LOGV(TAG, "work_time      : %u", state.counters.work_time);
   ESP_LOGV(TAG, "fan_time       : %u", state.counters.fan_time);
   ESP_LOGV(TAG, "errors         : %u", state.errors);
-
-  // leave 3 sec connection left to end all of jobs
-  this->schedule_disconnect();
 }

 void Tion4s::flush_state_(const tion4s_state_t &state_) const {
diff --git a/components/tion_4s/tion_4s.h b/components/tion_4s/tion_4s.h
index 2740766..9921d23 100644
--- a/components/tion_4s/tion_4s.h
+++ b/components/tion_4s/tion_4s.h
@@ -22,7 +22,13 @@ class Tion4s : public TionClimateComponent, public Tion<TionApi4s>,public TionDi
     return traits;
   }

-  void update() override { this->parent_->set_enabled(true); }
+  void update() override {
+    if (this->node_state == esp32_ble_tracker::ClientState::ESTABLISHED) {
+      this->on_ready();
+    } else {
+      this->parent_->set_enabled(true);
+    }
+  }

   void on_ready() override;

@@ -31,7 +37,11 @@ class Tion4s : public TionClimateComponent, public Tion<TionApi4s>,public TionDi
   bool write_state() override {
     this->publish_state();
     this->update_flag_ |= UPDATE_STATE;
-    this->parent_->set_enabled(true);
+    if (this->node_state == esp32_ble_tracker::ClientState::ESTABLISHED) {
+      this->on_ready();
+    } else {
+      this->parent_->set_enabled(true);
+    }
     return true;
   };

Не хватает сенсоров.

В интеграции отсутсвует сенсор скорости вентилятора. Из-за этого невозможно посмотреть историю скорости вентилятора.
Можно его добавить?

Так же не хватает сенсоров состония заслонки и состояния работы нагревателя.

Screenshot 2024-01-17 112349 Screenshot 2024-01-17 112340

UART for Tion 4S

Tion 4S has a built in communication port that is simple implements a standard UART interface via USB pins. The difference is in inverted RX/TX pins.

Communication protocol is the same as BLE, but additionally we need to send heartbeat command (0x3931) and absence of support for Turbo mode.

Положение заслонки как аргумент в персетах

На данный момент в пресетах можно указать желаемую температуру, режим (обогрев вкл/выкл) и скорость. Была бы полезной возможность указывать также положение заслонки (забор с улицы/забор из помещения) для создания пресета "очистки" помещения, когда бризер пропускает через свой фильтр внутрикомнатный воздух, выполняя функцию воздухоочистителя.

Пекетный режим не работает как ожидается

из коментов в телеграм:

Денис Трачук, [18.01.2024 02:10]
Я батч режим сделал в этом релизе как раз для того чтобы задержки не ставить, у вас тоже не работает? У себя на стенде пока воспроизвести не могу :(

Вячеслав, [18.01.2024 02:19]
Читал, но сегодня столкнулся с необходимостью ставить задержки, иначе следующая команда не срабатывала. И несколько раз после этого секунд 5-10 не обновлялся статус бризера🤷‍♂️

Mr K, [17.01.2024 13:05]
сделал включение обогрева и установку 1 скорости, по логу вроде нормально все, но потом приходит state, а изменилась только скорость:

Mr K, [17.01.2024 13:05]

[13:03:46][D][climate:011]: 'tion-bedroom' - Setting
[13:03:46][D][climate:015]:   Mode: HEAT
[13:03:46][D][tion_climate:048]: Set mode HEAT
[13:03:46][D][tion_4s:177]: New heater mode ON -> OFF
[13:03:46][D][tion_climate_component:129]: Starting batch update 1000
[13:03:46][D][climate:011]: 'tion-bedroom' - Setting
[13:03:46][D][climate:019]:  Custom Fan: 1
[13:03:46][D][tion_climate:055]: Set fan speed 1
[13:03:46][D][tion_4s:177]: New heater mode OFF -> ON
[13:03:46][D][tion_4s:184]: New fan speed 3 -> 1
[13:03:46][D][tion_climate_component:129]: Continue batch update 1000
[13:03:47][D][tion_climate_component:133]: Write out batch changes
[13:03:47][D][tion-api-4s:201]: Request[20] Write state
[13:03:47][D][tion-api-4s:063]: Response[20] Write State
[13:03:47][D][climate:396]: 'tion-bedroom' - Sending state:
[13:03:47][D][climate:399]:   Mode: FAN_ONLY
[13:03:47][D][climate:401]:   Action: FAN
[13:03:47][D][climate:407]:   Custom Fan Mode: 1
[13:03:47][D][climate:410]:   Preset: NONE
[13:03:47][D][climate:419]:   Current Temperature: 13.00°C
[13:03:47][D][climate:425]:   Target Temperature: 10.00°C

Ошибка компиляции при выключенных пресетах

Artem Sorokin, [19.01.2024 18:51]
Небольшой баг в сборке из мастера:
Объявление TionClimateGatePosition требует наличия TION_ENABLE_PRESETS, который есть только если есть пресеты.
Если пресетов нет - бум :)
Передвинул его за пределы макроса - собралось :)

Проблема подключения Tion 3S

Здравствуйте,

Большое спасибо за интеграцию. Очень много проблема решает с управлением и автоматизацией бризеров.

У меня на данный момент примерно через 10 часов работы ESP32 перестает подключаться к Тиону и не получает с него информацию. В логах ESP32 следующее:

[09:00:44][D][esp32_ble_client:048]: [0] [D5:91:DD:FC:1A:60] Found device
[09:00:44][I][esp32_ble_client:064]: [0] [D5:91:DD:FC:1A:60] 0x01 Attempting BLE connection
[09:00:45][V][esp32_ble_client:111]: [0] [D5:91:DD:FC:1A:60] gattc_event_handler: event=41 gattc_if=4
[09:00:45][V][esp32_ble_client:164]: [0] [D5:91:DD:FC:1A:60] ESP_GATTC_DISCONNECT_EVT, reason 62
[09:00:45][V][esp32_ble_client:111]: [0] [D5:91:DD:FC:1A:60] gattc_event_handler: event=2 gattc_if=4
[09:00:45][V][esp32_ble_client:126]: [0] [D5:91:DD:FC:1A:60] ESP_GATTC_OPEN_EVT
[09:00:45][W][esp32_ble_client:131]: [0] [D5:91:DD:FC:1A:60] Connection failed, status=133
[09:00:45][D][esp32_ble_client:048]: [0] [D5:91:DD:FC:1A:60] Found device
[09:00:45][I][esp32_ble_client:064]: [0] [D5:91:DD:FC:1A:60] 0x01 Attempting BLE connection
[09:00:45][V][esp32_ble_client:111]: [0] [D5:91:DD:FC:1A:60] gattc_event_handler: event=41 gattc_if=4
[09:00:45][V][esp32_ble_client:164]: [0] [D5:91:DD:FC:1A:60] ESP_GATTC_DISCONNECT_EVT, reason 62
[09:00:45][V][esp32_ble_client:111]: [0] [D5:91:DD:FC:1A:60] gattc_event_handler: event=2 gattc_if=4
[09:00:45][V][esp32_ble_client:126]: [0] [D5:91:DD:FC:1A:60] ESP_GATTC_OPEN_EVT
[09:00:45][W][esp32_ble_client:131]: [0] [D5:91:DD:FC:1A:60] Connection failed, status=133

Для решения в первый раз перепрошил ESP32, а потом сделал заново сопряжение. В чем может быть проблема?
Заранее спасибо!

Не работает с TionLite

Прошил плату esp32-wroom-32u традиционным способом

Бризер не управляется, в логах сообщение
Current Temperature: nan°C

Файл конфигурации esp32-20220218.yaml

esphome:
  name: esp32-20220218

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: debug

# Enable Home Assistant API
api:

ota:
  password: "3b228ef79d1c0ab6150f91f149482137"
  on_begin:
    then:
      - lambda: id(ble_client_tion).set_enabled(false);

wifi:
  ssid: home
  password: password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "esp32-20220218"
    password: "KQvv1gbGWqng"

captive_portal:

external_components:
  - source: github://dentra/[email protected]

esp32_ble_tracker:

ble_client:
  - mac_address: F8:E3:9B:FB:FD:3E
    id: ble_client_tion

climate:
  - platform: tion_lt
    ble_client_id: ble_client_tion
    name: "Tion Lite"
    buzzer:
      name: "Tion Lite Buzzer"
    led:
      name: "Tion Lite Led"
    temp_in:
      name: "Tion Lite Temp in"
    temp_out:
      name: "Tion Lite Temp out"
    heater_power:
      name: "Tion Lite Heater power"
    airflow_counter:
      name: "Tion Lite Airflow counter"
    filter_days_left:
      name: "Tion Lite Filter Days Left"
    filter_warnout:
      name: "Tion Lite Filter Warnout"
    version:
      name: "Tion Lite Version"

Сообщения журнала

INFO Reading configuration /config/esp32-20220218.yaml...
INFO Starting log output from esp32-20220218.local using esphome API
INFO Successfully connected to esp32-20220218.local
[19:43:39][I][app:102]: ESPHome version 2022.2.3 compiled on Feb 18 2022, 19:37:53
[19:43:39][C][wifi:491]: WiFi:
[19:43:39][C][wifi:353]:   Local MAC: 08:3A:F2:7D:4B:D4
[19:43:39][C][wifi:354]:   SSID: [redacted]
[19:43:39][C][wifi:355]:   IP Address: 192.168.1.11
[19:43:39][C][wifi:357]:   BSSID: [redacted]
[19:43:39][C][wifi:358]:   Hostname: 'esp32-20220218'
[19:43:39][C][wifi:360]:   Signal strength: -88 dB ▂▄▆█
[19:43:40][C][wifi:364]:   Channel: 1
[19:43:40][C][wifi:365]:   Subnet: 255.255.255.0
[19:43:40][C][wifi:366]:   Gateway: 192.168.1.1
[19:43:40][C][logger:233]: Logger:
[19:43:40][C][logger:234]:   Level: DEBUG
[19:43:40][C][esp32_ble_tracker:709]: BLE Tracker:
[19:43:40][C][esp32_ble_tracker:710]:   Scan Duration: 300 s
[19:43:40][C][esp32_ble_tracker:711]:   Scan Interval: 320.0 ms
[19:43:40][C][esp32_ble_tracker:712]:   Scan Window: 30.0 ms
[19:43:40][C][esp32_ble_tracker:713]:   Scan Type: ACTIVE
[19:43:40][C][ble_client:035]: BLE Client:
[19:43:40][C][ble_client:036]:   Address: f8:e3:9b:fb:fd:3e
[19:43:40][C][captive_portal:144]: Captive Portal:
[19:43:40][C][mdns:084]: mDNS:
[19:43:40][C][mdns:085]:   Hostname: esp32-20220218
[19:43:40][C][ota:085]: Over-The-Air Updates:
[19:43:40][C][ota:086]:   Address: esp32-20220218.local:3232
[19:43:40][C][ota:089]:   Using Password.
[19:43:40][C][api:138]: API Server:
[19:43:40][C][api:139]:   Address: esp32-20220218.local:6053
[19:43:46][I][ota:105]: Boot seems successful, resetting boot loop counter.
[19:43:46][D][esp32.preferences:114]: Saving preferences to flash...
[19:43:47][D][esp32_ble_tracker:217]: Starting scan...
[19:43:54][D][climate:009]: 'Tion Lite' - Setting
[19:43:54][D][climate:013]:   Mode: OFF
[19:43:54][D][tion:116]: Set mode 0
[19:43:54][D][climate:381]: 'Tion Lite' - Sending state:
[19:43:54][D][climate:384]:   Mode: OFF
[19:43:54][D][climate:392]:   Custom Fan Mode: 5
[19:43:54][D][climate:404]:   Current Temperature: nan°C
[19:43:54][D][climate:410]:   Target Temperature: 0.00°C
[19:44:16][D][climate:009]: 'Tion Lite' - Setting
[19:44:16][D][climate:013]:   Mode: HEAT
[19:44:16][D][tion:116]: Set mode 3
[19:44:16][D][climate:381]: 'Tion Lite' - Sending state:
[19:44:16][D][climate:384]:   Mode: HEAT
[19:44:16][D][climate:392]:   Custom Fan Mode: 5
[19:44:16][D][climate:404]:   Current Temperature: nan°C
[19:44:16][D][climate:410]:   Target Temperature: 0.00°C
[19:44:24][D][climate:009]: 'Tion Lite' - Setting
[19:44:24][D][climate:013]:   Mode: HEAT
[19:44:24][D][tion:116]: Set mode 3
[19:44:24][D][climate:381]: 'Tion Lite' - Sending state:
[19:44:24][D][climate:384]:   Mode: HEAT
[19:44:24][D][climate:392]:   Custom Fan Mode: 5
[19:44:24][D][climate:404]:   Current Temperature: nan°C
[19:44:24][D][climate:410]:   Target Temperature: 0.00°C

Compilation error on captive_portal

Try compiling the recommended profile for Tion 4S BLE on ESPHome 2023.12.5

INFO ESPHome 2023.12.5
INFO Reading configuration /config/esphome/tion-bug.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing tion-4s (board: nodemcu-32s; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
Library Manager: Installing etlcpp/Embedded Template Library @ 20.35.8
INFO Installing etlcpp/Embedded Template Library @ 20.35.8
Unpacking  [####################################]  100%
Library Manager: Embedded Template [email protected] has been installed!
INFO Embedded Template [email protected] has been installed!
Library Manager: Installing esphome/AsyncTCP-esphome @ 2.0.1
INFO Installing esphome/AsyncTCP-esphome @ 2.0.1
Unpacking  [####################################]  100%
Library Manager: [email protected] has been installed!
INFO [email protected] has been installed!
Library Manager: Installing esphome/ESPAsyncWebServer-esphome @ 2.1.0
INFO Installing esphome/ESPAsyncWebServer-esphome @ 2.1.0
Unpacking  [####################################]  100%
Library Manager: [email protected] has been installed!
INFO [email protected] has been installed!
Library Manager: Resolving dependencies...
INFO Resolving dependencies...
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- Embedded Template Library @ 20.35.8
|-- AsyncTCP-esphome @ 2.0.1
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
Compiling .pioenvs/tion-4s/src/esphome/components/api/api_connection.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/api_frame_helper.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/api_pb2.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/api_pb2_service.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/api_server.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/list_entities.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/proto.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/subscribe_state.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/api/user_services.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/binary_sensor/automation.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/binary_sensor/filter.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/ble_client/automation.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/ble_client/ble_client.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/ble_rssi/ble_rssi_sensor.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/button/button.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling .pioenvs/tion-4s/src/esphome/components/climate/climate.cpp.o
src/esphome/components/captive_portal/captive_portal.cpp: In member function 'void esphome::captive_portal::CaptivePortal::start()':
src/esphome/components/captive_portal/captive_portal.cpp:51:48: error: invalid cast from type 'esphome::network::IPAddress' to type 'uint32_t' {aka 'unsigned int'}
   this->dns_server_->start(53, "*", (uint32_t) ip);
                                                ^~
*** [.pioenvs/tion-4s/src/esphome/components/captive_portal/captive_portal.cpp.o] Error 1
========================= [FAILED] Took 18.33 seconds =========================

Вычисление температуры аналогично приложению, с фильтрацией аномальных значений

"Родное" приложение Tion выводит температуру не напрямую с датчиков, а считает по показаниям с двух датчиков:

int(((unknown <= 0 ? current : unknown) + (current <= 0 ? unknown : current)) / 2)

Имеет смысл использовать аналогичный расчет и в ESPHome с дополнительной отбраковкой слишкрм высоких значений (>30 градусов), т.к. бывает, что один из датчиков может начинать "забрасывать" значения вплоть до 70 градусов.

Tion O2 Mac

Привет! А есть ли вероятность, что заработает с О2 МАС? Вроде как где-то слышал, что он по WiFi работает...

Не возвращается после буста в обычный режим

Mr K, [31.01.2024 12:09]
в общем ситуация такая, если в процессе работы пресета буст

Mr K, [31.01.2024 12:09]
что-то меняется извне, например подогрев включается

Mr K, [31.01.2024 12:11]
то бризеру сносит крышу и:

  1. в mqtt топике буст отключается
  2. сам пресет как бы работает, но потом выводит в логе
    [12:00:00][W][tion_climate:153]: No data for preset UNKNOWN
    и буст не выключается, так как не знает на какой пресет ему вернуться

logs_tion-childroom_run-4.txt

Несколько бризеров на одной плате ESP32

Добрый день!
У меня есть три бризера, два Lite и один 4S. Пытаюсь завести их в ХА через одну плату ESP32.
Не пойму, как завести несколько устройств на одну плату.
Скорректировал код следующим образом:

substitutions:
  # tion mac address. setup yours.
   #1 4S Гостинная:
  tion1_mac_address: FC:51:8F:F7:77:20
   #2 Lite Спальня:
  tion2_mac_address: C5:D4:AA:B8:FB:09
   #3 Lite Детская:
  tion3_mac_address: FA:24:0D:17:58:FC
  # name of the node.
  node_name: tion
  # name for main climate entity and prefix for all others.
  friendly_name: Бризеры
  # add suffix for node name to have one firmware for many devices.
  node_add_mac_suffix: "true"


packages:
  tion:
    url: https://github.com/dentra/esphome-tion
    ref: 2024.1.3 # cant use substitutions here
    files:
      ## Enable additional WiFi signal sensor. Comment next line to disable.
      - packages/wifi_signal.yaml
      ## Enable additional BLE RSSI sensor. Comment next line to disable.
      - packages/rssi_signal.yaml
      ## Enable additional Uptime sensor. Comment next line to disable.
      - packages/uptime.yaml
      ## Enable additional Restart button. Comment next line to disable.
      - packages/restart.yaml
      ## Base climate definition. Do not comment or move or remove.
      - packages/tion_4s_climate.yaml
      - packages/tion_lt_climate.yaml
      ## Enable maximum target temperature to 30°C. Comment next line to disable.
      - packages/tion_temperature30c.yaml
      ## Enable heat_cool mode to workaraund when using Home Assistant turn_on service.
      # - packages/tion_enable_heat_cool.yaml
      ## Uncomment next line to enable additional energy sensor.
      - packages/tion_energy.yaml
      ## Common configuration settings. Do not comment or move or remove.
      - packages/base.yaml
      ## BLE configuration settings. Do not comment or move or remove.
      - packages/esp32_ble.yaml
      ## Uncomment next line to enable persistent connection runtime control switch.
      #- packages/persistent.yaml
      ## Uncomment next line to enable additional connect switch useful for debugging.
      # - packages/connect.yaml
      ## Uncomment next line to enable additional internal timers support.
      - packages/tion_4s_timers.yaml
      ## Uncomment next line to enable monitor internal ESP temperature.
      - packages/esp32_temperature.yaml
      ## Uncomment next line to enable additional debug information.
      # - packages/debug.yaml



# Virtual port configuration
vport:
  - platform: tion_4s
    id: tion1_ble_vport
    ble_client_id: tion1_ble_client
    ## Optional, Do not disconnect after receiving state. Default: false.
    persistent_connection: false
    ## Optional, Allow to disable other BLE device scanning when breezer is already connected. Default: false.
    # disable_scan: false
    ## Optional, Interval between sending commmands. Set to 0ms to send one command per loop.
    # command_interval: 100ms
    ## Optional, Command queue size. Default: 10.
    # command_queue_size: 16
  - platform: tion_lt
    id: tion2_ble_vport
    ble_client_id: tion2_ble_client
    ## Optional, Do not disconnect after receiving state. Default: false.
    persistent_connection: false
    ## Optional, Allow to disable other BLE device scanning when breezer is already connected. Default: false.
    # disable_scan: false
    ## Optional, Interval between sending commmands. Set to 0ms to send one command per loop.
    # command_interval: 100ms
    ## Optional, Command queue size. Default: 10.
    # command_queue_size: 16
  - platform: tion_lt
    id: tion3_ble_vport
    ble_client_id: tion3_ble_client
    ## Optional, Do not disconnect after receiving state. Default: false.
    persistent_connection: false
    ## Optional, Allow to disable other BLE device scanning when breezer is already connected. Default: false.
    # disable_scan: false
    ## Optional, Interval between sending commmands. Set to 0ms to send one command per loop.
    # command_interval: 100ms
    ## Optional, Command queue size. Default: 10.
    # command_queue_size: 16

# Main climate component configuration.
climate:
  - id: !extend tion_climate
    # Required, the name of climate entity
    name: Бризер Гостинная # use friendly_name
    # Optional, virtual port id. Default: autodetect
    vport_id: tion1_ble_vport
    # Optional, Temperatire of air before heater, °C (celsius).
    outdoor_temperature:
      name: "Outdoor Temperature"
    # Optional, Buzzer control switch.
    buzzer:
      name: "Buzzer"
    # Optional, Led control switch.
    led:
      name: "Led"
    # Optional, Heater power, W (watt).
    heater_power:
      name: "Heater power"
    # Optional, Total airflow counter, m³ (cubic meters).
    airflow_counter:
      name: "Airflow counter"
    # Optional, Recirculation control switch.
    recirculation:
      name: "Recirculation"
    # Optional, Current productivity, m³/h (cubic meters per hour).
    productivity:
      name: "Productivity"
    # Optional, Filter time left counter, days.
    filter_time_left:
      name: "Filter Time Left"
    # Optional, Filter warning state.
    filter_warnout:
      name: "Filter Warnout"
    # Optional, Tion firmware version.
    version:
      name: "Version"

    presets:
      # enable "home" preset and override default settings
      home: { fan_speed: 2, target_temperature: 10, gate_position: outdoor, mode: fan_only }
      # enable "away" preset with default settings
      away:
      # enable "boost" preset with default settings
      boost:
      # enable "sleep" preset and override default settings
      sleep: { fan_speed: 1, target_temperature: 10, gate_position: outdoor, mode: fan_only }
    # Optional, configure boost time
    boost_time:
      name: "Boost Time"
    # Optional, display remaining boost time
    boost_time_left:
      name: "Boost Time Left"
    # Optional, How often query device state. Default: 60s.
    update_interval: 60s
    # Optional, reset filter button
    reset_filter:
      name: "Reset Filter"
    # Optional, reset filter confirmation. When off then reset_filter will not work.
    reset_filter_confirm:
      name: "Reset Filter Confirm"
    # Optional, Informs about get state problem from breezer.
    state_warnout:
      name: "State Warnout"
    # Optional, Timeout when state_warnout will be informed. Default: 3s.
    state_timeout: 3s
    # Optional, Timeout to combine update operations. Default: 200ms.
    batch_timeout: 200ms
    # Optional, Reports Tion's errors (EC) and warnings (WS).
    errors:
      name: "Errors"
  - id: !extend tion_climate
    # Required, the name of climate entity
    name: Бризер Спальня # use friendly_name
    # Optional, virtual port id. Default: autodetect
    vport_id: tion2_ble_vport
    # Optional, Temperatire of air before heater, °C (celsius).
    outdoor_temperature:
      name: "Outdoor Temperature"
    # Optional, Buzzer control switch.
    buzzer:
      name: "Buzzer"
    # Optional, Heater power, W (watt).
    heater_power:
      name: "Heater power"
    # Optional, Total airflow counter, m³ (cubic meters).
    airflow_counter:
      name: "Airflow counter"
    # Optional, Gate state control binary sensor.
    gate_state:
      name: "Gate State"
    # Optional, Current productivity, m³/h (cubic meters per hour).
    productivity:
      name: "Productivity"
    # Optional, Filter time left counter, days.
    filter_time_left:
      name: "Filter Time Left"
    # Optional, Filter warning state.
    filter_warnout:
      name: "Filter Warnout"
    # Optional, Tion firmware version.
    version:
      name: "Version"

    presets:
      # enable "home" preset and override default settings
      home: { fan_speed: 2, target_temperature: 10, gate_position: outdoor, mode: fan_only }
      # enable "away" preset with default settings
      away:
      # enable "boost" preset with default settings
      boost:
      # enable "sleep" preset and override default settings
      sleep: { fan_speed: 1, target_temperature: 10, gate_position: outdoor, mode: fan_only }
    # Optional, configure boost time
    boost_time:
      name: "Boost Time"
    # Optional, display remaining boost time
    boost_time_left:
      name: "Boost Time Left"
    # Optional, How often query device state. Default: 60s.
    update_interval: 60s
    # Optional, reset filter button
    reset_filter:
      name: "Reset Filter"
    # Optional, reset filter confirmation. When off then reset_filter will not work.
    reset_filter_confirm:
      name: "Reset Filter Confirm"
    # Optional, Informs about get state problem from breezer.
    state_warnout:
      name: "State Warnout"
    # Optional, Timeout when state_warnout will be informed. Default: 3s.
    state_timeout: 3s
    # Optional, Timeout to combine update operations. Default: 200ms.
    batch_timeout: 200ms
    # Optional, Reports Tion's errors (EC) and warnings (WS).
    errors:
      name: "Errors"
  - id: !extend tion_climate
    # Required, the name of climate entity
    name: Бризер Детская # use friendly_name
    # Optional, virtual port id. Default: autodetect
    vport_id: tion3_ble_vport
    # Optional, Temperatire of air before heater, °C (celsius).
    outdoor_temperature:
      name: "Outdoor Temperature"
    # Optional, Buzzer control switch.
    buzzer:
      name: "Buzzer"
    # Optional, Heater power, W (watt).
    heater_power:
      name: "Heater power"
    # Optional, Total airflow counter, m³ (cubic meters).
    airflow_counter:
      name: "Airflow counter"
    # Optional, Gate state control binary sensor.
    gate_state:
      name: "Gate State"
    # Optional, Current productivity, m³/h (cubic meters per hour).
    productivity:
      name: "Productivity"
    # Optional, Filter time left counter, days.
    filter_time_left:
      name: "Filter Time Left"
    # Optional, Filter warning state.
    filter_warnout:
      name: "Filter Warnout"
    # Optional, Tion firmware version.
    version:
      name: "Version"

    presets:
      # enable "home" preset and override default settings
      home: { fan_speed: 2, target_temperature: 10, gate_position: outdoor, mode: fan_only }
      # enable "away" preset with default settings
      away:
      # enable "boost" preset with default settings
      boost:
      # enable "sleep" preset and override default settings
      sleep: { fan_speed: 1, target_temperature: 10, gate_position: outdoor, mode: fan_only }
    # Optional, configure boost time
    boost_time:
      name: "Boost Time"
    # Optional, display remaining boost time
    boost_time_left:
      name: "Boost Time Left"
    # Optional, How often query device state. Default: 60s.
    update_interval: 60s
    # Optional, reset filter button
    reset_filter:
      name: "Reset Filter"
    # Optional, reset filter confirmation. When off then reset_filter will not work.
    reset_filter_confirm:
      name: "Reset Filter Confirm"
    # Optional, Informs about get state problem from breezer.
    state_warnout:
      name: "State Warnout"
    # Optional, Timeout when state_warnout will be informed. Default: 3s.
    state_timeout: 3s
    # Optional, Timeout to combine update operations. Default: 200ms.
    batch_timeout: 200ms
    # Optional, Reports Tion's errors (EC) and warnings (WS).
    errors:
      name: "Errors"

Но при проверке выдает ошибку:

INFO ESPHome 2024.4.0
INFO Reading configuration /config/esphome/breezers.yaml...
WARNING Found '$tion_mac_address' (see sensor->1->mac_address) which looks like a substitution, but 'tion_mac_address' was not declared
WARNING Found '$tion_mac_address' (see ble_client->mac_address) which looks like a substitution, but 'tion_mac_address' was not declared
WARNING Found '$tion_mac_address' (see sensor->1->mac_address) which looks like a substitution, but 'tion_mac_address' was not declared
WARNING Found '$tion_mac_address' (see ble_client->mac_address) which looks like a substitution, but 'tion_mac_address' was not declared
INFO Detected timezone 'Europe/Moscow'
Failed config

sensor.ble_rssi: [source /data/packages/a28f4a62/packages/rssi_signal.yaml:2]
  platform: ble_rssi
  
  MAC Address must consist of 6 : (colon) separated parts.
  mac_address: $tion_mac_address
  name: RSSI
  filters: 
    throttle_average: 60s
  entity_category: diagnostic
climate.tion_lt: [source /data/packages/a28f4a62/packages/tion_lt_climate.yaml:2]
  platform: tion_lt
  id: tion_climate
  heater_power: 
    id: heater_power
    on_raw_value: 
      then: 
        lambda: id(heater_power_plus_fan).update();
    name: Heater power
  name: Бризер Детская
  vport_id: tion3_ble_vport
  outdoor_temperature: 
    name: Outdoor Temperature
  buzzer: 
    name: Buzzer
  led: 
    name: Led
  airflow_counter: 
    name: Airflow counter
  
  [recirculation] is an invalid option for [climate.tion_lt]. Please check the indentation.
  recirculation: 
    name: Recirculation
  productivity: 
    name: Productivity
  filter_time_left: 
    name: Filter Time Left
  filter_warnout: 
    name: Filter Warnout
  version: 
    name: Version
  presets: 
    home: 
      fan_speed: 2
      target_temperature: 10
      gate_position: outdoor
      mode: fan_only
    away: 
    boost: 
    sleep: 
      fan_speed: 1
      target_temperature: 10
      gate_position: outdoor
      mode: fan_only
  boost_time: 
    name: Boost Time
  boost_time_left: 
    name: Boost Time Left
  update_interval: 60s
  reset_filter: 
    name: Reset Filter
  reset_filter_confirm: 
    name: Reset Filter Confirm
  state_warnout: 
    name: State Warnout
  state_timeout: 3s
  batch_timeout: 200ms
  errors: 
    name: Errors
  gate_state: 
    name: Gate State
ble_client: [source /data/packages/a28f4a62/packages/esp32_ble.yaml:22]
  - 
    MAC Address must consist of 6 : (colon) separated parts.
    mac_address: $tion_mac_address
    id: tion_ble_client

Как я понимаю, в других файлах отсутствуют такие переменные, как tion1_mac_address и т.д., а есть только tion_mac_address.
Как от этого уйти - не понял.
Подскажите, как решить эту задачу.
Заранее, спасибо!

Update to ESPhome 2022.9.3

During updating the node a got the error in logs. Update failed

Updating /config/esphome/esp32-climate.yaml
------------------------------------------------------------

INFO Reading configuration /config/esphome/esp32-climate.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing esp32-climate (board: esp32doit-devkit-v1; framework: arduino; platform: platformio/espressif32 @ 3.5.0)
--------------------------------------------------------------------------------
Library Manager: Installing Hash
INFO Installing Hash
Library Manager: Installing ESP8266WiFi
INFO Installing ESP8266WiFi
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 1.0
|-- FS @ 1.0
|-- Update @ 1.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 1.1.0
|-- ESPmDNS @ 1.0
|-- Wire @ 1.0.1
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/tion/tion.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/uart/uart_component_esp_idf.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/uart/uart_debugger.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/uptime/uptime_sensor.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/wifi/wifi_component.cpp.o
Compiling /data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/wifi/wifi_component_esp32_arduino.cpp.o
src/esphome/components/tion/tion.cpp: In member function 'virtual void esphome::tion::TionBleNode::gattc_event_handler(esp_gattc_cb_event_t, esp_gatt_if_t, esp_ble_gattc_cb_param_t*)':
src/esphome/components/tion/tion.cpp:85:67: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
       auto err = esp_ble_gattc_register_for_notify(this->parent_->gattc_if, this->parent_->remote_bda, this->char_rx_);
                                                                   ^
src/esphome/components/tion/tion.cpp:85:92: error: 'class esphome::ble_client::BLEClient' has no member named 'remote_bda'
       auto err = esp_ble_gattc_register_for_notify(this->parent_->gattc_if, this->parent_->remote_bda, this->char_rx_);
                                                                                            ^
src/esphome/components/tion/tion.cpp: In member function 'virtual bool esphome::tion::TionBleNode::write_data(const uint8_t*, uint16_t) const':
src/esphome/components/tion/tion.cpp:127:50: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
   return esp_ble_gattc_write_char(this->parent_->gattc_if, this->parent_->conn_id, this->char_tx_, size,
                                                  ^
src/esphome/components/tion/tion.cpp:127:75: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
   return esp_ble_gattc_write_char(this->parent_->gattc_if, this->parent_->conn_id, this->char_tx_, size,
                                                                           ^
*** [/data/esp32-climate/.pioenvs/esp32-climate/src/esphome/components/tion/tion.cpp.o] Error 1
========================== [FAILED] Took 8.85 seconds ==========================
======== [ERROR] /config/esphome/esp32-climate.yaml ========



======================== [SUMMARY] ========================
  - /config/esphome/esp32-climate.yaml: FAILED

Подключение Тиона 3S по uart в Спрутхаб

Здравствуйте, выложите пожалуйста кто-нибудь свой реально работающий tion-3s-uart.yaml
для подключения Tion 3s UART по mqtt в спрутхаб, чтобы было понимание где и что менять, чтоб пробелы и вводы не напутать. Я новичок, а хочется разобраться

Периодические зависания

Установил прошивку на стик Lilygo T-Dongle S3, подключил к бризеру, всё было в порядке. Устройство проработало полутора суток, потом стик "отвалился". В сети недоступен, на команды из HA не реагирует, данные не выдаёт. При этом сам бризер продолжает работать и управляться через пульт и родное приложение. Восстановление работоспособности только через снятие питания (выключение из розетки или изъятие донгла из бризера и повторное его подключение). После сброса по питанию работоспособность восстановилась, бризер проработал ещё пять суток, и сегодня ситуация повторилась. Вынес стик на удлинителе наружу бризера чтобы промониторить возможный перегрев - такового не обнаружено. Остаётся две возможных причины: бракованный стик либо слабое/зашумлённое питание от самого бризера. Испытание в процессе, заказан ещё один стик, пока в пути. Можно ли на уровне кода добавить ватчдог (если его ещё нет конечно), который бы автоматически ресетил плату при её зависании? Хотелось бы также знать, сталкивался ли кто-либо ещё с такой же проблемой как у меня, и если да, то как её решали? Да, можно подключить бризер через управляемую розетку и дёргать питание каждый раз, когда плата перестаёт отвечать, но это имхо костыль.

Унификация взаимодействия со всеми бризерами

  • Вынести в API унифицированную информацию о состоянии всех бризеров
  • Вынести в API все унифицированное управление любым бризером
  • Выделить API в самостоятельную сущность
  • Отвязать от компонент climate все сенсоры и управление
  • Выделить сенсоры и управление в самостоятельные сущности

fan_mode: 0

Хотелось бы видеть реализацию fan_mode: 0, при которой бризер 4S выключался.

Суммарное дневное потребление растёт при выключенном бризере

а так и задумано что суммарное дневное потребление растёт при выключенном бризере? глянул по диагонали код, там вроде нет поверки на то, включен бризер или нет, то есть похоже продолжает считать по установленной скорости

Нагрев даже в режиме fan_only

После какого то из обновлений, заметил большое потребление тиона в энергомониторинге.
Полез разбираться, выяснил, что теперь даже в режиме "проветривание" если температура ниже нуля, то автоматом включается подогрев до нуля. Есть ли вариант отключить это поведение? Да я хочу холодный воздух в квартиру без обогрева, если он мне понадобиться, я переведу его в нагрев сам.
Tion 4s ble версия плагина 2024.1.3

image
image

Multiple breezers with single esp32 board only

👋 Hi there,
is it possible to control multiple breezers only with single board? It seems not supported by configuration yaml?

I've had a 4 x Tion Lite with externals CO2/Temp sensors. I would like to control they from one esp32.
Thanks!

Screenshot 2023-01-26 at 15 29 36

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.