Compare commits

...

38 Commits

Author SHA1 Message Date
GitHub Actions
fe222ffe32 Bump version to 2025.1.3 [skip-versioning] 2025-01-07 07:17:53 +00:00
Edward Firmo
bb09d7f7f7 Merge pull request #91 from edwardtfn/fix-name-CORE-is-not-defined
Fix `name 'CORE' is not defined`
2025-01-07 08:17:42 +01:00
Edward Firmo
b6e3f41952 Fix name 'CORE' is not defined 2025-01-07 08:15:27 +01:00
GitHub Actions
ba3fc89032 Bump version to 2025.1.2 [skip-versioning] 2025-01-06 16:01:26 +00:00
Edward Firmo
fcbc92aaec Merge pull request #88 from edwardtfn/revert-to-media-player-as-default
Revert to media player and neopixelbus as default
2025-01-06 17:01:15 +01:00
GitHub Actions
a59f667e7d Bump version to 2025.1.1 [skip-versioning] 2025-01-06 16:00:59 +00:00
Edward Firmo
ff3bf05ed1 Merge pull request #90 from Matthijs33/patch-1
Fix value for multi_touch event publishing
2025-01-06 17:00:46 +01:00
Edward Firmo
8a4009dd7e Move sdkconfig_options to component 2025-01-05 12:58:45 +01:00
Edward Firmo
6bdf6e97b7 Move sdkconfig to component 2025-01-05 12:51:22 +01:00
Edward Firmo
acb602c4ca Lint 2025-01-05 12:44:48 +01:00
Edward Firmo
9bae016573 Lint 2025-01-05 12:43:08 +01:00
Edward Firmo
e47726dc47 Advanced settings with granular package selection
Resolves #86
2025-01-05 12:40:52 +01:00
Edward Firmo
5988681132 Include common 2025-01-05 11:02:46 +01:00
Edward Firmo
5d80ce1117 Do not remove attributes twice 2025-01-05 01:34:18 +01:00
Edward Firmo
036e62b277 Remove check for framework type 2025-01-05 01:06:52 +01:00
Edward Firmo
56c613a70f Remove sw_speaker_amplifier when the media_player is removed 2025-01-05 00:54:48 +01:00
Edward Firmo
12fd2d3747 Lint 2025-01-05 00:38:30 +01:00
Edward Firmo
81f0420987 Lint 2025-01-05 00:37:05 +01:00
Edward Firmo
e89adca5cb Remove reference to esphome_fw_version 2025-01-05 00:34:40 +01:00
Edward Firmo
a64c45b37b Media Player is not compatible with IDF 2025-01-04 23:58:05 +01:00
Edward Firmo
95291c0381 Remove non-essential packages 2025-01-04 23:54:35 +01:00
Edward Firmo
39cf0f2b10 Do not remove media player from core 2025-01-04 22:58:09 +01:00
Edward Firmo
8d03105caf Reorg tests 2025-01-04 22:54:08 +01:00
Edward Firmo
e911482deb Lint 2025-01-04 22:39:31 +01:00
Edward Firmo
ef4f412223 Split extensions 2025-01-04 22:38:19 +01:00
Edward Firmo
9d64b099a4 Lint 2025-01-04 22:34:38 +01:00
Edward Firmo
037801e961 Revert to media player and neopixelbus 2025-01-04 22:31:14 +01:00
Edward Firmo
79b57304c7 Point users to stable tag. 2025-01-03 22:53:46 +01:00
Matthijs33
48ddfbf8b0 Update TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml
fixes #74
Value was "OFF" instead of "ON"
2025-01-01 14:32:17 +01:00
GitHub Actions
2e43160acb Bump version to 2024.12.27 [skip-versioning] 2024-12-28 00:11:36 +00:00
Edward Firmo
8656d0c4ca Merge pull request #81 from skykingjwc/patch-1
Update README.md
2024-12-28 01:11:26 +01:00
Jordan W. Cobb
133d571874 Update README.md
Corrected path to TX-Ultimate-Easy-ESPHome.yaml
2024-12-27 17:39:05 -05:00
GitHub Actions
1489bc5237 Bump version to 2024.12.26 [skip-versioning] 2024-12-27 10:12:23 +00:00
Edward Firmo
11b21de8a9 Merge pull request #80 from edwardtfn/adaptative-logo
Adaptative logo
2024-12-27 11:12:12 +01:00
Edward Firmo
e8346e4436 Revert the new line thing
It broke the visual
2024-12-27 11:09:11 +01:00
Edward Firmo
e3abc6c6d5 Split table in lines 2024-12-27 11:07:31 +01:00
Edward Firmo
3e847bbd4a Allow for Inline HTML 2024-12-27 11:05:12 +01:00
Edward Firmo
ba69b43688 Adaptative logo 2024-12-27 11:02:25 +01:00
42 changed files with 651 additions and 546 deletions

View File

