Improved Purifier UI and automation

This commit is contained in:
2020-05-03 00:25:38 +03:00
parent ad29d41b6e
commit 5917fb5607
7 changed files with 340 additions and 14 deletions
@@ -173,6 +173,25 @@ cards:
- type: divider - type: divider
- type: custom:fold-entity-row
head:
type: custom:dummy-entity-row
entity: fan.philips_airpurifier
icon: mdi:air-purifier
name: Climate
tap_action: none
entities:
- automation.purifier_on_start_sync_and_update_state
- automation.purifier_change_speed
- automation.purifier_sync_speed
- automation.purifier_change_humidity
- automation.purifier_sync_humidity
- automation.purifier_turn_on_low_humidity
- automation.purifier_turn_on_low_air_quality
- automation.purifier_turn_off_okay_humidity
- type: divider
# System # System
- type: custom:fold-entity-row - type: custom:fold-entity-row
head: head:
@@ -203,6 +222,8 @@ cards:
- automation.magic_cube_music_volume_down_on_rotate_left - automation.magic_cube_music_volume_down_on_rotate_left
- automation.magic_cube_music_volume_up_on_rotate_right - automation.magic_cube_music_volume_up_on_rotate_right
- type: divider
# Browser mod # Browser mod
- type: custom:fold-entity-row - type: custom:fold-entity-row
head: head:
@@ -217,7 +238,6 @@ cards:
- automation.browser_mod_kitchen_home - automation.browser_mod_kitchen_home
- automation.browser_mod_kitchen_away - automation.browser_mod_kitchen_away
- type: entities - type: entities
title: Batteries title: Batteries
show_header_toggle: false show_header_toggle: false
@@ -3,10 +3,54 @@ philips_airpurifier_card:
type: vertical-stack type: vertical-stack
cards: cards:
- type: entities - type: entities
show_header_toggle: false
entities: entities:
- entity: fan.philips_airpurifier - entity: fan.philips_airpurifier
name: Enable purifier name: Enable purifier
- type: horizontal-stack
cards:
- type: custom:button-card
template: default
entity: sensor.purifier_speed
tap_action:
action: call-service
service: input_select.select_next
service_data:
entity_id: input_select.purifier_speed
- type: custom:button-card
template: default
entity: sensor.purifier_function
tap_action:
action: call-service
service: script.purifier_toggle_function
- type: custom:button-card
template:
- small
- progress
- with_state_indicator
entity: sensor.purifier_target_humidity
tap_action:
action: call-service
service: input_select.select_next
service_data:
entity_id: input_select.purifier_target_humidity
show_state: true
show_icon: false
variables:
min_value: 30
max_value: 60
normal_value: 61
high_value: 70
state_indicator_id: binary_sensor.purifier_out_of_water
state_indicator_size: 5px
state_indicator_off_size: 0px
state_indicator_on_color: var(--color-red)
state_on_indicator_on_color: var(--color-red)
- type: entities
show_header_toggle: false
entities:
- input_select.purifier_speed
- input_select.purifier_target_humidity
- type: custom:fold-entity-row - type: custom:fold-entity-row
head: head:
type: custom:dummy-entity-row type: custom:dummy-entity-row
@@ -19,17 +63,22 @@ philips_airpurifier_card:
- sensor.purifier_allergens - sensor.purifier_allergens
- sensor.purifier_temperature - sensor.purifier_temperature
- sensor.purifier_humidity - sensor.purifier_humidity
- sensor.purifier_water_level - binary_sensor.purifier_out_of_water
- type: custom:fold-entity-row - type: custom:fold-entity-row
head: head:
type: custom:dummy-entity-row type: custom:dummy-entity-row
entity: sensor.purifier_speed entity: sensor.purifier_speed
name: Mode name: Mode
open: true
entities: entities:
- sensor.purifier_speed - sensor.purifier_speed
- sensor.purifier_mode - sensor.purifier_function
- sensor.purifier_brightness
- sensor.purifier_target_humidity - sensor.purifier_target_humidity
- sensor.purifier_brightness
- sensor.purifier_timer
- sensor.purifier_time_remaining
- binary_sensor.purifier_child_lock
- binary_sensor.purifier_display_light
- type: custom:fold-entity-row - type: custom:fold-entity-row
head: head:
type: custom:dummy-entity-row type: custom:dummy-entity-row
@@ -68,6 +68,29 @@
state_indicator_off_size: 0px state_indicator_off_size: 0px
state_indicator_on_color: var(--color-red) state_indicator_on_color: var(--color-red)
state_on_indicator_on_color: var(--color-red) state_on_indicator_on_color: var(--color-red)
- type: custom:button-card
template:
- small
- progress
- with_state_indicator
entity: sensor.purifier_target_humidity
tap_action:
action: call-service
service: input_select.select_next
service_data:
entity_id: input_select.purifier_target_humidity
show_state: true
show_icon: false
variables:
min_value: 30
max_value: 60
normal_value: 61
high_value: 70
state_indicator_id: binary_sensor.purifier_out_of_water
state_indicator_size: 5px
state_indicator_off_size: 0px
state_indicator_on_color: var(--color-red)
state_on_indicator_on_color: var(--color-red)
- type: custom:button-card - type: custom:button-card
template: default template: default
entity: binary_sensor.house_mode entity: binary_sensor.house_mode
@@ -135,6 +158,7 @@
max_value: 90 max_value: 90
normal_value: 10 normal_value: 10
high_value: 30 high_value: 30
- type: horizontal-stack - type: horizontal-stack
cards: cards:
- type: custom:button-card - type: custom:button-card
+231 -9
View File
@@ -4,6 +4,27 @@ fan:
platform: philips_airpurifier platform: philips_airpurifier
host: !secret philips_purifier_ip host: !secret philips_purifier_ip
input_select:
purifier_speed:
name: Speed
icon: mdi:speedometer
options:
- Auto Mode
- Allergen Mode
- Sleep Mode
- Speed 1
- Speed 2
- Speed 3
- Turbo
purifier_target_humidity:
name: Target humidity
icon: mdi:water-percent
options:
- 40
- 50
- 60
sensor: sensor:
- platform: template - platform: template
sensors: sensors:
@@ -11,27 +32,52 @@ sensor:
friendly_name: Air quality friendly_name: Air quality
value_template: "{{ state_attr('fan.philips_airpurifier', 'pm25') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'pm25') }}"
icon_template: mdi:weather-windy icon_template: mdi:weather-windy
unit_of_measurement: "pm2.5"
purifier_humidity: purifier_humidity:
friendly_name: Humidity friendly_name: Humidity
unit_of_measurement: "%" unit_of_measurement: "%"
device_class: humidity
value_template: "{{ state_attr('fan.philips_airpurifier', 'humidity') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'humidity') }}"
icon_template: mdi:water icon_template: mdi:water
purifier_temperature: purifier_temperature:
friendly_name: Temperature friendly_name: Temperature
unit_of_measurement: "°C" unit_of_measurement: "°C"
device_class: temperature
value_template: "{{ state_attr('fan.philips_airpurifier', 'temperature') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'temperature') }}"
icon_template: mdi:thermometer icon_template: mdi:thermometer
purifier_speed: purifier_speed:
friendly_name: Speed friendly_name: Speed
value_template: "{{ state_attr('fan.philips_airpurifier', 'speed') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'speed') }}"
icon_template: mdi:speedometer icon_template: >-
{% set value = state_attr('fan.philips_airpurifier', 'speed') %}
{% if value == 'Auto Mode' %}
{{ 'mdi:brightness-auto' }}
{% elif value == 'Speed 1' %}
{{ 'mdi:speedometer-slow' }}
{% elif value == 'Speed 2' %}
{{ 'mdi:speedometer-medium' }}
{% elif value == 'Speed 3' %}
{{ 'mdi:speedometer' }}
{% elif value == 'Turbo' %}
{{ 'mdi:car-turbocharger' }}
{% elif value == 'Sleep Mode' %}
{{ 'mdi:power-sleep' }}
{% elif value == 'Allergen Mode' %}
{{ 'mdi:allergy' }}
{% endif %}
purifier_allergens: purifier_allergens:
friendly_name: Allergen index friendly_name: Allergen index
value_template: "{{ state_attr('fan.philips_airpurifier', 'allergen_index') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'allergen_index') }}"
icon_template: mdi:weather-windy-variant icon_template: mdi:weather-windy-variant
purifier_mode: purifier_function:
friendly_name: Mode friendly_name: Function
value_template: "{{ state_attr('fan.philips_airpurifier', 'function') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'function') }}"
icon_template: >-
{% if state_attr('fan.philips_airpurifier', 'function') == 'Purification' %}
{{ 'mdi:air-purifier' }}
{% else %}
{{ 'mdi:air-humidifier' }}
{% endif %}
purifier_pre_filter: purifier_pre_filter:
friendly_name: Pre-filter friendly_name: Pre-filter
unit_of_measurement: "Hrs" unit_of_measurement: "Hrs"
@@ -56,23 +102,38 @@ sensor:
friendly_name: Target humidity friendly_name: Target humidity
unit_of_measurement: "%" unit_of_measurement: "%"
value_template: "{{ state_attr('fan.philips_airpurifier', 'target_humidity') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'target_humidity') }}"
icon_template: mdi:water
purifier_water_level:
friendly_name: Water level
unit_of_measurement: "%"
value_template: "{{ state_attr('fan.philips_airpurifier', 'water_level') }}"
icon_template: mdi:water-percent icon_template: mdi:water-percent
purifier_brightness: purifier_brightness:
friendly_name: Brightness friendly_name: Brightness
unit_of_measurement: "%" unit_of_measurement: "%"
value_template: "{{ state_attr('fan.philips_airpurifier', 'light_brightness') }}" value_template: "{{ state_attr('fan.philips_airpurifier', 'light_brightness') }}"
icon_template: mdi:brightness-6 icon_template: mdi:brightness-6
purifier_timer:
friendly_name: Timer
unit_of_measurement: "hrs"
value_template: "{{ state_attr('fan.philips_airpurifier', 'timer') }}"
icon_template: mdi:timer
purifier_time_remaining:
friendly_name: Time remaining
unit_of_measurement: "minutes"
value_template: "{{ state_attr('fan.philips_airpurifier', 'timer_remaining_minutes') }}"
icon_template: mdi:timer
binary_sensor: binary_sensor:
- platform: template - platform: template
sensors: sensors:
purifier_out_of_water:
friendly_name: Water level
device_class: problem
value_template: "{{ state_attr('fan.philips_airpurifier', 'water_level') == 0 }}"
purifier_child_lock:
friendly_name: Child lock
value_template: "{{ state_attr('fan.philips_airpurifier', 'child_lock') }}"
purifier_display_light:
friendly_name: Display light
value_template: "{{ state_attr('fan.philips_airpurifier', 'display_light') }}"
purifier_filter_needs_change: purifier_filter_needs_change:
friendly_name: Purifier filter needs change friendly_name: Filter needs change
device_class: problem device_class: problem
value_template: > value_template: >
@@ -81,6 +142,167 @@ binary_sensor:
or is_state('sensor.purifier_carbon_filter', 0) or is_state('sensor.purifier_carbon_filter', 0)
or is_state('sensor.purifier_hepa_filter', 0) }} or is_state('sensor.purifier_hepa_filter', 0) }}
script:
purifier_toggle_function:
alias: Air Purifier · Toggle function
sequence:
- condition: state
entity_id: input_boolean.purifier_out_of_water
state: 'off'
- service: philips_airpurifier.set_function
entity_id: fan.philips_airpurifier
data_template:
function: >-
{% if state_attr('fan.philips_airpurifier', 'function') == 'Purification' %}
{{ 'Purification & Humidification' }}
{% else %}
{{ 'Purification' }}
{% endif %}
automation:
- alias: Purifier · On start · Sync and update state
trigger:
platform: state
entity_id: fan.philips_airpurifier
to: 'on'
action:
- service: input_select.select_option
entity_id: input_select.purifier_target_humidity
data_template:
option: "{{ states('sensor.purifier_target_humidity') }}"
- service: input_select.select_option
entity_id: input_select.purifier_speed
data_template:
option: "{{ states('sensor.purifier_speed') }}"
- condition: state
entity_id: binary_sensor.purifier_out_of_water
state: "on"
- service: philips_airpurifier.set_function
entity_id: fan.philips_airpurifier
data:
function: 'Purification'
- alias: Purifier · Change speed
trigger:
platform: state
entity_id: input_select.purifier_speed
action:
- service: fan.set_speed
entity_id: fan.philips_airpurifier
data_template:
speed: "{{ states('input_select.purifier_speed') }}"
- alias: Purifier · Sync speed
trigger:
platform: state
entity_id: sensor.purifier_speed
action:
- service: input_select.select_option
entity_id: input_select.purifier_speed
data_template:
option: "{{ states('sensor.purifier_speed') }}"
- alias: Purifier · Change humidity
trigger:
platform: state
entity_id: input_select.purifier_target_humidity
action:
- service: philips_airpurifier.set_target_humidity
entity_id: fan.philips_airpurifier
data_template:
humidity: >-
{% set state = states('input_select.purifier_target_humidity') | int %}
{% if state == 40 %}
40
{% elif state == 50 %}
50
{% else %}
60
{% endif %}
- alias: Purifier · Sync humidity
trigger:
platform: state
entity_id: sensor.purifier_target_humidity
action:
- service: input_select.select_option
entity_id: input_select.purifier_target_humidity
data_template:
option: "{{ states('sensor.purifier_target_humidity') }}"
- alias: Purifier · Turn on · Low humidity
trigger:
platform: numeric_state
entity_id: sensor.bedroom_weather_humidity
below: 20
condition:
condition: and
conditions:
- condition: state
entity_id: binary_sensor.purifier_out_of_water
state: "off"
- condition: state
entity_id: input_boolean.georgi_home
state: "on"
action:
- service: fan.turn_on
entity_id: fan.philips_airpurifier
- service: philips_airpurifier.set_function
entity_id: fan.philips_airpurifier
data:
function: "Purification & Humidification"
- service: script.say
data:
message: "Hey, I'm turning on the purifier, because humidity is low and there is water in the tank"
- alias: Purifier · Turn on · Low air quality
trigger:
platform: numeric_state
entity_id: sensor.purifier_air_quality
above: 30
condition:
condition: state
entity_id: input_boolean.georgi_home
state: "on"
action:
- service: fan.turn_on
entity_id: fan.philips_airpurifier
- service: script.say
data:
message: "Hey, I'm turning on the purifier, because air quality is above 30"
- condition: state
entity_id: binary_sensor.purifier_out_of_water
state: "off"
- service: philips_airpurifier.set_function
entity_id: fan.philips_airpurifier
data:
funcition: "Purification & Humidification"
- service: script.say
data:
message: "Also, switching to humidification, because there is water in the tank"
- alias: Purifier · Turn off · Okay humidity
trigger:
platform: numeric_state
entity_id: sensor.bedroom_weather_humidity
above: 50
condition:
condition: and
conditions:
- condition: state
entity_id: sensor.purifier_function
state: "Purification & Humidification"
- condition: numeric_state
entity_id: sensor.purifier_air_quality
below: 30
action:
- service: fan.turn_off
entity_id: fan.philips_airpurifier
- service: script.say
data:
message: "Hey, I'm turning the purifier off, because humidity is below 30"
homeassistant: homeassistant:
customize: customize:
fan.philips_airpurifier: fan.philips_airpurifier:
+5
View File
@@ -11,6 +11,11 @@ script:
brightness_pct: 100 brightness_pct: 100
- service: fan.turn_on - service: fan.turn_on
entity_id: fan.philips_airpurifier entity_id: fan.philips_airpurifier
- service: input_select.select_option
entity_id: input_select.purifier_speed
data:
option: "Sleep Mode"
- service: light.turn_off - service: light.turn_off
entity_id: light.master_bedroom_main_lights entity_id: light.master_bedroom_main_lights
- service: sonos.unjoin - service: sonos.unjoin
+4
View File
@@ -9,6 +9,10 @@ script:
color_temp: 500 color_temp: 500
- service: fan.turn_on - service: fan.turn_on
entity_id: fan.philips_airpurifier entity_id: fan.philips_airpurifier
- service: input_select.select_option
entity_id: input_select.purifier_speed
data:
option: "Sleep Mode"
- service: media_player.media_stop - service: media_player.media_stop
entity_id: group.all_sonos entity_id: group.all_sonos
- service: light.turn_off - service: light.turn_off
@@ -13,3 +13,5 @@ script:
entity_id: group.all_sonos entity_id: group.all_sonos
- service: light.turn_off - service: light.turn_off
entity_id: light.all_lights entity_id: light.all_lights
- service: fan.turn_off
entity_id: fan.philips_airpurifier