Compare commits

...

50 Commits

Author SHA1 Message Date
GitHub Actions
7f1c362a50 Bump version to 2024.12.3 [skip-versioning] 2024-12-21 17:09:47 +00:00
Edward Firmo
cf3018c95c Merge pull request #49 from edwardtfn/new-versioning-03
Fix verison validation
2024-12-21 18:09:37 +01:00
Edward Firmo
360ae3123a Update bump_version.sh 2024-12-21 18:06:00 +01:00
Edward Firmo
6767b5e765 Fix version validation 2024-12-21 18:00:46 +01:00
Edward Firmo
d5e5ebb3d6 Fix version format 2024-12-21 17:52:33 +01:00
Edward Firmo
46c04eb992 Merge pull request #46 from edwardtfn/new-versioning-03
Rollback to the last working point
2024-12-21 17:50:34 +01:00
Edward Firmo
8558bc3650 Merge branch 'main' into new-versioning-03 2024-12-21 17:49:58 +01:00
Edward Firmo
f32e2eee4f Add quotes around file path in cat command
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 17:14:00 +01:00
Edward Firmo
5a993165cd Rollback to the last working point 2024-12-21 14:54:47 +01:00
Edward Firmo
d04c2aff2f Merge pull request #45 from edwardtfn/new-versioning-02
Use an automation branch
2024-12-21 14:14:00 +01:00
Edward Firmo
2d79ee42c7 Quote variables and url 2024-12-21 14:05:37 +01:00
Edward Firmo
3f4fc7a505 Quote GitHub token in push command
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 13:55:26 +01:00
Edward Firmo
be23a5a0fd Quote variables in temporary branch creation
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 13:54:51 +01:00
Edward Firmo
a23a2db352 Fix invalid YAML structure in push trigger
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 13:35:12 +01:00
Edward Firmo
4e73a11528 Use an automation branch 2024-12-21 13:27:58 +01:00
Edward Firmo
3c98d81bb7 Merge pull request #44 from edwardtfn/new-versioning-01
No leading zero on versions
2024-12-21 12:31:30 +01:00
Edward Firmo
e63447984d Remove duplicated version validation 2024-12-21 12:26:05 +01:00
Edward Firmo
1f1a8049e6 No leading zero on versions 2024-12-21 12:23:32 +01:00
Edward Firmo
0dddc0747b Merge pull request #43 from edwardtfn/test-new-versioning-04
Describe file
2024-12-21 11:55:06 +01:00
Edward Firmo
86d1513c6a Describe file 2024-12-21 11:54:42 +01:00
GitHub Actions
ac4d583b64 Bump version to 2024.12.01 2024-12-21 10:37:03 +00:00
Edward Firmo
15830d4134 Merge pull request #42 from edwardtfn/test-new-versioning-03
Fix repo name
2024-12-21 11:27:19 +01:00
Edward Firmo
0c19ca1205 Fix repo name 2024-12-21 11:26:57 +01:00
Edward Firmo
2d676036dc Merge pull request #41 from edwardtfn/test-new-versioning-02
New approach to GitHub tokens
2024-12-21 11:20:35 +01:00
Edward Firmo
c8ffa9e224 New approach to GitHub tokens 2024-12-21 11:20:13 +01:00
Edward Firmo
1406ada53a Merge pull request #40 from edwardtfn/test-new-versioning
Testing new versioning
2024-12-21 11:13:58 +01:00
Edward Firmo
f02f90c3fa Testing new versioning 2024-12-21 11:05:40 +01:00
Edward Firmo
f6169e3ea2 Merge branch 'main' of https://github.com/edwardtfn/TX-Ultimate-Easy 2024-12-21 11:01:47 +01:00
Edward Firmo
6774a1ac18 Set initial version number 2024-12-21 11:01:01 +01:00
Edward Firmo
21720d8ba3 Merge pull request #39 from edwardtfn/dev
New versioning
2024-12-21 10:58:41 +01:00
Edward Firmo
7727c968db Merge branch 'dev' of https://github.com/edwardtfn/TX-Ultimate-Easy into dev 2024-12-21 10:33:54 +01:00
Edward Firmo
dc9e19d43c Add section about version validation 2024-12-21 10:33:36 +01:00
Edward Firmo
737343e395 Add fetch-depth: 0 to checkout action
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 10:31:23 +01:00
Edward Firmo
5569260f92 Update checkout action version
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 10:30:28 +01:00
Edward Firmo
04ca752c3b Add error handling for git operations
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 10:29:46 +01:00
Edward Firmo
23436428a4 Add error handling for invalid version format
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 10:29:12 +01:00
Edward Firmo
26a244cbed Fix potential overflow in sequence number
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-21 10:28:14 +01:00
Edward Firmo
ce8b4e700e Merge pull request #38 from edwardtfn/0.0.5
Clean up LED files & new versioning
2024-12-21 10:18:49 +01:00
Edward Firmo
35bf4bc0ec New versioning 2024-12-21 10:17:32 +01:00
Edward Firmo
ee8ff66add Removed LED auxiliary files
Using YAML anchors instead.
It makes it cleaner and easier to understand.
2024-12-21 08:54:41 +01:00
Edward Firmo
96db05cc34 Fix typo 2024-12-21 00:24:02 +01:00
Edward Firmo
61a5d67082 Merge pull request #36 from edwardtfn/dev
v0.0.4 - Bug fixes
2024-12-21 00:17:12 +01:00
Edward Firmo
ce9aefc7fe Merge pull request #37 from edwardtfn/0.0.4
CodeRabbitAI
2024-12-21 00:08:47 +01:00
Edward Firmo
1d38ac282c Merge pull request #35 from edwardtfn/0.0.4
Wrap-up
2024-12-20 23:37:50 +01:00
Edward Firmo
2ae4d2abe8 Merge pull request #34 from edwardtfn/0.0.4
Rebuilt relay status indicator engine
2024-12-20 19:41:14 +01:00
Edward Firmo
3543c0c088 Merge pull request #33 from edwardtfn/0.0.4
Remove references to Blueprint in the README
2024-12-20 02:36:46 +01:00
Edward Firmo
242325e556 Merge pull request #32 from edwardtfn/0.0.4
v0.0.4 - Bug fixes
2024-12-20 02:18:34 +01:00
Edward Firmo
f65f3a930c Merge pull request #26 from edwardtfn/dev
Fix toggle with swipe
2024-07-26 08:35:46 +02:00
Edward Firmo
0bf52a28c0 Merge pull request #25 from edwardtfn/dev
Support ESPHome v2024.6.0
2024-06-20 00:29:03 +02:00
Edward Firmo
976814eb58 Merge pull request #11 from edwardtfn/dev
First workable version
2024-05-29 22:23:15 +02:00
16 changed files with 355 additions and 264 deletions

