various tidyups and esphome adds
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
##########################################################################################
|
||||
# MASTER BEDROOM FAN (Tasmota / Sonoff iFan02)
|
||||
# Improvements:
|
||||
# - Numeric speed entity (0-3) reflecting actual device state via MQTT
|
||||
# - Button to cycle speed 1,2,3,0
|
||||
# - Keep input_select in sync with actual FanSpeed (incl after reboots)
|
||||
##########################################################################################
|
||||
|
||||
input_select:
|
||||
master_bedroom_fan_set:
|
||||
name: Master Bedroom Fan Speed
|
||||
@@ -24,21 +32,121 @@ input_select:
|
||||
- "Medium"
|
||||
- "High"
|
||||
|
||||
##########################################################################################
|
||||
# MASTER BEDROOM FAN - Helpers
|
||||
##########################################################################################
|
||||
input_number:
|
||||
master_bedroom_fan_speed_numeric:
|
||||
name: Master Bedroom Fan Speed (Numeric)
|
||||
min: 0
|
||||
max: 3
|
||||
step: 1
|
||||
mode: box
|
||||
|
||||
template:
|
||||
- button:
|
||||
- name: Bedroom 1 Fan Speed Change
|
||||
unique_id: bedroom_1_fan_speed_change
|
||||
icon: mdi:fan
|
||||
press:
|
||||
- variables:
|
||||
cur: "{{ states('input_number.master_bedroom_fan_speed_numeric') | int(0) }}"
|
||||
nxt: "{{ (cur + 1) if (cur < 3) else 0 }}"
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: cmnd/tasmo-ifan02-3793-bedrm1-1/FanSpeed
|
||||
payload: "{{ nxt }}"
|
||||
# Optimistic local update (MQTT will correct if needed)
|
||||
- service: input_number.set_value
|
||||
data:
|
||||
entity_id: input_number.master_bedroom_fan_speed_numeric
|
||||
value: "{{ nxt }}"
|
||||
- service: input_select.select_option
|
||||
data:
|
||||
entity_id: input_select.master_bedroom_fan_set
|
||||
option: >-
|
||||
{% set m = {0:'Off',1:'Low',2:'Medium',3:'High'} %}
|
||||
{{ m[nxt] }}
|
||||
|
||||
automation:
|
||||
########################################################################################
|
||||
# MASTER BEDROOM FAN - Query on HA start (fixes wrong value after reboots)
|
||||
########################################################################################
|
||||
- id: master_bedroom_fan_query_on_ha_start
|
||||
initial_state: true
|
||||
alias: Master Bedroom Fan - Query FanSpeed on HA Start
|
||||
trigger:
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: cmnd/tasmo-ifan02-3793-bedrm1-1/FanSpeed
|
||||
payload: ""
|
||||
|
||||
########################################################################################
|
||||
# MASTER BEDROOM FAN - Sync helpers from Tasmota MQTT
|
||||
########################################################################################
|
||||
- id: master_bedroom_fan_sync_from_mqtt
|
||||
initial_state: true
|
||||
alias: Master Bedroom Fan - Sync Helpers From MQTT FanSpeed
|
||||
trigger:
|
||||
- platform: mqtt
|
||||
topic: stat/tasmo-ifan02-3793-bedrm1-1/RESULT
|
||||
- platform: mqtt
|
||||
topic: tele/tasmo-ifan02-3793-bedrm1-1/STATE
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: "{{ trigger.payload_json is defined and (trigger.payload_json.FanSpeed is defined) }}"
|
||||
action:
|
||||
- variables:
|
||||
spd: "{{ trigger.payload_json.FanSpeed | int(0) }}"
|
||||
opt: >-
|
||||
{% set m = {0:'Off',1:'Low',2:'Medium',3:'High'} %}
|
||||
{{ m[spd] }}
|
||||
- service: input_number.set_value
|
||||
data:
|
||||
entity_id: input_number.master_bedroom_fan_speed_numeric
|
||||
value: "{{ spd }}"
|
||||
# Only update dropdown if it differs (avoid loops)
|
||||
- condition: template
|
||||
value_template: "{{ states('input_select.master_bedroom_fan_set') != opt }}"
|
||||
- service: input_select.select_option
|
||||
data:
|
||||
entity_id: input_select.master_bedroom_fan_set
|
||||
option: "{{ opt }}"
|
||||
|
||||
########################################################################################
|
||||
# MASTER BEDROOM FAN - Set speed from dropdown (improved)
|
||||
########################################################################################
|
||||
- id: set_the_master_bedroom_fan
|
||||
initial_state: true
|
||||
alias: Set the Master Bedroom Fan
|
||||
trigger:
|
||||
entity_id: input_select.master_bedroom_fan_set
|
||||
platform: state
|
||||
- platform: state
|
||||
entity_id: input_select.master_bedroom_fan_set
|
||||
variables:
|
||||
desired: >-
|
||||
{% set mapping = { 'Off':0, 'Low':1, 'Medium':2, 'High':3 } %}
|
||||
{{ mapping.get(trigger.to_state.state, 0) }}
|
||||
current: "{{ states('input_number.master_bedroom_fan_speed_numeric') | int(0) }}"
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: "{{ desired != current }}"
|
||||
action:
|
||||
service: mqtt.publish
|
||||
data:
|
||||
topic: cmnd/tasmo-ifan02-3793-bedrm1-1/FanSpeed
|
||||
payload: '{% set mapping = { "Off":"0", "Low":"1",
|
||||
"Medium":"2", "High":"3" } %} {% set dta = trigger.to_state.state %}
|
||||
{{ mapping[dta] }}
|
||||
'
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: cmnd/tasmo-ifan02-3793-bedrm1-1/FanSpeed
|
||||
payload: "{{ desired }}"
|
||||
# Optimistic local update (MQTT will correct if needed)
|
||||
- service: input_number.set_value
|
||||
data:
|
||||
entity_id: input_number.master_bedroom_fan_speed_numeric
|
||||
value: "{{ desired }}"
|
||||
|
||||
########################################################################################
|
||||
# BEDROOM 2 FAN - Unchanged
|
||||
########################################################################################
|
||||
- id: set_bedroom_2_fan
|
||||
initial_state: true
|
||||
alias: Set Bedroom 2 Fan Speed
|
||||
@@ -53,6 +161,10 @@ automation:
|
||||
"Medium":"2", "High":"3" } %} {% set dta = trigger.to_state.state %}
|
||||
{{ mapping[dta] }}
|
||||
'
|
||||
|
||||
########################################################################################
|
||||
# BEDROOM 3 FAN - Unchanged
|
||||
########################################################################################
|
||||
- id: set_bedroom_3_fan
|
||||
initial_state: true
|
||||
alias: Set Bedroom 3 Fan Speed
|
||||
|
||||
Reference in New Issue
Block a user