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:
|
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:
|
substitutions:
|
||||||
name: tx-ultimate-easy
|
name: tx-ultimate-easy
|
||||||
|
|||||||
Reference in New Issue
Block a user