View File

@@ -1,3 +1,11 @@
# This GitHub Actions workflow updates the "stable" and "latest" Git tags
# to point to the tag associated with a newly published release. It performs
# the following steps:
# 1. Checks out the repository code with full history.
# 2. Configures Git with a generic user for the action.
# 3. Moves and forcibly pushes the "stable" and "latest" tags to align with
# the tag of the newly published release.
# This ensures that "stable" and "latest" always point to the most recent release.
--- ---
name: Update Tags name: Update Tags

View File

@@ -1,8 +1,7 @@
--- ---
name: Validate ESPHome (Beta) name: Validate ESPHome (Beta)
# yamllint disable-line rule:truthy on: # yamllint disable-line rule:truthy
on:
push: push:
paths: paths:
- "*.yaml" - "*.yaml"

42
.github/workflows/versioning.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
# Workflow for managing versioning and tagging
---
name: Version Bump and Tag
on: # yamllint disable-line rule:truthy
push:
branches:
- main
paths-ignore:
- '**/VERSION'
- '**/VERSION_YAML'
workflow_dispatch:
inputs:
update_stable:
description: "Update stable tag?"
required: true
default: "false"
jobs:
versioning:
runs-on: ubuntu-latest
steps:
- uses: "actions/checkout@v4"
- name: Set up Git
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
- name: Bump Version
run: |
chmod +x "./versioning/bump_version.sh"
"./versioning/bump_version.sh"
- name: Push Changes and Tags
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
run: |
git push "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" main
git push "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" --tags
...

BIN
Assets/Logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@@ -15,11 +15,7 @@ substitutions:
name: tx-ultimate-easy name: tx-ultimate-easy
friendly_name: TX Ultimate Easy friendly_name: TX Ultimate Easy
latitude: '0' <<: !include ../versioning/VERSION_YAML
longitude: '0'
zone_home: 'zone.home'
version: '0.0.4'
TX_MODEL_FORMAT_EU_TEXT: "EU (Square, T5-xC-86)" TX_MODEL_FORMAT_EU_TEXT: "EU (Square, T5-xC-86)"
TX_MODEL_FORMAT_US_TEXT: "US (Rectangle, T5-xC-120)" TX_MODEL_FORMAT_US_TEXT: "US (Rectangle, T5-xC-120)"

View File

