dentra / esphome-tion Goto Github PK
View Code? Open in Web Editor NEWESPHome Tion Breezers control and monitoring
License: MIT License
ESPHome Tion Breezers control and monitoring
License: MIT License
Здравствуйте,
Большое спасибо за интеграцию. Очень много проблема решает с управлением и автоматизацией бризеров.
У меня на данный момент примерно через 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, а потом сделал заново сопряжение. В чем может быть проблема?
Заранее спасибо!
Добавить возможность сброса внутренних ошибок/предупреждений для поддерживаемых бризеров
Добавить сенсор для отображения внутренних ошибок/предупреждений.
Так же необходима возможность декодирования состояния этого сенсора.
Добавить heat_cool режим в пресетах
Добрый день!
У меня есть три бризера, два 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.
Как от этого уйти - не понял.
Подскажите, как решить эту задачу.
Заранее, спасибо!
На 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;
};
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 =========================
из коментов в телеграм:
Денис Трачук, [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
После какого то из обновлений, заметил большое потребление тиона в энергомониторинге.
Полез разбираться, выяснил, что теперь даже в режиме "проветривание" если температура ниже нуля, то автоматом включается подогрев до нуля. Есть ли вариант отключить это поведение? Да я хочу холодный воздух в квартиру без обогрева, если он мне понадобиться, я переведу его в нагрев сам.
Tion 4s ble версия плагина 2024.1.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
Artem Sorokin, [19.01.2024 18:51]
Небольшой баг в сборке из мастера:
Объявление TionClimateGatePosition требует наличия TION_ENABLE_PRESETS, который есть только если есть пресеты.
Если пресетов нет - бум :)
Передвинул его за пределы макроса - собралось :)
needed:
please 👍
"Родное" приложение Tion выводит температуру не напрямую с датчиков, а считает по показаниям с двух датчиков:
int(((unknown <= 0 ? current : unknown) + (current <= 0 ? unknown : current)) / 2)
Имеет смысл использовать аналогичный расчет и в ESPHome с дополнительной отбраковкой слишкрм высоких значений (>30 градусов), т.к. бывает, что один из датчиков может начинать "забрасывать" значения вплоть до 70 градусов.
Установил прошивку на стик Lilygo T-Dongle S3, подключил к бризеру, всё было в порядке. Устройство проработало полутора суток, потом стик "отвалился". В сети недоступен, на команды из HA не реагирует, данные не выдаёт. При этом сам бризер продолжает работать и управляться через пульт и родное приложение. Восстановление работоспособности только через снятие питания (выключение из розетки или изъятие донгла из бризера и повторное его подключение). После сброса по питанию работоспособность восстановилась, бризер проработал ещё пять суток, и сегодня ситуация повторилась. Вынес стик на удлинителе наружу бризера чтобы промониторить возможный перегрев - такового не обнаружено. Остаётся две возможных причины: бракованный стик либо слабое/зашумлённое питание от самого бризера. Испытание в процессе, заказан ещё один стик, пока в пути. Можно ли на уровне кода добавить ватчдог (если его ещё нет конечно), который бы автоматически ресетил плату при её зависании? Хотелось бы также знать, сталкивался ли кто-либо ещё с такой же проблемой как у меня, и если да, то как её решали? Да, можно подключить бризер через управляемую розетку и дёргать питание каждый раз, когда плата перестаёт отвечать, но это имхо костыль.
Здравствуйте, выложите пожалуйста кто-нибудь свой реально работающий tion-3s-uart.yaml
для подключения Tion 3s UART по mqtt в спрутхаб, чтобы было понимание где и что менять, чтоб пробелы и вводы не напутать. Я новичок, а хочется разобраться
Прошил плату 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
Хотелось бы видеть реализацию fan_mode: 0, при которой бризер 4S выключался.
Привет! А есть ли вероятность, что заработает с О2 МАС? Вроде как где-то слышал, что он по WiFi работает...
На данный момент в пресетах можно указать желаемую температуру, режим (обогрев вкл/выкл) и скорость. Была бы полезной возможность указывать также положение заслонки (забор с улицы/забор из помещения) для создания пресета "очистки" помещения, когда бризер пропускает через свой фильтр внутрикомнатный воздух, выполняя функцию воздухоочистителя.
Сабж.
Попытался поискать список изменений, но не нашёл. Написал им на почту в службу поддержки.
Интересно, кто-нибудь обновлялся и всё-ли после обновления работает.
Нобходим режим автоматической регулировки скоррости вентилятора на основании внешнего сенсора CO2.
теория PID: https://www.cta.ru/articles/cta/spravochnik/v-zapisnuyu-knizhku-inzhenera/124336/
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.
state_warnout срабатывает только при запросе на изменение, необходимо добавить проверку и по запросу состояния
Mr K, [31.01.2024 12:09]
в общем ситуация такая, если в процессе работы пресета буст
Mr K, [31.01.2024 12:09]
что-то меняется извне, например подогрев включается
Mr K, [31.01.2024 12:11]
то бризеру сносит крышу и:
- в mqtt топике буст отключается
- сам пресет как бы работает, но потом выводит в логе
[12:00:00][W][tion_climate:153]: No data for preset UNKNOWN
и буст не выключается, так как не знает на какой пресет ему вернуться
а так и задумано что суммарное дневное потребление растёт при выключенном бризере? глянул по диагонали код, там вроде нет поверки на то, включен бризер или нет, то есть похоже продолжает считать по установленной скорости
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.