@@ -8,10 +8,22 @@ permissions:
on: # yamllint disable-line rule:truthy on: # yamllint disable-line rule:truthy
push: push:
paths: paths:
- "**/*.{yml,yaml,h,cpp,c,py}" # Match any file with the extensions in any directory - "**/*.yml"
- "**/*.yaml"
- "**/*.h"
- "**/*.cpp"
- "**/*.c"
- "**/*.py"
pull_request: pull_request:
paths: paths:
- "**/*.{yml,yaml,h,cpp,c,py}" # Match any file with the extensions in any directory - "**/*.yml"
- "**/*.yaml"
- "**/*.h"
- "**/*.cpp"
- "**/*.c"
- "**/*.py"
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:

View File

@@ -4,7 +4,6 @@
# 2. Manual dispatch - allows independent control over stable and latest tags # 2. Manual dispatch - allows independent control over stable and latest tags
--- ---
name: Version and Tags name: Version and Tags
on: # yamllint disable-line rule:truthy on: # yamllint disable-line rule:truthy
@@ -56,10 +55,9 @@ jobs:
- name: Update stable tag - name: Update stable tag
if: | if: |
success() && ( success() &&
github.event_name == 'workflow_dispatch' && inputs.update_stable || github.event_name == 'workflow_dispatch' &&
github.event_name == 'push' inputs.update_stable
)
run: | run: |
# Verify version bump was successful # Verify version bump was successful
if [ ! -f "./versioning/VERSION" ]; then if [ ! -f "./versioning/VERSION" ]; then

5
.test/common.yaml Normal file
View File

@@ -0,0 +1,5 @@
---
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
...

8
.test/common_ard.yaml Normal file
View File

@@ -0,0 +1,8 @@
---
packages:
common: !include common.yaml
esp32:
framework:
type: arduino
...

19
.test/common_idf.yaml Normal file
View File

@@ -0,0 +1,19 @@
---
packages:
common: !include common.yaml
esp32:
framework:
type: esp-idf
light:
- id: !extend light_full
platform: esp32_rmt_led_strip
rgb_order: GRB
rmt_channel: 1
chipset: ws2812
max_refresh_rate: 33ms
use_psram: false
type: !remove
variant: !remove
...

10
.test/common_idf53.yaml Normal file
View File

@@ -0,0 +1,10 @@
---
packages:
common_idf: !include common_idf.yaml
esp32:
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,14 +1,7 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,12 +1,5 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,15 +1,8 @@
--- ---
packages: packages:
common_arduino: !include common_ard.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml
standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml
addon_media_player: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml addon_media_player: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml
esp32:
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,15 +1,11 @@
--- ---
packages: packages:
common_idf53: !include common_idf53.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
esp32: media_player: !remove
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
wifi: switch:
ssid: !secret wifi_ssid - id: !remove sw_speaker_amplifier
password: !secret wifi_password
... ...

View File

@@ -1,5 +1,6 @@
--- ---
packages: packages:
common: !include common.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml
@@ -9,8 +10,4 @@ esp32:
type: esp-idf type: esp-idf
version: 5.3.1 version: 5.3.1
platform_version: 6.9.0 platform_version: 6.9.0
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,14 +1,5 @@
--- ---
packages: packages:
common_idf53: !include common_idf53.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
esp32:
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,15 +1,6 @@
--- ---
packages: packages:
common_idf53: !include common_idf53.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml
esp32:
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,15 +1,6 @@
--- ---
packages: packages:
common_idf53: !include common_idf53.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
esp32:
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,15 +1,6 @@
--- ---
packages: packages:
common_idf53: !include common_idf53.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml
esp32:
framework:
type: esp-idf
version: 5.3.1
platform_version: 6.9.0
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,11 @@
--- ---
packages: packages:
common_idf: !include common_idf.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
esp32: media_player: !remove
framework:
type: esp-idf
wifi: switch:
ssid: !secret wifi_ssid - id: !remove sw_speaker_amplifier
password: !secret wifi_password
... ...

View File

@@ -1,14 +1,7 @@
--- ---
packages: packages:
common: !include common.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml
esp32:
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,12 +1,5 @@
--- ---
packages: packages:
common_idf: !include common_idf.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
esp32:
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_idf: !include common_idf.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml standard_hw_relays_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml
esp32:
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_idf: !include common_idf.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml standard_hw_speaker_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
esp32:
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

View File

@@ -1,13 +1,6 @@
--- ---
packages: packages:
common_idf: !include common_idf.yaml
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml standard_hw_vibration_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml
esp32:
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
... ...

BIN
Assets/Logo_dark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

BIN
Assets/Logo_dark.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

BIN
Assets/Logo_light.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@@ -0,0 +1,19 @@
####################################################################################################
##### TX Ultimate Easy for ESPHome #####
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
####################################################################################################
##### Purpose: ESPHome Basic (includes core plus non-essential, but recommended packages) #####
####################################################################################################
##### 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. #####
####################################################################################################
---
packages:
# yamllint disable rule:colons
core: !include TX-Ultimate-Easy-ESPHome_core.yaml
standard: !include TX-Ultimate-Easy-ESPHome_standard.yaml
# yamllint enable rule:colons
...

View File

