Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba3fc89032 | ||
|
|
fcbc92aaec | ||
|
|
8a4009dd7e | ||
|
|
6bdf6e97b7 | ||
|
|
acb602c4ca | ||
|
|
9bae016573 | ||
|
|
e47726dc47 | ||
|
|
5988681132 | ||
|
|
5d80ce1117 | ||
|
|
036e62b277 | ||
|
|
56c613a70f | ||
|
|
12fd2d3747 | ||
|
|
81f0420987 | ||
|
|
e89adca5cb | ||
|
|
a64c45b37b | ||
|
|
95291c0381 | ||
|
|
39cf0f2b10 | ||
|
|
8d03105caf | ||
|
|
e911482deb | ||
|
|
ef4f412223 | ||
|
|
9d64b099a4 | ||
|
|
037801e961 | ||
|
|
79b57304c7 |
16
.github/workflows/validate_esphome_beta.yml
vendored
16
.github/workflows/validate_esphome_beta.yml
vendored
@@ -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:
|
||||
|
||||
8
.github/workflows/versioning.yml
vendored
8
.github/workflows/versioning.yml
vendored
@@ -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
|
||||
|
||||
5
.test/common.yaml
Normal file
5
.test/common.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
8
.test/common_ard.yaml
Normal file
8
.test/common_ard.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: arduino
|
||||
...
|
||||
19
.test/common_idf.yaml
Normal file
19
.test/common_idf.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
light:
|
||||
- id: !extend light_full
|
||||
platform: esp32_rmt_led_strip
|
||||
rgb_order: GRB
|
||||
rmt_channel: 1
|
||||
chipset: ws2812
|
||||
max_refresh_rate: 33ms
|
||||
use_psram: false
|
||||
type: !remove
|
||||
variant: !remove
|
||||
...
|
||||
10
.test/common_idf53.yaml
Normal file
10
.test/common_idf53.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
packages:
|
||||
common_idf: !include common_idf.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
version: 5.3.1
|
||||
platform_version: 6.9.0
|
||||
...
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
---
|
||||
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
|
||||
media_player: !remove
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
switch:
|
||||
- id: !remove sw_speaker_amplifier
|
||||
...
|
||||
|
||||
@@ -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
|
||||
@@ -9,8 +10,4 @@ esp32:
|
||||
type: esp-idf
|
||||
version: 5.3.1
|
||||
platform_version: 6.9.0
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
---
|
||||
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
|
||||
media_player: !remove
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
switch:
|
||||
- id: !remove sw_speaker_amplifier
|
||||
...
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
---
|
||||
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
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
@@ -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
|
||||
...
|
||||
|
||||
19
ESPHome/TX-Ultimate-Easy-ESPHome.yaml
Normal file
19
ESPHome/TX-Ultimate-Easy-ESPHome.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome Basic (includes core plus non-essential, but recommended packages) #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
packages:
|
||||
# yamllint disable rule:colons
|
||||
core: !include TX-Ultimate-Easy-ESPHome_core.yaml
|
||||
standard: !include TX-Ultimate-Easy-ESPHome_standard.yaml
|
||||
# yamllint enable rule:colons
|
||||
...
|
||||
@@ -11,13 +11,35 @@
|
||||
##### - 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
|
||||
|
||||
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:
|
||||
@@ -30,4 +52,7 @@ script:
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy");
|
||||
|
||||
switch:
|
||||
- id: !remove sw_speaker_amplifier
|
||||
...
|
||||
|
||||
@@ -11,312 +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 # adafruit_feather_esp32_v2 # esp32dev
|
||||
flash_size: 8MB
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
esphome:
|
||||
name: ${name}
|
||||
friendly_name: ${friendly_name}
|
||||
comment: TX Ultimate Easy
|
||||
project:
|
||||
name: "edwardtfn.tx_ultimate_easy"
|
||||
version: ${version}
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_CORE
|
||||
|
||||
on_boot:
|
||||
- priority: 700
|
||||
then:
|
||||
- script.execute: boot_initialize
|
||||
|
||||
- priority: 600 # This is where most sensors are set up.
|
||||
then:
|
||||
- script.execute: boot_sequence
|
||||
|
||||
- priority: -100 # At this priority, pretty much everything should already be initialized.
|
||||
then:
|
||||
- script.execute: boot_done
|
||||
|
||||
globals:
|
||||
- id: is_us_model
|
||||
type: bool
|
||||
restore_value: true
|
||||
initial_value: 'false'
|
||||
|
||||
- id: gang_count
|
||||
type: uint8_t
|
||||
restore_value: true
|
||||
initial_value: '0'
|
||||
|
||||
- id: gang_count_plural_suffix
|
||||
type: std::string
|
||||
restore_value: true
|
||||
max_restore_data_length: 3
|
||||
# initial_value: "''"
|
||||
|
||||
logger:
|
||||
level: DEBUG
|
||||
|
||||
ota:
|
||||
platform: esphome
|
||||
|
||||
psram:
|
||||
mode: octal
|
||||
speed: 80MHz
|
||||
|
||||
script:
|
||||
- id: api_send_ha_event_boot
|
||||
mode: queued
|
||||
parameters:
|
||||
type: string
|
||||
then:
|
||||
- homeassistant.event:
|
||||
event: esphome.tx_ultimate_easy
|
||||
data:
|
||||
device_name: !lambda return tx_device_name->state.c_str();
|
||||
firmware: ${version}
|
||||
domain: boot
|
||||
type: !lambda return type.c_str();
|
||||
|
||||
- id: boot_done
|
||||
mode: restart
|
||||
then:
|
||||
- script.execute:
|
||||
id: api_send_ha_event_boot
|
||||
type: done
|
||||
|
||||
- id: boot_initialize
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by:
|
||||
# - HW Buttons
|
||||
# - HW Relays
|
||||
# - HW Touch
|
||||
- script.execute:
|
||||
id: api_send_ha_event_boot
|
||||
type: start
|
||||
- wait_until:
|
||||
condition:
|
||||
- lambda: return sl_tx_model_format->active_index().has_value();
|
||||
- lambda: return sl_tx_model_gang->active_index().has_value();
|
||||
- lambda: |-
|
||||
id(is_us_model) = (sl_tx_model_format->state == "${TX_MODEL_FORMAT_US_TEXT}");
|
||||
id(gang_count) = sl_tx_model_gang->active_index().value() + 1;
|
||||
if (id(gang_count) < 1 || id(gang_count) > 4) {
|
||||
ESP_LOGE("core_hw_leds", "Invalid number of gangs: %" PRIu8, id(gang_count));
|
||||
}
|
||||
id(gang_count_plural_suffix) = id(gang_count) > 1 ? "s" : "";
|
||||
|
||||
- id: boot_sequence
|
||||
mode: restart
|
||||
then:
|
||||
- script.execute: publish_device_info
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_pending_restart
|
||||
state: false
|
||||
|
||||
- id: dump_config
|
||||
mode: restart
|
||||
then:
|
||||
# Extended by all modules
|
||||
- lambda: |-
|
||||
// Device identification
|
||||
ESP_LOGCONFIG("core", "Device friendly name: ${friendly_name}");
|
||||
ESP_LOGCONFIG("core", "Device name: ${name}");
|
||||
ESP_LOGCONFIG("core", "Device name (HA): %s", tx_device_name->state.c_str());
|
||||
ESP_LOGCONFIG("core", "Device hostname: %s", App.get_name().c_str());
|
||||
|
||||
dump_config_versions->execute();
|
||||
|
||||
// Framework detection
|
||||
#ifdef USE_ARDUINO
|
||||
ESP_LOGCONFIG("core", "Framework: Arduino");
|
||||
#elif defined(USE_ESP_IDF)
|
||||
ESP_LOGCONFIG("core", "Framework: ESP-IDF");
|
||||
#else
|
||||
ESP_LOGW("core", "Framework: UNKNOWN");
|
||||
#endif
|
||||
|
||||
// Model configuration
|
||||
ESP_LOGCONFIG("core", "Model format (selected): %s", sl_tx_model_format->state.c_str());
|
||||
ESP_LOGCONFIG("core", "Model format (detected): %s", id(is_us_model) ? "US" : "EU");
|
||||
ESP_LOGCONFIG("core", "Gangs (selected): %s", sl_tx_model_gang->state.c_str());
|
||||
ESP_LOGCONFIG("core", "Gangs (detected): %" PRIu8 "-Gang%s", id(gang_count), id(gang_count_plural_suffix).c_str());
|
||||
|
||||
// System state
|
||||
if (bs_pending_restart->state)
|
||||
ESP_LOGW("core", "Pending restart: YES");
|
||||
else
|
||||
ESP_LOGCONFIG("core", "Pending restart: No");
|
||||
|
||||
- id: dump_config_caller
|
||||
mode: restart
|
||||
then:
|
||||
- delay: ${DUMP_CONFIG_CALLER_DELAY}
|
||||
- script.execute: dump_config
|
||||
- script.wait: dump_config
|
||||
- script.execute: dump_config_list_packages
|
||||
|
||||
- id: dump_config_list_packages
|
||||
mode: restart
|
||||
then:
|
||||
- script.wait: dump_config
|
||||
- lambda: |-
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, "Installed packages:");
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Core");
|
||||
|
||||
- id: dump_config_versions
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
// Version information
|
||||
ESP_LOGCONFIG("core", "TX Ultimate firmware version: ${version}");
|
||||
|
||||
- id: publish_device_info
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
tx_fw_version->publish_state("${version}");
|
||||
tx_device_name->publish_state(App.get_name().c_str());
|
||||
|
||||
select:
|
||||
- id: sl_tx_model_format
|
||||
name: Model (Format)
|
||||
platform: template
|
||||
options:
|
||||
- "${TX_MODEL_FORMAT_EU_TEXT}"
|
||||
- "${TX_MODEL_FORMAT_US_TEXT}"
|
||||
initial_option: "${TX_MODEL_FORMAT_EU_TEXT}"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: false
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:tablet-cellphone
|
||||
on_value:
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_pending_restart
|
||||
state: true
|
||||
- lambda: |-
|
||||
id(is_us_model) = (x == "${TX_MODEL_FORMAT_US_TEXT}");
|
||||
ESP_LOGI("core", "New model selected: %s", id(is_us_model) ? "US" : "EU");
|
||||
|
||||
- id: sl_tx_model_gang
|
||||
name: Model (Gang)
|
||||
platform: template
|
||||
options:
|
||||
- "${TX_MODEL_1_GANG_TEXT}"
|
||||
- "${TX_MODEL_2_GANG_TEXT}"
|
||||
- "${TX_MODEL_3_GANG_TEXT}"
|
||||
- "${TX_MODEL_4_GANG_TEXT}"
|
||||
initial_option: "${TX_MODEL_1_GANG_TEXT}"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: false
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dip-switch
|
||||
on_value:
|
||||
then:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_pending_restart
|
||||
state: true
|
||||
- lambda: |-
|
||||
id(gang_count) = static_cast<uint8_t>(i) + 1;
|
||||
ESP_LOGI("core", "New model selected: %" PRIu8 "-%s", id(gang_count), id(gang_count) > 1 ? "Gangs" : "Gang");
|
||||
tx_ultimate->set_gang_count(id(gang_count));
|
||||
|
||||
text_sensor:
|
||||
- id: tx_fw_version
|
||||
name: TX Ultimate Easy Firmware Version
|
||||
platform: template
|
||||
entity_category: diagnostic
|
||||
icon: mdi:tag-text-outline
|
||||
internal: false
|
||||
update_interval: never
|
||||
lambda: |-
|
||||
return {"${version}"};
|
||||
|
||||
- id: tx_device_name
|
||||
name: Device Name
|
||||
platform: template
|
||||
icon: mdi:identifier
|
||||
entity_category: diagnostic
|
||||
internal: false
|
||||
disabled_by_default: false
|
||||
update_interval: never
|
||||
lambda: |-
|
||||
return {"${name}"};
|
||||
filters:
|
||||
- lambda: |-
|
||||
const std::string raw_name = x;
|
||||
std::string result;
|
||||
bool last_was_underscore = false;
|
||||
for (const char& c : raw_name) {
|
||||
if (isalnum(c)) {
|
||||
result += tolower(c); // Add alphanumeric characters as lowercase
|
||||
last_was_underscore = false;
|
||||
} else if (!last_was_underscore) { // Replace non-alphanumeric with '_' but avoid consecutive '_'
|
||||
result += '_';
|
||||
last_was_underscore = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
wifi:
|
||||
id: wifi_component
|
||||
...
|
||||
|
||||
323
ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml
Normal file
323
ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml
Normal file
@@ -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<uint8_t>(i) + 1;
|
||||
ESP_LOGI("core", "New model selected: %" PRIu8 "-%s", id(gang_count), id(gang_count) > 1 ? "Gangs" : "Gang");
|
||||
tx_ultimate->set_gang_count(id(gang_count));
|
||||
|
||||
text_sensor:
|
||||
- id: tx_fw_version
|
||||
name: TX Ultimate Easy Firmware Version
|
||||
platform: template
|
||||
entity_category: diagnostic
|
||||
icon: mdi:tag-text-outline
|
||||
internal: false
|
||||
update_interval: never
|
||||
lambda: |-
|
||||
return {"${version}"};
|
||||
|
||||
- id: tx_device_name
|
||||
name: Device Name
|
||||
platform: template
|
||||
icon: mdi:identifier
|
||||
entity_category: diagnostic
|
||||
internal: false
|
||||
disabled_by_default: false
|
||||
update_interval: never
|
||||
lambda: |-
|
||||
return {"${name}"};
|
||||
filters:
|
||||
- lambda: |-
|
||||
const std::string raw_name = x;
|
||||
std::string result;
|
||||
bool last_was_underscore = false;
|
||||
for (const char& c : raw_name) {
|
||||
if (isalnum(c)) {
|
||||
result += tolower(c); // Add alphanumeric characters as lowercase
|
||||
last_was_underscore = false;
|
||||
} else if (!last_was_underscore) { // Replace non-alphanumeric with '_' but avoid consecutive '_'
|
||||
result += '_';
|
||||
last_was_underscore = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
wifi:
|
||||
id: wifi_component
|
||||
...
|
||||
@@ -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
|
||||
|
||||
@@ -13,60 +13,8 @@
|
||||
---
|
||||
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:
|
||||
- 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:
|
||||
...
|
||||
|
||||
64
ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml
Normal file
64
ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml
Normal file
@@ -0,0 +1,64 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome - Add-on - Media player #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
packages:
|
||||
standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_ADDON_MEDIA_PLAYER
|
||||
|
||||
media_player:
|
||||
- id: mp_media_player
|
||||
name: Media Player
|
||||
internal: false
|
||||
platform: i2s_audio
|
||||
i2s_dout_pin: GPIO15
|
||||
i2s_audio_id: if_i2s_audio
|
||||
i2s_comm_fmt: msb
|
||||
dac_type: external
|
||||
mode: mono
|
||||
mute_pin:
|
||||
number: GPIO26
|
||||
inverted: true
|
||||
allow_other_uses: true
|
||||
|
||||
script:
|
||||
- id: !extend dump_config_list_packages
|
||||
then:
|
||||
- script.wait: dump_config
|
||||
- lambda: |-
|
||||
// Check for requirements
|
||||
#if !defined(TX_ULTIMATE_EASY_CORE)
|
||||
#error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required."
|
||||
#endif
|
||||
#if !defined(TX_ULTIMATE_EASY_STANDARD_HW_AUDIO)
|
||||
#error "The package TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml is required."
|
||||
#endif
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - Media Player");
|
||||
|
||||
switch:
|
||||
- id: sw_speaker_amplifier
|
||||
name: Speaker - Amplifier
|
||||
platform: gpio
|
||||
pin:
|
||||
number: GPIO26
|
||||
inverted: true
|
||||
allow_other_uses: true
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
internal: true
|
||||
entity_category: config
|
||||
...
|
||||
75
README.md
75
README.md
@@ -111,28 +111,81 @@ Follow these steps to get your TX Ultimate device up and running with ESPHome.
|
||||
4. Copy this basic configuration to your new device:
|
||||
```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](TX-Ultimate-Easy-ESPHome.yaml)
|
||||
for the latest version of this yaml.
|
||||
5. Click "Save" and then "Install"
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Starting from version 2025.1.0, non-essential components like `web_server`, `captive_portal`, and `wifi`
|
||||
> are no longer included in the core package. If you need these components,
|
||||
> you must add them manually to your local configuration file.
|
||||
> For example:
|
||||
> ```yaml
|
||||
> # Add these to your configuration if needed
|
||||
> web_server:
|
||||
> captive_portal:
|
||||
> wifi:
|
||||
> ap: # Access point configuration
|
||||
> ```
|
||||
|
||||
### Advanced Settings
|
||||
For more granular control over components,
|
||||
you can use our [advanced configuration template](TX-Ultimate-Easy-ESPHome_advanced.yaml).
|
||||
This template allows you to selectively include specific packages, which can be useful for:
|
||||
|
||||
- Troubleshooting specific components
|
||||
- Reducing memory usage by excluding unused features
|
||||
- Customizing functionality for specific use cases
|
||||
|
||||
Here's an example of the advanced configuration:
|
||||
```yaml
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/edwardtfn/TX-Ultimate-Easy
|
||||
ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
|
||||
refresh: 5min
|
||||
files:
|
||||
# Core (essential) packages
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml # Basic shared settings
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml # Button logic
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml # LED configuration
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml # Touch panel support
|
||||
|
||||
# Optional but recommended packages
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml # Relay control
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml # Haptic feedback
|
||||
|
||||
# Audio options (use none or choose only one - using both will fail)
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml # Media player (Recommended for most users)
|
||||
# - ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml # Basic speaker
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> Use the advanced configuration with caution. Excluding core packages may cause instability or reduced functionality.
|
||||
|
||||
### Device Flashing
|
||||
|
||||
Initial flashing must be done via serial connection.
|
||||
|
||||
@@ -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)
|
||||
...
|
||||
|
||||
38
TX-Ultimate-Easy-ESPHome_advanced.yaml
Normal file
38
TX-Ultimate-Easy-ESPHome_advanced.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### WARNING: This is an advanced configuration template. Use with caution as improper #####
|
||||
##### configuration may lead to reduced functionality or system instability. #####
|
||||
####################################################################################################
|
||||
---
|
||||
substitutions:
|
||||
name: tx-ultimate-easy-adv
|
||||
friendly_name: TX Ultimate Easy Advanced
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/edwardtfn/TX-Ultimate-Easy
|
||||
ref: stable # Or you can specify a version, like `ref: v2024.12.6` or `ref: latest` to the latest non-stable
|
||||
refresh: 5min
|
||||
files:
|
||||
# Core (essential) packages - Do not disable these unless you know what you're doing
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_common.yaml # Basic shared settings
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_buttons.yaml # Button logic
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml # LED configuration
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_touch.yaml # Touch panel support
|
||||
|
||||
# Optional functionality - Can be enabled/disabled as needed
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_relays.yaml # Relay control
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_vibration.yaml # Haptic feedback
|
||||
|
||||
# Audio options (use none or choose only one - using both will fail)
|
||||
- ESPHome/TX-Ultimate-Easy-ESPHome_standard_media_player.yaml # Media player (Recommended for most users)
|
||||
# - ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml # Basic speaker
|
||||
...
|
||||
@@ -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")
|
||||
|
||||
@@ -1 +1 @@
|
||||
2025.1.1
|
||||
2025.1.2
|
||||
|
||||
@@ -1 +1 @@
|
||||
version: 2025.1.1
|
||||
version: 2025.1.2
|
||||
|
||||
Reference in New Issue
Block a user