init
This commit is contained in:
312
packages/core.yaml
Normal file
312
packages/core.yaml
Normal file
@@ -0,0 +1,312 @@
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
# # # # # NICHT BEARBEITEN!! # # # # #
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
|
||||
# Компонент климата
|
||||
external_components:
|
||||
- source:
|
||||
url: https://github.com/christoph5180/tclac.git
|
||||
type: git
|
||||
ref: master
|
||||
components: [ tclac ]
|
||||
refresh: 30s
|
||||
|
||||
# Конфигурация ESPHome
|
||||
esphome:
|
||||
name: ${device_name}
|
||||
min_version: 2023.3.0
|
||||
friendly_name: ${humanly_name}
|
||||
on_boot:
|
||||
priority: -100
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_beeper_state(false);
|
||||
id(${device_name}climate).set_force_mode_state(false);
|
||||
|
||||
if (id(display_mode).state){
|
||||
id(${device_name}climate).set_display_state(true);
|
||||
} else {
|
||||
id(${device_name}climate).set_display_state(false);
|
||||
}
|
||||
if (id(ledflash_mode).state){
|
||||
id(${device_name}climate).set_module_display_state(true);
|
||||
} else {
|
||||
id(${device_name}climate).set_module_display_state(false);
|
||||
}
|
||||
|
||||
if (id(vswing).active_index() == 0){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::UP_DOWN);
|
||||
} else if (id(vswing).active_index() == 1){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::UPSIDE);
|
||||
} else if (id(vswing).active_index() == 2){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::DOWNSIDE);
|
||||
}
|
||||
|
||||
if (id(hswing).active_index() == 0){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::LEFT_RIGHT);
|
||||
} else if (id(hswing).active_index() == 1){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::LEFTSIDE);
|
||||
} else if (id(hswing).active_index() == 2){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::CENTER);
|
||||
} else if (id(hswing).active_index() == 3){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::RIGHTSIDE);
|
||||
}
|
||||
|
||||
if (id(vfixing).active_index() == 0){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::LAST);
|
||||
} else if (id(vfixing).active_index() == 1){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::MAX_UP);
|
||||
} else if (id(vfixing).active_index() == 2){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::UP);
|
||||
} else if (id(vfixing).active_index() == 3){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::CENTER);
|
||||
} else if (id(vfixing).active_index() == 4){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::DOWN);
|
||||
} else if (id(vfixing).active_index() == 5){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::MAX_DOWN);
|
||||
}
|
||||
|
||||
if (id(hfixing).active_index() == 0){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::LAST);
|
||||
} else if (id(hfixing).active_index() == 1){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::MAX_LEFT);
|
||||
} else if (id(hfixing).active_index() == 2){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::LEFT);
|
||||
} else if (id(hfixing).active_index() == 3){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::CENTER);
|
||||
} else if (id(hfixing).active_index() == 4){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::RIGHT);
|
||||
} else if (id(hfixing).active_index() == 5){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::MAX_RIGHT);
|
||||
}
|
||||
if (id(beep_mode).state){
|
||||
id(${device_name}climate).set_beeper_state(true);
|
||||
} else {
|
||||
id(${device_name}climate).set_beeper_state(false);
|
||||
}
|
||||
if (id(force_mode).state){
|
||||
id(${device_name}climate).set_force_mode_state(true);
|
||||
} else {
|
||||
id(${device_name}climate).set_force_mode_state(false);
|
||||
}
|
||||
|
||||
uart:
|
||||
baud_rate: 9600
|
||||
data_bits: 8
|
||||
parity: EVEN
|
||||
stop_bits: 1
|
||||
rx_pin: ${uart_rx}
|
||||
tx_pin: ${uart_tx}
|
||||
|
||||
api:
|
||||
encryption:
|
||||
key: "${api_key}"
|
||||
|
||||
ota:
|
||||
- platform: esphome
|
||||
password: "${ota_pass}"
|
||||
|
||||
wifi:
|
||||
id: "${device_name}_wifi"
|
||||
ssid: ${wifi_ssid}
|
||||
password: ${wifi_password}
|
||||
ap:
|
||||
ssid: "${device_name} Fallback Hotspot"
|
||||
password: "${recovery_pass}"
|
||||
|
||||
captive_portal:
|
||||
|
||||
|
||||
# # # # # # # # # # # # # # # # # # # # # # #
|
||||
# # # # # НЕ РЕДАКТИРОВАТЬ! # # # # #
|
||||
# # # # # # # # # # # # # # # # # # # # # # #
|
||||
|
||||
# ОБЯЗАТЕЛЬНО отключаем логгирование через UART
|
||||
logger:
|
||||
baud_rate: 0
|
||||
|
||||
# Раздел настроек устройства:
|
||||
# - Переключатели
|
||||
switch:
|
||||
# Пищалка для подтверждения команд, по умолчанию выключена
|
||||
- name: Beeper
|
||||
platform: template
|
||||
device_class: switch
|
||||
id: beep_mode
|
||||
entity_category: config
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
optimistic: true
|
||||
on_turn_on:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_beeper_state(true);
|
||||
on_turn_off:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_beeper_state(false);
|
||||
|
||||
# Индикатор уставки температуры на корпусе внутреннего блока, по умолчанию включен
|
||||
- name: Display
|
||||
platform: template
|
||||
device_class: switch
|
||||
id: display_mode
|
||||
entity_category: config
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
optimistic: true
|
||||
on_turn_on:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_display_state(true);
|
||||
on_turn_off:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_display_state(false);
|
||||
|
||||
# Светодиодная индикация обмена данными с кондиционером, по умолчанию выключена
|
||||
- name: Display on module
|
||||
platform: template
|
||||
device_class: switch
|
||||
id: ledflash_mode
|
||||
entity_category: config
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
optimistic: true
|
||||
on_turn_on:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_module_display_state(true);
|
||||
on_turn_off:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_module_display_state(false);
|
||||
|
||||
- name: Force config
|
||||
platform: template
|
||||
device_class: switch
|
||||
id: force_mode
|
||||
entity_category: config
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
optimistic: true
|
||||
on_turn_on:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_force_mode_state(true);
|
||||
on_turn_off:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
id(${device_name}climate).set_force_mode_state(false);
|
||||
|
||||
# - Выпадающие списки
|
||||
select:
|
||||
# Настройка вертикального качания
|
||||
- platform: template
|
||||
name: Vertical swing
|
||||
id: vswing
|
||||
entity_category: config
|
||||
options:
|
||||
- "Von oben nach unten"
|
||||
- "In der oberen Hälfte"
|
||||
- "In der unteren Hälfte"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
on_value:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
if (id(vswing).active_index() == 0){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::UP_DOWN);
|
||||
} else if (id(vswing).active_index() == 1){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::UPSIDE);
|
||||
} else if (id(vswing).active_index() == 2){
|
||||
id(${device_name}climate).set_vertical_swing_direction(esphome::tclac::VerticalSwingDirection::DOWNSIDE);
|
||||
}
|
||||
|
||||
# Настройка горизонтального качания
|
||||
- platform: template
|
||||
name: Horizontal swing
|
||||
id: hswing
|
||||
entity_category: config
|
||||
options:
|
||||
- "Von links nach rechts"
|
||||
- "Im linken Bereich"
|
||||
- "Im Zentrum"
|
||||
- "Im rechten Bereich"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
on_value:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
if (id(hswing).active_index() == 0){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::LEFT_RIGHT);
|
||||
} else if (id(hswing).active_index() == 1){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::LEFTSIDE);
|
||||
} else if (id(hswing).active_index() == 2){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::CENTER);
|
||||
} else if (id(hswing).active_index() == 3){
|
||||
id(${device_name}climate).set_horizontal_swing_direction(esphome::tclac::HorizontalSwingDirection::RIGHTSIDE);
|
||||
}
|
||||
|
||||
# Настройка фиксации вертикальной заслонки
|
||||
- platform: template
|
||||
name: Vertical fixing
|
||||
id: vfixing
|
||||
entity_category: config
|
||||
options:
|
||||
- "Letzte Position"
|
||||
- "Ganz nach oben"
|
||||
- "In der oberen Hälfte"
|
||||
- "In der Mitte"
|
||||
- "In der unteren Hälfte"
|
||||
- "Ganz nach unten"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
on_value:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
if (id(vfixing).active_index() == 0){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::LAST);
|
||||
} else if (id(vfixing).active_index() == 1){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::MAX_UP);
|
||||
} else if (id(vfixing).active_index() == 2){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::UP);
|
||||
} else if (id(vfixing).active_index() == 3){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::CENTER);
|
||||
} else if (id(vfixing).active_index() == 4){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::DOWN);
|
||||
} else if (id(vfixing).active_index() == 5){
|
||||
id(${device_name}climate).set_vertical_airflow(esphome::tclac::AirflowVerticalDirection::MAX_DOWN);
|
||||
}
|
||||
|
||||
# Настройка фиксации горизонатальных заслонок
|
||||
- platform: template
|
||||
name: Horizontal fixing
|
||||
id: hfixing
|
||||
entity_category: config
|
||||
options:
|
||||
- "Letzte Position"
|
||||
- "Ganz nach links"
|
||||
- "In der linken Hälfte"
|
||||
- "In der Mitte"
|
||||
- "In der rechten Hälfte"
|
||||
- "Ganz nach rechts"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
on_value:
|
||||
then:
|
||||
lambda: !lambda |-
|
||||
if (id(hfixing).active_index() == 0){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::LAST);
|
||||
} else if (id(hfixing).active_index() == 1){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::MAX_LEFT);
|
||||
} else if (id(hfixing).active_index() == 2){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::LEFT);
|
||||
} else if (id(hfixing).active_index() == 3){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::CENTER);
|
||||
} else if (id(hfixing).active_index() == 4){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::RIGHT);
|
||||
} else if (id(hfixing).active_index() == 5){
|
||||
id(${device_name}climate).set_horizontal_airflow(esphome::tclac::AirflowHorizontalDirection::MAX_RIGHT);
|
||||
}
|
||||
|
||||
climate:
|
||||
- platform: tclac
|
||||
name: "${device_name} Climate"
|
||||
id: ${device_name}climate
|
||||
Reference in New Issue
Block a user