@@ -11,13 +11,35 @@
##### - For normal system use, modifications to this file are NOT required. ##### ##### - For normal system use, modifications to this file are NOT required. #####
#################################################################################################### ####################################################################################################
--- ---
packages:
standard_hw_speaker: !include TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
bluetooth_proxy: bluetooth_proxy:
esp32:
framework:
type: esp-idf
esphome: esphome:
platformio_options: platformio_options:
build_flags: build_flags:
- -D TX_ULTIMATE_EASY_ADDON_BLE_PROXY - -D TX_ULTIMATE_EASY_ADDON_BLE_PROXY
i2s_audio: !remove
light:
- id: !extend light_full
platform: esp32_rmt_led_strip
rgb_order: GRB
rmt_channel: 1
chipset: ws2812
max_refresh_rate: 33ms
use_psram: false
type: !remove
variant: !remove
media_player: !remove
script: script:
- id: !extend dump_config_list_packages - id: !extend dump_config_list_packages
then: then:
@@ -30,4 +52,7 @@ script:
// Identify itself // Identify itself
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy"); ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy");
switch:
- id: !remove sw_speaker_amplifier
... ...

View File

@@ -11,312 +11,11 @@
##### - For normal system use, modifications to this file are NOT required. ##### ##### - For normal system use, modifications to this file are NOT required. #####
#################################################################################################### ####################################################################################################
--- ---
substitutions:
name: tx-ultimate-easy
friendly_name: TX Ultimate Easy
<<: !include ../versioning/VERSION_YAML
TX_MODEL_FORMAT_EU_TEXT: "EU (Square, T5-xC-86)"
TX_MODEL_FORMAT_US_TEXT: "US (Rectangle, T5-xC-120)"
TX_MODEL_1_GANG_TEXT: "1 Gang"
TX_MODEL_2_GANG_TEXT: "2 Gang"
TX_MODEL_3_GANG_TEXT: "3 Gang"
TX_MODEL_4_GANG_TEXT: "4 Gang"
DUMP_CONFIG_CALLER_DELAY: 10s # Delay to dump config after requested
packages: packages:
# yamllint disable rule:colons # yamllint disable rule:colons
core_common: !include TX-Ultimate-Easy-ESPHome_core_common.yaml
core_hw_buttons: !include TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml core_hw_buttons: !include TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml
core_hw_leds: !include TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml core_hw_leds: !include TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml
core_hw_touch: !include TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml core_hw_touch: !include TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml
# yamllint enable rule:colons # yamllint enable rule:colons
api:
id: api_server
on_client_connected:
then:
- script.execute: dump_config_caller
- script.execute: publish_device_info
binary_sensor:
- id: bs_pending_restart
name: Pending Restart Status
internal: false
disabled_by_default: false
platform: template
entity_category: diagnostic
device_class: problem
on_state:
then:
- lambda: |-
if (x)
ESP_LOGW("core", "Pending restart: YES");
else
ESP_LOGCONFIG("core", "Pending restart: No");
- script.execute: dump_config_caller
esp32:
board: esp32dev # adafruit_feather_esp32_v2 # esp32dev
flash_size: 8MB
framework:
type: esp-idf
esphome:
name: ${name}
friendly_name: ${friendly_name}
comment: TX Ultimate Easy
project:
name: "edwardtfn.tx_ultimate_easy"
version: ${version}
platformio_options:
build_flags:
- -D TX_ULTIMATE_EASY_CORE
on_boot:
- priority: 700
then:
- script.execute: boot_initialize
- priority: 600 # This is where most sensors are set up.
then:
- script.execute: boot_sequence
- priority: -100 # At this priority, pretty much everything should already be initialized.
then:
- script.execute: boot_done
globals:
- id: is_us_model
type: bool
restore_value: true
initial_value: 'false'
- id: gang_count
type: uint8_t
restore_value: true
initial_value: '0'
- id: gang_count_plural_suffix
type: std::string
restore_value: true
max_restore_data_length: 3
# initial_value: "''"
logger:
level: DEBUG
ota:
platform: esphome
psram:
mode: octal
speed: 80MHz
script:
- id: api_send_ha_event_boot
mode: queued
parameters:
type: string
then:
- homeassistant.event:
event: esphome.tx_ultimate_easy
data:
device_name: !lambda return tx_device_name->state.c_str();
firmware: ${version}
domain: boot
type: !lambda return type.c_str();
- id: boot_done
mode: restart
then:
- script.execute:
id: api_send_ha_event_boot
type: done
- id: boot_initialize
mode: restart
then:
# Extended by:
# - HW Buttons
# - HW Relays
# - HW Touch
- script.execute:
id: api_send_ha_event_boot
type: start
- wait_until:
condition:
- lambda: return sl_tx_model_format->active_index().has_value();
- lambda: return sl_tx_model_gang->active_index().has_value();
- lambda: |-
id(is_us_model) = (sl_tx_model_format->state == "${TX_MODEL_FORMAT_US_TEXT}");
id(gang_count) = sl_tx_model_gang->active_index().value() + 1;
if (id(gang_count) < 1 || id(gang_count) > 4) {
ESP_LOGE("core_hw_leds", "Invalid number of gangs: %" PRIu8, id(gang_count));
}
id(gang_count_plural_suffix) = id(gang_count) > 1 ? "s" : "";
- id: boot_sequence
mode: restart
then:
- script.execute: publish_device_info
- binary_sensor.template.publish:
id: bs_pending_restart
state: false
- id: dump_config
mode: restart
then:
# Extended by all modules
- lambda: |-
// Device identification
ESP_LOGCONFIG("core", "Device friendly name: ${friendly_name}");
ESP_LOGCONFIG("core", "Device name: ${name}");
ESP_LOGCONFIG("core", "Device name (HA): %s", tx_device_name->state.c_str());
ESP_LOGCONFIG("core", "Device hostname: %s", App.get_name().c_str());
dump_config_versions->execute();
// Framework detection
#ifdef USE_ARDUINO
ESP_LOGCONFIG("core", "Framework: Arduino");
#elif defined(USE_ESP_IDF)
ESP_LOGCONFIG("core", "Framework: ESP-IDF");
#else
ESP_LOGW("core", "Framework: UNKNOWN");
#endif
// Model configuration
ESP_LOGCONFIG("core", "Model format (selected): %s", sl_tx_model_format->state.c_str());
ESP_LOGCONFIG("core", "Model format (detected): %s", id(is_us_model) ? "US" : "EU");
ESP_LOGCONFIG("core", "Gangs (selected): %s", sl_tx_model_gang->state.c_str());
ESP_LOGCONFIG("core", "Gangs (detected): %" PRIu8 "-Gang%s", id(gang_count), id(gang_count_plural_suffix).c_str());
// System state
if (bs_pending_restart->state)
ESP_LOGW("core", "Pending restart: YES");
else
ESP_LOGCONFIG("core", "Pending restart: No");
- id: dump_config_caller
mode: restart
then:
- delay: ${DUMP_CONFIG_CALLER_DELAY}
- script.execute: dump_config
- script.wait: dump_config
- script.execute: dump_config_list_packages
- id: dump_config_list_packages
mode: restart
then:
- script.wait: dump_config
- lambda: |-
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, "Installed packages:");
// Identify itself
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Core");
- id: dump_config_versions
mode: restart
then:
- lambda: |-
// Version information
ESP_LOGCONFIG("core", "TX Ultimate firmware version: ${version}");
- id: publish_device_info
mode: restart
then:
- lambda: |-
tx_fw_version->publish_state("${version}");
tx_device_name->publish_state(App.get_name().c_str());
select:
- id: sl_tx_model_format
name: Model (Format)
platform: template
options:
- "${TX_MODEL_FORMAT_EU_TEXT}"
- "${TX_MODEL_FORMAT_US_TEXT}"
initial_option: "${TX_MODEL_FORMAT_EU_TEXT}"
optimistic: true
restore_value: true
internal: false
entity_category: config
disabled_by_default: false
icon: mdi:tablet-cellphone
on_value:
then:
- binary_sensor.template.publish:
id: bs_pending_restart
state: true
- lambda: |-
id(is_us_model) = (x == "${TX_MODEL_FORMAT_US_TEXT}");
ESP_LOGI("core", "New model selected: %s", id(is_us_model) ? "US" : "EU");
- id: sl_tx_model_gang
name: Model (Gang)
platform: template
options:
- "${TX_MODEL_1_GANG_TEXT}"
- "${TX_MODEL_2_GANG_TEXT}"
- "${TX_MODEL_3_GANG_TEXT}"
- "${TX_MODEL_4_GANG_TEXT}"
initial_option: "${TX_MODEL_1_GANG_TEXT}"
optimistic: true
restore_value: true
internal: false
entity_category: config
disabled_by_default: false
icon: mdi:dip-switch
on_value:
then:
- binary_sensor.template.publish:
id: bs_pending_restart
state: true
- lambda: |-
id(gang_count) = static_cast<uint8_t>(i) + 1;
ESP_LOGI("core", "New model selected: %" PRIu8 "-%s", id(gang_count), id(gang_count) > 1 ? "Gangs" : "Gang");
tx_ultimate->set_gang_count(id(gang_count));
text_sensor:
- id: tx_fw_version
name: TX Ultimate Easy Firmware Version
platform: template
entity_category: diagnostic
icon: mdi:tag-text-outline
internal: false
update_interval: never
lambda: |-
return {"${version}"};
- id: tx_device_name
name: Device Name
platform: template
icon: mdi:identifier
entity_category: diagnostic
internal: false
disabled_by_default: false
update_interval: never
lambda: |-
return {"${name}"};
filters:
- lambda: |-
const std::string raw_name = x;
std::string result;
bool last_was_underscore = false;
for (const char& c : raw_name) {
if (isalnum(c)) {
result += tolower(c); // Add alphanumeric characters as lowercase
last_was_underscore = false;
} else if (!last_was_underscore) { // Replace non-alphanumeric with '_' but avoid consecutive '_'
result += '_';
last_was_underscore = true;
}
}
return result;
wifi:
id: wifi_component
... ...

