Compare commits
38 Commits
v2024.12.1
...
v2024.12.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fad193892 | ||
|
|
e6bf60555d | ||
|
|
6a12074b71 | ||
|
|
fee446c5e2 | ||
|
|
088213137f | ||
|
|
02c7c1aff1 | ||
|
|
3401aaf4a3 | ||
|
|
f154a483cc | ||
|
|
b69bc6916b | ||
|
|
9d0fcf6bfa | ||
|
|
fa516a66cc | ||
|
|
2811eedffb | ||
|
|
0c9a5ac65e | ||
|
|
9828b6ff8a | ||
|
|
6221e109e8 | ||
|
|
3d21c2ebcb | ||
|
|
7d12ddb0e5 | ||
|
|
ea12c1d422 | ||
|
|
c73cb950eb | ||
|
|
e69873cab5 | ||
|
|
d4a18dc595 | ||
|
|
45b30d30fa | ||
|
|
d656f4b73f | ||
|
|
493dcb0abb | ||
|
|
f8fa9a2363 | ||
|
|
47744c7144 | ||
|
|
fa2c5dcc29 | ||
|
|
3cf6a11bc7 | ||
|
|
0109771731 | ||
|
|
b7df1686b6 | ||
|
|
c22d8eb847 | ||
|
|
f3b84e9d4e | ||
|
|
81c6620fbf | ||
|
|
4378952d97 | ||
|
|
876d03ace5 | ||
|
|
5ddf5388bd | ||
|
|
7aee88c38f | ||
|
|
e546fedf08 |
224
.github/workflows/validate_esphome.yml
vendored
224
.github/workflows/validate_esphome.yml
vendored
@@ -1,6 +1,10 @@
|
||||
---
|
||||
name: Validate ESPHome (Latest)
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
on: # yamllint disable-line rule:truthy
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -27,36 +31,234 @@ 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: latest
|
||||
|
||||
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: latest
|
||||
|
||||
build_idf53_core:
|
||||
name: Core (IDF v5.3)
|
||||
needs: code_scan
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build Core (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_core.yaml"
|
||||
version: latest
|
||||
|
||||
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: latest
|
||||
|
||||
build_bluetooth_proxy_4:
|
||||
name: Bluetooth Proxy (IDF)
|
||||
build_idf_basic:
|
||||
name: Basic (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: latest
|
||||
|
||||
build_bluetooth_proxy_53:
|
||||
name: Bluetooth Proxy (IDF v5.3)
|
||||
build_idf53_basic:
|
||||
name: Basic (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build core
|
||||
- name: Build Basic (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_bluetooth_proxy.yaml"
|
||||
yaml-file: ".test/esphome_idf53_basic.yaml"
|
||||
version: latest
|
||||
|
||||
build_ard_hw_relays:
|
||||
name: HW Relays (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_relays.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf_hw_relays:
|
||||
name: HW Relays (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_relays.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf53_hw_relays:
|
||||
name: HW Relays (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_relays.yaml"
|
||||
version: latest
|
||||
|
||||
build_ard_hw_speaker:
|
||||
name: HW Speaker (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_speaker.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf_hw_speaker:
|
||||
name: HW Speaker (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_speaker.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf53_hw_speaker:
|
||||
name: HW Speaker (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_speaker.yaml"
|
||||
version: latest
|
||||
|
||||
build_ard_hw_vibration:
|
||||
name: HW Vibration (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_vibration.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf_hw_vibration:
|
||||
name: HW Vibration (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_vibration.yaml"
|
||||
version: latest
|
||||
|
||||
build_idf53_hw_vibration:
|
||||
name: HW Vibration (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_vibration.yaml"
|
||||
version: latest
|
||||
|
||||
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: latest
|
||||
|
||||
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: latest
|
||||
|
||||
build_idf53_ble_proxy:
|
||||
name: Bluetooth Proxy (IDF v5.3)
|
||||
needs: build_idf53_basic
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build BLE Proxy (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_ble_proxy.yaml"
|
||||
version: latest
|
||||
|
||||
build_ard_media_player:
|
||||
name: Media Player (Ard)
|
||||
needs:
|
||||
- build_ard_basic
|
||||
- build_ard_hw_relays
|
||||
- build_ard_hw_vibration
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build Media Player (Ard)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_media_player.yaml"
|
||||
version: latest
|
||||
...
|
||||
|
||||
250
.github/workflows/validate_esphome_beta.yml
vendored
250
.github/workflows/validate_esphome_beta.yml
vendored
@@ -1,27 +1,29 @@
|
||||
---
|
||||
name: Validate ESPHome (Beta)
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
on: # yamllint disable-line rule:truthy
|
||||
push:
|
||||
paths:
|
||||
- "*.yaml"
|
||||
- "ESPHome/*.yaml"
|
||||
- ".test/*.yaml"
|
||||
- "*.h"
|
||||
- "*.c"
|
||||
- "*.cpp"
|
||||
- "*.py"
|
||||
- "*.{yml,yaml,h,cpp,c,py}"
|
||||
- ".github/workflows/*.{yml,yaml,h,cpp,c,py}"
|
||||
- ".test/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "components/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "components/tx_ultimate_easy/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "ESPHome/*.{yml,yaml,h,cpp,c,py}"
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
paths:
|
||||
- "*.yaml"
|
||||
- "ESPHome/*.yaml"
|
||||
- ".test/*.yaml"
|
||||
- "*.h"
|
||||
- "*.c"
|
||||
- "*.cpp"
|
||||
- "*.py"
|
||||
- "*.{yml,yaml,h,cpp,c,py}"
|
||||
- ".github/workflows/*.{yml,yaml,h,cpp,c,py}"
|
||||
- ".test/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "components/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "components/tx_ultimate_easy/*.{yml,yaml,h,cpp,c,py}"
|
||||
- "ESPHome/*.{yml,yaml,h,cpp,c,py}"
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
@@ -47,36 +49,234 @@ 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 (IDF v5.3)
|
||||
needs: code_scan
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build Core (IDF v5.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: Basic (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 (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build core
|
||||
- name: Build Basic (IDF v5.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_hw_relays:
|
||||
name: HW Relays (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_relays.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf_hw_relays:
|
||||
name: HW Relays (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_relays.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf53_hw_relays:
|
||||
name: HW Relays (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Relays (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_relays.yaml"
|
||||
version: beta
|
||||
|
||||
build_ard_hw_speaker:
|
||||
name: HW Speaker (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_speaker.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf_hw_speaker:
|
||||
name: HW Speaker (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_speaker.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf53_hw_speaker:
|
||||
name: HW Speaker (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Speaker (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_speaker.yaml"
|
||||
version: beta
|
||||
|
||||
build_ard_hw_vibration:
|
||||
name: HW Vibration (Arduino)
|
||||
needs: build_ard_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (Arduino)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_hw_vibration.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf_hw_vibration:
|
||||
name: HW Vibration (IDF)
|
||||
needs: build_idf_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (IDF)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf_hw_vibration.yaml"
|
||||
version: beta
|
||||
|
||||
build_idf53_hw_vibration:
|
||||
name: HW Vibration (IDF v5.3)
|
||||
needs: build_idf53_core
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build HW Vibration (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_hw_vibration.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 (IDF v5.3)
|
||||
needs: build_idf53_basic
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build BLE Proxy (IDF v5.3)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_idf53_ble_proxy.yaml"
|
||||
version: beta
|
||||
|
||||
build_ard_media_player:
|
||||
name: Media Player (Ard)
|
||||
needs:
|
||||
- build_ard_basic
|
||||
- build_ard_hw_relays
|
||||
- build_ard_hw_vibration
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Build Media Player (Ard)
|
||||
uses: esphome/build-action@main
|
||||
with:
|
||||
yaml-file: ".test/esphome_ard_media_player.yaml"
|
||||
version: beta
|
||||
...
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
---
|
||||
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:
|
||||
type: arduino
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
|
||||
14
.test/esphome_ard_ble_proxy.yaml
Normal file
14
.test/esphome_ard_ble_proxy.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
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
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
12
.test/esphome_ard_core.yaml
Normal file
12
.test/esphome_ard_core.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
packages:
|
||||
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: arduino
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
13
.test/esphome_ard_hw_relays.yaml
Normal file
13
.test/esphome_ard_hw_relays.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
13
.test/esphome_ard_hw_speaker.yaml
Normal file
13
.test/esphome_ard_hw_speaker.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
13
.test/esphome_ard_hw_vibration.yaml
Normal file
13
.test/esphome_ard_hw_vibration.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
15
.test/esphome_ard_media_player.yaml
Normal file
15
.test/esphome_ard_media_player.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
15
.test/esphome_idf53_basic.yaml
Normal file
15
.test/esphome_idf53_basic.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
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
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
16
.test/esphome_idf53_ble_proxy.yaml
Normal file
16
.test/esphome_idf53_ble_proxy.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
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
|
||||
version: 5.3.1
|
||||
platform_version: 6.9.0
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
@@ -1,11 +1,14 @@
|
||||
---
|
||||
packages:
|
||||
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
|
||||
addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
version: 5.3.1
|
||||
platform_version: 6.9.0
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
15
.test/esphome_idf53_hw_relays.yaml
Normal file
15
.test/esphome_idf53_hw_relays.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
15
.test/esphome_idf53_hw_speaker.yaml
Normal file
15
.test/esphome_idf53_hw_speaker.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
15
.test/esphome_idf53_hw_vibration.yaml
Normal file
15
.test/esphome_idf53_hw_vibration.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
13
.test/esphome_idf_basic.yaml
Normal file
13
.test/esphome_idf_basic.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
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
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
14
.test/esphome_idf_ble_proxy.yaml
Normal file
14
.test/esphome_idf_ble_proxy.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
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
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
packages:
|
||||
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
|
||||
addon_bluetooth_proxy: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_addon_ble_proxy.yaml
|
||||
...
|
||||
12
.test/esphome_idf_core.yaml
Normal file
12
.test/esphome_idf_core.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
packages:
|
||||
core_package: !include ../ESPHome/TX-Ultimate-Easy-ESPHome_core.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
...
|
||||
13
.test/esphome_idf_hw_relays.yaml
Normal file
13
.test/esphome_idf_hw_relays.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
13
.test/esphome_idf_hw_speaker.yaml
Normal file
13
.test/esphome_idf_hw_speaker.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
13
.test/esphome_idf_hw_vibration.yaml
Normal file
13
.test/esphome_idf_hw_vibration.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
packages:
|
||||
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
|
||||
...
|
||||
@@ -11,97 +11,23 @@
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
substitutions:
|
||||
# RTTTL format: name:d=duration,o=octave,b=tempo:notes
|
||||
# d=32 (32nd note), o=5 (octave 5), b=100 (tempo 100)
|
||||
tone_volume_change: "scale_up:d=32,o=5,b=100:c,c#,d#,e,f#,g#,a#,b" # Use "none" to disable sound
|
||||
|
||||
api:
|
||||
actions:
|
||||
- action: rtttl_play
|
||||
variables:
|
||||
# The RTTTL string for the melody to be played.
|
||||
# It should follow the RTTTL format, including the melody's name,
|
||||
# default settings, and a sequence of notes.
|
||||
tone: string
|
||||
then:
|
||||
- lambda: |-
|
||||
rtttl_speaker->stop();
|
||||
if (rtttl_speaker_gain->state > 0) {
|
||||
ESP_LOGI("api", "Play tone: '%s'", tone.c_str());
|
||||
rtttl_speaker->play(tone.c_str());
|
||||
}
|
||||
|
||||
bluetooth_proxy:
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
sdkconfig_options:
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y"
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y"
|
||||
CONFIG_ESP32_REV_MIN_3: "y"
|
||||
CONFIG_MBEDTLS_DYNAMIC_BUFFER: "y"
|
||||
CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT: "y"
|
||||
CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA: "y"
|
||||
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y"
|
||||
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: "y"
|
||||
CONFIG_SPIRAM_RODATA: "y"
|
||||
CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y"
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_ADDON_BLE_PROXY
|
||||
|
||||
light:
|
||||
- id: !extend light_full
|
||||
platform: esp32_rmt_led_strip
|
||||
rgb_order: GRB
|
||||
rmt_channel: 1
|
||||
chipset: ws2812
|
||||
type: !remove
|
||||
variant: !remove
|
||||
max_refresh_rate: 33ms
|
||||
use_psram: 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
|
||||
|
||||
media_player: !remove
|
||||
|
||||
number:
|
||||
- id: rtttl_speaker_gain
|
||||
name: Sound - Volume
|
||||
platform: template
|
||||
max_value: 100
|
||||
min_value: 0
|
||||
step: 1
|
||||
initial_value: 100
|
||||
unit_of_measurement: "%"
|
||||
internal: false
|
||||
disabled_by_default: true
|
||||
entity_category: config
|
||||
device_class: sound_pressure
|
||||
restore_value: true
|
||||
optimistic: true
|
||||
set_action:
|
||||
then:
|
||||
- lambda: |-
|
||||
rtttl_speaker->set_gain((100-(x/10.0f))/100.0f);
|
||||
std::string tone_volume_change = "${tone_volume_change}";
|
||||
// Play sound if tone_volume_change is not "none"
|
||||
if (x > 0 and !tone_volume_change.empty() and tone_volume_change != "none")
|
||||
rtttl_speaker->play(tone_volume_change);
|
||||
rtttl_speaker->dump_config();
|
||||
|
||||
rtttl:
|
||||
- id: rtttl_speaker
|
||||
speaker: mp_speaker
|
||||
|
||||
speaker:
|
||||
- id: mp_speaker
|
||||
platform: i2s_audio
|
||||
dac_type: external
|
||||
i2s_dout_pin: GPIO15
|
||||
i2s_audio_id: if_i2s_audio
|
||||
i2s_comm_fmt: stand_msb
|
||||
channel: mono
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - BLE Proxy");
|
||||
...
|
||||
|
||||
68
ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml
Normal file
68
ESPHome/TX-Ultimate-Easy-ESPHome_addon_media_player.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome - Add-on - Media player #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
packages:
|
||||
standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
|
||||
|
||||
esp32:
|
||||
framework:
|
||||
type: arduino
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_ADDON_MEDIA_PLAYER
|
||||
|
||||
media_player:
|
||||
- id: mp_media_player
|
||||
name: Media Player
|
||||
internal: false
|
||||
platform: i2s_audio
|
||||
i2s_dout_pin: GPIO15
|
||||
i2s_audio_id: if_i2s_audio
|
||||
i2s_comm_fmt: msb
|
||||
dac_type: external
|
||||
mode: mono
|
||||
mute_pin:
|
||||
number: GPIO26
|
||||
inverted: true
|
||||
allow_other_uses: true
|
||||
|
||||
script:
|
||||
- id: !extend dump_config_list_packages
|
||||
then:
|
||||
- script.wait: dump_config
|
||||
- lambda: |-
|
||||
// Check for requirements
|
||||
#if !defined(TX_ULTIMATE_EASY_CORE)
|
||||
#error "The package TX-Ultimate-Easy-ESPHome_core.yaml is required."
|
||||
#endif
|
||||
#if !defined(TX_ULTIMATE_EASY_STANDARD_HW_AUDIO)
|
||||
#error "The package TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml is required."
|
||||
#endif
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Add-on - Media Player");
|
||||
|
||||
switch:
|
||||
- id: sw_speaker_amplifier
|
||||
name: Speaker - Amplifier
|
||||
platform: gpio
|
||||
pin:
|
||||
number: GPIO26
|
||||
inverted: true
|
||||
allow_other_uses: true
|
||||
restore_mode: RESTORE_DEFAULT_ON
|
||||
internal: true
|
||||
entity_category: config
|
||||
...
|
||||
@@ -25,20 +25,20 @@ substitutions:
|
||||
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_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_speaker: !include TX-Ultimate-Easy-ESPHome_core_hw_speaker.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:
|
||||
id: api_server
|
||||
on_client_connected:
|
||||
then:
|
||||
- script.execute: dump_config_caller
|
||||
- script.execute: publish_device_info
|
||||
|
||||
binary_sensor:
|
||||
@@ -49,24 +49,28 @@ binary_sensor:
|
||||
platform: template
|
||||
entity_category: diagnostic
|
||||
device_class: problem
|
||||
|
||||
button:
|
||||
- id: bt_restart
|
||||
name: Restart
|
||||
internal: false
|
||||
platform: restart
|
||||
|
||||
captive_portal:
|
||||
id: ap_captive_portal
|
||||
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
|
||||
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
|
||||
@@ -95,8 +99,11 @@ globals:
|
||||
restore_value: true
|
||||
initial_value: '0'
|
||||
|
||||
improv_serial:
|
||||
id: serial_improv
|
||||
- id: gang_count_plural_suffix
|
||||
type: std::string
|
||||
restore_value: true
|
||||
max_restore_data_length: 3
|
||||
# initial_value: "''"
|
||||
|
||||
logger:
|
||||
level: DEBUG
|
||||
@@ -149,6 +156,7 @@ script:
|
||||
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
|
||||
@@ -158,6 +166,65 @@ script:
|
||||
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:
|
||||
@@ -214,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
|
||||
@@ -256,13 +317,6 @@ text_sensor:
|
||||
}
|
||||
return result;
|
||||
|
||||
time:
|
||||
- id: time_source
|
||||
platform: homeassistant
|
||||
|
||||
web_server:
|
||||
|
||||
wifi:
|
||||
id: wifi_component
|
||||
ap:
|
||||
...
|
||||
|
||||
@@ -57,6 +57,11 @@ binary_sensor:
|
||||
internal: false
|
||||
<<: *binary_sensor_button_base
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_CORE_HW_BUTTONS
|
||||
|
||||
globals:
|
||||
- id: button_press_button
|
||||
type: uint8_t
|
||||
@@ -200,6 +205,41 @@ script:
|
||||
}
|
||||
}
|
||||
|
||||
- id: !extend dump_config
|
||||
then:
|
||||
- lambda: |-
|
||||
// Button's actions
|
||||
ESP_LOGCONFIG("core_hw_buttons", "Button%s action%s:",
|
||||
id(gang_count_plural_suffix).c_str(),
|
||||
id(gang_count_plural_suffix).c_str());
|
||||
ESP_LOGCONFIG("core_hw_buttons", " Relay 1: %s", sl_button_1_action->has_state()
|
||||
? sl_button_1_action->state.c_str()
|
||||
: "Unknown");
|
||||
if (id(gang_count) >= 2)
|
||||
ESP_LOGCONFIG("core_hw_buttons", " Relay 2: %s", sl_button_2_action->has_state()
|
||||
? sl_button_2_action->state.c_str()
|
||||
: "Unknown");
|
||||
if (id(gang_count) >= 3)
|
||||
ESP_LOGCONFIG("core_hw_buttons", " Relay 3: %s", sl_button_3_action->has_state()
|
||||
? sl_button_3_action->state.c_str()
|
||||
: "Unknown");
|
||||
if (id(gang_count) >= 4)
|
||||
ESP_LOGCONFIG("core_hw_buttons", " Relay 4: %s", sl_button_4_action->has_state()
|
||||
? 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
|
||||
|
||||
@@ -29,6 +29,11 @@ substitutions:
|
||||
LIGHT_SIDES_RESTORE_MODE: RESTORE_DEFAULT_OFF
|
||||
LIGHT_INDIVIDUAL_RESTORE_MODE: RESTORE_DEFAULT_OFF
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_CORE_HW_LEDS
|
||||
|
||||
globals:
|
||||
- id: gb_lights_1
|
||||
type: std::vector<light::LightState*>
|
||||
@@ -42,13 +47,15 @@ light:
|
||||
- id: light_full
|
||||
name: Light - All
|
||||
internal: true
|
||||
platform: neopixelbus
|
||||
type: GRB
|
||||
variant: WS2811
|
||||
# method: esp32_rmt
|
||||
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
|
||||
|
||||
# Those lights are available based on the model selections
|
||||
- &light_partition_with_effects
|
||||
@@ -436,52 +443,58 @@ 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;
|
||||
}
|
||||
- id: !extend dump_config
|
||||
then:
|
||||
- lambda: |-
|
||||
// Relay's LEDs modes
|
||||
ESP_LOGCONFIG("core_hw_leds", "Relay%s LEDs mode%s:",
|
||||
id(gang_count_plural_suffix).c_str(),
|
||||
id(gang_count_plural_suffix).c_str());
|
||||
ESP_LOGCONFIG("core_hw_leds", " Relay 1: %s", id(is_us_model)
|
||||
? sl_relay_1_light_mode_us->state.c_str()
|
||||
: sl_relay_1_light_mode_eu->state.c_str());
|
||||
if (id(gang_count) >= 2)
|
||||
ESP_LOGCONFIG("core_hw_leds", " Relay 2: %s", id(is_us_model)
|
||||
? sl_relay_2_light_mode_us->state.c_str()
|
||||
: sl_relay_2_light_mode_eu->state.c_str());
|
||||
if (id(gang_count) >= 3)
|
||||
ESP_LOGCONFIG("core_hw_leds", " Relay 3: %s", id(is_us_model)
|
||||
? sl_relay_3_light_mode_us->state.c_str()
|
||||
: sl_relay_3_light_mode_eu->state.c_str());
|
||||
if (id(gang_count) >= 4)
|
||||
ESP_LOGCONFIG("core_hw_leds", " Relay 4: %s", id(is_us_model)
|
||||
? sl_relay_4_light_mode_us->state.c_str()
|
||||
: sl_relay_4_light_mode_eu->state.c_str());
|
||||
|
||||
// Transition times
|
||||
ESP_LOGCONFIG("core_hw_leds", "Transition times:");
|
||||
ESP_LOGCONFIG("core_hw_leds", " Default: ${default_transition_length}");
|
||||
if (${LIGHT_TRANSITION_TURN_ON} > 0)
|
||||
ESP_LOGCONFIG("core_hw_leds", " Turning on: ${LIGHT_TRANSITION_TURN_ON}ms");
|
||||
else
|
||||
ESP_LOGCONFIG("core_hw_leds", " Turning on: Disabled");
|
||||
if (${LIGHT_TRANSITION_TURN_OFF} > 0)
|
||||
ESP_LOGCONFIG("core_hw_leds", " Turning off: ${LIGHT_TRANSITION_TURN_OFF}ms");
|
||||
else
|
||||
ESP_LOGCONFIG("core_hw_leds", " Turning off: Disabled");
|
||||
|
||||
// Restore modes
|
||||
ESP_LOGCONFIG("core_hw_leds", "LED restore modes:");
|
||||
ESP_LOGCONFIG("core_hw_leds", " Light - All: ${LIGHT_FULL_RESTORE_MODE}");
|
||||
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
|
||||
@@ -571,15 +584,12 @@ select:
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dots-square
|
||||
|
||||
- id: sl_relay_2_light_mode_eu
|
||||
name: Relay 2 light mode
|
||||
<<: *relay_light_mode_eu
|
||||
|
||||
- id: sl_relay_3_light_mode_eu
|
||||
name: Relay 3 light mode
|
||||
<<: *relay_light_mode_eu
|
||||
|
||||
- id: sl_relay_4_light_mode_eu
|
||||
name: Relay 4 light mode
|
||||
<<: *relay_light_mode_eu
|
||||
@@ -601,15 +611,12 @@ select:
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:dots-square
|
||||
|
||||
- id: sl_relay_2_light_mode_us
|
||||
name: Relay 2 light mode
|
||||
<<: *relay_light_mode_us
|
||||
|
||||
- id: sl_relay_3_light_mode_us
|
||||
name: Relay 3 light mode
|
||||
<<: *relay_light_mode_us
|
||||
|
||||
- id: sl_relay_4_light_mode_us
|
||||
name: Relay 4 light mode
|
||||
<<: *relay_light_mode_us
|
||||
|
||||
@@ -198,6 +198,11 @@ binary_sensor:
|
||||
id: bs_swipe_down
|
||||
state: OFF # yamllint disable-line rule:truthy
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_CORE_HW_TOUCH
|
||||
|
||||
external_components:
|
||||
- source:
|
||||
type: git
|
||||
@@ -283,6 +288,28 @@ script:
|
||||
bs_button_3_long_press_event->set_internal(id(gang_count) < 3);
|
||||
bs_button_4_long_press_event->set_internal(id(gang_count) < 4);
|
||||
|
||||
- id: !extend dump_config
|
||||
then:
|
||||
- lambda: |-
|
||||
// Touch panel's state
|
||||
if (sw_touch_panel_power->state)
|
||||
ESP_LOGCONFIG("core_hw_touch", "Touch panel - Power: On");
|
||||
else
|
||||
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:
|
||||
|
||||
72
ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
Normal file
72
ESPHome/TX-Ultimate-Easy-ESPHome_standard.yaml
Normal file
@@ -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:
|
||||
...
|
||||
36
ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
Normal file
36
ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome - Standard - I2S Audio #####
|
||||
####################################################################################################
|
||||
##### 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. #####
|
||||
####################################################################################################
|
||||
---
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_STANDARD_HW_AUDIO
|
||||
|
||||
i2s_audio:
|
||||
id: if_i2s_audio
|
||||
i2s_bclk_pin: GPIO2
|
||||
i2s_lrclk_pin: GPIO4
|
||||
|
||||
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 - Hardware - Audio");
|
||||
...
|
||||
@@ -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 #####
|
||||
####################################################################################################
|
||||
@@ -19,12 +19,20 @@ substitutions:
|
||||
RELAY_RESTORE_MODE: RESTORE_DEFAULT_OFF
|
||||
LIGHT_RELAYS_RESTORE_MODE: RESTORE_DEFAULT_OFF
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -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
|
||||
@@ -436,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);
|
||||
@@ -451,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:
|
||||
@@ -587,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}:
|
||||
@@ -626,21 +692,84 @@ 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
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard - Hardware - Relays");
|
||||
|
||||
- id: show_relay_status
|
||||
mode: restart
|
||||
then:
|
||||
- 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;
|
||||
@@ -683,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) {
|
||||
182
ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
Normal file
182
ESPHome/TX-Ultimate-Easy-ESPHome_standard_hw_speaker.yaml
Normal file
@@ -0,0 +1,182 @@
|
||||
####################################################################################################
|
||||
##### TX Ultimate Easy for ESPHome #####
|
||||
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
|
||||
####################################################################################################
|
||||
##### Purpose: ESPHome - Standard - Hardware - Speaker #####
|
||||
####################################################################################################
|
||||
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
|
||||
####################################################################################################
|
||||
##### NOTE: #####
|
||||
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
|
||||
##### - For normal system use, modifications to this file are NOT required. #####
|
||||
####################################################################################################
|
||||
---
|
||||
substitutions:
|
||||
# RTTTL format: name:d=duration,o=octave,b=tempo:notes
|
||||
# d=32 (32nd note), o=5 (octave 5), b=100 (tempo 100)
|
||||
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:
|
||||
standard_hw_audio: !include TX-Ultimate-Easy-ESPHome_standard_hw_audio.yaml
|
||||
|
||||
api:
|
||||
actions:
|
||||
- action: rtttl_play
|
||||
variables:
|
||||
# The RTTTL string for the melody to be played.
|
||||
# It should follow the RTTTL format, including the melody's name,
|
||||
# default settings, and a sequence of notes.
|
||||
tone: string
|
||||
then:
|
||||
- lambda: |-
|
||||
rtttl_speaker->stop();
|
||||
if (speaker_volume->state > 0) {
|
||||
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_STANDARD_SPEAKER
|
||||
|
||||
number:
|
||||
- id: speaker_volume
|
||||
name: Sound - Volume
|
||||
platform: template
|
||||
max_value: 100
|
||||
min_value: 0
|
||||
step: 1
|
||||
initial_value: 100
|
||||
unit_of_measurement: "%"
|
||||
internal: false
|
||||
disabled_by_default: true
|
||||
entity_category: config
|
||||
device_class: sound_pressure
|
||||
restore_value: true
|
||||
optimistic: true
|
||||
set_action:
|
||||
then:
|
||||
- speaker.volume_set:
|
||||
id: speaker_embedded
|
||||
volume: !lambda return x/100.0f;
|
||||
- lambda: |-
|
||||
static const std::string tone_volume_change = "${tone_volume_change}";
|
||||
// Play sound if tone_volume_change is not "none"
|
||||
if (x > 0 and !tone_volume_change.empty() and tone_volume_change != "none")
|
||||
rtttl_speaker->play(tone_volume_change);
|
||||
|
||||
rtttl:
|
||||
- id: rtttl_speaker
|
||||
speaker: speaker_embedded
|
||||
|
||||
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, " - Standard - Hardware - Speaker");
|
||||
|
||||
- id: speaker_play_click
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
not:
|
||||
- speaker.is_playing: speaker_embedded
|
||||
then:
|
||||
- speaker.play:
|
||||
id: speaker_embedded
|
||||
data: [
|
||||
0x01, 0x02, 0x04, 0x06, 0x07, 0x08, 0x08, 0x06, 0x01, 0xFA, 0xF4,
|
||||
0xEF, 0xEE, 0xF1, 0xF7, 0xFF, 0x07, 0x0E, 0x11, 0x11, 0x10, 0x0C,
|
||||
0x06, 0xFF, 0xF8, 0xF1, 0xEC, 0xEA, 0xEC, 0xF2, 0xF9, 0xFF, 0x05,
|
||||
0x0A, 0x10, 0x14, 0x17, 0x17, 0x14, 0x0B, 0xFD, 0xED, 0xE0, 0xD9,
|
||||
0xDB, 0xE6, 0xF7, 0x0A, 0x19, 0x20, 0x1E, 0x14, 0x05, 0xF4, 0xE5,
|
||||
0xDF, 0xE4, 0xF4, 0x0C, 0x24, 0x36, 0x3D, 0x35, 0x20, 0xFF, 0xDD,
|
||||
0xC0, 0xAE, 0xA9, 0xB0, 0xC4, 0xE0, 0x03, 0x26, 0x48, 0x62, 0x70,
|
||||
0x6D, 0x59, 0x35, 0x08, 0xD8, 0xAC, 0x8D, 0x80, 0x85, 0x9C, 0xC1,
|
||||
0xF0, 0x21, 0x4E, 0x6F, 0x7F, 0x7A, 0x63, 0x3D, 0x0F, 0xE0, 0xB7,
|
||||
0x9B, 0x90, 0x96, 0xAC, 0xCE, 0xF6, 0x1D, 0x3C, 0x50, 0x55, 0x4D,
|
||||
0x3A, 0x20, 0x04, 0xEC, 0xD8, 0xCC, 0xC9, 0xCD, 0xD8, 0xE8, 0xF9,
|
||||
0x0A, 0x17, 0x1F, 0x20, 0x1C, 0x12, 0x07, 0xFC, 0xF2, 0xEC, 0xEB,
|
||||
0xED, 0xF3, 0xFA, 0x02, 0x0A, 0x10, 0x12, 0x12, 0x0E, 0x07, 0xFE,
|
||||
0xF5, 0xED, 0xEA, 0xEB, 0xEF, 0xF7, 0x00, 0x0A, 0x10, 0x13, 0x12,
|
||||
0x0F, 0x09, 0x02, 0xFB, 0xF5, 0xF3, 0xF2, 0xF3, 0xF6, 0xFB, 0xFF,
|
||||
0x03, 0x05, 0x07, 0x08, 0x07, 0x05, 0x03, 0x01, 0xFF, 0xFE, 0xFC,
|
||||
0xFB, 0xFB, 0xFC, 0xFC, 0xFD, 0xFE, 0xFF, 0x00, 0x01, 0x02, 0x02,
|
||||
0x01]
|
||||
|
||||
- wait_until:
|
||||
condition:
|
||||
not:
|
||||
- speaker.is_playing: speaker_embedded
|
||||
- speaker.stop: speaker_embedded
|
||||
|
||||
- id: !extend touch_on_multi_touch_release
|
||||
then:
|
||||
- script.execute: touch_on_multi_touch_release_speaker
|
||||
|
||||
- id: touch_on_multi_touch_release_speaker
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_speaker_feedback->state != "Disabled")
|
||||
speaker_play_click->execute();
|
||||
|
||||
- id: !extend touch_on_press
|
||||
then:
|
||||
- script.execute: touch_on_press_speaker
|
||||
|
||||
- id: touch_on_press_speaker
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_speaker_feedback->state == "On press" or sl_touch_speaker_feedback->state == "Always")
|
||||
speaker_play_click->execute();
|
||||
|
||||
- id: !extend touch_on_release
|
||||
then:
|
||||
- script.execute: touch_on_release_speaker
|
||||
|
||||
- id: touch_on_release_speaker
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
if (sl_touch_speaker_feedback->state == "On release" or sl_touch_speaker_feedback->state == "Always")
|
||||
speaker_play_click->execute();
|
||||
|
||||
select:
|
||||
- id: sl_touch_speaker_feedback
|
||||
name: Touch - Speaker feedback
|
||||
platform: template
|
||||
options:
|
||||
- "Disabled"
|
||||
- "On press"
|
||||
- "On release"
|
||||
- "Always"
|
||||
initial_option: "Disabled"
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
internal: false
|
||||
entity_category: config
|
||||
disabled_by_default: false
|
||||
icon: mdi:vibrate
|
||||
|
||||
speaker:
|
||||
- id: speaker_embedded
|
||||
platform: i2s_audio
|
||||
dac_type: external
|
||||
i2s_dout_pin: GPIO15
|
||||
i2s_audio_id: if_i2s_audio
|
||||
i2s_comm_fmt: stand_msb
|
||||
channel: mono
|
||||
...
|
||||
@@ -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 #####
|
||||
####################################################################################################
|
||||
@@ -32,6 +32,11 @@ button:
|
||||
then:
|
||||
- script.execute: vibrate
|
||||
|
||||
esphome:
|
||||
platformio_options:
|
||||
build_flags:
|
||||
- -D TX_ULTIMATE_EASY_STANDARD_HW_VIBRATION
|
||||
|
||||
number:
|
||||
- id: nr_vibrating_duration
|
||||
name: Vibrate duration
|
||||
@@ -53,6 +58,33 @@ ota:
|
||||
- switch.turn_off: sw_vibration_motor
|
||||
|
||||
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
|
||||
|
||||
// Identify itself
|
||||
ESP_LOGCONFIG(ESPHOME_PROJECT_NAME, " - Standard - Hardware - Vibration");
|
||||
|
||||
- id: !extend touch_on_multi_touch_release
|
||||
then:
|
||||
- script.execute: touch_on_multi_touch_release_vibration
|
||||
@@ -133,5 +165,4 @@ switch:
|
||||
- binary_sensor.template.publish:
|
||||
id: bs_vibrating
|
||||
state: OFF # yamllint disable-line rule:truthy
|
||||
|
||||
...
|
||||
@@ -156,6 +156,7 @@ This project builds upon the work of several amazing projects and contributors:
|
||||
|
||||
- [SmartHome yourself - SONOFF TX Ultimate for ESPHome](https://github.com/SmartHome-yourself/sonoff-tx-ultimate-for-esphome)
|
||||
- [Un loco y su tecnología - Sonoff TX Ultimate with ESPHome](https://www.youtube.com/watch?v=58v8oqSQgXQ)
|
||||
- @PxPert - [Sonoff TX Ultimate and Voice Assistant](https://community.home-assistant.io/t/sonoff-tx-ultimate-and-voice-assistant/682214?u=edwardtfn)
|
||||
|
||||
Special thanks to all contributors and community members who help make this project better.
|
||||
|
||||
|
||||
@@ -19,6 +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_addon_ble_proxy.yaml # Adds experimental BLE proxy support (limited)
|
||||
- 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)
|
||||
...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "esphome/core/log.h"
|
||||
#include "tx_ultimate_easy.h"
|
||||
#include <cinttypes>
|
||||
#include <string>
|
||||
|
||||
namespace esphome {
|
||||
@@ -68,9 +69,9 @@ namespace esphome {
|
||||
if (this->gang_count_ == 1)
|
||||
return 1;
|
||||
|
||||
// Calculate button number
|
||||
const uint8_t width = (TOUCH_MAX_POSITION + 1) / this->gang_count_; // Width of each button region
|
||||
if (width < 1 or width > this->gang_count_) // Invalid width - and prevents division by zero
|
||||
//Calculate button number Change to round up insted of truncate (integer division)
|
||||
const uint8_t width = (TOUCH_MAX_POSITION + gang_count_) / this->gang_count_; // Width of each button region
|
||||
if (width < 1) // Invalid width - and prevents division by zero removed "width > gang_count_" issue with 2 gang
|
||||
return 0;
|
||||
const uint8_t button = std::min(
|
||||
static_cast<uint8_t>((position / width) + 1), // Convert position to button index
|
||||
|
||||
@@ -1 +1 @@
|
||||
2024.12.18
|
||||
2024.12.22
|
||||
|
||||
@@ -1 +1 @@
|
||||
version: 2024.12.18
|
||||
version: 2024.12.22
|
||||
|
||||
Reference in New Issue
Block a user