various packages
This commit is contained in:
@@ -0,0 +1,389 @@
|
||||
#:########################################################################################:#
|
||||
# Pool Timer Selection Package #
|
||||
#:########################################################################################:#
|
||||
#
|
||||
# TITLE:
|
||||
# Pool Timer Selection
|
||||
#
|
||||
# FILE:
|
||||
# pool_timer_selection.yaml
|
||||
#
|
||||
# VERSION:
|
||||
# V1.0 2026-06-29
|
||||
#
|
||||
# VERSION HISTORY:
|
||||
# V1.0 2026-06-29
|
||||
# - Initial package.
|
||||
# - Adds Home Assistant input_select helpers for Pool Pump and Pool Light timer times.
|
||||
# - Publishes selected times to the ESPHome MQTT timer command topics.
|
||||
# - "Default" publishes the matching ESPHome default time for that selector.
|
||||
#
|
||||
# PURPOSE:
|
||||
# Provides Home Assistant dropdown selectors for the Pool Pump and Pool Light
|
||||
# morning/evening ON/OFF timer settings.
|
||||
#
|
||||
# MQTT NOTES:
|
||||
# ESPHome devices subscribe to:
|
||||
# viewroad-commands/poolpump-timer/morning-on
|
||||
# viewroad-commands/poolpump-timer/morning-off
|
||||
# viewroad-commands/poolpump-timer/evening-on
|
||||
# viewroad-commands/poolpump-timer/evening-off
|
||||
#
|
||||
# viewroad-commands/poollight-timer/morning-on
|
||||
# viewroad-commands/poollight-timer/morning-off
|
||||
# viewroad-commands/poollight-timer/evening-on
|
||||
# viewroad-commands/poollight-timer/evening-off
|
||||
#
|
||||
# Payload format is HH:MM.
|
||||
#
|
||||
# IMPORTANT:
|
||||
# The current ESPHome timer logic only handles same-day timer windows:
|
||||
# current_mins >= on_time AND current_mins < off_time
|
||||
#
|
||||
# Because of this, after-midnight evening selections such as 00:30 or 01:00
|
||||
# are intentionally not included here.
|
||||
#
|
||||
# 24:00 is included for OFF selectors as "run until midnight".
|
||||
#
|
||||
#:########################################################################################:#
|
||||
|
||||
input_select:
|
||||
#:######################################################################################:#
|
||||
# Pool Pump Timer Selectors #
|
||||
#:######################################################################################:#
|
||||
|
||||
pool_pump_morning_on_time:
|
||||
name: "Pool Pump Morning On Time"
|
||||
icon: "mdi:timer-play-outline"
|
||||
options: &pool_timer_options_0730
|
||||
- "Default"
|
||||
- "03:30"
|
||||
- "04:00"
|
||||
- "04:30"
|
||||
- "05:00"
|
||||
- "05:30"
|
||||
- "06:00"
|
||||
- "06:30"
|
||||
- "07:00"
|
||||
- "07:30"
|
||||
- "08:00"
|
||||
- "08:30"
|
||||
- "09:00"
|
||||
- "09:30"
|
||||
- "10:00"
|
||||
- "10:30"
|
||||
- "11:00"
|
||||
- "11:30"
|
||||
|
||||
pool_pump_morning_off_time:
|
||||
name: "Pool Pump Morning Off Time"
|
||||
icon: "mdi:timer-stop-outline"
|
||||
options: *pool_timer_options_0730
|
||||
|
||||
pool_pump_evening_on_time:
|
||||
name: "Pool Pump Evening On Time"
|
||||
icon: "mdi:timer-play-outline"
|
||||
options: &pool_timer_options_2100_same_day
|
||||
- "Default"
|
||||
- "17:00"
|
||||
- "17:30"
|
||||
- "18:00"
|
||||
- "18:30"
|
||||
- "19:00"
|
||||
- "19:30"
|
||||
- "20:00"
|
||||
- "20:30"
|
||||
- "21:00"
|
||||
- "21:30"
|
||||
- "22:00"
|
||||
- "22:30"
|
||||
- "23:00"
|
||||
- "23:30"
|
||||
|
||||
pool_pump_evening_off_time:
|
||||
name: "Pool Pump Evening Off Time"
|
||||
icon: "mdi:timer-stop-outline"
|
||||
options: &pool_timer_options_2230_same_day
|
||||
- "Default"
|
||||
- "18:30"
|
||||
- "19:00"
|
||||
- "19:30"
|
||||
- "20:00"
|
||||
- "20:30"
|
||||
- "21:00"
|
||||
- "21:30"
|
||||
- "22:00"
|
||||
- "22:30"
|
||||
- "23:00"
|
||||
- "23:30"
|
||||
- "24:00"
|
||||
|
||||
#:######################################################################################:#
|
||||
# Pool Light Timer Selectors #
|
||||
#:######################################################################################:#
|
||||
|
||||
pool_light_morning_on_time:
|
||||
name: "Pool Light Morning On Time"
|
||||
icon: "mdi:timer-play-outline"
|
||||
options: *pool_timer_options_0730
|
||||
|
||||
pool_light_morning_off_time:
|
||||
name: "Pool Light Morning Off Time"
|
||||
icon: "mdi:timer-stop-outline"
|
||||
options: *pool_timer_options_0730
|
||||
|
||||
pool_light_evening_on_time:
|
||||
name: "Pool Light Evening On Time"
|
||||
icon: "mdi:timer-play-outline"
|
||||
options: &pool_timer_options_1900
|
||||
- "Default"
|
||||
- "15:00"
|
||||
- "15:30"
|
||||
- "16:00"
|
||||
- "16:30"
|
||||
- "17:00"
|
||||
- "17:30"
|
||||
- "18:00"
|
||||
- "18:30"
|
||||
- "19:00"
|
||||
- "19:30"
|
||||
- "20:00"
|
||||
- "20:30"
|
||||
- "21:00"
|
||||
- "21:30"
|
||||
- "22:00"
|
||||
- "22:30"
|
||||
- "23:00"
|
||||
|
||||
pool_light_evening_off_time:
|
||||
name: "Pool Light Evening Off Time"
|
||||
icon: "mdi:timer-stop-outline"
|
||||
options: *pool_timer_options_2230_same_day
|
||||
|
||||
script:
|
||||
#:######################################################################################:#
|
||||
# MQTT Publish Script #
|
||||
#:######################################################################################:#
|
||||
|
||||
pool_timer_publish_mqtt_time:
|
||||
alias: "Pool Timer - Publish MQTT Time"
|
||||
description: "Publishes one selected pool timer HH:MM value to MQTT."
|
||||
mode: queued
|
||||
max: 20
|
||||
|
||||
fields:
|
||||
mqtt_timer_topic:
|
||||
name: "MQTT timer topic"
|
||||
example: "viewroad-commands/poolpump-timer"
|
||||
timer_command:
|
||||
name: "Timer command"
|
||||
example: "morning-on"
|
||||
selected_value:
|
||||
name: "Selected value"
|
||||
example: "Default"
|
||||
default_time:
|
||||
name: "Default time"
|
||||
example: "07:30"
|
||||
|
||||
variables:
|
||||
#:##################################################################################:#
|
||||
# Editable MQTT Publish Settings #
|
||||
#:##################################################################################:#
|
||||
default_label: "Default"
|
||||
mqtt_retain_timer_commands: true
|
||||
mqtt_qos: 0
|
||||
|
||||
payload_to_send: >-
|
||||
{% set selected = selected_value | string %}
|
||||
{% if selected == default_label %}
|
||||
{{ default_time }}
|
||||
{% else %}
|
||||
{{ selected }}
|
||||
{% endif %}
|
||||
|
||||
sequence:
|
||||
- condition: template
|
||||
value_template: "{{ (selected_value | string) not in ['unknown', 'unavailable', 'none', 'None', ''] }}"
|
||||
|
||||
- action: mqtt.publish
|
||||
data:
|
||||
topic: "{{ mqtt_timer_topic }}/{{ timer_command }}"
|
||||
payload: "{{ payload_to_send }}"
|
||||
qos: "{{ mqtt_qos | int }}"
|
||||
retain: "{{ mqtt_retain_timer_commands | bool }}"
|
||||
|
||||
automation:
|
||||
#:######################################################################################:#
|
||||
# Publish Timer Selector Changes #
|
||||
#:######################################################################################:#
|
||||
|
||||
- id: pool_timer_selection_publish_mqtt
|
||||
alias: "Pool Timer Selection - Publish MQTT"
|
||||
description: "Publishes pool timer selector changes to the matching ESPHome MQTT topic."
|
||||
mode: queued
|
||||
max: 20
|
||||
|
||||
variables:
|
||||
#:##################################################################################:#
|
||||
# Editable MQTT Topic Settings #
|
||||
#:##################################################################################:#
|
||||
# No leading slash, to match the ESPHome mqtt_timer_topic substitutions.
|
||||
mqtt_command_root: "viewroad-commands"
|
||||
pool_pump_timer_topic_suffix: "poolpump-timer"
|
||||
pool_light_timer_topic_suffix: "poollight-timer"
|
||||
|
||||
#:##################################################################################:#
|
||||
# Editable ESPHome Default Timer Values #
|
||||
#:##################################################################################:#
|
||||
# Pool Pump ESPHome defaults
|
||||
pool_pump_morning_on_default: "07:30"
|
||||
pool_pump_morning_off_default: "07:30"
|
||||
pool_pump_evening_on_default: "21:00"
|
||||
pool_pump_evening_off_default: "22:30"
|
||||
|
||||
# Pool Light ESPHome defaults
|
||||
pool_light_morning_on_default: "07:30"
|
||||
pool_light_morning_off_default: "07:30"
|
||||
pool_light_evening_on_default: "19:00"
|
||||
pool_light_evening_off_default: "22:30"
|
||||
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_pump_morning_on_time
|
||||
id: pool_pump_morning_on
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_pump_morning_off_time
|
||||
id: pool_pump_morning_off
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_pump_evening_on_time
|
||||
id: pool_pump_evening_on
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_pump_evening_off_time
|
||||
id: pool_pump_evening_off
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_light_morning_on_time
|
||||
id: pool_light_morning_on
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_light_morning_off_time
|
||||
id: pool_light_morning_off
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_light_evening_on_time
|
||||
id: pool_light_evening_on
|
||||
|
||||
- trigger: state
|
||||
entity_id: input_select.pool_light_evening_off_time
|
||||
id: pool_light_evening_off
|
||||
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.from_state is not none and trigger.to_state is not none }}"
|
||||
|
||||
- condition: template
|
||||
value_template: "{{ trigger.to_state.state not in ['unknown', 'unavailable'] }}"
|
||||
|
||||
- condition: template
|
||||
value_template: "{{ trigger.to_state.state != trigger.from_state.state }}"
|
||||
|
||||
actions:
|
||||
- choose:
|
||||
#:################################################################################:#
|
||||
# Pool Pump MQTT Publishes #
|
||||
#:################################################################################:#
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_pump_morning_on' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_pump_timer_topic_suffix }}"
|
||||
timer_command: "morning-on"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_pump_morning_on_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_pump_morning_off' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_pump_timer_topic_suffix }}"
|
||||
timer_command: "morning-off"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_pump_morning_off_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_pump_evening_on' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_pump_timer_topic_suffix }}"
|
||||
timer_command: "evening-on"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_pump_evening_on_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_pump_evening_off' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_pump_timer_topic_suffix }}"
|
||||
timer_command: "evening-off"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_pump_evening_off_default }}"
|
||||
|
||||
#:################################################################################:#
|
||||
# Pool Light MQTT Publishes #
|
||||
#:################################################################################:#
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_light_morning_on' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_light_timer_topic_suffix }}"
|
||||
timer_command: "morning-on"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_light_morning_on_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_light_morning_off' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_light_timer_topic_suffix }}"
|
||||
timer_command: "morning-off"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_light_morning_off_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_light_evening_on' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_light_timer_topic_suffix }}"
|
||||
timer_command: "evening-on"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_light_evening_on_default }}"
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.id == 'pool_light_evening_off' }}"
|
||||
sequence:
|
||||
- action: script.pool_timer_publish_mqtt_time
|
||||
data:
|
||||
mqtt_timer_topic: "{{ mqtt_command_root }}/{{ pool_light_timer_topic_suffix }}"
|
||||
timer_command: "evening-off"
|
||||
selected_value: "{{ trigger.to_state.state }}"
|
||||
default_time: "{{ pool_light_evening_off_default }}"
|
||||
Reference in New Issue
Block a user