View File

@@ -0,0 +1,322 @@
####################################################################################################
##### TX Ultimate Easy for ESPHome #####
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
####################################################################################################
##### Purpose: ESPHome Core - Common #####
####################################################################################################
##### 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:
name: tx-ultimate-easy
friendly_name: TX Ultimate Easy
<<: !include ../versioning/VERSION_YAML
TX_MODEL_FORMAT_EU_TEXT: "EU (Square, T5-xC-86)"
TX_MODEL_FORMAT_US_TEXT: "US (Rectangle, T5-xC-120)"
TX_MODEL_1_GANG_TEXT: "1 Gang"
TX_MODEL_2_GANG_TEXT: "2 Gang"
TX_MODEL_3_GANG_TEXT: "3 Gang"
TX_MODEL_4_GANG_TEXT: "4 Gang"
DUMP_CONFIG_CALLER_DELAY: 10s # Delay to dump config after requested
api:
id: api_server
on_client_connected:
then:
- script.execute: dump_config_caller
- script.execute: publish_device_info
binary_sensor:
- id: bs_pending_restart
name: Pending Restart Status
internal: false
disabled_by_default: false
platform: template
entity_category: diagnostic
device_class: problem
on_state:
then:
- lambda: |-
if (x)
ESP_LOGW("core", "Pending restart: YES");
else
ESP_LOGCONFIG("core", "Pending restart: No");
- script.execute: dump_config_caller
button:
- id: bt_restart
name: Restart
internal: false
platform: restart
esp32:
board: esp32dev
flash_size: 8MB
esphome:
name: ${name}
friendly_name: ${friendly_name}
comment: TX Ultimate Easy
project:
name: "edwardtfn.tx_ultimate_easy"
version: ${version}
platformio_options:
build_flags:
- -D TX_ULTIMATE_EASY_CORE
on_boot:
- priority: 700
then:
- script.execute: boot_initialize
- priority: 600 # This is where most sensors are set up.
then:
- script.execute: boot_sequence
- priority: -100 # At this priority, pretty much everything should already be initialized.
then:
- script.execute: boot_done
globals:
- id: is_us_model
type: bool
restore_value: true
initial_value: 'false'
- id: gang_count
type: uint8_t
restore_value: true
initial_value: '0'
- id: gang_count_plural_suffix
type: std::string
restore_value: true
max_restore_data_length: 3
logger:
level: DEBUG
ota:
platform: esphome
psram:
mode: octal
speed: 80MHz
script:
- id: api_send_ha_event_boot
mode: queued
parameters:
type: string
then:
- homeassistant.event:
event: esphome.tx_ultimate_easy
data:
device_name: !lambda return tx_device_name->state.c_str();
firmware: ${version}
domain: boot
type: !lambda return type.c_str();
- id: boot_done
mode: restart
then:
- script.execute:
id: api_send_ha_event_boot
type: done
- id: boot_initialize
mode: restart
then:
# Extended by:
# - HW Buttons
# - HW Relays
# - HW Touch
- script.execute:
id: api_send_ha_event_boot
type: start
- wait_until:
condition:
- lambda: return sl_tx_model_format->active_index().has_value();
- lambda: return sl_tx_model_gang->active_index().has_value();
- lambda: |-
id(is_us_model) = (sl_tx_model_format->state == "${TX_MODEL_FORMAT_US_TEXT}");
id(gang_count) = sl_tx_model_gang->active_index().value() + 1;
if (id(gang_count) < 1 || id(gang_count) > 4) {
ESP_LOGE("core_hw_leds", "Invalid number of gangs: %" PRIu8, id(gang_count));
}
id(gang_count_plural_suffix) = id(gang_count) > 1 ? "s" : "";
- id: boot_sequence
mode: restart
then:
- script.execute: publish_device_info
- binary_sensor.template.publish:
id: bs_pending_restart
state: false
- id: dump_config
mode: restart
then:
# Extended by all modules
- lambda: |-
// Device identification
ESP_LOGCONFIG("core", "Device friendly name: ${friendly_name}");
ESP_LOGCONFIG("core", "Device name: ${name}");
ESP_LOGCONFIG("core", "Device name (HA): %s", tx_device_name->state.c_str());
ESP_LOGCONFIG("core", "Device hostname: %s", App.get_name().c_str());
dump_config_versions->execute();
// Framework detection
#ifdef USE_ARDUINO
ESP_LOGCONFIG("core", "Framework: Arduino");
#elif defined(USE_ESP_IDF)
ESP_LOGCONFIG("core", "Framework: ESP-IDF");
#else
ESP_LOGW("core", "Framework: UNKNOWN");
#endif
// Model configuration
ESP_LOGCONFIG("core", "Model format (selected): %s", sl_tx_model_format->state.c_str());
ESP_LOGCONFIG("core", "Model format (detected): %s", id(is_us_model) ? "US" : "EU");
ESP_LOGCONFIG("core", "Gangs (selected): %s", sl_tx_model_gang->state.c_str());
ESP_LOGCONFIG("core", "Gangs (detected): %" PRIu8 "-Gang%s", id(gang_count), id(gang_count_plural_suffix).c_str());
// System state
if (bs_pending_restart->state)
ESP_LOGW("core", "Pending restart: YES");
else
ESP_LOGCONFIG("core", "Pending restart: No");
- id: dump_config_caller
mode: restart
then:
- delay: ${DUMP_CONFIG_CALLER_DELAY}
- script.execute: dump_config
- script.wait: dump_config
- script.execute: dump_config_list_packages
- id: dump_config_list_packages
mode: restart
then:
- script.wait: dump_config
- lambda: |-
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, "Installed packages:");
// Identify itself
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Core");
- id: dump_config_versions
mode: restart
then:
- lambda: |-
// Version information
ESP_LOGCONFIG("core", "TX Ultimate firmware version: ${version}");
// ESPHome builder information
ESP_LOGCONFIG("core", "ESPHome builder: " ESPHOME_VERSION);
ESP_LOGCONFIG("core", "ESPHome build timestamp: %s", App.get_compilation_time().c_str());
- id: publish_device_info
mode: restart
then:
- lambda: |-
tx_fw_version->publish_state("${version}");
tx_device_name->publish_state(App.get_name().c_str());
select:
- id: sl_tx_model_format
name: Model (Format)
platform: template
options:
- "${TX_MODEL_FORMAT_EU_TEXT}"
- "${TX_MODEL_FORMAT_US_TEXT}"
initial_option: "${TX_MODEL_FORMAT_EU_TEXT}"
optimistic: true
restore_value: true
internal: false
entity_category: config
disabled_by_default: false
icon: mdi:tablet-cellphone
on_value:
then:
- binary_sensor.template.publish:
id: bs_pending_restart
state: true
- lambda: |-
id(is_us_model) = (x == "${TX_MODEL_FORMAT_US_TEXT}");
ESP_LOGI("core", "New model selected: %s", id(is_us_model) ? "US" : "EU");
- id: sl_tx_model_gang
name: Model (Gang)
platform: template
options:
- "${TX_MODEL_1_GANG_TEXT}"
- "${TX_MODEL_2_GANG_TEXT}"
- "${TX_MODEL_3_GANG_TEXT}"
- "${TX_MODEL_4_GANG_TEXT}"
initial_option: "${TX_MODEL_1_GANG_TEXT}"
optimistic: true
restore_value: true
internal: false
entity_category: config
disabled_by_default: false
icon: mdi:dip-switch
on_value:
then:
- binary_sensor.template.publish:
id: bs_pending_restart
state: true
- lambda: |-
id(gang_count) = static_cast<uint8_t>(i) + 1;
ESP_LOGI("core", "New model selected: %" PRIu8 "-%s", id(gang_count), id(gang_count) > 1 ? "Gangs" : "Gang");
tx_ultimate->set_gang_count(id(gang_count));
text_sensor:
- id: tx_fw_version
name: TX Ultimate Easy Firmware Version
platform: template
entity_category: diagnostic
icon: mdi:tag-text-outline
internal: false
update_interval: never
lambda: |-
return {"${version}"};
- id: tx_device_name
name: Device Name
platform: template
icon: mdi:identifier
entity_category: diagnostic
internal: false
disabled_by_default: false
update_interval: never
lambda: |-
return {"${name}"};
filters:
- lambda: |-
const std::string raw_name = x;
std::string result;
bool last_was_underscore = false;
for (const char& c : raw_name) {
if (isalnum(c)) {
result += tolower(c); // Add alphanumeric characters as lowercase
last_was_underscore = false;
} else if (!last_was_underscore) { // Replace non-alphanumeric with '_' but avoid consecutive '_'
result += '_';
last_was_underscore = true;
}
}
return result;
wifi:
id: wifi_component
...

