Files
zorruno-homeassistant/packages/openhasp_lounge1_wallplate.yaml
T
2026-06-20 15:46:55 +12:00

878 lines
33 KiB
YAML

###############################################################################
# PACKAGE: OpenHASP Thermostat / Gas Heater Control
# VERSION: v1.3 (2026-06-20)
# NODE/TOPIC ROOT: hasp/openhasp_1/
#
# PAGE 1: Gas heater / lounge environment
# - p1b1 = main temperature display
# - p1b2 = gas heater setpoint display
# - p1b3 = gas heater setpoint down
# - p1b4 = gas heater setpoint up
# - p1b5 = gas heater status text
# - p1b6 = gas heater operation / flame button
# - p1b7 = humidity display
#
# PAGE 2: Lounge climate control
# - p2b1 = main temperature display
# - p2b2 = climate.lounge setpoint display
# - p2b3 = climate.lounge setpoint down 0.5°C
# - p2b4 = climate.lounge setpoint up 0.5°C
# - p2b5 = climate.lounge status text
# - p2b6 = climate.lounge heat mode / sun button
# - p2b7 = humidity display
#
# PAGE 3: Blank placeholder
#
# NOTES:
# - p1b2/p1b7 and p2b2/p2b7 include their icons in the MQTT text payload so
# HA updates do not overwrite icons loaded from pages.jsonl.
# - p1b3/p1b4 are yellow.
# - p1b6 is grey when OFF/BYPASS, yellow in AUTO, and red flame when firing.
# - p2b3/p2b4 are pink.
# - p2b6 turns climate.lounge ON and sets HVAC mode to heat.
# - p2b6 is pink only when climate.lounge is in heat mode.
###############################################################################
###############################################################################
# MQTT ENTITIES
###############################################################################
mqtt:
sensor:
- name: "Lounge Environment Humidity MQTT"
unique_id: "lounge_environment_humidity_mqtt"
state_topic: "viewroad-status/lounge-environment/humidity"
value_template: >
{% set raw = value | trim %}
{% if raw.startswith('{') %}
{% set j = raw | from_json %}
{{ j.humidity | default(j.value | default(raw)) }}
{% else %}
{{ raw | replace('%', '') | trim }}
{% endif %}
select:
- name: "OpenHASP Lounge Page"
unique_id: "openhasp_lounge_page"
icon: mdi:tablet-dashboard
state_topic: "hasp/openhasp_1/state/page"
command_topic: "hasp/openhasp_1/command/page"
options:
- "1"
- "2"
- "3"
value_template: >
{% set raw = value | trim %}
{% if raw.startswith('{') %}
{% set j = raw | from_json %}
{{ j.page | default(raw) }}
{% else %}
{{ raw }}
{% endif %}
###############################################################################
# AUTOMATIONS
###############################################################################
automation:
# -------------------------------------------------------------------------
# Lounge temperature display on page 1 and page 2
# -------------------------------------------------------------------------
- id: hasp_lounge_temp_to_page_text
alias: "HASP: update lounge temperature displays"
mode: queued
trigger:
- platform: state
entity_id: sensor.lounge_environment_lounge_environment_temperature
action:
- service: script.hasp_publish_lounge_temp_displays
# -------------------------------------------------------------------------
# Gas heater status text on page 1
# -------------------------------------------------------------------------
- id: hasp_heater_status_to_btn_text
alias: "HASP: update heater status (p1b5.text)"
mode: queued
trigger:
- platform: state
entity_id:
- sensor.rinnai_neo_gas_heater_rinnai_neo_gas_heater_status_text
- select.rinnai_neo_gas_heater_mode
- switch.rinnai_neo_gas_heater_heater_operation
- switch.rinnai_neo_gas_heater_rinnai_neo_gas_heater_activate_flame
action:
- service: script.hasp_publish_heater_status_text
# -------------------------------------------------------------------------
# Gas heater setpoint display on page 1
# -------------------------------------------------------------------------
- id: hasp_setpoint_to_btn_text
alias: "HASP: update gas heater setpoint (p1b2.text)"
mode: queued
trigger:
- platform: state
entity_id: sensor.rinnai_neo_gas_heater_setpoint_text
action:
- service: script.hasp_publish_heater_setpoint
# -------------------------------------------------------------------------
# Humidity display on page 1 and page 2
# -------------------------------------------------------------------------
- id: hasp_humidity_to_btn_text
alias: "HASP: update humidity displays"
mode: queued
trigger:
- platform: state
entity_id: sensor.lounge_environment_humidity_mqtt
action:
- service: script.hasp_publish_humidity_displays
# -------------------------------------------------------------------------
# Page 1 gas heater setpoint up/down buttons
# -------------------------------------------------------------------------
- id: hasp_btn_up_press
alias: "HASP: p1b4 up -> gas heater setpoint UP"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p1b4"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: button.press
target:
entity_id: button.rinnai_neo_gas_heater_rinnai_neo_gas_heater_setpoint_up
- id: hasp_btn_down_press
alias: "HASP: p1b3 up -> gas heater setpoint DOWN"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p1b3"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: button.press
target:
entity_id: button.rinnai_neo_gas_heater_rinnai_neo_gas_heater_setpoint_down
# -------------------------------------------------------------------------
# Page 1 gas heater middle flame button
# -------------------------------------------------------------------------
- id: hasp_btn_heat_toggle
alias: "HASP: p1b6 up -> gas heater operation toggle"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p1b6"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: switch.toggle
target:
entity_id: switch.rinnai_neo_gas_heater_heater_operation
# -------------------------------------------------------------------------
# Page 1 gas heater middle button appearance
# -------------------------------------------------------------------------
- id: hasp_heat_button_state
alias: "HASP: update gas heat button state (p1b6)"
mode: restart
trigger:
- platform: state
entity_id:
- select.rinnai_neo_gas_heater_mode
- switch.rinnai_neo_gas_heater_heater_operation
- switch.rinnai_neo_gas_heater_rinnai_neo_gas_heater_activate_flame
action:
- service: script.hasp_apply_heat_button_state
# -------------------------------------------------------------------------
# Page 2 climate.lounge text and button state updates
# -------------------------------------------------------------------------
- id: hasp_lounge_climate_to_page2
alias: "HASP: update lounge climate page 2"
mode: queued
trigger:
- platform: state
entity_id: climate.lounge
action:
- service: script.hasp_push_page2_climate_texts
- service: script.hasp_apply_climate_heat_button_state
# -------------------------------------------------------------------------
# Page 2 climate.lounge setpoint down
# -------------------------------------------------------------------------
- id: hasp_page2_climate_down_press
alias: "HASP: p2b3 up -> lounge climate setpoint DOWN 0.5"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p2b3"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: climate.set_temperature
target:
entity_id: climate.lounge
data:
temperature: >
{% set current = state_attr('climate.lounge', 'temperature') | float(20) %}
{{ (current - 0.5) | round(1) }}
- delay: "00:00:01"
- service: script.hasp_push_page2_climate_texts
# -------------------------------------------------------------------------
# Page 2 climate.lounge setpoint up
# -------------------------------------------------------------------------
- id: hasp_page2_climate_up_press
alias: "HASP: p2b4 up -> lounge climate setpoint UP 0.5"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p2b4"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: climate.set_temperature
target:
entity_id: climate.lounge
data:
temperature: >
{% set current = state_attr('climate.lounge', 'temperature') | float(20) %}
{{ (current + 0.5) | round(1) }}
- delay: "00:00:01"
- service: script.hasp_push_page2_climate_texts
# -------------------------------------------------------------------------
# Page 2 climate.lounge heat mode button
# -------------------------------------------------------------------------
- id: hasp_page2_climate_heat_press
alias: "HASP: p2b6 up -> lounge climate heat mode"
mode: queued
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/state/p2b6"
condition:
- condition: template
value_template: "{{ trigger.payload_json.event | default('') == 'up' }}"
action:
- service: climate.turn_on
target:
entity_id: climate.lounge
- service: climate.set_hvac_mode
target:
entity_id: climate.lounge
data:
hvac_mode: heat
- delay: "00:00:01"
- service: script.hasp_push_page2_climate_texts
- service: script.hasp_apply_climate_heat_button_state
# -------------------------------------------------------------------------
# Push all screen state when Home Assistant starts
# -------------------------------------------------------------------------
- id: hasp_start_on_ha_start
alias: "HASP: start display loop on HA start"
trigger:
- platform: homeassistant
event: start
action:
- service: script.hasp_push_static_texts
# -------------------------------------------------------------------------
# Push all screen state when the openHASP panel comes online
# -------------------------------------------------------------------------
- id: hasp_start_on_panel_online
alias: "HASP: start display loop when panel goes online"
trigger:
- platform: mqtt
topic: "hasp/openhasp_1/LWT"
condition:
- condition: template
value_template: "{{ trigger.payload == 'online' }}"
action:
- delay: "00:00:05"
- service: script.hasp_push_static_texts
###############################################################################
# SCRIPTS
###############################################################################
script:
# -------------------------------------------------------------------------
# Push all current values and colours to the panel
# -------------------------------------------------------------------------
hasp_push_static_texts:
alias: "HASP: push static texts"
mode: queued
sequence:
- service: script.hasp_style_center_info_buttons
- service: script.hasp_style_page1_control_buttons
- service: script.hasp_style_page2_control_buttons
- service: script.hasp_publish_lounge_temp_displays
- service: script.hasp_publish_heater_status_text
- service: script.hasp_publish_heater_setpoint
- service: script.hasp_publish_humidity_displays
- service: script.hasp_apply_heat_button_state
- service: script.hasp_push_page2_climate_texts
- service: script.hasp_apply_climate_heat_button_state
# -------------------------------------------------------------------------
# Publish lounge temperature to page 1 and page 2
# -------------------------------------------------------------------------
hasp_publish_lounge_temp_displays:
alias: "HASP: publish lounge temperature displays"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b1.text"
payload: >-
{% set raw = states('sensor.lounge_environment_lounge_environment_temperature') %}
{% set cleaned = raw
| replace('°C', '')
| replace('° C', '')
| replace('C', '')
| trim %}
{% if cleaned not in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ cleaned | float(0) | round(1) }}°C
{% else %}
--°C
{% endif %}
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b1.text"
payload: >-
{% set raw = states('sensor.lounge_environment_lounge_environment_temperature') %}
{% set cleaned = raw
| replace('°C', '')
| replace('° C', '')
| replace('C', '')
| trim %}
{% if cleaned not in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ cleaned | float(0) | round(1) }}°C
{% else %}
--°C
{% endif %}
# -------------------------------------------------------------------------
# Publish gas heater setpoint to page 1
# -------------------------------------------------------------------------
hasp_publish_heater_setpoint:
alias: "HASP: publish gas heater setpoint"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b2.text"
payload: >-
{% set raw = states('sensor.rinnai_neo_gas_heater_setpoint_text') %}
{% set cleaned = raw
| replace('°C', '')
| replace('° C', '')
| replace('C', '')
| trim %}
{% if cleaned not in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ '\uE50F' }} {{ cleaned | float(0) | round(1) }}°C
{% else %}
{{ '\uE50F' }} --°C
{% endif %}
# -------------------------------------------------------------------------
# Publish humidity to page 1 and page 2
# -------------------------------------------------------------------------
hasp_publish_humidity_displays:
alias: "HASP: publish humidity displays"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b7.text"
payload: >-
{% set raw = states('sensor.lounge_environment_humidity_mqtt') %}
{% set cleaned = raw | replace('%', '') | trim %}
{% if cleaned in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ '\uE58C' }} --%
{% else %}
{{ '\uE58C' }} {{ cleaned }}%
{% endif %}
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b7.text"
payload: >-
{% set raw = states('sensor.lounge_environment_humidity_mqtt') %}
{% set cleaned = raw | replace('%', '') | trim %}
{% if cleaned in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ '\uE58C' }} --%
{% else %}
{{ '\uE58C' }} {{ cleaned }}%
{% endif %}
# -------------------------------------------------------------------------
# Publish gas heater status text to page 1 bottom label
#
# Display behaviour:
# - OFF -> Off
# - BYPASS (Remote Only) -> Bypass (Remote Only)
# - Auto but flame OFF -> Auto (Up to Temp)
# - Auto (Level 1) -> Auto + 1 flame icon
# - Auto (Level 2) -> Auto + 2 flame icons
# - Auto (Level 3) -> Auto + 3 flame icons
# - Auto (Level 4) -> Auto + 4 flame icons
# -------------------------------------------------------------------------
hasp_publish_heater_status_text:
alias: "HASP: publish heater status text"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b5.text"
payload: >-
{% set mode = states('select.rinnai_neo_gas_heater_mode') %}
{% set op = states('switch.rinnai_neo_gas_heater_heater_operation') %}
{% set flame_on = is_state('switch.rinnai_neo_gas_heater_rinnai_neo_gas_heater_activate_flame', 'on') %}
{% set s = states('sensor.rinnai_neo_gas_heater_rinnai_neo_gas_heater_status_text') %}
{% set flame = '\uE238' %}
{% if mode == 'OFF' %}
Off
{% elif mode == 'BYPASS (Remote Only)' %}
Bypass (Remote Only)
{% elif op == 'on' and not flame_on %}
Auto (Up to Temp)
{% elif s not in ['unknown', 'unavailable', '', 'none', 'None'] %}
{% set matches = s | regex_findall('Level ([0-9]+)') %}
{% if matches | length > 0 %}
{% set level = matches[0] | int(0) %}
{% else %}
{% set level = 0 %}
{% endif %}
{% if level > 0 %}
Auto {{ flame * level }}
{% else %}
{{ s }}
{% endif %}
{% elif mode not in ['unknown', 'unavailable', '', 'none', 'None'] %}
{{ mode }}
{% else %}
HEATER --
{% endif %}
# -------------------------------------------------------------------------
# Apply page 1 gas heater middle flame button state
# -------------------------------------------------------------------------
hasp_apply_heat_button_state:
alias: "HASP: apply gas heat button state"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text"
payload: "\uE238"
- choose:
# BYPASS -> grey button, amber flame
- conditions:
- condition: state
entity_id: select.rinnai_neo_gas_heater_mode
state: "BYPASS (Remote Only)"
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text_color"
payload: "#FFB000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_grad_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.border_color"
payload: "#2F3240"
# OFF -> grey button, light grey flame
- conditions:
- condition: state
entity_id: select.rinnai_neo_gas_heater_mode
state: "OFF"
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text_color"
payload: "#C0C0C0"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_grad_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.border_color"
payload: "#2F3240"
# AUTO, flame ON -> yellow button, red flame
- conditions:
- condition: state
entity_id: switch.rinnai_neo_gas_heater_heater_operation
state: "on"
- condition: state
entity_id: switch.rinnai_neo_gas_heater_rinnai_neo_gas_heater_activate_flame
state: "on"
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text_color"
payload: "#FF3030"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_color"
payload: "#FFC107"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_grad_color"
payload: "#FFD54F"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.border_color"
payload: "#FFC107"
# AUTO, flame OFF -> yellow button, black flame
- conditions:
- condition: state
entity_id: switch.rinnai_neo_gas_heater_heater_operation
state: "on"
- condition: state
entity_id: switch.rinnai_neo_gas_heater_rinnai_neo_gas_heater_activate_flame
state: "off"
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_color"
payload: "#FFC107"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_grad_color"
payload: "#FFD54F"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.border_color"
payload: "#FFC107"
default:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.text_color"
payload: "#C0C0C0"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.bg_grad_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b6.border_color"
payload: "#2F3240"
# -------------------------------------------------------------------------
# Push page 2 climate.lounge setpoint and status text
# -------------------------------------------------------------------------
hasp_push_page2_climate_texts:
alias: "HASP: push page 2 climate texts"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b2.text"
payload: >-
{% set target = state_attr('climate.lounge', 'temperature') %}
{% if target is not none %}
{{ '\uE50F' }} {{ target | float(0) | round(1) }}°C
{% else %}
{{ '\uE50F' }} --°C
{% endif %}
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b5.text"
payload: >-
{% set mode = states('climate.lounge') %}
{% set mode_map = {
'off': 'Off',
'heat': 'Heating',
'cool': 'Cooling',
'heat_cool': 'Auto',
'auto': 'Auto',
'dry': 'Dry',
'fan_only': 'Fan'
} %}
{% set mode_text = mode_map.get(mode, mode | replace('_', ' ') | title) %}
{% set preset = state_attr('climate.lounge', 'preset_mode') | default('', true) | string | lower %}
{% set fan = state_attr('climate.lounge', 'fan_mode') | default('', true) | string | lower %}
{% set swing = state_attr('climate.lounge', 'swing_mode') | default('', true) | string | lower %}
{% set eco_attr = state_attr('climate.lounge', 'eco') | default('', true) | string | lower %}
{% set powerful_attr = state_attr('climate.lounge', 'powerful') | default('', true) | string | lower %}
{% set quiet_attr = state_attr('climate.lounge', 'quiet') | default('', true) | string | lower %}
{% set nanoe_attr = state_attr('climate.lounge', 'nanoe') | default('', true) | string | lower %}
{% set nanoe_x_attr = state_attr('climate.lounge', 'nanoe_x') | default('', true) | string | lower %}
{% set ns = namespace(extras=[]) %}
{% if 'eco' in preset or eco_attr in ['on', 'true', '1', 'yes'] %}
{% set ns.extras = ns.extras + ['Eco'] %}
{% endif %}
{% if 'powerful' in preset or 'boost' in preset or powerful_attr in ['on', 'true', '1', 'yes'] %}
{% set ns.extras = ns.extras + ['Powerful'] %}
{% endif %}
{% if 'quiet' in preset or 'quiet' in fan or quiet_attr in ['on', 'true', '1', 'yes'] %}
{% set ns.extras = ns.extras + ['Quiet'] %}
{% endif %}
{% if 'nanoe' in preset or 'nanoe' in swing or nanoe_attr in ['on', 'true', '1', 'yes'] or nanoe_x_attr in ['on', 'true', '1', 'yes'] %}
{% set ns.extras = ns.extras + ['nanoe-x'] %}
{% endif %}
{% if ns.extras | length > 0 %}
{{ mode_text }} ({{ ns.extras | join(', ') }})
{% else %}
{{ mode_text }}
{% endif %}
# -------------------------------------------------------------------------
# Apply page 2 climate.lounge heat button state
# -------------------------------------------------------------------------
hasp_apply_climate_heat_button_state:
alias: "HASP: apply lounge climate heat button state"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.text"
payload: "\uE599"
- choose:
# climate.lounge is ON and in HEAT mode -> pink sun
- conditions:
- condition: state
entity_id: climate.lounge
state: "heat"
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.bg_color"
payload: "#C2185B"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.bg_grad_color"
payload: "#E91E63"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.border_color"
payload: "#C2185B"
default:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.text_color"
payload: "#C0C0C0"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.bg_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.bg_grad_color"
payload: "#2F3240"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b6.border_color"
payload: "#2F3240"
# -------------------------------------------------------------------------
# Style page 1 and page 2 setpoint/humidity display buttons as black panels
# -------------------------------------------------------------------------
hasp_style_center_info_buttons:
alias: "HASP: style centre info buttons"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b2.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b2.bg_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b2.bg_grad_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b2.border_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b7.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b7.bg_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b7.bg_grad_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b7.border_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b2.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b2.bg_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b2.bg_grad_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b2.border_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b7.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b7.bg_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b7.bg_grad_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b7.border_color"
payload: "#000000"
# -------------------------------------------------------------------------
# Style page 1 gas heater up/down buttons yellow
# p1b6 is state-driven by hasp_apply_heat_button_state.
# -------------------------------------------------------------------------
hasp_style_page1_control_buttons:
alias: "HASP: style page 1 control buttons"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b3.text_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b3.bg_color"
payload: "#FFC107"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b3.bg_grad_color"
payload: "#FFD54F"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b3.border_color"
payload: "#FFC107"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b4.text_color"
payload: "#000000"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b4.bg_color"
payload: "#FFC107"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b4.bg_grad_color"
payload: "#FFD54F"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p1b4.border_color"
payload: "#FFC107"
# -------------------------------------------------------------------------
# Style page 2 climate up/down buttons pink
# p2b6 is state-driven by hasp_apply_climate_heat_button_state.
# -------------------------------------------------------------------------
hasp_style_page2_control_buttons:
alias: "HASP: style page 2 control buttons"
mode: queued
sequence:
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b3.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b3.bg_color"
payload: "#C2185B"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b3.bg_grad_color"
payload: "#E91E63"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b3.border_color"
payload: "#C2185B"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b4.text_color"
payload: "#FFFFFF"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b4.bg_color"
payload: "#C2185B"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b4.bg_grad_color"
payload: "#E91E63"
- service: mqtt.publish
data:
topic: "hasp/openhasp_1/command/p2b4.border_color"
payload: "#C2185B"