@@ -21,9 +21,9 @@ substitutions:
LIGHT_MODE_BOTTOM_TEXT: "Bottom" LIGHT_MODE_BOTTOM_TEXT: "Bottom"
LIGHT_MODE_TOP_TEXT: "Top" LIGHT_MODE_TOP_TEXT: "Top"
LIGHT_TRANSITION_TURN_ON: '0' # Transition time in msec LIGHT_TRANSITION_TURN_ON: '0' # Transition time in msec
LIGHT_TRANSITION_TURN_OFF: '0' # Transition time in msec LIGHT_TRANSITION_TURN_OFF: '0' # Transition time in msec
LIGHT_BRIGHTNESS_TURN_ON: '0' # Brightness (1 to 100%, 0 to not set it) LIGHT_BRIGHTNESS_TURN_ON: '0' # Brightness (1 to 100%, 0 to not set it)
globals: globals:
- id: gb_lights_1 - id: gb_lights_1
@@ -34,27 +34,7 @@ globals:
restore_value: false restore_value: false
light: light:
- id: light_output_1 # These lights are controlling the LEDs on the device
name: Light output 1
internal: true
platform: binary
output: output_relay_1
- id: light_output_2
name: Light output 2
internal: true
platform: binary
output: output_relay_2
- id: light_output_3
name: Light output 3
internal: true
platform: binary
output: output_relay_3
- id: light_output_4
name: Light output 4
internal: true
platform: binary
output: output_relay_4
- id: light_full - id: light_full
name: Light - All name: Light - All
internal: true internal: true
@@ -65,11 +45,51 @@ light:
num_leds: 32 num_leds: 32
pin: GPIO13 pin: GPIO13
- id: light_eu # Those lights are available based on the model selections
- &light_partition_with_effects
id: light_eu
name: Light name: Light
platform: partition
default_transition_length: ${default_transition_length}
internal: true internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml effects:
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml - addressable_rainbow:
name: "Rainbow"
- addressable_rainbow:
name: "Rainbow - Fast"
speed: 50
- pulse:
name: "Pulse"
transition_length: 1s
update_interval: 1s
- pulse:
name: "Pulse - Slow"
transition_length: 2s
update_interval: 2s
- addressable_scan:
name: "Scan"
move_interval: 100ms
scan_width: 3
- addressable_twinkle:
name: "Twinkle"
twinkle_probability: 5%
progress_interval: 4ms
- addressable_random_twinkle:
name: "Random Twinkle"
twinkle_probability: 20%
progress_interval: 32ms
- addressable_fireworks:
name: "Fireworks"
update_interval: 32ms
spark_probability: 10%
use_random_color: false
fade_out_rate: 120
- addressable_flicker:
name: "Flicker"
update_interval: 16ms
intensity: 5%
- random:
name: "Random"
segments: segments:
- id: light_full - id: light_full
from: 0 from: 0
@@ -77,20 +97,17 @@ light:
- id: light_us - id: light_us
name: Light name: Light
internal: true <<: *light_partition_with_effects
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 0 from: 0
to: 31 to: 31
# Those lights are available based on the model selections - &light_partition_with_effects_disabled
- id: light_eu_bottom id: light_eu_bottom
name: Light - Bottom name: Light - Bottom
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml <<: *light_partition_with_effects
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 6 from: 6
@@ -98,9 +115,7 @@ light:
reversed: true reversed: true
- id: light_eu_left - id: light_eu_left
name: Light - Left name: Light - Left
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 13 from: 13
@@ -108,9 +123,7 @@ light:
reversed: true reversed: true
- id: light_eu_right - id: light_eu_right
name: Light - Right name: Light - Right
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 27 from: 27
@@ -122,9 +135,7 @@ light:
reversed: false reversed: false
- id: light_eu_top - id: light_eu_top
name: Light - Top name: Light - Top
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 20 from: 20
@@ -132,9 +143,7 @@ light:
reversed: false reversed: false
- id: light_us_bottom - id: light_us_bottom
name: Light - Bottom name: Light - Bottom
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 9 from: 9
@@ -142,9 +151,7 @@ light:
reversed: true reversed: true
- id: light_us_left - id: light_us_left
name: Light - Left name: Light - Left
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 15 from: 15
@@ -152,9 +159,7 @@ light:
reversed: true reversed: true
- id: light_us_right - id: light_us_right
name: Light - Right name: Light - Right
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 31 from: 31
@@ -166,444 +171,399 @@ light:
reversed: false reversed: false
- id: light_us_top - id: light_us_top
name: Light - Top name: Light - Top
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml <<: *light_partition_with_effects_disabled
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments: segments:
- id: light_full - id: light_full
from: 25 from: 25
to: 30 to: 30
reversed: false reversed: false
- id: light_00 - &light_partition_individual_led
id: light_00
name: Light - LED 00 name: Light - LED 00
platform: partition
disabled_by_default: true disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml default_transition_length: ${default_transition_length}
segments: segments:
- id: light_full - id: light_full
from: 0 from: 0
to: 0 to: 0
- id: light_01 - id: light_01
name: Light - LED 01 name: Light - LED 01
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 1 from: 1
to: 1 to: 1
- id: light_02 - id: light_02
name: Light - LED 02 name: Light - LED 02
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 2 from: 2
to: 2 to: 2
- id: light_03 - id: light_03
name: Light - LED 03 name: Light - LED 03
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 3 from: 3
to: 3 to: 3
- id: light_04 - id: light_04
name: Light - LED 04 name: Light - LED 04
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 4 from: 4
to: 4 to: 4
- id: light_05 - id: light_05
name: Light - LED 05 name: Light - LED 05
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 5 from: 5
to: 5 to: 5
- id: light_06 - id: light_06
name: Light - LED 06 name: Light - LED 06
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 6 from: 6
to: 6 to: 6
- id: light_07 - id: light_07
name: Light - LED 07 name: Light - LED 07
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 7 from: 7
to: 7 to: 7
- id: light_08 - id: light_08
name: Light - LED 08 name: Light - LED 08
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 8 from: 8
to: 8 to: 8
- id: light_09 - id: light_09
name: Light - LED 09 name: Light - LED 09
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 9 from: 9
to: 9 to: 9
- id: light_10 - id: light_10
name: Light - LED 10 name: Light - LED 10
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 10 from: 10
to: 10 to: 10
- id: light_11 - id: light_11
name: Light - LED 11 name: Light - LED 11
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 11 from: 11
to: 11 to: 11
- id: light_12 - id: light_12
name: Light - LED 12 name: Light - LED 12
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 12 from: 12
to: 12 to: 12
- id: light_13 - id: light_13
name: Light - LED 13 name: Light - LED 13
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 13 from: 13
to: 13 to: 13
- id: light_14 - id: light_14
name: Light - LED 14 name: Light - LED 14
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 14 from: 14
to: 14 to: 14
- id: light_15 - id: light_15
name: Light - LED 15 name: Light - LED 15
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 15 from: 15
to: 15 to: 15
- id: light_16 - id: light_16
name: Light - LED 16 name: Light - LED 16
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 16 from: 16
to: 16 to: 16
- id: light_17 - id: light_17
name: Light - LED 17 name: Light - LED 17
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 17 from: 17
to: 17 to: 17
- id: light_18 - id: light_18
name: Light - LED 18 name: Light - LED 18
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 18 from: 18
to: 18 to: 18
- id: light_19 - id: light_19
name: Light - LED 19 name: Light - LED 19
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 19 from: 19
to: 19 to: 19
- id: light_20 - id: light_20
name: Light - LED 20 name: Light - LED 20
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 20 from: 20
to: 20 to: 20
- id: light_21 - id: light_21
name: Light - LED 21 name: Light - LED 21
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 21 from: 21
to: 21 to: 21
- id: light_22 - id: light_22
name: Light - LED 22 name: Light - LED 22
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 22 from: 22
to: 22 to: 22
- id: light_23 - id: light_23
name: Light - LED 23 name: Light - LED 23
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 23 from: 23
to: 23 to: 23
- id: light_24 - id: light_24
name: Light - LED 24 name: Light - LED 24
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 24 from: 24
to: 24 to: 24
- id: light_25 - id: light_25
name: Light - LED 25 name: Light - LED 25
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 25 from: 25
to: 25 to: 25
- id: light_26 - id: light_26
name: Light - LED 26 name: Light - LED 26
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 26 from: 26
to: 26 to: 26
- id: light_27 - id: light_27
name: Light - LED 27 name: Light - LED 27
disabled_by_default: true <<: *light_partition_individual_led
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 27 from: 27
to: 27 to: 27
- id: light_28 - id: light_28 # US Model only
name: Light - LED 28 name: Light - LED 28
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml <<: *light_partition_individual_led
segments: segments:
- id: light_full - id: light_full
from: 28 from: 28
to: 28 to: 28
- id: light_29 - id: light_29 # US Model only
name: Light - LED 29 name: Light - LED 29
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml <<: *light_partition_individual_led
segments: segments:
- id: light_full - id: light_full
from: 29 from: 29
to: 29 to: 29
- id: light_30 - id: light_30 # US Model only
name: Light - LED 30 name: Light - LED 30
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml <<: *light_partition_individual_led
segments: segments:
- id: light_full - id: light_full
from: 30 from: 30
to: 30 to: 30
- id: light_31 - id: light_31 # US Model only
name: Light - LED 31 name: Light - LED 31
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml <<: *light_partition_individual_led
segments: segments:
- id: light_full - id: light_full
from: 31 from: 31
to: 31 to: 31
- id: light_eu_rl_1_1_bottom # These lights are used to indicate relay's statuses
- &light_partition_relays
id: light_eu_rl_1_1_bottom
name: Light - Relay 1 of 1 (bottom) name: Light - Relay 1 of 1 (bottom)
platform: partition
internal: true internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml default_transition_length: ${default_transition_length}
segments: segments:
- id: light_full - id: light_full
from: 9 from: 9
to: 9 to: 9
- id: light_eu_rl_1_1_top - id: light_eu_rl_1_1_top
name: Light - Relay 1 of 1 (top) name: Light - Relay 1 of 1 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 23 from: 23
to: 23 to: 23
- id: light_eu_rl_1_2_bottom - id: light_eu_rl_1_2_bottom
name: Light - Relay 1 of 2 (bottom) name: Light - Relay 1 of 2 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 11 from: 11
to: 11 to: 11
- id: light_eu_rl_1_2_top - id: light_eu_rl_1_2_top
name: Light - Relay 1 of 2 (top) name: Light - Relay 1 of 2 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 21 from: 21
to: 21 to: 21
- id: light_eu_rl_2_2_bottom - id: light_eu_rl_2_2_bottom
name: Light - Relay 2 of 2 (bottom) name: Light - Relay 2 of 2 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 7 from: 7
to: 7 to: 7
- id: light_eu_rl_2_2_top - id: light_eu_rl_2_2_top
name: Light - Relay 2 of 2 (top) name: Light - Relay 2 of 2 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 25 from: 25
to: 25 to: 25
- id: light_eu_rl_1_3_bottom - id: light_eu_rl_1_3_bottom
name: Light - Relay 1 of 3 (bottom) name: Light - Relay 1 of 3 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 12 from: 12
to: 12 to: 12
- id: light_eu_rl_1_3_top - id: light_eu_rl_1_3_top
name: Light - Relay 1 of 3 (top) name: Light - Relay 1 of 3 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 20 from: 20
to: 20 to: 20
- id: light_eu_rl_2_3_bottom - id: light_eu_rl_2_3_bottom
name: Light - Relay 2 of 3 (bottom) name: Light - Relay 2 of 3 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 9 from: 9
to: 9 to: 9
- id: light_eu_rl_2_3_top - id: light_eu_rl_2_3_top
name: Light - Relay 2 of 3 (top) name: Light - Relay 2 of 3 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 23 from: 23
to: 23 to: 23
- id: light_eu_rl_3_3_bottom - id: light_eu_rl_3_3_bottom
name: Light - Relay 3 of 3 (bottom) name: Light - Relay 3 of 3 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 6 from: 6
to: 6 to: 6
- id: light_eu_rl_3_3_top - id: light_eu_rl_3_3_top
name: Light - Relay 3 of 3 (top) name: Light - Relay 3 of 3 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 26 from: 26
to: 26 to: 26
- id: light_eu_rl_1_4_bottom - id: light_eu_rl_1_4_bottom
name: Light - Relay 1 of 4 (bottom) name: Light - Relay 1 of 4 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 12 from: 12
to: 12 to: 12
- id: light_eu_rl_1_4_top - id: light_eu_rl_1_4_top
name: Light - Relay 1 of 4 (top) name: Light - Relay 1 of 4 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 20 from: 20
to: 20 to: 20
- id: light_eu_rl_2_4_bottom - id: light_eu_rl_2_4_bottom
name: Light - Relay 2 of 4 (bottom) name: Light - Relay 2 of 4 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 10 from: 10
to: 10 to: 10
- id: light_eu_rl_2_4_top - id: light_eu_rl_2_4_top
name: Light - Relay 2 of 4 (top) name: Light - Relay 2 of 4 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 22 from: 22
to: 22 to: 22
- id: light_eu_rl_3_4_bottom - id: light_eu_rl_3_4_bottom
name: Light - Relay 3 of 4 (bottom) name: Light - Relay 3 of 4 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 8 from: 8
to: 8 to: 8
- id: light_eu_rl_3_4_top - id: light_eu_rl_3_4_top
name: Light - Relay 3 of 4 (top) name: Light - Relay 3 of 4 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 24 from: 24
to: 24 to: 24
- id: light_eu_rl_4_4_bottom - id: light_eu_rl_4_4_bottom
name: Light - Relay 4 of 4 (bottom) name: Light - Relay 4 of 4 (bottom)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 6 from: 6
to: 6 to: 6
- id: light_eu_rl_4_4_top - id: light_eu_rl_4_4_top
name: Light - Relay 4 of 4 (top) name: Light - Relay 4 of 4 (top)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 26 from: 26
to: 26 to: 26
- id: light_us_rl_1_1_left - id: light_us_rl_1_1_left
name: Light - Relay 1 of 1 (left) name: Light - Relay 1 of 1 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 15 from: 15
to: 24 to: 24
- id: light_us_rl_1_1_right - id: light_us_rl_1_1_right
name: Light - Relay 1 of 1 (right) name: Light - Relay 1 of 1 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 31 from: 31
@@ -613,16 +573,14 @@ light:
to: 8 to: 8
- id: light_us_rl_1_2_left - id: light_us_rl_1_2_left
name: Light - Relay 1 of 2 (left) name: Light - Relay 1 of 2 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 20 from: 20
to: 24 to: 24
- id: light_us_rl_1_2_right - id: light_us_rl_1_2_right
name: Light - Relay 1 of 2 (right) name: Light - Relay 1 of 2 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 31 from: 31
@@ -632,128 +590,112 @@ light:
to: 3 to: 3
- id: light_us_rl_2_2_left - id: light_us_rl_2_2_left
name: Light - Relay 2 of 2 (left) name: Light - Relay 2 of 2 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 15 from: 15
to: 19 to: 19
- id: light_us_rl_2_2_right - id: light_us_rl_2_2_right
name: Light - Relay 2 of 2 (right) name: Light - Relay 2 of 2 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 4 from: 4
to: 8 to: 8
- id: light_us_rl_1_3_left - id: light_us_rl_1_3_left
name: Light - Relay 1 of 3 (left) name: Light - Relay 1 of 3 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 22 from: 22
to: 23 to: 23
- id: light_us_rl_1_3_right - id: light_us_rl_1_3_right
name: Light - Relay 1 of 3 (right) name: Light - Relay 1 of 3 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 0 from: 0
to: 1 to: 1
- id: light_us_rl_2_3_left - id: light_us_rl_2_3_left
name: Light - Relay 2 of 3 (left) name: Light - Relay 2 of 3 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 19 from: 19
to: 20 to: 20
- id: light_us_rl_2_3_right - id: light_us_rl_2_3_right
name: Light - Relay 2 of 3 (right) name: Light - Relay 2 of 3 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 3 from: 3
to: 4 to: 4
- id: light_us_rl_3_3_left - id: light_us_rl_3_3_left
name: Light - Relay 3 of 3 (left) name: Light - Relay 3 of 3 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 17 from: 17
to: 18 to: 18
- id: light_us_rl_3_3_right - id: light_us_rl_3_3_right
name: Light - Relay 3 of 3 (right) name: Light - Relay 3 of 3 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 6 from: 6
to: 7 to: 7
- id: light_us_rl_1_4_left - id: light_us_rl_1_4_left
name: Light - Relay 1 of 4 (left) name: Light - Relay 1 of 4 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 12 from: 12
to: 12 to: 12
- id: light_us_rl_1_4_right - id: light_us_rl_1_4_right
name: Light - Relay 1 of 4 (right) name: Light - Relay 1 of 4 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 31 from: 31
to: 31 to: 31
- id: light_us_rl_2_4_left - id: light_us_rl_2_4_left
name: Light - Relay 2 of 4 (left) name: Light - Relay 2 of 4 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 24 from: 24
to: 24 to: 24
- id: light_us_rl_2_4_right - id: light_us_rl_2_4_right
name: Light - Relay 2 of 4 (right) name: Light - Relay 2 of 4 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 2 from: 2
to: 2 to: 2
- id: light_us_rl_3_4_left - id: light_us_rl_3_4_left
name: Light - Relay 3 of 4 (left) name: Light - Relay 3 of 4 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 21 from: 21
to: 21 to: 21
- id: light_us_rl_3_4_right - id: light_us_rl_3_4_right
name: Light - Relay 3 of 4 (right) name: Light - Relay 3 of 4 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 4 from: 4
to: 4 to: 4
- id: light_us_rl_4_4_left - id: light_us_rl_4_4_left
name: Light - Relay 4 of 4 (left) name: Light - Relay 4 of 4 (left)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 19 from: 19
to: 19 to: 19
- id: light_us_rl_4_4_right - id: light_us_rl_4_4_right
name: Light - Relay 4 of 4 (right) name: Light - Relay 4 of 4 (right)
internal: true <<: *light_partition_relays
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments: segments:
- id: light_full - id: light_full
from: 7 from: 7
@@ -817,7 +759,7 @@ script:
id(gb_lights_2) = { light_eu_rl_1_3_top, light_eu_rl_2_3_top, light_eu_rl_3_3_top }; id(gb_lights_2) = { light_eu_rl_1_3_top, light_eu_rl_2_3_top, light_eu_rl_3_3_top };
} }
break; break;
case 4: // 3 Gang case 4: // 4 Gang
if (is_model_us) { if (is_model_us) {
id(gb_lights_1) = { light_us_rl_1_4_left, light_us_rl_2_4_left, 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 }; light_us_rl_3_4_left, light_us_rl_4_4_left };

View File

@@ -1,4 +0,0 @@
---
platform: partition
default_transition_length: ${default_transition_length}
...

View File

@@ -1,40 +0,0 @@
---
effects:
- addressable_rainbow:
name: "Rainbow"
- addressable_rainbow:
name: "Rainbow - Fast"
speed: 50
- pulse:
name: "Pulse"
transition_length: 1s
update_interval: 1s
- pulse:
name: "Pulse - Slow"
transition_length: 2s
update_interval: 2s
- addressable_scan:
name: "Scan"
move_interval: 100ms
scan_width: 3
- addressable_twinkle:
name: "Twinkle"
twinkle_probability: 5%
progress_interval: 4ms
- addressable_random_twinkle:
name: "Random Twinkle"
twinkle_probability: 20%
progress_interval: 32ms
- addressable_fireworks:
name: "Fireworks"
update_interval: 32ms
spark_probability: 10%
use_random_color: false
fade_out_rate: 120
- addressable_flicker:
name: "Flicker"
update_interval: 16ms
intensity: 5%
- random:
name: "Random"
...

View File

@@ -1,4 +0,0 @@
---
internal: true
disabled_by_default: true
...

View File

@@ -66,6 +66,27 @@ globals:
restore_value: false restore_value: false
initial_value: 'false' initial_value: 'false'
light:
# These lights are used for the physical relays to be shown as lights
- &light_binary_base
id: light_output_1
name: Light output 1
output: output_relay_1
platform: binary
internal: true
- id: light_output_2
name: Light output 2
output: output_relay_2
<<: *light_binary_base
- id: light_output_3
name: Light output 3
output: output_relay_3
<<: *light_binary_base
- id: light_output_4
name: Light output 4
output: output_relay_4
<<: *light_binary_base
output: output:
- id: output_relay_1 - id: output_relay_1
platform: gpio platform: gpio

View File

@@ -98,17 +98,15 @@ TX Ultimate Easy offers extensive configuration options:
We welcome contributions from the community! Here's how you can help: We welcome contributions from the community! Here's how you can help:
1. Fork the repository 1. Fork the repository
2. Create a feature branch from `dev` 2. Create a feature branch from `main`
3. Make your changes 3. Make your changes
4. Submit a pull request targeting the `dev` branch 4. Submit a pull request targeting the `main` branch
Please ensure your code follows our standards: Please ensure your code follows our standards:
- Passes all lint checks (YAML, C++, Markdown) - Passes all lint checks (YAML, C++, Markdown)
- Includes appropriate documentation - Includes appropriate documentation
- Follows existing code style - Follows existing code style
All pull requests should be made against the `dev` branch. We don't accept pull requests directly to `main` as it's reserved for stable releases.
## Support and Community ## Support and Community
Need help? Here are your options: Need help? Here are your options:

View File

@@ -98,6 +98,7 @@ async def register_tx_ultimate_easy(var, config):
config[CONF_ON_LONG_TOUCH_RELEASE], config[CONF_ON_LONG_TOUCH_RELEASE],
) )
async def to_code(config): async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID]) var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config) await cg.register_component(var, config)