View File

@@ -47,15 +47,12 @@ light:
- id: light_full - id: light_full
name: Light - All name: Light - All
internal: true internal: true
platform: esp32_rmt_led_strip
rgb_order: GRB
rmt_channel: 1
chipset: ws2812
num_leds: 32 num_leds: 32
pin: GPIO13 pin: GPIO13
restore_mode: ${LIGHT_FULL_RESTORE_MODE} restore_mode: ${LIGHT_FULL_RESTORE_MODE}
max_refresh_rate: 33ms platform: neopixelbus
use_psram: true type: GRB
variant: WS2811
# Those lights are available based on the model selections # Those lights are available based on the model selections
- &light_partition_with_effects - &light_partition_with_effects

View File

@@ -318,7 +318,7 @@ script:
# - HW Vibration # - HW Vibration
- binary_sensor.template.publish: - binary_sensor.template.publish:
id: bs_multi_touch id: bs_multi_touch
state: OFF # yamllint disable-line rule:truthy state: ON # yamllint disable-line rule:truthy
- id: touch_on_press - id: touch_on_press
mode: restart mode: restart

View File

@@ -13,60 +13,8 @@
--- ---
packages: packages:
# yamllint disable rule:colons # yamllint disable rule:colons
core_hw_relays: !include TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml standard_hw_relays: !include TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml
core_hw_speaker: !include TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml standard_hw_vibration: !include TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml
core_hw_vibration: !include TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml standard_media_player: !include TX-Ultimate-Easy-ESPHome_standard_media_player.yaml
# yamllint enable rule:colons # yamllint enable rule:colons
button:
- id: bt_restart
name: Restart
internal: false
platform: restart
captive_portal:
id: ap_captive_portal
esphome:
platformio_options:
build_flags:
- -D TX_ULTIMATE_EASY_STANDARD
script:
- id: !extend dump_config_list_packages
then:
- script.wait: dump_config
- lambda: |-
// Check for requirements
#if !defined(TX_ULTIMATE_EASY_CORE)
#error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required."
#endif
// Identify itself
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard");
- id: !extend dump_config_versions
then:
- lambda: |-
// Version information
ESP_LOGCONFIG("standard", "ESPHome builder: %s", esphome_fw_version->state.c_str());
improv_serial:
id: serial_improv
text_sensor:
- id: esphome_fw_version
name: ESPHome Version
platform: version
entity_category: diagnostic
internal: false
time:
- id: time_source
platform: homeassistant
web_server:
wifi:
ap:
... ...

