Split files
To improve readability and increase my chances to have more people collaborating with this project. Solves #27
This commit is contained in:
@@ -1,3 +1,15 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Add-on - BLE Proxy #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
bluetooth_proxy:
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
52
ESPHome/TX-Ultimate-Easy-ESPHome_core_api.yaml
Normal file
52
ESPHome/TX-Ultimate-Easy-ESPHome_core_api.yaml
Normal file
@@ -0,0 +1,52 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - API #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
api:
|
||||
id: api_server
|
||||
actions:
|
||||
- action: set_float
|
||||
variables:
|
||||
component: string
|
||||
val: float
|
||||
then:
|
||||
- lambda: |-
|
||||
if (!isnan(val)) {
|
||||
if (component == "latitude") sun_entity->set_latitude(val);
|
||||
else if (component == "longitude") sun_entity->set_longitude(val);
|
||||
}
|
||||
|
||||
script:
|
||||
- id: !extend button_action
|
||||
then:
|
||||
- script.execute:
|
||||
id: send_event_to_ha
|
||||
component: !lambda return component.c_str();
|
||||
event: !lambda return event.c_str();
|
||||
|
||||
- id: send_event_to_ha
|
||||
mode: queued
|
||||
parameters:
|
||||
component: string
|
||||
event: string
|
||||
then:
|
||||
- lambda: |-
|
||||
esphome::api::CustomAPIDevice ha_event;
|
||||
ha_event.fire_homeassistant_event("esphome.tx_ultimate_easy",
|
||||
{
|
||||
{"device_name", tx_device_name->state.c_str()},
|
||||
{"firmware", "${version}"},
|
||||
{"component", component},
|
||||
{"event", event},
|
||||
});
|
||||
|
||||
...
|
||||
248
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml
Normal file
248
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml
Normal file
@@ -0,0 +1,248 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Hardware - Buttons #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
substitutions:
|
||||
invalid_cooldown: 100ms
|
||||
|
||||
binary_sensor:
|
||||
- id: bs_button_1
|
||||
name: Button 1
|
||||
icon: mdi:gesture-tap-box
|
||||
internal: false
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_1
|
||||
event: click
|
||||
on_double_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_1
|
||||
event: double_click
|
||||
on_multi_click:
|
||||
- timing: &long_click-timing
|
||||
- ON for at least 0.8s
|
||||
invalid_cooldown: ${invalid_cooldown}
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_1
|
||||
event: long_click
|
||||
|
||||
- id: bs_button_2
|
||||
name: Button 2
|
||||
icon: mdi:gesture-tap-box
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_2
|
||||
event: click
|
||||
on_double_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_2
|
||||
event: double_click
|
||||
on_multi_click:
|
||||
- timing: *long_click-timing
|
||||
invalid_cooldown: ${invalid_cooldown}
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_2
|
||||
event: long_click
|
||||
|
||||
- id: bs_button_3
|
||||
name: Button 3
|
||||
icon: mdi:gesture-tap-box
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_3
|
||||
event: click
|
||||
on_double_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_3
|
||||
event: double_click
|
||||
on_multi_click:
|
||||
- timing: *long_click-timing
|
||||
invalid_cooldown: ${invalid_cooldown}
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_3
|
||||
event: long_click
|
||||
|
||||
- id: bs_button_4
|
||||
name: Button 4
|
||||
icon: mdi:gesture-tap-box
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_4
|
||||
event: click
|
||||
on_double_click:
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_4
|
||||
event: double_click
|
||||
on_multi_click:
|
||||
- timing: *long_click-timing
|
||||
invalid_cooldown: ${invalid_cooldown}
|
||||
then:
|
||||
- script.execute:
|
||||
id: button_action
|
||||
component: bs_button_4
|
||||
event: long_click
|
||||
|
||||
script:
|
||||
- id: button_action
|
||||
mode: parallel
|
||||
parameters:
|
||||
component: string
|
||||
event: string
|
||||
then: # There's nothing here so far
|
||||
# Extended by:
|
||||
# - core_api
|
||||
|
||||
- id: buttons_release
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (bs_button_1->state) bs_button_1->publish_state(false);
|
||||
if (bs_button_2->state) bs_button_2->publish_state(false);
|
||||
if (bs_button_3->state) bs_button_3->publish_state(false);
|
||||
if (bs_button_4->state) bs_button_4->publish_state(false);
|
||||
|
||||
- id: !extend touch_on_multi_touch_release
|
||||
then:
|
||||
- script.execute: buttons_release
|
||||
|
||||
- id: !extend touch_on_press
|
||||
then:
|
||||
- script.execute:
|
||||
id: touch_on_press_buttons
|
||||
touch_x: !lambda return touch_x;
|
||||
|
||||
- id: touch_on_press_buttons
|
||||
mode: restart
|
||||
parameters:
|
||||
touch_x: uint8_t
|
||||
then:
|
||||
- lambda: |-
|
||||
auto model_index = sl_tx_model_gang->active_index();
|
||||
if (model_index.has_value()) {
|
||||
uint8_t model_idx = model_index.value() + 1;
|
||||
switch (model_idx) {
|
||||
case 1: // 1 Gang
|
||||
bs_button_1->publish_state(true);
|
||||
break;
|
||||
case 2: // 2 Gang
|
||||
if (touch_x <= 5) bs_button_1->publish_state(true);
|
||||
else bs_button_2->publish_state(true);
|
||||
break;
|
||||
case 3: // 3 Gang
|
||||
if (touch_x <= 3) bs_button_1->publish_state(true);
|
||||
else if (touch_x <= 7) bs_button_2->publish_state(true);
|
||||
else bs_button_3->publish_state(true);
|
||||
break;
|
||||
case 4: // 4 Gang
|
||||
if (touch_x <= 2) bs_button_1->publish_state(true);
|
||||
else if (touch_x <= 5) bs_button_2->publish_state(true);
|
||||
else if (touch_x <= 8) bs_button_3->publish_state(true);
|
||||
else bs_button_4->publish_state(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- id: !extend touch_on_release
|
||||
then:
|
||||
- script.execute: buttons_release
|
||||
|
||||
- id: !extend touch_swipe_left
|
||||
then:
|
||||
- script.execute: buttons_release
|
||||
|
||||
- id: !extend touch_swipe_right
|
||||
then:
|
||||
- script.execute: buttons_release
|
||||
|
||||
select:
|
||||
- id: sl_button_1_action
|
||||
name: Button 1 action
|
||||
platform: template
|
||||
options:
|
||||
- "None"
|
||||
- "Relay 1 (toggle)"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_button_2_action
|
||||
name: Button 2 action
|
||||
platform: template
|
||||
options:
|
||||
- "None"
|
||||
- "Relay 2 (toggle)"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_button_3_action
|
||||
name: Button 3 action
|
||||
platform: template
|
||||
options:
|
||||
- "None"
|
||||
- "Relay 3 (toggle)"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_button_4_action
|
||||
name: Button 4 action
|
||||
platform: template
|
||||
options:
|
||||
- "None"
|
||||
- "Relay 4 (toggle)"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
...
|
||||
1012
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_led.yaml
Normal file
1012
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_led.yaml
Normal file
File diff suppressed because it is too large
Load Diff
226
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml
Normal file
226
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml
Normal file
@@ -0,0 +1,226 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Hardware - Relays #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
binary_sensor:
|
||||
- id: !extend bs_button_1
|
||||
on_click:
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_button_1_action->active_index().has_value() and
|
||||
sl_button_1_action->active_index().value() == 1 and
|
||||
!bs_multi_touch->state and
|
||||
!bs_swipe_left->state and
|
||||
!bs_swipe_down->state and
|
||||
!bs_swipe_right->state)
|
||||
sw_relay_1->toggle();
|
||||
|
||||
- id: !extend bs_button_2
|
||||
on_click:
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_button_2_action->active_index().has_value() and
|
||||
sl_button_2_action->active_index().value() == 1 and
|
||||
!bs_multi_touch->state and
|
||||
!bs_swipe_left->state and
|
||||
!bs_swipe_down->state and
|
||||
!bs_swipe_right->state)
|
||||
sw_relay_2->toggle();
|
||||
|
||||
- id: !extend bs_button_3
|
||||
on_click:
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_button_3_action->active_index().has_value() and
|
||||
sl_button_3_action->active_index().value() == 1 and
|
||||
!bs_multi_touch->state and
|
||||
!bs_swipe_left->state and
|
||||
!bs_swipe_down->state and
|
||||
!bs_swipe_right->state)
|
||||
sw_relay_3->toggle();
|
||||
|
||||
- id: !extend bs_button_4
|
||||
on_click:
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_button_4_action->active_index().has_value() and
|
||||
sl_button_4_action->active_index().value() == 1 and
|
||||
!bs_multi_touch->state and
|
||||
!bs_swipe_left->state and
|
||||
!bs_swipe_down->state and
|
||||
!bs_swipe_right->state)
|
||||
sw_relay_4->toggle();
|
||||
|
||||
output:
|
||||
- id: output_relay_1
|
||||
platform: gpio
|
||||
pin: GPIO18
|
||||
|
||||
- id: output_relay_2
|
||||
platform: gpio
|
||||
pin: GPIO17
|
||||
|
||||
- id: output_relay_3
|
||||
platform: gpio
|
||||
pin: GPIO27
|
||||
|
||||
- id: output_relay_4
|
||||
platform: gpio
|
||||
pin: GPIO23
|
||||
|
||||
script:
|
||||
- id: show_relay_status
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
return;
|
||||
show_relay_status->stop();
|
||||
auto model_format = sl_tx_model_format->active_index();
|
||||
std::vector<esphome::select::Select*> relay_modes;
|
||||
|
||||
if (model_format.has_value() and model_format.value() == 0) {
|
||||
relay_modes = {sl_relay_1_light_mode_eu, sl_relay_2_light_mode_eu, sl_relay_3_light_mode_eu, sl_relay_4_light_mode_eu};
|
||||
} else {
|
||||
relay_modes = {sl_relay_1_light_mode_us, sl_relay_2_light_mode_us, sl_relay_3_light_mode_us, sl_relay_4_light_mode_us};
|
||||
}
|
||||
|
||||
std::vector<switch_::Switch*> switches = {sw_relay_1, sw_relay_2, sw_relay_3, sw_relay_4};
|
||||
for (int i = 0; i < relay_modes.size(); ++i) {
|
||||
auto light_index = relay_modes[i]->active_index();
|
||||
if (light_index.has_value()) {
|
||||
uint8_t light_idx = light_index.value();
|
||||
bool switch_state = switches[i]->state;
|
||||
if (light_idx == 1 || light_idx == 3) {
|
||||
if (switch_state)
|
||||
id(gb_lights_1)[i]->turn_on().perform();
|
||||
else
|
||||
id(gb_lights_1)[i]->turn_off().perform();
|
||||
}
|
||||
if (light_idx == 2 || light_idx == 3) {
|
||||
if (switch_state)
|
||||
id(gb_lights_2)[i]->turn_on().perform();
|
||||
else
|
||||
id(gb_lights_2)[i]->turn_off().perform();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
select:
|
||||
- id: sl_relay_1_mode
|
||||
name: Relay 1 mode
|
||||
platform: template
|
||||
options:
|
||||
- "Relay"
|
||||
- "Light"
|
||||
- "Not in use"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_relay_2_mode
|
||||
name: Relay 2 mode
|
||||
platform: template
|
||||
options:
|
||||
- "Relay"
|
||||
- "Light"
|
||||
- "Not in use"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_relay_3_mode
|
||||
name: Relay 3 mode
|
||||
platform: template
|
||||
options:
|
||||
- "Relay"
|
||||
- "Light"
|
||||
- "Not in use"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
- id: sl_relay_4_mode
|
||||
name: Relay 4 mode
|
||||
platform: template
|
||||
options:
|
||||
- "Relay"
|
||||
- "Light"
|
||||
- "Not in use"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: true
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
|
||||
switch:
|
||||
- id: sw_relay_1
|
||||
name: Relay 1
|
||||
platform: output
|
||||
output: output_relay_1
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
internal: true
|
||||
on_turn_on:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
on_turn_off:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
|
||||
- id: sw_relay_2
|
||||
name: Relay 2
|
||||
platform: output
|
||||
output: output_relay_2
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
internal: true
|
||||
on_turn_on:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
on_turn_off:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
|
||||
- id: sw_relay_3
|
||||
name: Relay 3
|
||||
platform: output
|
||||
output: output_relay_3
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
internal: true
|
||||
on_turn_on:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
on_turn_off:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
|
||||
- id: sw_relay_4
|
||||
name: Relay 4
|
||||
platform: output
|
||||
output: output_relay_4
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
internal: true
|
||||
on_turn_on:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
on_turn_off:
|
||||
then:
|
||||
- script.execute: show_relay_status
|
||||
...
|
||||
29
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_speaker.yaml
Normal file
29
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_speaker.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Hardware - Speaker #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
i2s_audio:
|
||||
id: if_i2s_audio
|
||||
i2s_bclk_pin: GPIO2
|
||||
i2s_lrclk_pin: GPIO4
|
||||
|
||||
media_player:
|
||||
- id: mp_speaker
|
||||
name: Speaker
|
||||
platform: i2s_audio
|
||||
i2s_dout_pin: GPIO15
|
||||
i2s_audio_id: if_i2s_audio
|
||||
i2s_comm_fmt: lsb
|
||||
dac_type: external
|
||||
mode: mono
|
||||
internal: false
|
||||
...
|
||||
212
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml
Normal file
212
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml
Normal file
@@ -0,0 +1,212 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Hardware - Touch panel #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
binary_sensor:
|
||||
- id: bs_multi_touch
|
||||
name: Multi-touch
|
||||
icon: mdi:gesture-two-tap
|
||||
internal: false
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- lambda: send_event_to_ha->execute("multi_touch", "multi_touch");
|
||||
|
||||
- id: bs_swipe_left
|
||||
name: Swipe left
|
||||
icon: mdi:gesture-swipe-left
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- lambda: send_event_to_ha->execute("swipe", "left");
|
||||
|
||||
- id: bs_swipe_right
|
||||
name: Swipe right
|
||||
icon: mdi:gesture-swipe-right
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- lambda: send_event_to_ha->execute("swipe", "right");
|
||||
|
||||
- id: bs_swipe_up
|
||||
name: Swipe up
|
||||
icon: mdi:gesture-swipe-up
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- lambda: send_event_to_ha->execute("swipe", "up");
|
||||
|
||||
- id: bs_swipe_down
|
||||
name: Swipe down
|
||||
icon: mdi:gesture-swipe-down
|
||||
internal: true
|
||||
platform: template
|
||||
on_click:
|
||||
then:
|
||||
- lambda: send_event_to_ha->execute("swipe", "down");
|
||||
|
||||
external_components:
|
||||
- source: github://edwardtfn/TX-Ultimate-Easy@dev # Change this before releasing
|
||||
components:
|
||||
- tx_ultimate_easy
|
||||
|
||||
number:
|
||||
- id: nr_touch_duration
|
||||
name: Touch duration
|
||||
icon: mdi:timer-cog-outline
|
||||
unit_of_measurement: ms
|
||||
# mode: box
|
||||
internal: false
|
||||
entity_category: config
|
||||
platform: template
|
||||
min_value: 10
|
||||
max_value: 1500
|
||||
step: 1
|
||||
initial_value: 250
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
|
||||
script:
|
||||
- id: touch_on_multi_touch_release
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
# - HW Vibration
|
||||
- script.execute: touch_on_multi_touch_release_touch
|
||||
|
||||
- id: touch_on_multi_touch_release_touch
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: bs_multi_touch->publish_state(true);
|
||||
- delay: !lambda return nr_touch_duration->state;
|
||||
- lambda: bs_multi_touch->publish_state(false);
|
||||
|
||||
- id: touch_on_press
|
||||
mode: restart
|
||||
parameters:
|
||||
touch_x: uint8_t
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
# - HW Vibration
|
||||
|
||||
- id: touch_on_release
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
# - HW Vibration
|
||||
- script.execute: touch_swipe_turn_off_binary_sensor
|
||||
|
||||
- id: touch_swipe_left
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
- script.execute: touch_swipe_left_touch
|
||||
|
||||
- id: touch_swipe_left_touch
|
||||
mode: restart
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_swipe_left
|
||||
state: ON
|
||||
- delay: !lambda return nr_touch_duration->state;
|
||||
- script.execute: touch_swipe_turn_off_binary_sensor
|
||||
|
||||
- id: touch_swipe_right
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
- script.execute: touch_swipe_right_touch
|
||||
|
||||
- id: touch_swipe_right_touch
|
||||
mode: restart
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_swipe_right
|
||||
state: ON
|
||||
- delay: !lambda return nr_touch_duration->state;
|
||||
- script.execute: touch_swipe_turn_off_binary_sensor
|
||||
|
||||
- id: touch_swipe_turn_off_binary_sensor
|
||||
mode: restart
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
binary_sensor.is_on: bs_swipe_left
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_swipe_left
|
||||
state: OFF
|
||||
- if:
|
||||
condition:
|
||||
binary_sensor.is_on: bs_swipe_right
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_swipe_right
|
||||
state: OFF
|
||||
|
||||
switch:
|
||||
- id: sw_touch_panel_power
|
||||
name: Touch panel - Power
|
||||
platform: gpio
|
||||
pin:
|
||||
number: GPIO5
|
||||
inverted: true
|
||||
restore_mode: ALWAYS_ON
|
||||
internal: false
|
||||
entity_category: config
|
||||
|
||||
tx_ultimate_easy:
|
||||
id: tx_ultimate
|
||||
uart: uart_touch
|
||||
|
||||
on_multi_touch_release:
|
||||
- lambda: ESP_LOGI("tx_ultimate_easy", "Multi-touch released");
|
||||
- script.execute: touch_on_multi_touch_release
|
||||
|
||||
on_press:
|
||||
- lambda: ESP_LOGI("tx_ultimate_easy", "Pressed");
|
||||
- script.execute:
|
||||
id: touch_on_multi_touch_press
|
||||
touch_x: !lambda return static_cast<uint8_t>(touch.x);
|
||||
|
||||
on_release:
|
||||
- lambda: ESP_LOGI("tx_ultimate_easy", "Released");
|
||||
- script.execute: touch_on_release
|
||||
|
||||
on_swipe_left:
|
||||
- lambda: ESP_LOGI("tx_ultimate_easy", "Swipe left");
|
||||
- script.execute: touch_swipe_left
|
||||
|
||||
on_swipe_right:
|
||||
- lambda: ESP_LOGI("tx_ultimate_easy", "Swipe right");
|
||||
- script.execute: touch_swipe_right
|
||||
|
||||
on_touch_event:
|
||||
- lambda: |-
|
||||
ESP_LOGD("tx_ultimate_easy", "Touch event:");
|
||||
ESP_LOGD("tx_ultimate_easy", " State: %i (%s)", touch.state, touch.state_str.c_str());
|
||||
ESP_LOGD("tx_ultimate_easy", " Position: %i", touch.x);
|
||||
|
||||
uart:
|
||||
id: uart_touch
|
||||
tx_pin: GPIO19
|
||||
rx_pin: GPIO22
|
||||
baud_rate: 115200
|
||||
...
|
||||
120
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml
Normal file
120
ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml
Normal file
@@ -0,0 +1,120 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Core - Hardware - Vibration system #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
binary_sensor:
|
||||
- id: bs_vibrating
|
||||
name: Vibrating
|
||||
icon: mdi:vibrate
|
||||
internal: false
|
||||
platform: template
|
||||
lambda: return sw_vibration_motor->state;
|
||||
|
||||
button:
|
||||
- id: bt_vibrate
|
||||
name: Vibrate
|
||||
icon: mdi:vibrate
|
||||
internal: false
|
||||
platform: template
|
||||
on_press:
|
||||
then:
|
||||
- script.execute: vibrate
|
||||
|
||||
number:
|
||||
- id: nr_vibrating_duration
|
||||
name: Vibrate duration
|
||||
icon: mdi:vibrate
|
||||
unit_of_measurement: ms
|
||||
# mode: box
|
||||
internal: false
|
||||
entity_category: config
|
||||
platform: template
|
||||
min_value: 1
|
||||
max_value: 500
|
||||
step: 1
|
||||
initial_value: 15
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
|
||||
script:
|
||||
- id: !extend touch_on_multi_touch_release
|
||||
then:
|
||||
- script.execute: touch_on_multi_touch_release_vibration
|
||||
|
||||
- id: touch_on_multi_touch_release_vibration
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_vibration_feedback->state != "Disabled")
|
||||
vibrate->execute();
|
||||
|
||||
- id: !extend touch_on_press
|
||||
then:
|
||||
- script.execute: touch_on_press_vibration
|
||||
|
||||
- id: touch_on_press_vibration
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_vibration_feedback->state == "On press" or sl_touch_vibration_feedback->state == "Always")
|
||||
vibrate->execute();
|
||||
|
||||
- id: !extend touch_on_release
|
||||
then:
|
||||
- script.execute: touch_on_release_vibration
|
||||
|
||||
- id: touch_on_release_vibration
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_vibration_feedback->state == "On release" or sl_touch_vibration_feedback->state == "Always")
|
||||
vibrate->execute();
|
||||
|
||||
- id: vibrate
|
||||
mode: restart
|
||||
then:
|
||||
- switch.turn_on: sw_vibration_motor
|
||||
- delay: !lambda return nr_vibrating_duration->state;
|
||||
- switch.turn_off: sw_vibration_motor
|
||||
|
||||
select:
|
||||
- id: sl_touch_vibration_feedback
|
||||
name: Touch - Vibration feedback
|
||||
platform: template
|
||||
options:
|
||||
- "Disabled"
|
||||
- "On press"
|
||||
- "On release"
|
||||
- "Always"
|
||||
initial_option: "Disabled"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: false
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:vibrate
|
||||
|
||||
switch:
|
||||
- id: sw_vibration_motor
|
||||
name: Vibration motor
|
||||
platform: gpio
|
||||
pin: GPIO21
|
||||
restore_mode: ALWAYS_OFF
|
||||
internal: true
|
||||
on_turn_on:
|
||||
then:
|
||||
- lambda: bs_vibrating->publish_state(true);
|
||||
on_turn_off:
|
||||
then:
|
||||
- lambda: bs_vibrating->publish_state(false);
|
||||
|
||||
...
|
||||
@@ -1,3 +1,9 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
---
|
||||
substitutions:
|
||||
name: tx-ultimate-easy
|
||||
|
||||
Reference in New Issue
Block a user