76
versioning/README.md Normal file
View File

@@ -0,0 +1,76 @@
# Versioning
## Overview
This project uses a time-based versioning scheme: `year.month.sequential_number`.
The system automates version updates and tagging to ensure consistent, conflict-free management of releases.
### Examples
- `2024.1.1` First release of January 2024.
- `2024.12.2` Second release of December 2024.
## How It Works
1. **Temporary Branch Creation**: A unique branch is created for each workflow run.
2. **Version Update**: The workflow updates the `VERSION` and `VERSION_YAML` files using the current date and release sequence.
3. **Commit with Marker**: Changes are committed with a `[skip-versioning]` marker to prevent triggering the workflow again.
4. **Merge into Main**: The temporary branch is merged into `main`.
5. **Branch Cleanup**: The temporary branch is deleted after merging.
## Usage
### Automated Workflow
The versioning process is fully automated:
- Developers submit their changes as usual.
- The workflow handles version updates, tagging, and integration into `main`.
- No manual intervention is needed for versioning.
### Accessing the Version in Code
The version is accessible in the ESPHome YAML configuration file (`TX-Ultimate-Easy-ESPHome_core.yaml`) using the following syntax:
```yaml
substitutions:
version: <<: !include ../versioning/VERSION
```
This ensures the correct version is dynamically included in the ESPHome setup.
## Benefits
- **Clarity**: Easily track when a release occurred with meaningful version numbers.
- **Automation**: Eliminates manual version management.
- **Scalability**: Supports frequent updates and concurrent workflows.
- **Traceability**: Maintains a clear history of changes through Git tags and version files.
## System Details
### Version Format
The format `year.month.sequential_number` includes:
- `year` (YYYY): A 4-digit number representing the year.
- `month` (M): A number from 1 to 12 (no leading zeros).
- `sequential_number`: A positive number incremented with each release in the same month.
### Validation Rules
The `bump_version.sh` script enforces strict validation:
- Year must be a 4-digit number.
- Month must be 112 without leading zeros.
- Sequence must be a positive number without leading zeros.
If validation fails, the workflow stops and provides an error message.
### GitHub Workflow
The workflow is triggered automatically when:
- Changes are pushed to `main`.
- Developers trigger it manually using the `workflow_dispatch` event.
The workflow avoids infinite loops by committing changes with the `[skip-versioning]` marker.
## Extending the System
Consider extending the system to:
- Automatically generate release notes or changelogs.
- Notify stakeholders when a new version is released.
- Integrate versioning information into deployment pipelines.
## FAQ
**Q: What happens if two workflows run concurrently?**
A: Each workflow operates in its own temporary branch, avoiding conflicts.
**Q: Can I manually update the version?**
A: Manual updates are not needed. The workflow ensures accurate, automated versioning.