View File

@@ -0,0 +1,64 @@
####################################################################################################
##### TX Ultimate Easy for ESPHome #####
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
####################################################################################################
##### Purpose: ESPHome - Add-on - Media player #####
####################################################################################################
##### 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. #####
####################################################################################################
---
packages:
standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
esphome:
platformio_options:
build_flags:
- -D TX_ULTIMATE_EASY_ADDON_MEDIA_PLAYER
media_player:
- id: mp_media_player
name: Media Player
internal: false
platform: i2s_audio
i2s_dout_pin: GPIO15
i2s_audio_id: if_i2s_audio
i2s_comm_fmt: msb
dac_type: external
mode: mono
mute_pin:
number: GPIO26
inverted: true
allow_other_uses: true
script:
- id: !extend dump_config_list_packages
then:
- script.wait: dump_config
- lambda: |-
// Check for requirements
#if !defined(TX_ULTIMATE_EASY_CORE)
#error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required."
#endif
#if !defined(TX_ULTIMATE_EASY_STANDARD_HW_AUDIO)
#error "The package TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml is required."
#endif
// Identify itself
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - Media Player");
switch:
- id: sw_speaker_amplifier
name: Speaker - Amplifier
platform: gpio
pin:
number: GPIO26
inverted: true
allow_other_uses: true
restore_mode: RESTORE_DEFAULT_ON
internal: true
entity_category: config
...

