Merge pull request #38 from edwardtfn/0.0.5

Clean up LED files & new versioning
This commit is contained in:
Edward Firmo
2024-12-21 10:18:49 +01:00
committed by GitHub
10 changed files with 310 additions and 259 deletions

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"

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

@@ -0,0 +1,45 @@
# Workflow for managing versioning, tagging, and conditional updates
---
name: Bump Version and Tag
on: # yamllint disable-line rule:truthy
push:
branches:
- main
workflow_dispatch:
inputs:
update_stable:
description: "Update stable tag?"
required: true
default: "false"
jobs:
versioning:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- 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 origin main
git push origin --tags --force
- name: Conditionally Update Stable Tag
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.update_stable == 'true' }}
run: |
git tag -f stable
git push origin stable --force
...

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:

55
versioning/README.md Normal file
View File

@@ -0,0 +1,55 @@
# Versioning
## Overview
This project uses a time-based versioning scheme: `year.month.sequential_number`.
This scheme makes it easy to identify when a version was released and provides a clear order for releases within a given month.
### Examples
- `2024.12.01` First release of December 2024.
- `2024.12.02` Second release of December 2024.
- `2025.01.01` First release of January 2025.
## Files
- **`VERSION`**: Contains the current version of the project as plain text.
- **`bump_version.sh`**: A script to increment the version based on the current date and release sequence.
- **`README.md`**: Documentation for the versioning process.
## Versioning Rules
1. The version format is `YYYY.MM.NN`, where:
- `YYYY` is the current year.
- `MM` is the current month (two digits).
- `NN` is the sequential release number within the month (starting at `01`).
2. On each new merge to the `main` branch:
- If the month hasnt changed, the sequential number (`NN`) is incremented.
- If the month has changed, the sequential number resets to `01`.
## Usage
### Automatically Managed
The versioning process is fully integrated into the workflow. Developers do not need to manually increment or manage versions.
Simply push your changes, and the system will handle version updates and tagging automatically.
### Access 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 used directly in the ESPHome setup without requiring manual updates.
## Benefits of this Versioning Approach
1. **Clarity**: Each version is tied to a specific point in time, making it easy to track releases.
2. **Automation**: The process is seamless and reduces manual effort.
3. **Scalability**: Supports frequent releases while keeping the versioning system organized.
4. **Traceability**: Git tags and the `VERSION` file ensure releases are well-documented and easily accessible.
## Extending the System
- Add more scripts to handle additional automation tasks, such as generating changelogs or notifying stakeholders of new releases.
- Enhance the `bump_version.sh` script to support different versioning schemes if needed.
- Integrate versioning information into your deployment pipelines to label builds with their corresponding version.
### GitHub Actions Workflow Adjustment
The GitHub Actions workflow for versioning runs only when changes are merged into the `main` branch, ensuring no premature version updates during PR creation.
This behavior is automatically handled by the integrated workflow.

View File

@@ -0,0 +1,39 @@
#!/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
# Extract components
CURRENT_YEAR=$(date +%Y)
CURRENT_MONTH=$(date +%m)
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
NEW_SEQ=$(printf "%02d" $((10#$CURRENT_SEQ + 1))) # Increment sequence
else
NEW_SEQ="01" # Reset sequence for a new month
fi
NEW_VERSION="${CURRENT_YEAR}.${CURRENT_MONTH}.${NEW_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
git add "$VERSION_FILE" "$VERSION_YAML_FILE"
git commit -m "Bump version to $NEW_VERSION"
git tag "v$NEW_VERSION"