From e69873cab5dba325fb511f952e12299251333b0c Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Fri, 27 Dec 2024 01:42:41 +0100 Subject: [PATCH] Create standard package --- .github/workflows/validate_esphome_beta.yml | 121 ++++++++++- .test/esphome_ard_basic.yaml | 3 +- ..._proxy.yaml => esphome_ard_ble_proxy.yaml} | 5 + .test/esphome_ard_core.yaml | 8 + .test/esphome_idf53_basic.yaml | 11 + ...roxy.yaml => esphome_idf53_ble_proxy.yaml} | 1 + .test/esphome_idf53_core.yaml | 10 + .test/esphome_idf53_media_player.yaml | 12 ++ .test/esphome_idf_basic.yaml | 9 + .test/esphome_idf_ble_proxy.yaml | 10 + .test/esphome_idf_core.yaml | 8 + .test/esphome_idf_media_player.yaml | 10 + ...Ultimate-Easy-ESPHome_addon_ble_proxy.yaml | 5 +- ...imate-Easy-ESPHome_addon_media_player.yaml | 11 +- ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml | 59 +++--- ...Ultimate-Easy-ESPHome_core_hw_buttons.yaml | 17 +- ...TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml | 67 ++----- ...X-Ultimate-Easy-ESPHome_core_hw_touch.yaml | 17 +- .../TX-Ultimate-Easy-ESPHome_standard.yaml | 72 +++++++ ...imate-Easy-ESPHome_standard_hw_audio.yaml} | 10 +- ...mate-Easy-ESPHome_standard_hw_relays.yaml} | 189 ++++++++++++------ ...e-Easy-ESPHome_standard_hw_vibration.yaml} | 33 +-- ...timate-Easy-ESPHome_standard_speaker.yaml} | 17 +- TX-Ultimate-Easy-ESPHome.yaml | 4 +- 24 files changed, 507 insertions(+), 202 deletions(-) rename .test/{esphome_idf_bluetooth_proxy.yaml => esphome_ard_ble_proxy.yaml} (60%) create mode 100644 .test/esphome_ard_core.yaml create mode 100644 .test/esphome_idf53_basic.yaml rename .test/{esphome_idf53_bluetooth_proxy.yaml => esphome_idf53_ble_proxy.yaml} (77%) create mode 100644 .test/esphome_idf53_core.yaml create mode 100644 .test/esphome_idf53_media_player.yaml create mode 100644 .test/esphome_idf_basic.yaml create mode 100644 .test/esphome_idf_ble_proxy.yaml create mode 100644 .test/esphome_idf_core.yaml create mode 100644 .test/esphome_idf_media_player.yaml create mode 100644 ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml rename ESPHome/{TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml => TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml} (83%) rename ESPHome/{TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml => TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml} (82%) rename ESPHome/{TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml => TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml} (85%) rename ESPHome/{TX-Ultimate-Easy-ESPHome_addon_speaker.yaml => TX-Ultimate-Easy-ESPHome_standard_speaker.yaml} (91%) diff --git a/.github/workflows/validate_esphome_beta.yml b/.github/workflows/validate_esphome_beta.yml index c59f192..6367c31 100644 --- a/.github/workflows/validate_esphome_beta.yml +++ b/.github/workflows/validate_esphome_beta.yml @@ -49,36 +49,135 @@ jobs: - name: Validate YAML files run: find . -name "*.yaml" -exec yamllint -c ./.rules/yamllint.yml {} + - build_basic: - name: Basic + build_ard_core: + name: Core (Arduino) + needs: code_scan runs-on: ubuntu-latest steps: - uses: actions/checkout@main - - name: Build core + - name: Build Core (Arduino) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_ard_core.yaml" + version: beta + + build_idf_core: + name: Core (IDF) + needs: code_scan + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build Core (IDF) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf_core.yaml" + version: beta + + build_idf53_core: + name: Core (IDFv5.3) + needs: code_scan + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build Core (IDFv5.3) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf53_core.yaml" + version: beta + + build_ard_basic: + name: Basic (Arduino) + needs: build_ard_core + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build Basic (Arduino) uses: esphome/build-action@main with: yaml-file: ".test/esphome_ard_basic.yaml" version: beta - build_bluetooth_proxy_4: - name: Bluetooth Proxy (IDF) + build_idf_basic: + name: Core (IDF) + needs: build_idf_core runs-on: ubuntu-latest steps: - uses: actions/checkout@main - - name: Build core + - name: Build Basic (IDF) uses: esphome/build-action@main with: - yaml-file: ".test/esphome_idf_bluetooth_proxy.yaml" + yaml-file: ".test/esphome_idf_basic.yaml" version: beta - build_bluetooth_proxy_53: - name: Bluetooth Proxy (IDF v5.3) + build_idf53_basic: + name: Basic (IDFv5.3) + needs: build_idf53_core runs-on: ubuntu-latest steps: - uses: actions/checkout@main - - name: Build core + - name: Build Basic (IDFv5.3) uses: esphome/build-action@main with: - yaml-file: ".test/esphome_idf53_bluetooth_proxy.yaml" + yaml-file: ".test/esphome_idf53_basic.yaml" + version: beta + + build_ard_ble_proxy: + name: Bluetooth Proxy (Ard) + needs: build_ard_basic + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build BLE Proxy (Ard) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_ard_ble_proxy.yaml" + version: beta + + build_idf_ble_proxy: + name: Bluetooth Proxy (IDF) + needs: build_idf_basic + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build BLE Proxy (IDF) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf_ble_proxy.yaml" + version: beta + + build_idf53_ble_proxy: + name: Bluetooth Proxy (IDFv5.3) + needs: build_idf_basic + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build BLE Proxy (IDFv5.3) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf53_ble_proxy.yaml" + version: beta + + build_idf_media_player: + name: Media Player (IDF) + needs: build_idf_basic + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build Media Player (IDF) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf_media_player.yaml" + version: beta + + build_idf53_media_player: + name: Media Player (IDFv5.3) + needs: build_idf_basic + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - name: Build Media Player (IDFv5.3) + uses: esphome/build-action@main + with: + yaml-file: ".test/esphome_idf53_media_player.yaml" version: beta ... diff --git a/.test/esphome_ard_basic.yaml b/.test/esphome_ard_basic.yaml index ed32a8f..91753ec 100644 --- a/.test/esphome_ard_basic.yaml +++ b/.test/esphome_ard_basic.yaml @@ -1,6 +1,7 @@ --- packages: - basic_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml # Basic package + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml esp32: framework: diff --git a/.test/esphome_idf_bluetooth_proxy.yaml b/.test/esphome_ard_ble_proxy.yaml similarity index 60% rename from .test/esphome_idf_bluetooth_proxy.yaml rename to .test/esphome_ard_ble_proxy.yaml index 3e434a5..e21e328 100644 --- a/.test/esphome_idf_bluetooth_proxy.yaml +++ b/.test/esphome_ard_ble_proxy.yaml @@ -1,5 +1,10 @@ --- packages: 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 ... diff --git a/.test/esphome_ard_core.yaml b/.test/esphome_ard_core.yaml new file mode 100644 index 0000000..bee25b3 --- /dev/null +++ b/.test/esphome_ard_core.yaml @@ -0,0 +1,8 @@ +--- +packages: + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + +esp32: + framework: + type: arduino +... diff --git a/.test/esphome_idf53_basic.yaml b/.test/esphome_idf53_basic.yaml new file mode 100644 index 0000000..44ebb3b --- /dev/null +++ b/.test/esphome_idf53_basic.yaml @@ -0,0 +1,11 @@ +--- +packages: + 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 +... diff --git a/.test/esphome_idf53_bluetooth_proxy.yaml b/.test/esphome_idf53_ble_proxy.yaml similarity index 77% rename from .test/esphome_idf53_bluetooth_proxy.yaml rename to .test/esphome_idf53_ble_proxy.yaml index a8d3868..d4aa126 100644 --- a/.test/esphome_idf53_bluetooth_proxy.yaml +++ b/.test/esphome_idf53_ble_proxy.yaml @@ -1,6 +1,7 @@ --- packages: 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: diff --git a/.test/esphome_idf53_core.yaml b/.test/esphome_idf53_core.yaml new file mode 100644 index 0000000..438146c --- /dev/null +++ b/.test/esphome_idf53_core.yaml @@ -0,0 +1,10 @@ +--- +packages: + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + +esp32: + framework: + type: esp-idf + version: 5.3.1 + platform_version: 6.9.0 +... diff --git a/.test/esphome_idf53_media_player.yaml b/.test/esphome_idf53_media_player.yaml new file mode 100644 index 0000000..c8c4414 --- /dev/null +++ b/.test/esphome_idf53_media_player.yaml @@ -0,0 +1,12 @@ +--- +packages: + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml + addon_media_player: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml + +esp32: + framework: + type: esp-idf + version: 5.3.1 + platform_version: 6.9.0 +... diff --git a/.test/esphome_idf_basic.yaml b/.test/esphome_idf_basic.yaml new file mode 100644 index 0000000..9f20465 --- /dev/null +++ b/.test/esphome_idf_basic.yaml @@ -0,0 +1,9 @@ +--- +packages: + 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 +... diff --git a/.test/esphome_idf_ble_proxy.yaml b/.test/esphome_idf_ble_proxy.yaml new file mode 100644 index 0000000..3aeba92 --- /dev/null +++ b/.test/esphome_idf_ble_proxy.yaml @@ -0,0 +1,10 @@ +--- +packages: + 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 +... diff --git a/.test/esphome_idf_core.yaml b/.test/esphome_idf_core.yaml new file mode 100644 index 0000000..3daf403 --- /dev/null +++ b/.test/esphome_idf_core.yaml @@ -0,0 +1,8 @@ +--- +packages: + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + +esp32: + framework: + type: esp-idf +... diff --git a/.test/esphome_idf_media_player.yaml b/.test/esphome_idf_media_player.yaml new file mode 100644 index 0000000..1c2697b --- /dev/null +++ b/.test/esphome_idf_media_player.yaml @@ -0,0 +1,10 @@ +--- +packages: + core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + standard_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml + addon_media_player: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml + +esp32: + framework: + type: esp-idf +... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml index 9f644a8..1346efb 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml @@ -19,8 +19,9 @@ esphome: - -D TX_ULTIMATE_EASY_ADDON_BLE_PROXY script: - - id: !extend dump_config + - id: !extend dump_config_list_packages then: + - script.wait: dump_config - lambda: |- // Check for requirements #if !defined(TX_ULTIMATE_EASY_CORE) @@ -28,5 +29,5 @@ script: #endif // Identify itself - ESP_LOGCONFIG("addon_ble_proxy", "Add-on BLE Proxy installed"); + ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy"); ... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml index a922cbe..d6985fb 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml @@ -12,7 +12,7 @@ #################################################################################################### --- packages: - core_hw_audio: !include TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml + standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml esp32: framework: @@ -39,19 +39,20 @@ media_player: allow_other_uses: true script: - - id: !extend dump_config + - 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_CORE_HW_AUDIO) - #error "The package TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml is required." + #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("addon_media_player", "Add-on Media Player installed"); + ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - Media Player"); switch: - id: sw_speaker_amplifier diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml index c5749a7..843ca1a 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml @@ -29,11 +29,9 @@ substitutions: packages: # yamllint disable rule:colons - 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_relays: !include TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml - core_hw_touch: !include TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml - core_hw_vibration: !include TX-Ultimate-Easy-ESPHome_core_hw_vibration.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: @@ -60,15 +58,6 @@ binary_sensor: ESP_LOGCONFIG("core", "Pending restart: No"); - script.execute: dump_config_caller -button: - - id: bt_restart - name: Restart - internal: false - platform: restart - -captive_portal: - id: ap_captive_portal - esp32: board: esp32dev # adafruit_feather_esp32_v2 # esp32dev flash_size: 8MB @@ -79,6 +68,9 @@ 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 @@ -113,9 +105,6 @@ globals: max_restore_data_length: 3 # initial_value: "''" -improv_serial: - id: serial_improv - logger: level: DEBUG @@ -188,9 +177,7 @@ script: ESP_LOGCONFIG("core", "Device name (HA): %s", tx_device_name->state.c_str()); ESP_LOGCONFIG("core", "Device hostname: %s", App.get_name().c_str()); - // Version information - ESP_LOGCONFIG("core", "ESPHome builder: %s", esphome_fw_version->state.c_str()); - ESP_LOGCONFIG("core", "TX Ultimate firmware version: ${version}"); + dump_config_versions->execute(); // Framework detection #ifdef USE_ARDUINO @@ -218,6 +205,25 @@ script: 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 @@ -275,12 +281,6 @@ select: tx_ultimate->set_gang_count(id(gang_count)); text_sensor: - - id: esphome_fw_version - name: ESPHome Version - platform: version - entity_category: diagnostic - internal: false - - id: tx_fw_version name: TX Ultimate Easy Firmware Version platform: template @@ -317,13 +317,6 @@ text_sensor: } return result; -time: - - id: time_source - platform: homeassistant - -web_server: - wifi: id: wifi_component - ap: ... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml index 446e344..d93d70b 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml @@ -208,11 +208,6 @@ script: - id: !extend dump_config then: - lambda: |- - // Check for requirements - #if !defined(TX_ULTIMATE_EASY_CORE) - #error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required." - #endif - // Button's actions ESP_LOGCONFIG("core_hw_buttons", "Button%s action%s:", id(gang_count_plural_suffix).c_str(), @@ -233,6 +228,18 @@ script: ? sl_button_4_action->state.c_str() : "Unknown"); + - 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, " - Core - Hardware - Buttons"); + - id: !extend touch_on_multi_touch_release then: - script.execute: buttons_release diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml index 219e354..62579f7 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml @@ -443,64 +443,9 @@ script: light_us_right->set_internal(!id(is_us_model)); light_us_top->set_internal(!id(is_us_model)); - // LED Group Assignment: - // - For US model: gb_lights_1 = left side LEDs, gb_lights_2 = right side LEDs - // - For EU model: gb_lights_1 = bottom LEDs, gb_lights_2 = top LEDs - // Gang configurations determine which LED segments are active - switch (id(gang_count)) { - case 1: // 1 Gang - if (id(is_us_model)) { - id(gb_lights_1) = { light_us_rl_1_1_left }; - id(gb_lights_2) = { light_us_rl_1_1_right }; - } else { - id(gb_lights_1) = { light_eu_rl_1_1_bottom }; - id(gb_lights_2) = { light_eu_rl_1_1_top }; - } - break; - case 2: // 2 Gang - if (id(is_us_model)) { - id(gb_lights_1) = { light_us_rl_1_2_left, light_us_rl_2_2_left }; - id(gb_lights_2) = { light_us_rl_1_2_right, light_us_rl_2_2_right }; - } else { - id(gb_lights_1) = { light_eu_rl_1_2_bottom, light_eu_rl_2_2_bottom }; - id(gb_lights_2) = { light_eu_rl_1_2_top, light_eu_rl_2_2_top }; - } - break; - case 3: // 3 Gang - if (id(is_us_model)) { - id(gb_lights_1) = { light_us_rl_1_3_left, light_us_rl_2_3_left, light_us_rl_3_3_left }; - id(gb_lights_2) = { light_us_rl_1_3_right, light_us_rl_2_3_right, light_us_rl_3_3_right }; - } else { - id(gb_lights_1) = { light_eu_rl_1_3_bottom, light_eu_rl_2_3_bottom, light_eu_rl_3_3_bottom }; - id(gb_lights_2) = { light_eu_rl_1_3_top, light_eu_rl_2_3_top, light_eu_rl_3_3_top }; - } - break; - case 4: // 4 Gang - if (id(is_us_model)) { - id(gb_lights_1) = { light_us_rl_1_4_left, light_us_rl_2_4_left, - light_us_rl_3_4_left, light_us_rl_4_4_left }; - id(gb_lights_2) = { light_us_rl_1_4_right, light_us_rl_2_4_right, - light_us_rl_3_4_right, light_us_rl_4_4_right }; - } else { - id(gb_lights_1) = { light_eu_rl_1_4_bottom, light_eu_rl_2_4_bottom, - light_eu_rl_3_4_bottom, light_eu_rl_4_4_bottom }; - id(gb_lights_2) = { light_eu_rl_1_4_top, light_eu_rl_2_4_top, - light_eu_rl_3_4_top, light_eu_rl_4_4_top }; - } - break; - default: - ESP_LOGE("core_hw_leds", "Invalid gang count: %" PRIu8, id(gang_count)); - break; - } - - id: !extend dump_config then: - lambda: |- - // Check for requirements - #if !defined(TX_ULTIMATE_EASY_CORE) - #error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required." - #endif - // Relay's LEDs modes ESP_LOGCONFIG("core_hw_leds", "Relay%s LEDs mode%s:", id(gang_count_plural_suffix).c_str(), @@ -539,6 +484,18 @@ script: ESP_LOGCONFIG("core_hw_leds", " Sides: ${LIGHT_SIDES_RESTORE_MODE}"); ESP_LOGCONFIG("core_hw_leds", " Individual: ${LIGHT_INDIVIDUAL_RESTORE_MODE}"); + - 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, " - Core - Hardware - LEDs"); + - id: light_set_state mode: parallel parameters: diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml index f5c0157..8da5856 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml @@ -291,11 +291,6 @@ script: - id: !extend dump_config then: - lambda: |- - // Check for requirements - #if !defined(TX_ULTIMATE_EASY_CORE) - #error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required." - #endif - // Touch panel's state if (sw_touch_panel_power->state) ESP_LOGCONFIG("core_hw_touch", "Touch panel - Power: On"); @@ -303,6 +298,18 @@ script: ESP_LOGW("core_hw_touch", "Touch panel - Power: OFF"); ESP_LOGCONFIG("core_hw_touch", "Touch event duration: %.0fms", nr_touch_duration->state); + - 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, " - Core - Hardware - Touchpad"); + - id: touch_on_multi_touch_release mode: restart then: diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml new file mode 100644 index 0000000..0d9c0a7 --- /dev/null +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml @@ -0,0 +1,72 @@ +#################################################################################################### +##### TX Ultimate Easy for ESPHome ##### +##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy ##### +#################################################################################################### +##### Purpose: ESPHome Standard (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_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 + # 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: +... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml similarity index 83% rename from ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml rename to ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml index c9a91e2..3dcabb1 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml @@ -2,7 +2,7 @@ ##### TX Ultimate Easy for ESPHome ##### ##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy ##### #################################################################################################### -##### Purpose: ESPHome - Core - I2S Audio ##### +##### Purpose: ESPHome - Standard - I2S Audio ##### #################################################################################################### ##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo ##### #################################################################################################### @@ -14,7 +14,7 @@ esphome: platformio_options: build_flags: - - -D TX_ULTIMATE_EASY_CORE_HW_AUDIO + - -D TX_ULTIMATE_EASY_STANDARD_HW_AUDIO i2s_audio: id: if_i2s_audio @@ -22,11 +22,15 @@ i2s_audio: i2s_lrclk_pin: GPIO4 script: - - id: !extend dump_config + - 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 - Hardware - Audio"); ... diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml similarity index 82% rename from ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml rename to ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml index 7fa0809..432994f 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_relays.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml @@ -2,7 +2,7 @@ ##### TX Ultimate Easy for ESPHome ##### ##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy ##### #################################################################################################### -##### Purpose: ESPHome Core - Hardware - Relays ##### +##### Purpose: ESPHome - Standard - Hardware - Relays ##### #################################################################################################### ##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo ##### #################################################################################################### @@ -22,13 +22,17 @@ substitutions: esphome: platformio_options: build_flags: - - -D TX_ULTIMATE_EASY_CORE_HW_RELAYS + - -D TX_ULTIMATE_EASY_STANDARD_HW_RELAYS globals: - id: boot_initialization_relays type: bool restore_value: false initial_value: 'false' + - id: boot_initialization_relays_group_assignments + type: bool + restore_value: false + initial_value: 'false' - id: boot_initialization_relays_light_modes type: bool restore_value: false @@ -440,14 +444,17 @@ script: - id: boot_initialize_relays mode: restart then: + - script.execute: boot_initialize_relays_group_assignments - script.execute: boot_initialize_relays_light_modes - script.execute: boot_initialize_relays_relay_leds - script.execute: boot_initialize_relays_relay_modes + - script.wait: boot_initialize_relays_group_assignments - script.wait: boot_initialize_relays_light_modes - script.wait: boot_initialize_relays_relay_leds - script.wait: boot_initialize_relays_relay_modes - wait_until: condition: + - lambda: return id(boot_initialization_relays_group_assignments); - lambda: return id(boot_initialization_relays_light_modes); - lambda: return id(boot_initialization_relays_relay_leds); - lambda: return id(boot_initialization_relays_relay_modes); @@ -455,6 +462,61 @@ script: id: boot_initialization_relays value: 'true' + - id: boot_initialize_relays_group_assignments + mode: restart + then: + - lambda: |- + // LED Group Assignment: + // - For US model: gb_lights_1 = left side LEDs, gb_lights_2 = right side LEDs + // - For EU model: gb_lights_1 = bottom LEDs, gb_lights_2 = top LEDs + // Gang configurations determine which LED segments are active + switch (id(gang_count)) { + case 1: // 1 Gang + if (id(is_us_model)) { + id(gb_lights_1) = { light_us_rl_1_1_left }; + id(gb_lights_2) = { light_us_rl_1_1_right }; + } else { + id(gb_lights_1) = { light_eu_rl_1_1_bottom }; + id(gb_lights_2) = { light_eu_rl_1_1_top }; + } + break; + case 2: // 2 Gang + if (id(is_us_model)) { + id(gb_lights_1) = { light_us_rl_1_2_left, light_us_rl_2_2_left }; + id(gb_lights_2) = { light_us_rl_1_2_right, light_us_rl_2_2_right }; + } else { + id(gb_lights_1) = { light_eu_rl_1_2_bottom, light_eu_rl_2_2_bottom }; + id(gb_lights_2) = { light_eu_rl_1_2_top, light_eu_rl_2_2_top }; + } + break; + case 3: // 3 Gang + if (id(is_us_model)) { + id(gb_lights_1) = { light_us_rl_1_3_left, light_us_rl_2_3_left, light_us_rl_3_3_left }; + id(gb_lights_2) = { light_us_rl_1_3_right, light_us_rl_2_3_right, light_us_rl_3_3_right }; + } else { + id(gb_lights_1) = { light_eu_rl_1_3_bottom, light_eu_rl_2_3_bottom, light_eu_rl_3_3_bottom }; + id(gb_lights_2) = { light_eu_rl_1_3_top, light_eu_rl_2_3_top, light_eu_rl_3_3_top }; + } + break; + case 4: // 4 Gang + if (id(is_us_model)) { + id(gb_lights_1) = { light_us_rl_1_4_left, light_us_rl_2_4_left, + light_us_rl_3_4_left, light_us_rl_4_4_left }; + id(gb_lights_2) = { light_us_rl_1_4_right, light_us_rl_2_4_right, + light_us_rl_3_4_right, light_us_rl_4_4_right }; + } else { + id(gb_lights_1) = { light_eu_rl_1_4_bottom, light_eu_rl_2_4_bottom, + light_eu_rl_3_4_bottom, light_eu_rl_4_4_bottom }; + id(gb_lights_2) = { light_eu_rl_1_4_top, light_eu_rl_2_4_top, + light_eu_rl_3_4_top, light_eu_rl_4_4_top }; + } + break; + default: + ESP_LOGE("standard_hw_relays", "Invalid gang count: %" PRIu8, id(gang_count)); + break; + } + id(boot_initialization_relays_group_assignments) = true; + - id: boot_initialize_relays_light_modes mode: restart then: @@ -591,13 +653,13 @@ script: std::string select_state; bool toggle_relay = false; if (api_disconnected) { - ESP_LOGW("core_hw_relays", "Toggle relays:"); - ESP_LOGW("core_hw_relays", " API state: DISCONNECTED"); - ESP_LOGW("core_hw_relays", " Button: %" PRIu8, button); + ESP_LOGW("standard_hw_relays", "Toggle relays:"); + ESP_LOGW("standard_hw_relays", " API state: DISCONNECTED"); + ESP_LOGW("standard_hw_relays", " Button: %" PRIu8, button); } else { - ESP_LOGVV("core_hw_relays", "Toggle relays:"); - ESP_LOGVV("core_hw_relays", " API state: Connected"); - ESP_LOGVV("core_hw_relays", " Button: %" PRIu8, button); + ESP_LOGVV("standard_hw_relays", "Toggle relays:"); + ESP_LOGVV("standard_hw_relays", " API state: Connected"); + ESP_LOGVV("standard_hw_relays", " Button: %" PRIu8, button); } switch (button) { case ${BUTTON_1_ID}: @@ -630,67 +692,76 @@ script: break; } if (toggle_relay) { - ESP_LOGI("core_hw_relays", "Toggle relay %" PRIu8 ": (%s)", button, select_state.c_str()); + ESP_LOGI("standard_hw_relays", "Toggle relay %" PRIu8 ": (%s)", button, select_state.c_str()); } else if (not select_state.empty()) { - ESP_LOGV("core_hw_relays", "Ignoring toggle for relay %" PRIu8 ": action is '%s'", + ESP_LOGV("standard_hw_relays", "Ignoring toggle for relay %" PRIu8 ": action is '%s'", button, select_state.c_str()); } else { - ESP_LOGE("core_hw_relays", "No button action selected for button %" PRIu8, button); + ESP_LOGE("standard_hw_relays", "No button action selected for button %" PRIu8, button); } - id: !extend dump_config then: + - lambda: |- + // Relay's modes + ESP_LOGCONFIG("standard_hw_relays", "Relay%s mode%s:", + id(gang_count_plural_suffix).c_str(), + id(gang_count_plural_suffix).c_str()); + ESP_LOGCONFIG("standard_hw_relays", " Relay 1: %s", sl_relay_1_mode->has_state() + ? sl_relay_1_mode->state.c_str() + : "Unknown"); + if (id(gang_count) >= 2) + ESP_LOGCONFIG("standard_hw_relays", " Relay 2: %s", sl_relay_2_mode->has_state() + ? sl_relay_2_mode->state.c_str() + : "Unknown"); + if (id(gang_count) >= 3) + ESP_LOGCONFIG("standard_hw_relays", " Relay 3: %s", sl_relay_3_mode->has_state() + ? sl_relay_3_mode->state.c_str() + : "Unknown"); + if (id(gang_count) >= 4) + ESP_LOGCONFIG("standard_hw_relays", " Relay 4: %s", sl_relay_4_mode->has_state() + ? sl_relay_4_mode->state.c_str() + : "Unknown"); + + // Relay's states + ESP_LOGCONFIG("standard_hw_relays", "Relay%s state%s:", + id(gang_count_plural_suffix).c_str(), + id(gang_count_plural_suffix).c_str()); + ESP_LOGCONFIG("standard_hw_relays", " Relay 1: %s", sw_relay_1->state ? "ON" : "OFF"); + if (id(gang_count) >= 2) + ESP_LOGCONFIG("standard_hw_relays", " Relay 2: %s", sw_relay_2->state ? "ON" : "OFF"); + if (id(gang_count) >= 3) + ESP_LOGCONFIG("standard_hw_relays", " Relay 3: %s", sw_relay_3->state ? "ON" : "OFF"); + if (id(gang_count) >= 4) + ESP_LOGCONFIG("standard_hw_relays", " Relay 4: %s", sw_relay_4->state ? "ON" : "OFF"); + ESP_LOGCONFIG("standard_hw_relays", "Expose Relay's LEDs to Home Assistant: %s", + YESNO(sw_expose_relays_leds_to_ha->state)); + + // Boot initialization statuses + ESP_LOGCONFIG("standard_hw_relays", "Boot initialization flags:"); + ESP_LOGCONFIG("standard_hw_relays", " Overall: %s", YESNO(id(boot_initialization_relays))); + ESP_LOGCONFIG("standard_hw_relays", " Groups: %s", + YESNO(id(boot_initialization_relays_group_assignments))); + ESP_LOGCONFIG("standard_hw_relays", " Light modes: %s", YESNO(id(boot_initialization_relays_light_modes))); + ESP_LOGCONFIG("standard_hw_relays", " Relay modes: %s", YESNO(id(boot_initialization_relays_relay_modes))); + ESP_LOGCONFIG("standard_hw_relays", " Status LEDs: %s", YESNO(id(boot_initialization_relays_relay_leds))); + + // Substitutions + ESP_LOGCONFIG("standard_hw_relays", "Restore modes:"); + ESP_LOGCONFIG("standard_hw_relays", " Relays: ${RELAY_RESTORE_MODE}"); + ESP_LOGCONFIG("standard_hw_relays", " Status LEDs: ${LIGHT_RELAYS_RESTORE_MODE}"); + + - 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 - // Relay's modes - ESP_LOGCONFIG("core_hw_relays", "Relay%s mode%s:", - id(gang_count_plural_suffix).c_str(), - id(gang_count_plural_suffix).c_str()); - ESP_LOGCONFIG("core_hw_relays", " Relay 1: %s", sl_relay_1_mode->has_state() - ? sl_relay_1_mode->state.c_str() - : "Unknown"); - if (id(gang_count) >= 2) - ESP_LOGCONFIG("core_hw_relays", " Relay 2: %s", sl_relay_2_mode->has_state() - ? sl_relay_2_mode->state.c_str() - : "Unknown"); - if (id(gang_count) >= 3) - ESP_LOGCONFIG("core_hw_relays", " Relay 3: %s", sl_relay_3_mode->has_state() - ? sl_relay_3_mode->state.c_str() - : "Unknown"); - if (id(gang_count) >= 4) - ESP_LOGCONFIG("core_hw_relays", " Relay 4: %s", sl_relay_4_mode->has_state() - ? sl_relay_4_mode->state.c_str() - : "Unknown"); - - // Relay's states - ESP_LOGCONFIG("core_hw_relays", "Relay%s state%s:", - id(gang_count_plural_suffix).c_str(), - id(gang_count_plural_suffix).c_str()); - ESP_LOGCONFIG("core_hw_relays", " Relay 1: %s", sw_relay_1->state ? "ON" : "OFF"); - if (id(gang_count) >= 2) - ESP_LOGCONFIG("core_hw_relays", " Relay 2: %s", sw_relay_2->state ? "ON" : "OFF"); - if (id(gang_count) >= 3) - ESP_LOGCONFIG("core_hw_relays", " Relay 3: %s", sw_relay_3->state ? "ON" : "OFF"); - if (id(gang_count) >= 4) - ESP_LOGCONFIG("core_hw_relays", " Relay 4: %s", sw_relay_4->state ? "ON" : "OFF"); - ESP_LOGCONFIG("core_hw_relays", "Expose Relay's LEDs to Home Assistant: %s", - YESNO(sw_expose_relays_leds_to_ha->state)); - - // Boot initialization statuses - ESP_LOGCONFIG("core_hw_relays", "Boot initialization flags:"); - ESP_LOGCONFIG("core_hw_relays", " Overall: %s", YESNO(id(boot_initialization_relays))); - ESP_LOGCONFIG("core_hw_relays", " Light modes: %s", YESNO(id(boot_initialization_relays_light_modes))); - ESP_LOGCONFIG("core_hw_relays", " Relay modes: %s", YESNO(id(boot_initialization_relays_relay_modes))); - ESP_LOGCONFIG("core_hw_relays", " Status LEDs: %s", YESNO(id(boot_initialization_relays_relay_leds))); - - // Substitutions - ESP_LOGCONFIG("core_hw_relays", "Restore modes:"); - ESP_LOGCONFIG("core_hw_relays", " Relays: ${RELAY_RESTORE_MODE}"); - ESP_LOGCONFIG("core_hw_relays", " Status LEDs: ${LIGHT_RELAYS_RESTORE_MODE}"); + // Identify itself + ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard - Hardware - Relays"); - id: show_relay_status mode: restart @@ -698,7 +769,7 @@ script: - script.wait: boot_initialize_relays - lambda: |- if (not id(boot_initialization_relays)) { - ESP_LOGW("core_hw_relays", "Relays not initialized yet"); + ESP_LOGW("standard_hw_relays", "Relays not initialized yet"); if (not boot_initialize_relays->is_running()) boot_initialize_relays->execute(); return; @@ -741,8 +812,8 @@ script: break; } - ESP_LOGV("core_hw_relays", "Relay %" PRIu8 " is %s", i + 1, relay_state ? "ON" : "OFF"); - ESP_LOGV("core_hw_relays", "Light Mode for Relay %" PRIu8 ": %s", i + 1, light_mode.c_str()); + ESP_LOGV("standard_hw_relays", "Relay %" PRIu8 " is %s", i + 1, relay_state ? "ON" : "OFF"); + ESP_LOGV("standard_hw_relays", "Light Mode for Relay %" PRIu8 ": %s", i + 1, light_mode.c_str()); // Use light_set_state for light updates if (relay_state) { diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml similarity index 85% rename from ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml rename to ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml index 4587626..bf7205c 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_vibration.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml @@ -2,7 +2,7 @@ ##### TX Ultimate Easy for ESPHome ##### ##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy ##### #################################################################################################### -##### Purpose: ESPHome Core - Hardware - Vibration system ##### +##### Purpose: ESPHome - Standard - Hardware - Vibration system ##### #################################################################################################### ##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo ##### #################################################################################################### @@ -35,7 +35,7 @@ button: esphome: platformio_options: build_flags: - - -D TX_ULTIMATE_EASY_CORE_HW_VIBRATION + - -D TX_ULTIMATE_EASY_STANDARD_HW_VIBRATION number: - id: nr_vibrating_duration @@ -60,23 +60,30 @@ ota: script: - id: !extend dump_config then: + - lambda: |- + // Configuration + ESP_LOGCONFIG("standard_hw_vibration", "Touch - Vibration feedback: %s", + sl_touch_vibration_feedback->state.c_str()); + ESP_LOGCONFIG("standard_hw_vibration", "Vibrate duration: %.0fms", nr_vibrating_duration->state); + ESP_LOGCONFIG("standard_hw_vibration", "Vibrate max duration: ${vibration_max_duration}"); + + // State + if (bs_vibrating->state) + ESP_LOGW("standard_hw_vibration", "Vibrating now: YES"); + else + ESP_LOGCONFIG("standard_hw_vibration", "Vibrating now: No"); + + - 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 - // Configuration - ESP_LOGCONFIG("core_hw_vibration", "Touch - Vibration feedback: %s", - sl_touch_vibration_feedback->state.c_str()); - ESP_LOGCONFIG("core_hw_vibration", "Vibrate duration: %.0fms", nr_vibrating_duration->state); - ESP_LOGCONFIG("core_hw_vibration", "Vibrate max duration: ${vibration_max_duration}"); - - // State - if (bs_vibrating->state) - ESP_LOGW("core_hw_vibration", "Vibrating now: YES"); - else - ESP_LOGCONFIG("core_hw_vibration", "Vibrating now: No"); + // Identify itself + ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard - Hardware - Vibration"); - id: !extend touch_on_multi_touch_release then: diff --git a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_speaker.yaml b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_speaker.yaml similarity index 91% rename from ESPHome/TX-Ultimate-Easy-ESPHome_addon_speaker.yaml rename to ESPHome/TX-Ultimate-Easy-ESPHome_standard_speaker.yaml index e416737..800927d 100644 --- a/ESPHome/TX-Ultimate-Easy-ESPHome_addon_speaker.yaml +++ b/ESPHome/TX-Ultimate-Easy-ESPHome_standard_speaker.yaml @@ -2,7 +2,7 @@ ##### TX Ultimate Easy for ESPHome ##### ##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy ##### #################################################################################################### -##### Purpose: ESPHome - Add-on - Speaker ##### +##### Purpose: ESPHome - Standard - Speaker ##### #################################################################################################### ##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo ##### #################################################################################################### @@ -17,7 +17,7 @@ substitutions: tone_volume_change: "scale_up:d=32,o=5,b=100:c,c#,d#,e,f#,g#,a#,b" # Use "none" to disable sound packages: - core_hw_audio: !include TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml + standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml api: actions: @@ -31,14 +31,14 @@ api: - lambda: |- rtttl_speaker->stop(); if (speaker_volume->state > 0) { - ESP_LOGI("api", "Play tone: '%s'", tone.c_str()); + ESP_LOGI("standard_speaker", "Play tone: '%s'", tone.c_str()); rtttl_speaker->play(tone.c_str()); } esphome: platformio_options: build_flags: - - -D TX_ULTIMATE_EASY_ADDON_SPEAKER + - -D TX_ULTIMATE_EASY_STANDARD_SPEAKER number: - id: speaker_volume @@ -74,19 +74,20 @@ rtttl: speaker: speaker_embedded script: - - id: !extend dump_config + - 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_CORE_HW_AUDIO) - #error "The package TX-Ultimate-Easy-ESPHome_core_hw_audio.yaml is required." + #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("addon_speaker", "Add-on Speaker installed"); + ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard - Speaker"); - id: speaker_play_click then: diff --git a/TX-Ultimate-Easy-ESPHome.yaml b/TX-Ultimate-Easy-ESPHome.yaml index 4e1c17d..f8cff7b 100644 --- a/TX-Ultimate-Easy-ESPHome.yaml +++ b/TX-Ultimate-Easy-ESPHome.yaml @@ -19,8 +19,8 @@ packages: ref: latest # Or you can specify a version, like `ref: v2024.12.6` refresh: 5min files: - - ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml + - 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) - # - ESPHome/TX-Ultimate-Easy-ESPHome_addon_speaker.yaml # Adds basic audio speaker support ...