From 79b57304c74adc2bd7471c55ce01c6490c256e74 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Fri, 3 Jan 2025 22:53:46 +0100 Subject: [PATCH 01/21] Point users to `stable` tag. --- .github/workflows/versioning.yml | 8 +++----- README.md | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml index 31a94d5..95518c3 100644 --- a/.github/workflows/versioning.yml +++ b/.github/workflows/versioning.yml @@ -4,7 +4,6 @@ # 2. Manual dispatch - allows independent control over stable and latest tags --- - name: Version and Tags on: # yamllint disable-line rule:truthy @@ -56,10 +55,9 @@ jobs: - name: Update stable tag if: | - success() && ( - github.event_name == 'workflow_dispatch' && inputs.update_stable || - github.event_name == 'push' - ) + success() && + github.event_name == 'workflow_dispatch' && + inputs.update_stable run: | # Verify version bump was successful if [ ! -f "./versioning/VERSION" ]; then diff --git a/README.md b/README.md index 4922e5d..18b9bdc 100644 --- a/README.md +++ b/README.md @@ -111,26 +111,31 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. 4. Copy this basic configuration to your new device: ```yaml substitutions: - name: tx-ultimate-easy # Change this to your device name + 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: - - TX-Ultimate-Easy-ESPHome.yaml - + 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: + - 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: ```yaml 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](https://github.com/edwardtfn/TX-Ultimate-Easy/blob/main/TX-Ultimate-Easy-ESPHome.yaml) + for the latest version of this yaml. 5. Click "Save" and then "Install" ### Device Flashing From 037801e9617428a1c2f5e608b28ebdc729d318c2 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:31:14 +0100 Subject: [PATCH 02/21] Revert to media player and neopixelbus --- ESPHome/TX-Ultimate-Easy-ESPHome.yaml | 19 ++++++ ...Ultimate-Easy-ESPHome_addon_ble_proxy.yaml | 33 +++++++++ ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml | 4 +- ...TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml | 9 +-- .../TX-Ultimate-Easy-ESPHome_standard.yaml | 6 +- ...te-Easy-ESPHome_standard_media_player.yaml | 68 +++++++++++++++++++ TX-Ultimate-Easy-ESPHome.yaml | 3 +- 7 files changed, 128 insertions(+), 14 deletions(-) create mode 100644 ESPHome/TX-Ultimate-Easy-ESPHome.yaml create mode 100644 ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome.yaml new file mode 100644 index 0000000..061c27c --- /dev/null +++ b/ESPHome/TX-Ultimate-Easy-ESPHome.yaml @@ -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 +... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml index 1346efb..c97a93e 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml @@ -11,13 +11,46 @@ ##### - 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: +esp32: + framework: + type: esp-idf + sdkconfig_options: + CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y" + CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y" + CONFIG_ESP32_REV_MIN_3: "y" + CONFIG_MBEDTLS_DYNAMIC_BUFFER: "y" + CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT: "y" + CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA: "y" + CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y" + CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: "y" + CONFIG_SPIRAM_RODATA: "y" + CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y" + esphome: platformio_options: build_flags: - -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: - id: !extend dump_config_list_packages then: diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml index 843ca1a..3c7b7e2 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml @@ -59,10 +59,8 @@ binary_sensor: - script.execute: dump_config_caller esp32: - board: esp32dev # adafruit_feather_esp32_v2 # esp32dev + board: esp32dev flash_size: 8MB - framework: - type: esp-idf esphome: name: ${name} diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml index 62579f7..76e3bf6 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml @@ -47,15 +47,12 @@ light: - id: light_full name: Light - All internal: true - platform: esp32_rmt_led_strip - rgb_order: GRB - rmt_channel: 1 - chipset: ws2812 num_leds: 32 pin: GPIO13 restore_mode: ${LIGHT_FULL_RESTORE_MODE} - max_refresh_rate: 33ms - use_psram: true + platform: neopixelbus + type: GRB + variant: WS2811 # Those lights are available based on the model selections - &light_partition_with_effects diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml index 0d9c0a7..bb044d2 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml @@ -13,9 +13,9 @@ --- packages: # yamllint disable rule:colons - core_hw_relays: !include TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml - core_hw_speaker: !include TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml - core_hw_vibration: !include TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml + standard_hw_relays: !include TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml + standard_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 button: diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml new file mode 100644 index 0000000..d6985fb --- /dev/null +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml @@ -0,0 +1,68 @@ +#################################################################################################### +##### 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 + +esp32: + framework: + type: arduino + +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 +... diff --git a/TX-Ultimate-Easy-ESPHome.yaml b/TX-Ultimate-Easy-ESPHome.yaml index f8cff7b..6653f8e 100644 --- a/TX-Ultimate-Easy-ESPHome.yaml +++ b/TX-Ultimate-Easy-ESPHome.yaml @@ -16,11 +16,10 @@ wifi: packages: remote_package: 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 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 - # - ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml # Adds experimental Media Player (limited) ... From 9d64b099a4fb1db4f5c5d20080515ae8561e4cdc Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:34:38 +0100 Subject: [PATCH 03/21] Lint --- .github/workflows/versioning.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml index 95518c3..ea3c246 100644 --- a/.github/workflows/versioning.yml +++ b/.github/workflows/versioning.yml @@ -55,8 +55,8 @@ jobs: - name: Update stable tag if: | - success() && - github.event_name == 'workflow_dispatch' && + success() && + github.event_name == 'workflow_dispatch' && inputs.update_stable run: | # Verify version bump was successful From ef4f412223b864e78ce4506e11e4fb9a4724a265 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:38:19 +0100 Subject: [PATCH 04/21] Split extensions --- .github/workflows/validate_esphome_beta.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_esphome_beta.yml b/.github/workflows/validate_esphome_beta.yml index bd40471..143c514 100644 --- a/.github/workflows/validate_esphome_beta.yml +++ b/.github/workflows/validate_esphome_beta.yml @@ -8,10 +8,22 @@ permissions: on: # yamllint disable-line rule:truthy push: paths: - - "**/*.{yml,yaml,h,cpp,c,py}" # Match any file with the extensions in any directory + - "**/*.yml" + - "**/*.yaml" + - "**/*.h" + - "**/*.cpp" + - "**/*.c" + - "**/*.py" + pull_request: paths: - - "**/*.{yml,yaml,h,cpp,c,py}" # Match any file with the extensions in any directory + - "**/*.yml" + - "**/*.yaml" + - "**/*.h" + - "**/*.cpp" + - "**/*.c" + - "**/*.py" + workflow_dispatch: concurrency: From e911482deb0e3db94ea86adc7d0336519b8152b7 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:39:31 +0100 Subject: [PATCH 05/21] Lint --- .github/workflows/validate_esphome_beta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_esphome_beta.yml b/.github/workflows/validate_esphome_beta.yml index 143c514..dedada4 100644 --- a/.github/workflows/validate_esphome_beta.yml +++ b/.github/workflows/validate_esphome_beta.yml @@ -11,7 +11,7 @@ on: # yamllint disable-line rule:truthy - "**/*.yml" - "**/*.yaml" - "**/*.h" - - "**/*.cpp" + - "**/*.cpp" - "**/*.c" - "**/*.py" From 8d03105cafdf094bfc65e3fdc1d4d5f9c2c1cc24 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:54:08 +0100 Subject: [PATCH 06/21] Reorg tests --- .test/common.yaml | 5 ++++ .test/common_ard.yaml | 8 +++++++ .test/common_idf.yaml | 34 +++++++++++++++++++++++++++ .test/common_idf53.yaml | 10 ++++++++ .test/esphome_ard_basic.yaml | 9 +------ .test/esphome_ard_ble_proxy.yaml | 9 +------ .test/esphome_ard_core.yaml | 9 +------ .test/esphome_ard_hw_relays.yaml | 9 +------ .test/esphome_ard_hw_speaker.yaml | 9 +------ .test/esphome_ard_hw_vibration.yaml | 9 +------ .test/esphome_ard_media_player.yaml | 9 +------ .test/esphome_idf53_basic.yaml | 11 +-------- .test/esphome_idf53_ble_proxy.yaml | 11 +-------- .test/esphome_idf53_core.yaml | 11 +-------- .test/esphome_idf53_hw_relays.yaml | 11 +-------- .test/esphome_idf53_hw_speaker.yaml | 11 +-------- .test/esphome_idf53_hw_vibration.yaml | 11 +-------- .test/esphome_idf_basic.yaml | 9 +------ .test/esphome_idf_ble_proxy.yaml | 9 +------ .test/esphome_idf_core.yaml | 9 +------ .test/esphome_idf_hw_relays.yaml | 9 +------ .test/esphome_idf_hw_speaker.yaml | 9 +------ .test/esphome_idf_hw_vibration.yaml | 9 +------ 23 files changed, 76 insertions(+), 164 deletions(-) create mode 100644 .test/common.yaml create mode 100644 .test/common_ard.yaml create mode 100644 .test/common_idf.yaml create mode 100644 .test/common_idf53.yaml diff --git a/.test/common.yaml b/.test/common.yaml new file mode 100644 index 0000000..ef08688 --- /dev/null +++ b/.test/common.yaml @@ -0,0 +1,5 @@ +--- +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password +... diff --git a/.test/common_ard.yaml b/.test/common_ard.yaml new file mode 100644 index 0000000..fbd0402 --- /dev/null +++ b/.test/common_ard.yaml @@ -0,0 +1,8 @@ +--- +packages: + common: !include common.yaml + +esp32: + framework: + type: arduino +... diff --git a/.test/common_idf.yaml b/.test/common_idf.yaml new file mode 100644 index 0000000..9616d0d --- /dev/null +++ b/.test/common_idf.yaml @@ -0,0 +1,34 @@ +--- +packages: + common: !include common.yaml + +esp32: + framework: + type: esp-idf + sdkconfig_options: + CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y" + CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y" + CONFIG_ESP32_REV_MIN_3: "y" + CONFIG_MBEDTLS_DYNAMIC_BUFFER: "y" + CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT: "y" + CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA: "y" + CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y" + CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: "y" + CONFIG_SPIRAM_RODATA: "y" + CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y" + +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 +... diff --git a/.test/common_idf53.yaml b/.test/common_idf53.yaml new file mode 100644 index 0000000..f2b9b5d --- /dev/null +++ b/.test/common_idf53.yaml @@ -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 +... diff --git a/.test/esphome_ard_basic.yaml b/.test/esphome_ard_basic.yaml index 20554a4..505acee 100644 --- a/.test/esphome_ard_basic.yaml +++ b/.test/esphome_ard_basic.yaml @@ -1,13 +1,6 @@ --- packages: + common_arduino: !include common_ard.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_ard_ble_proxy.yaml b/.test/esphome_ard_ble_proxy.yaml index 86cc07c..097e273 100644 --- a/.test/esphome_ard_ble_proxy.yaml +++ b/.test/esphome_ard_ble_proxy.yaml @@ -1,14 +1,7 @@ --- packages: + common_arduino: !include common_ard.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.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 ... diff --git a/.test/esphome_ard_core.yaml b/.test/esphome_ard_core.yaml index 1b50c90..6b9bdba 100644 --- a/.test/esphome_ard_core.yaml +++ b/.test/esphome_ard_core.yaml @@ -1,12 +1,5 @@ --- packages: + common_arduino: !include common_ard.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_ard_hw_relays.yaml b/.test/esphome_ard_hw_relays.yaml index 704ac7d..b12f6fe 100644 --- a/.test/esphome_ard_hw_relays.yaml +++ b/.test/esphome_ard_hw_relays.yaml @@ -1,13 +1,6 @@ --- packages: + common_arduino: !include common_ard.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 - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_ard_hw_speaker.yaml b/.test/esphome_ard_hw_speaker.yaml index 62272ca..e054db8 100644 --- a/.test/esphome_ard_hw_speaker.yaml +++ b/.test/esphome_ard_hw_speaker.yaml @@ -1,13 +1,6 @@ --- packages: + common_arduino: !include common_ard.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 - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_ard_hw_vibration.yaml b/.test/esphome_ard_hw_vibration.yaml index 5dbacea..b0f06f6 100644 --- a/.test/esphome_ard_hw_vibration.yaml +++ b/.test/esphome_ard_hw_vibration.yaml @@ -1,13 +1,6 @@ --- packages: + common_arduino: !include common_ard.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 - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_ard_media_player.yaml b/.test/esphome_ard_media_player.yaml index 9a9f744..f12a529 100644 --- a/.test/esphome_ard_media_player.yaml +++ b/.test/esphome_ard_media_player.yaml @@ -1,15 +1,8 @@ --- packages: + common_arduino: !include common_ard.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_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 - -esp32: - framework: - type: arduino - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf53_basic.yaml b/.test/esphome_idf53_basic.yaml index 1dabf1f..c420d7f 100644 --- a/.test/esphome_idf53_basic.yaml +++ b/.test/esphome_idf53_basic.yaml @@ -1,15 +1,6 @@ --- packages: + common_idf53: !include common_idf53.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml - -esp32: - framework: - type: esp-idf - version: 5.3.1 - platform_version: 6.9.0 - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf53_ble_proxy.yaml b/.test/esphome_idf53_ble_proxy.yaml index b17b6d2..9280dd2 100644 --- a/.test/esphome_idf53_ble_proxy.yaml +++ b/.test/esphome_idf53_ble_proxy.yaml @@ -1,16 +1,7 @@ --- packages: + common_idf53: !include common_idf53.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml - -esp32: - framework: - type: esp-idf - version: 5.3.1 - platform_version: 6.9.0 - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf53_core.yaml b/.test/esphome_idf53_core.yaml index 18239c7..82b38fc 100644 --- a/.test/esphome_idf53_core.yaml +++ b/.test/esphome_idf53_core.yaml @@ -1,14 +1,5 @@ --- packages: + common_idf53: !include common_idf53.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 ... diff --git a/.test/esphome_idf53_hw_relays.yaml b/.test/esphome_idf53_hw_relays.yaml index d9f5bd0..628bb79 100644 --- a/.test/esphome_idf53_hw_relays.yaml +++ b/.test/esphome_idf53_hw_relays.yaml @@ -1,15 +1,6 @@ --- packages: + common_idf53: !include common_idf53.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 - -esp32: - framework: - type: esp-idf - version: 5.3.1 - platform_version: 6.9.0 - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf53_hw_speaker.yaml b/.test/esphome_idf53_hw_speaker.yaml index 651ac37..4b4581f 100644 --- a/.test/esphome_idf53_hw_speaker.yaml +++ b/.test/esphome_idf53_hw_speaker.yaml @@ -1,15 +1,6 @@ --- packages: + common_idf53: !include common_idf53.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 - -esp32: - framework: - type: esp-idf - version: 5.3.1 - platform_version: 6.9.0 - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf53_hw_vibration.yaml b/.test/esphome_idf53_hw_vibration.yaml index d0a5ed3..1bc90ad 100644 --- a/.test/esphome_idf53_hw_vibration.yaml +++ b/.test/esphome_idf53_hw_vibration.yaml @@ -1,15 +1,6 @@ --- packages: + common_idf53: !include common_idf53.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 - -esp32: - framework: - type: esp-idf - version: 5.3.1 - platform_version: 6.9.0 - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf_basic.yaml b/.test/esphome_idf_basic.yaml index ab3d202..d4d0357 100644 --- a/.test/esphome_idf_basic.yaml +++ b/.test/esphome_idf_basic.yaml @@ -1,13 +1,6 @@ --- packages: + common_idf: !include common_idf.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml - -esp32: - framework: - type: esp-idf - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf_ble_proxy.yaml b/.test/esphome_idf_ble_proxy.yaml index c972d0f..a72bcdb 100644 --- a/.test/esphome_idf_ble_proxy.yaml +++ b/.test/esphome_idf_ble_proxy.yaml @@ -1,14 +1,7 @@ --- packages: + common_idf: !include common_idf.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.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 ... diff --git a/.test/esphome_idf_core.yaml b/.test/esphome_idf_core.yaml index 846889a..6cb4742 100644 --- a/.test/esphome_idf_core.yaml +++ b/.test/esphome_idf_core.yaml @@ -1,12 +1,5 @@ --- packages: + common_idf: !include common_idf.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 ... diff --git a/.test/esphome_idf_hw_relays.yaml b/.test/esphome_idf_hw_relays.yaml index d78b1b4..b746d8a 100644 --- a/.test/esphome_idf_hw_relays.yaml +++ b/.test/esphome_idf_hw_relays.yaml @@ -1,13 +1,6 @@ --- packages: + common_idf: !include common_idf.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 - -esp32: - framework: - type: esp-idf - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf_hw_speaker.yaml b/.test/esphome_idf_hw_speaker.yaml index 8bcf3ff..2ce797a 100644 --- a/.test/esphome_idf_hw_speaker.yaml +++ b/.test/esphome_idf_hw_speaker.yaml @@ -1,13 +1,6 @@ --- packages: + common_idf: !include common_idf.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 - -esp32: - framework: - type: esp-idf - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... diff --git a/.test/esphome_idf_hw_vibration.yaml b/.test/esphome_idf_hw_vibration.yaml index 8ac9039..30d7358 100644 --- a/.test/esphome_idf_hw_vibration.yaml +++ b/.test/esphome_idf_hw_vibration.yaml @@ -1,13 +1,6 @@ --- packages: + common_idf: !include common_idf.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 - -esp32: - framework: - type: esp-idf - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password ... From 39cf0f2b1010aa0678a8065a6053caae81ae864f Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:58:09 +0100 Subject: [PATCH 07/21] Do not remove media player from core --- .test/common_idf.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.test/common_idf.yaml b/.test/common_idf.yaml index 9616d0d..ebcaad5 100644 --- a/.test/common_idf.yaml +++ b/.test/common_idf.yaml @@ -17,8 +17,6 @@ esp32: CONFIG_SPIRAM_RODATA: "y" CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y" -i2s_audio: !remove - light: - id: !extend light_full platform: esp32_rmt_led_strip @@ -29,6 +27,4 @@ light: use_psram: false type: !remove variant: !remove - -media_player: !remove ... From 95291c0381a7186fbd4c2a1ff987b9ce49967811 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 23:54:35 +0100 Subject: [PATCH 08/21] Remove non-essential packages --- .../TX-Ultimate-Easy-ESPHome_standard.yaml | 22 ------------------- README.md | 11 ++++++++++ 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml index bb044d2..75a6212 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml @@ -24,9 +24,6 @@ button: internal: false platform: restart -captive_portal: - id: ap_captive_portal - esphome: platformio_options: build_flags: @@ -50,23 +47,4 @@ script: - 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: ... diff --git a/README.md b/README.md index 18b9bdc..9af9bf3 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,17 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/blob/main/TX-Ultimate-Easy-ESPHome.yaml) for the latest version of this yaml. + + > [!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 + > ``` + 5. Click "Save" and then "Install" ### Device Flashing From a64c45b37b159e29c739cb1d5851b34d03c4d215 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 4 Jan 2025 23:58:05 +0100 Subject: [PATCH 09/21] Media Player is not compatible with IDF --- .../TX-Ultimate-Easy-ESPHome_standard_media_player.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml index d6985fb..0a4a339 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml @@ -14,10 +14,6 @@ packages: standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml -esp32: - framework: - type: arduino - esphome: platformio_options: build_flags: @@ -44,6 +40,9 @@ script: - script.wait: dump_config - lambda: |- // Check for requirements + #ifdef USE_ESP_IDF + #error "This package is not compatible with ESP-IDF framework." + #endif #if !defined(TX_ULTIMATE_EASY_CORE) #error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required." #endif From e89adca5cb274e817f8d332973748934ba5abd43 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:34:40 +0100 Subject: [PATCH 10/21] Remove reference to `esphome_fw_version` --- ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml index 75a6212..a8766d3 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml @@ -46,5 +46,6 @@ script: then: - lambda: |- // Version information - ESP_LOGCONFIG("standard", "ESPHome builder: %s", esphome_fw_version->state.c_str()); + ESP_LOGCONFIG("standard", "ESPHome builder: " ESPHOME_VERSION); + ESP_LOGCONFIG("standard", "ESPHome build timestamp: %s", App.get_compilation_time().c_str()); ... From 81f0420987d43fb0daf767dcdd0ea42e74fbdc12 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:37:05 +0100 Subject: [PATCH 11/21] Lint --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9af9bf3..bb069d5 100644 --- a/README.md +++ b/README.md @@ -136,9 +136,11 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/blob/main/TX-Ultimate-Easy-ESPHome.yaml) for the latest version of this yaml. - > [!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: + > 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: @@ -146,7 +148,6 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. > wifi: > ap: # Access point configuration > ``` - 5. Click "Save" and then "Install" ### Device Flashing From 12fd2d3747b0cfeea9a84d57c7ab97a1b6a1e87e Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:38:30 +0100 Subject: [PATCH 12/21] Lint --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index bb069d5..d282d26 100644 --- a/README.md +++ b/README.md @@ -136,20 +136,21 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available. - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/blob/main/TX-Ultimate-Easy-ESPHome.yaml) for the latest version of this yaml. - > [!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 - > ``` 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 +> ``` + ### Device Flashing Initial flashing must be done via serial connection. From 56c613a70fcdfa30168608cae271e8268d3ad3f5 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:54:48 +0100 Subject: [PATCH 13/21] Remove `sw_speaker_amplifier` when the `media_player` is removed --- .test/esphome_idf53_basic.yaml | 5 +++++ .test/esphome_idf_basic.yaml | 5 +++++ ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml | 3 +++ 3 files changed, 13 insertions(+) diff --git a/.test/esphome_idf53_basic.yaml b/.test/esphome_idf53_basic.yaml index c420d7f..10024d4 100644 --- a/.test/esphome_idf53_basic.yaml +++ b/.test/esphome_idf53_basic.yaml @@ -3,4 +3,9 @@ packages: common_idf53: !include common_idf53.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml + +media_player: !remove + +switch: + - id: !remove sw_speaker_amplifier ... diff --git a/.test/esphome_idf_basic.yaml b/.test/esphome_idf_basic.yaml index d4d0357..82e7f09 100644 --- a/.test/esphome_idf_basic.yaml +++ b/.test/esphome_idf_basic.yaml @@ -3,4 +3,9 @@ packages: common_idf: !include common_idf.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml + +media_player: !remove + +switch: + - id: !remove sw_speaker_amplifier ... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml index c97a93e..2161a7f 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml @@ -63,4 +63,7 @@ script: // Identify itself ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy"); + +switch: + - id: !remove sw_speaker_amplifier ... From 036e62b277f04c0a84dfc61a42db12beedeab887 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 01:06:52 +0100 Subject: [PATCH 14/21] Remove check for framework type --- ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml index 0a4a339..32a8eb5 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml @@ -40,9 +40,6 @@ script: - script.wait: dump_config - lambda: |- // Check for requirements - #ifdef USE_ESP_IDF - #error "This package is not compatible with ESP-IDF framework." - #endif #if !defined(TX_ULTIMATE_EASY_CORE) #error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required." #endif From 5d80ce1117b40a92b867f1d322229e33ed4fc1eb Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 01:34:18 +0100 Subject: [PATCH 15/21] Do not remove attributes twice --- .test/esphome_idf53_ble_proxy.yaml | 7 ++++++- .test/esphome_idf_ble_proxy.yaml | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.test/esphome_idf53_ble_proxy.yaml b/.test/esphome_idf53_ble_proxy.yaml index 9280dd2..d4aa126 100644 --- a/.test/esphome_idf53_ble_proxy.yaml +++ b/.test/esphome_idf53_ble_proxy.yaml @@ -1,7 +1,12 @@ --- packages: - common_idf53: !include common_idf53.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml + +esp32: + framework: + type: esp-idf + version: 5.3.1 + platform_version: 6.9.0 ... diff --git a/.test/esphome_idf_ble_proxy.yaml b/.test/esphome_idf_ble_proxy.yaml index a72bcdb..49d28cc 100644 --- a/.test/esphome_idf_ble_proxy.yaml +++ b/.test/esphome_idf_ble_proxy.yaml @@ -1,6 +1,5 @@ --- packages: - common_idf: !include common_idf.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml From 5988681132be6596df65edfc2abb1f7214f02aa4 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:02:46 +0100 Subject: [PATCH 16/21] Include common --- .test/esphome_idf53_ble_proxy.yaml | 1 + .test/esphome_idf_ble_proxy.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.test/esphome_idf53_ble_proxy.yaml b/.test/esphome_idf53_ble_proxy.yaml index d4aa126..5acf57b 100644 --- a/.test/esphome_idf53_ble_proxy.yaml +++ b/.test/esphome_idf53_ble_proxy.yaml @@ -1,5 +1,6 @@ --- packages: + common: !include common.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml diff --git a/.test/esphome_idf_ble_proxy.yaml b/.test/esphome_idf_ble_proxy.yaml index 49d28cc..dc303a6 100644 --- a/.test/esphome_idf_ble_proxy.yaml +++ b/.test/esphome_idf_ble_proxy.yaml @@ -1,5 +1,6 @@ --- packages: + common: !include common.yaml core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml From e47726dc4710f5f6225fc38cf27eac5f669a2a2a Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:40:52 +0100 Subject: [PATCH 17/21] Advanced settings with granular package selection Resolves #86 --- ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml | 301 +--------------- .../TX-Ultimate-Easy-ESPHome_core_common.yaml | 323 ++++++++++++++++++ .../TX-Ultimate-Easy-ESPHome_standard.yaml | 31 -- README.md | 35 +- TX-Ultimate-Easy-ESPHome_advanced.yaml | 38 +++ 5 files changed, 396 insertions(+), 332 deletions(-) create mode 100644 ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml create mode 100644 TX-Ultimate-Easy-ESPHome_advanced.yaml diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml index 3c7b7e2..6672dd3 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml @@ -11,310 +11,11 @@ ##### - 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: # 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_leds: !include TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml core_hw_touch: !include TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml # 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 - 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 - # 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(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 ... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml new file mode 100644 index 0000000..150b46c --- /dev/null +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml @@ -0,0 +1,323 @@ +#################################################################################################### +##### 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 + # 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}"); + // 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(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 +... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml index a8766d3..17cbe16 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml @@ -17,35 +17,4 @@ packages: standard_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 - -button: - - id: bt_restart - name: Restart - internal: false - platform: restart - -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: " ESPHOME_VERSION); - ESP_LOGCONFIG("standard", "ESPHome build timestamp: %s", App.get_compilation_time().c_str()); ... diff --git a/README.md b/README.md index d282d26..986fe8a 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. ``` **Notes:** - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/tags) for a full list of versions available. - - [Click here](https://github.com/edwardtfn/TX-Ultimate-Easy/blob/main/TX-Ultimate-Easy-ESPHome.yaml) + - [Click here](TX-Ultimate-Easy-ESPHome.yaml) for the latest version of this yaml. 5. Click "Save" and then "Install" @@ -151,6 +151,39 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. > 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 + 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 Initial flashing must be done via serial connection. diff --git a/TX-Ultimate-Easy-ESPHome_advanced.yaml b/TX-Ultimate-Easy-ESPHome_advanced.yaml new file mode 100644 index 0000000..eb66df9 --- /dev/null +++ b/TX-Ultimate-Easy-ESPHome_advanced.yaml @@ -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 +... From 9bae016573fa0f7ac1e587cee6458ac244829eb5 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:43:08 +0100 Subject: [PATCH 18/21] Lint --- TX-Ultimate-Easy-ESPHome_advanced.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TX-Ultimate-Easy-ESPHome_advanced.yaml b/TX-Ultimate-Easy-ESPHome_advanced.yaml index eb66df9..9ffd141 100644 --- a/TX-Ultimate-Easy-ESPHome_advanced.yaml +++ b/TX-Ultimate-Easy-ESPHome_advanced.yaml @@ -10,7 +10,7 @@ --- substitutions: name: tx-ultimate-easy-adv - friendly_name: TX Ultimate Easy Advanced + friendly_name: TX Ultimate Easy Advanced wifi: ssid: !secret wifi_ssid @@ -30,7 +30,7 @@ packages: # 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 + - 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) From acb602c4ca5f6e455b8bcc387cab49cbcd13dda8 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:44:48 +0100 Subject: [PATCH 19/21] Lint --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 986fe8a..cccd393 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,9 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome. > ``` ### 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: +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 From 6bdf6e97b7200132d778204124efeb17dd3c5891 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:51:22 +0100 Subject: [PATCH 20/21] Move sdkconfig to component --- .../TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml | 11 ----------- components/tx_ultimate_easy/__init__.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml index 2161a7f..292ed0a 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml @@ -19,17 +19,6 @@ bluetooth_proxy: esp32: framework: type: esp-idf - sdkconfig_options: - CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y" - CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y" - CONFIG_ESP32_REV_MIN_3: "y" - CONFIG_MBEDTLS_DYNAMIC_BUFFER: "y" - CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT: "y" - CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA: "y" - CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y" - CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: "y" - CONFIG_SPIRAM_RODATA: "y" - CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y" esphome: platformio_options: diff --git a/components/tx_ultimate_easy/__init__.py b/components/tx_ultimate_easy/__init__.py index 7120ead..eef1a13 100644 --- a/components/tx_ultimate_easy/__init__.py +++ b/components/tx_ultimate_easy/__init__.py @@ -109,3 +109,17 @@ async def to_code(config): await cg.register_component(var, config) await uart.register_uart_device(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") From 8a4009dd7e6097715d83fdc1eb8ee44b24d258c7 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:58:45 +0100 Subject: [PATCH 21/21] Move `sdkconfig_options` to component --- .test/common_idf.yaml | 11 ----------- README.md | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/.test/common_idf.yaml b/.test/common_idf.yaml index ebcaad5..fb9297c 100644 --- a/.test/common_idf.yaml +++ b/.test/common_idf.yaml @@ -5,17 +5,6 @@ packages: esp32: framework: type: esp-idf - sdkconfig_options: - CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y" - CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y" - CONFIG_ESP32_REV_MIN_3: "y" - CONFIG_MBEDTLS_DYNAMIC_BUFFER: "y" - CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT: "y" - CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA: "y" - CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y" - CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: "y" - CONFIG_SPIRAM_RODATA: "y" - CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y" light: - id: !extend light_full diff --git a/README.md b/README.md index cccd393..c7f64d0 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ Here's an example of the advanced configuration: packages: remote_package: url: https://github.com/edwardtfn/TX-Ultimate-Easy - ref: stable + 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