View File

@@ -8,10 +8,10 @@
[![Discord][discord-shield]](https://discord.gg/Db6WJWzWuf) [![Discord][discord-shield]](https://discord.gg/Db6WJWzWuf)
[![Buy me an ice-cream][buymeacoffee-shield]](https://www.buymeacoffee.com/edwardfirmo) [![Buy me an ice-cream][buymeacoffee-shield]](https://www.buymeacoffee.com/edwardfirmo)
<!-- markdownlint-disable MD013 --> <!-- markdownlint-disable MD013 MD033 -->
| &nbsp;![TX Ultimate Easy Logo](Assets/Logo.webp) | TX Ultimate Easy provides custom ESPHome firmware for Sonoff TX Ultimate devices. Our project focuses on user-friendly configuration through the Home Assistant UI, eliminating the need for manual YAML editing. Whether you're new to home automation or an experienced user, TX Ultimate Easy makes it simple to manage your device. | | &nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="Assets/Logo_dark.png"><source media="(prefers-color-scheme: light)" srcset="Assets/Logo_light.png"><img alt="TX Ultimate Easy Logo" src="Assets/Logo_light.png"></picture> | TX Ultimate Easy provides custom ESPHome firmware for Sonoff TX Ultimate devices. Our project focuses on user-friendly configuration through the Home Assistant UI, eliminating the need for manual YAML editing. Whether you're new to home automation or an experienced user, TX Ultimate Easy makes it simple to manage your device. |
| --- | :-- | | --- | :-- |
<!-- markdownlint-enable MD013 --> <!-- markdownlint-enable MD013 MD033 -->
[version-shield]: https://img.shields.io/github/v/tag/edwardtfn/TX-Ultimate-Easy?label=version [version-shield]: https://img.shields.io/github/v/tag/edwardtfn/TX-Ultimate-Easy?label=version
[version]: https://github.com/edwardtfn/TX-Ultimate-Easy/tags [version]: https://github.com/edwardtfn/TX-Ultimate-Easy/tags
@@ -111,28 +111,81 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome.
4. Copy this basic configuration to your new device: 4. Copy this basic configuration to your new device:
```yaml ```yaml
substitutions: substitutions:
name: tx-ultimate-easy # Change this to your device name name: tx-ultimate-easy
friendly_name: TX Ultimate Easy friendly_name: TX Ultimate Easy
packages:
remote_package:
url: https://github.com/edwardtfn/TX-Ultimate-Easy
ref: main # For latest stable release
files:
- ESPHome/TX-Ultimate-Easy-ESPHome.yaml
wifi: wifi:
ssid: !secret wifi_ssid ssid: !secret wifi_ssid
password: !secret wifi_password password: !secret wifi_password
```
packages:
remote_package:
url: https://github.com/edwardtfn/TX-Ultimate-Easy
ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
refresh: 5min
files:
- ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml # Core (essential) packages
- ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml # Non-essential, but recommended packages
# - ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml # Adds BLE proxy support
```
You can also use a specific version tag for better control over updates: You can also use a specific version tag for better control over updates:
```yaml ```yaml
ref: v2024.12.2 # Using specific version for controlled updates ref: v2024.12.2 # Using specific version for controlled updates
``` ```
**Note:** [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available. **Notes:**
- [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available.
- [Click here](TX-Ultimate-Easy-ESPHome.yaml)
for the latest version of this yaml.
5. Click "Save" and then "Install" 5. Click "Save" and then "Install"
> [!IMPORTANT]
> Starting from version 2025.1.0, non-essential components like `web_server`, `captive_portal`, and `wifi`
> are no longer included in the core package. If you need these components,
> you must add them manually to your local configuration file.
> For example:
> ```yaml
> # Add these to your configuration if needed
> web_server:
> captive_portal:
> wifi:
> ap: # Access point configuration
> ```
### Advanced Settings
For more granular control over components,
you can use our [advanced configuration template](TX-Ultimate-Easy-ESPHome_advanced.yaml).
This template allows you to selectively include specific packages, which can be useful for:
- Troubleshooting specific components
- Reducing memory usage by excluding unused features
- Customizing functionality for specific use cases
Here's an example of the advanced configuration:
```yaml
packages:
remote_package:
url: https://github.com/edwardtfn/TX-Ultimate-Easy
ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
refresh: 5min
files:
# Core (essential) packages
- ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml # Basic shared settings
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml # Button logic
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml # LED configuration
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml # Touch panel support
# Optional but recommended packages
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml # Relay control
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml # Haptic feedback
# Audio options (use none or choose only one - using both will fail)
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml # Media player (Recommended for most users)
# - ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml # Basic speaker
```
> [!NOTE]
> Use the advanced configuration with caution. Excluding core packages may cause instability or reduced functionality.
### Device Flashing ### Device Flashing
Initial flashing must be done via serial connection. Initial flashing must be done via serial connection.
@@ -314,5 +367,9 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
--- ---
<!-- markdownlint-disable MD033 --> <!-- markdownlint-disable MD033 -->
<img src="Assets/Logo.webp" alt="TX Ultimate Easy Logo" width="100"/> <picture>
<source media="(prefers-color-scheme: dark)" srcset="Assets/Logo_dark.png">
<source media="(prefers-color-scheme: light)" srcset="Assets/Logo_light.png">
<img alt="TX Ultimate Easy Logo" src="Assets/Logo_light.png" width="100">
</picture>
<!-- markdownlint-enable MD033 --> <!-- markdownlint-enable MD033 -->

View File

@@ -16,11 +16,10 @@ wifi:
packages: packages:
remote_package: remote_package:
url: https://github.com/edwardtfn/TX-Ultimate-Easy url: https://github.com/edwardtfn/TX-Ultimate-Easy
ref: latest # Or you can specify a version, like `ref: v2024.12.6` ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
refresh: 5min refresh: 5min
files: files:
- ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml # Core (essential) packages - ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml # Core (essential) packages
- ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml # Non-essential, but recommended packages - ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml # Non-essential, but recommended packages
# - ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml # Adds BLE proxy support # - ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml # Adds BLE proxy support
# - ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml # Adds experimental Media Player (limited)
... ...

View File

@@ -0,0 +1,38 @@
####################################################################################################
##### TX Ultimate Easy for ESPHome #####
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
####################################################################################################
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
####################################################################################################
##### WARNING: This is an advanced configuration template. Use with caution as improper #####
##### configuration may lead to reduced functionality or system instability. #####
####################################################################################################
---
substitutions:
name: tx-ultimate-easy-adv
friendly_name: TX Ultimate Easy Advanced
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
packages:
remote_package:
url: https://github.com/edwardtfn/TX-Ultimate-Easy
ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
refresh: 5min
files:
# Core (essential) packages - Do not disable these unless you know what you're doing
- ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml # Basic shared settings
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml # Button logic
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml # LED configuration
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml # Touch panel support
# Optional functionality - Can be enabled/disabled as needed
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml # Relay control
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml # Haptic feedback
# Audio options (use none or choose only one - using both will fail)
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml # Media player (Recommended for most users)
# - ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml # Basic speaker
...

View File

@@ -1,11 +1,11 @@
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome import automation
from esphome.components import uart from esphome.components import uart
from esphome.const import ( from esphome.const import (
CONF_ID, CONF_ID,
) )
from esphome.core import CORE
from esphome import automation
CODEOWNERS = ["@edwardtfn"] CODEOWNERS = ["@edwardtfn"]
DEPENDENCIES = ['uart'] DEPENDENCIES = ['uart']
@@ -109,3 +109,17 @@ async def to_code(config):
await cg.register_component(var, config) await cg.register_component(var, config)
await uart.register_uart_device(var, config) await uart.register_uart_device(var, config)
await register_tx_ultimate_easy(var, config) await register_tx_ultimate_easy(var, config)
if CORE.using_esp_idf:
add_idf_sdkconfig_option("CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST", True)
add_idf_sdkconfig_option("CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY", True)
add_idf_sdkconfig_option("CONFIG_ESP32_REV_MIN_3", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_BUFFER", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_RODATA", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP", True)
cg.add_define("USE_TX_ULTIMATE_EASY")

View File

@@ -1 +1 @@
2024.12.25 2025.1.3

View File

@@ -1 +1 @@
version: 2024.12.25 version: 2025.1.3