1
versioning/VERSION Normal file
View File

@@ -0,0 +1 @@
2024.12.3

1
versioning/VERSION_YAML Normal file
View File

@@ -0,0 +1 @@
version: 2024.12.3

View File

@@ -0,0 +1,54 @@
#!/bin/bash
VERSION_FILE="./versioning/VERSION"
VERSION_YAML_FILE="./versioning/VERSION_YAML"
# Read the current version
if [ -f "$VERSION_FILE" ]; then
CURRENT_VERSION=$(cat "$VERSION_FILE")
else
CURRENT_VERSION="0.0.0" # Default if file doesn't exist
fi
# Validate the current version format
if ! [[ "$CURRENT_VERSION" =~ ^[0-9]{4}\.[0-9]{1,2}\.[0-9]+$ ]]; then
echo "Error: Invalid version format in $VERSION_FILE"
exit 1
fi
# Extract components
CURRENT_YEAR=$(date +%Y)
CURRENT_MONTH=$(date +%-m) # Avoid leading zero for the month
CURRENT_SEQ=$(echo "$CURRENT_VERSION" | awk -F. '{print $3}')
VERSION_YEAR=$(echo "$CURRENT_VERSION" | awk -F. '{print $1}')
VERSION_MONTH=$(echo "$CURRENT_VERSION" | awk -F. '{print $2}')
# Determine new version
if [[ "$CURRENT_YEAR" == "$VERSION_YEAR" && "$CURRENT_MONTH" == "$VERSION_MONTH" ]]; then
NEXT_SEQ=$((CURRENT_SEQ + 1))
else
NEXT_SEQ=1 # Reset sequence for a new month
fi
NEW_VERSION="${CURRENT_YEAR}.${CURRENT_MONTH}.${NEXT_SEQ}"
# Update the plain text VERSION file
echo "$NEW_VERSION" > "$VERSION_FILE"
# Update the YAML VERSION_YAML file
echo "version: $NEW_VERSION" > "$VERSION_YAML_FILE"
# Commit and tag
if ! git add "$VERSION_FILE" "$VERSION_YAML_FILE"; then
echo "Error: Failed to stage version files"
exit 1
fi
if ! git commit -m "Bump version to $NEW_VERSION [skip-versioning]"; then
echo "Error: Failed to commit version bump"
exit 1
fi
if ! git tag "v$NEW_VERSION"; then
echo "Error: Failed to create version tag"
exit 1
fi