mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-10 02:50:12 -04:00
Bunches of fixes nd changes
This commit is contained in:
@@ -14,7 +14,7 @@ condition:
|
|||||||
conditions:
|
conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: binary_sensor.have_custody
|
entity_id: binary_sensor.have_custody
|
||||||
state: "off"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: person.kristy
|
entity_id: person.kristy
|
||||||
state: "home"
|
state: "home"
|
||||||
|
|||||||
@@ -6,6 +6,15 @@ trigger:
|
|||||||
# I've moved
|
# I've moved
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id:
|
entity_id:
|
||||||
|
- input_select.podein_kids
|
||||||
|
# Kristy moved
|
||||||
|
- input_select.kristy_status_dropdown
|
||||||
|
- input_boolean.kristy_home
|
||||||
|
# Custody changed
|
||||||
|
- binary_sensor.have_custody
|
||||||
|
# Sleeping status changed
|
||||||
|
- input_boolean.ebin_is_awake
|
||||||
|
- input_boolean.ebin_in_bed
|
||||||
- input_select.ebin_status_dropdown
|
- input_select.ebin_status_dropdown
|
||||||
- input_boolean.ebin_home
|
- input_boolean.ebin_home
|
||||||
condition:
|
condition:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ trigger:
|
|||||||
from: "playing"
|
from: "playing"
|
||||||
condition:
|
condition:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: or
|
- condition: or
|
||||||
conditions:
|
conditions:
|
||||||
|
|||||||
@@ -164,29 +164,6 @@ action:
|
|||||||
target:
|
target:
|
||||||
entity_id: input_select.nursery_wled
|
entity_id: input_select.nursery_wled
|
||||||
|
|
||||||
# - action: automation.trigger
|
|
||||||
# target:
|
|
||||||
# entity_id: automation.nursery_wled_changed
|
|
||||||
|
|
||||||
# - choose:
|
|
||||||
# - conditions: "{{is_state('input_boolean.bridget_home','on')}}"
|
|
||||||
# sequence:
|
|
||||||
# - action: input_boolean.turn_on
|
|
||||||
# data: {}
|
|
||||||
# target:
|
|
||||||
# entity_id: input_boolean.nursery_asleep
|
|
||||||
|
|
||||||
# - delay: "00:00:05"
|
|
||||||
|
|
||||||
# - choose:
|
|
||||||
# - conditions: "{{is_state('media_player.ytube_music_player','on')}}"
|
|
||||||
# sequence:
|
|
||||||
# - action: media_player.turn_off
|
|
||||||
# target:
|
|
||||||
# entity_id: media_player.ytube_music_player
|
|
||||||
|
|
||||||
- delay: "00:25:00"
|
|
||||||
|
|
||||||
- choose:
|
- choose:
|
||||||
- conditions: "{{is_state('input_boolean.emmett_home','on')}}"
|
- conditions: "{{is_state('input_boolean.emmett_home','on')}}"
|
||||||
sequence:
|
sequence:
|
||||||
@@ -195,6 +172,8 @@ action:
|
|||||||
target:
|
target:
|
||||||
entity_id: input_boolean.boys_room_asleep
|
entity_id: input_boolean.boys_room_asleep
|
||||||
|
|
||||||
|
- delay: "00:25:00"
|
||||||
|
|
||||||
- action: input_select.select_option
|
- action: input_select.select_option
|
||||||
target:
|
target:
|
||||||
entity_id: input_select.boys_room_mode
|
entity_id: input_select.boys_room_mode
|
||||||
|
|||||||
@@ -125,7 +125,9 @@ action:
|
|||||||
state: "unavailable"
|
state: "unavailable"
|
||||||
sequence:
|
sequence:
|
||||||
- action: input_boolean.turn_off
|
- action: input_boolean.turn_off
|
||||||
entity_id: input_boolean.emmett_in_bed
|
entity_id:
|
||||||
|
- input_boolean.emmett_in_bed
|
||||||
|
- input_boolean.boys_room_asleep
|
||||||
- action: input_boolean.turn_on
|
- action: input_boolean.turn_on
|
||||||
entity_id: input_boolean.emmett_is_awake
|
entity_id: input_boolean.emmett_is_awake
|
||||||
|
|
||||||
@@ -147,7 +149,9 @@ action:
|
|||||||
state: "unavailable"
|
state: "unavailable"
|
||||||
sequence:
|
sequence:
|
||||||
- action: input_boolean.turn_off
|
- action: input_boolean.turn_off
|
||||||
entity_id: input_boolean.bridget_in_bed
|
entity_id:
|
||||||
|
- input_boolean.bridget_in_bed
|
||||||
|
- input_boolean.girls_room_asleep
|
||||||
- action: input_boolean.turn_on
|
- action: input_boolean.turn_on
|
||||||
entity_id: input_boolean.bridget_is_awake
|
entity_id: input_boolean.bridget_is_awake
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,14 @@ trigger:
|
|||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_boolean.boys_room_asleep
|
entity_id: input_boolean.boys_room_asleep
|
||||||
to: "on"
|
to: "on"
|
||||||
|
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: media_player.ma_boys_room_clock
|
entity_id: media_player.ma_boys_room_clock
|
||||||
to: "idle"
|
to: "idle"
|
||||||
for: 00:00:05
|
for: 00:00:05
|
||||||
|
|
||||||
condition:
|
condition:
|
||||||
- alias: "Do we want to be alerted?"
|
- alias: "Is the boys' room asleep?"
|
||||||
condition: state
|
condition: state
|
||||||
entity_id: input_boolean.boys_room_asleep
|
entity_id: input_boolean.boys_room_asleep
|
||||||
state: "on"
|
state: "on"
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ description: "Handles the lights in the furnace room"
|
|||||||
mode: queued
|
mode: queued
|
||||||
triggers:
|
triggers:
|
||||||
- id: door_open
|
- id: door_open
|
||||||
entity_id: >-
|
entity_id: binary_sensor.water_softener_multisensor_door
|
||||||
binary_sensor.hvac_multisensor_door,
|
|
||||||
binary_sensor.furnace_room_door_contact
|
|
||||||
from: "off"
|
from: "off"
|
||||||
to: "on"
|
to: "on"
|
||||||
trigger: state
|
trigger: state
|
||||||
@@ -14,9 +12,7 @@ triggers:
|
|||||||
When one of the door sensors detect that the furnace room door has been
|
When one of the door sensors detect that the furnace room door has been
|
||||||
opened
|
opened
|
||||||
- id: door_closed
|
- id: door_closed
|
||||||
entity_id: >-
|
entity_id: binary_sensor.water_softener_multisensor_door
|
||||||
binary_sensor.hvac_multisensor_door,
|
|
||||||
binary_sensor.furnace_room_door_contact
|
|
||||||
to: "off"
|
to: "off"
|
||||||
for: "00:10:00"
|
for: "00:10:00"
|
||||||
trigger: state
|
trigger: state
|
||||||
|
|||||||
@@ -28,4 +28,4 @@ action:
|
|||||||
- action: input_boolean.turn_off
|
- action: input_boolean.turn_off
|
||||||
data: {}
|
data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
alias: Continue Nursery White Noise
|
|
||||||
id: automation_continue_nursery_white_noise
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
- platform: state
|
|
||||||
entity_id: media_player.girls_room_hub
|
|
||||||
to: "off"
|
|
||||||
for: "00:00:02"
|
|
||||||
- platform: state
|
|
||||||
entity_id: media_player.girls_room_hub
|
|
||||||
to: "idle"
|
|
||||||
for: "00:00:02"
|
|
||||||
condition:
|
|
||||||
- condition: state
|
|
||||||
entity_id: input_boolean.nursery_asleep
|
|
||||||
state: "on"
|
|
||||||
|
|
||||||
action:
|
|
||||||
#- action: input_select.select_option
|
|
||||||
# data:
|
|
||||||
# entity_id: input_select.master_bedroom_mode
|
|
||||||
# option: 'Off'
|
|
||||||
- action: input_select.select_option
|
|
||||||
data:
|
|
||||||
entity_id: input_select.google_home
|
|
||||||
option: "Nursery"
|
|
||||||
- action: input_select.select_option
|
|
||||||
data:
|
|
||||||
entity_id: input_select.ambient_sound
|
|
||||||
option: "Thunderstorm"
|
|
||||||
- action: input_number.set_value
|
|
||||||
data:
|
|
||||||
entity_id: input_number.volume_ambientsounds
|
|
||||||
value: "0.6"
|
|
||||||
- action: script.ambientsounds
|
|
||||||
@@ -3,7 +3,7 @@ id: automation_nursery_white_noise_off
|
|||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
to: "off"
|
to: "off"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
|
|||||||
@@ -3,9 +3,21 @@ id: automation_nursery_white_noise_on
|
|||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
to: "on"
|
to: "on"
|
||||||
|
|
||||||
|
- platform: state
|
||||||
|
entity_id: media_player.ma_girls_room_hub
|
||||||
|
to: "idle"
|
||||||
|
for: 00:00:05
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- alias: "Is the girls' room asleep?"
|
||||||
|
condition: state
|
||||||
|
entity_id: input_boolean.girls_room_asleep
|
||||||
|
state: "on"
|
||||||
|
|
||||||
|
|
||||||
action:
|
action:
|
||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ triggers:
|
|||||||
entity_id: input_boolean.master_bedroom_occupied
|
entity_id: input_boolean.master_bedroom_occupied
|
||||||
|
|
||||||
- trigger: state
|
- trigger: state
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
|
|
||||||
- trigger: state
|
- trigger: state
|
||||||
entity_id: input_boolean.master_bedroom_asleep
|
entity_id: input_boolean.master_bedroom_asleep
|
||||||
@@ -115,7 +115,7 @@ action:
|
|||||||
state: "off"
|
state: "off"
|
||||||
- alias: "Nusery not asleep"
|
- alias: "Nusery not asleep"
|
||||||
condition: state
|
condition: state
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.girls_room_asleep
|
||||||
state: "off"
|
state: "off"
|
||||||
- alias: "Nursery fan on"
|
- alias: "Nursery fan on"
|
||||||
condition: state
|
condition: state
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
id: set_house_to_early_afternoon
|
id: set_house_to_early_afternoon
|
||||||
alias: Set House to Early Afternoon
|
alias: Set House to Early Afternoon
|
||||||
mode: single
|
mode: single
|
||||||
# Testing if this will update, save, and push just fine
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Early Afternoon
|
||||||
|
# after: '12:00'
|
||||||
|
# before: '15:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
@@ -19,10 +23,6 @@ condition:
|
|||||||
state: Early Afternoon
|
state: Early Afternoon
|
||||||
|
|
||||||
action:
|
action:
|
||||||
# - action: homeassistant.turn_on
|
|
||||||
# entity_id:
|
|
||||||
# - input_boolean.clint_needs_pm_meds
|
|
||||||
|
|
||||||
- action: input_select.select_option
|
- action: input_select.select_option
|
||||||
data:
|
data:
|
||||||
entity_id: input_select.time_of_day
|
entity_id: input_select.time_of_day
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_early_evening
|
|||||||
alias: Set House to Early Evening
|
alias: Set House to Early Evening
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Early Evening
|
||||||
|
# after: '17:00'
|
||||||
|
# before: '19:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.early_evening
|
entity_id: binary_sensor.early_evening
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_early_morning
|
|||||||
alias: Set House to Early Morning
|
alias: Set House to Early Morning
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Early Morning
|
||||||
|
# after: '04:00'
|
||||||
|
# before: '06:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.early_morning
|
entity_id: binary_sensor.early_morning
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_evening
|
|||||||
alias: Set House to Evening
|
alias: Set House to Evening
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Evening
|
||||||
|
# after: '19:00'
|
||||||
|
# before: '22:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.evening
|
entity_id: binary_sensor.evening
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_late_afternoon
|
|||||||
alias: Set House to Late Afternoon
|
alias: Set House to Late Afternoon
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Late Afternoon
|
||||||
|
# after: '15:00'
|
||||||
|
# before: '17:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.late_afternoon
|
entity_id: binary_sensor.late_afternoon
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_late_evening
|
|||||||
alias: Set House to Late Evening
|
alias: Set House to Late Evening
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Late Evening
|
||||||
|
# after: '22:00'
|
||||||
|
# before: '00:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.late_evening
|
entity_id: binary_sensor.late_evening
|
||||||
@@ -53,7 +58,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.ebin_in_bed
|
entity_id: input_boolean.ebin_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.ebin_in_bed
|
entity_id: input_boolean.ebin_in_bed
|
||||||
@@ -64,13 +69,4 @@ action:
|
|||||||
- action: homeassistant.turn_off
|
- action: homeassistant.turn_off
|
||||||
entity_id: input_boolean.ebin_is_awake
|
entity_id: input_boolean.ebin_is_awake
|
||||||
|
|
||||||
- choose:
|
|
||||||
- conditions:
|
|
||||||
- condition: state
|
|
||||||
entity_id: media_player.girls_room_hub
|
|
||||||
state: "playing"
|
|
||||||
sequence:
|
|
||||||
- action: media_player.turn_off
|
|
||||||
entity_id: media_player.girls_room_hub
|
|
||||||
|
|
||||||
- delay: "00:00:30"
|
- delay: "00:00:30"
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_late_morning
|
|||||||
alias: Set House to Late Morning
|
alias: Set House to Late Morning
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Late Morning
|
||||||
|
# after: '09:00'
|
||||||
|
# before: '12:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.late_morning
|
entity_id: binary_sensor.late_morning
|
||||||
@@ -66,7 +71,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.kristy_in_bed
|
entity_id: input_boolean.kristy_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.kristy_in_bed
|
entity_id: input_boolean.kristy_in_bed
|
||||||
@@ -79,7 +84,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.marshall_in_bed
|
entity_id: input_boolean.marshall_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.marshall_in_bed
|
entity_id: input_boolean.marshall_in_bed
|
||||||
@@ -92,7 +97,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.tess_in_bed
|
entity_id: input_boolean.tess_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.tess_in_bed
|
entity_id: input_boolean.tess_in_bed
|
||||||
@@ -105,7 +110,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.ebin_in_bed
|
entity_id: input_boolean.ebin_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.ebin_in_bed
|
entity_id: input_boolean.ebin_in_bed
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_morning
|
|||||||
alias: Set House to Morning
|
alias: Set House to Morning
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Morning
|
||||||
|
# after: '06:00'
|
||||||
|
# before: '09:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.morning
|
entity_id: binary_sensor.morning
|
||||||
@@ -24,6 +29,9 @@ action:
|
|||||||
option: Morning
|
option: Morning
|
||||||
|
|
||||||
- action: homeassistant.turn_off
|
- action: homeassistant.turn_off
|
||||||
entity_id: input_boolean.nursery_asleep
|
entity_id: input_boolean.boys_room_asleep
|
||||||
|
|
||||||
|
- action: homeassistant.turn_off
|
||||||
|
entity_id: input_boolean.girls_room_asleep
|
||||||
|
|
||||||
- delay: "00:00:30"
|
- delay: "00:00:30"
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ id: set_house_to_night
|
|||||||
alias: Set House to Night
|
alias: Set House to Night
|
||||||
mode: single
|
mode: single
|
||||||
|
|
||||||
|
# platform: tod
|
||||||
|
# name: Night
|
||||||
|
# after: '00:00'
|
||||||
|
# before: '04:00'
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: binary_sensor.night
|
entity_id: binary_sensor.night
|
||||||
@@ -41,7 +46,7 @@ action:
|
|||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.tess_in_bed
|
entity_id: input_boolean.tess_home
|
||||||
state: "on"
|
state: "on"
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.tess_in_bed
|
entity_id: input_boolean.tess_in_bed
|
||||||
|
|||||||
@@ -687,7 +687,7 @@ sensors:
|
|||||||
need_salt:
|
need_salt:
|
||||||
unique_id: templatebinarysensor.need_salt
|
unique_id: templatebinarysensor.need_salt
|
||||||
friendly_name: Need Salt
|
friendly_name: Need Salt
|
||||||
value_template: "{{ is_state('binary_sensor.hvac_multisensor_status', 'on') and is_state('sensor.hvac_multisensor_salt_level_in_bags','0') }}"
|
value_template: "{{ is_state('binary_sensor.water_softener_multisensor_status', 'on') and is_state('sensor.water_softener_multisensor_salt_level_in_bags','0') }}"
|
||||||
icon_template: mdi:shaker-outline
|
icon_template: mdi:shaker-outline
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 900
|
seconds: 900
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
name: Master Bedroom Asleep
|
|
||||||
icon: mdi:sleep
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
name: Nursery Asleep
|
|
||||||
icon: mdi:sleep
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
name: Nursery White Noise
|
|
||||||
@@ -2,12 +2,19 @@ lock:
|
|||||||
- platform: template
|
- platform: template
|
||||||
unique_id: templatelock.patio_door
|
unique_id: templatelock.patio_door
|
||||||
name: Patio Door
|
name: Patio Door
|
||||||
value_template: "{{ is_state('switch.shelly_sliding_glass_door', 'on') }}"
|
#value_template: "{{ is_state('switch.shelly_sliding_glass_door', 'on') }}"
|
||||||
|
value_template: "{{ is_state('light.deck', 'on') }}"
|
||||||
lock:
|
lock:
|
||||||
action: switch.turn_on
|
# action: switch.turn_on
|
||||||
|
# target:
|
||||||
|
# entity_id: switch.shelly_sliding_glass_door
|
||||||
|
action: light.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: switch.shelly_sliding_glass_door
|
entity_id: light.deck
|
||||||
unlock:
|
unlock:
|
||||||
action: switch.turn_off
|
# action: switch.turn_off
|
||||||
|
# target:
|
||||||
|
# entity_id: switch.shelly_sliding_glass_door
|
||||||
|
action: light.turn_off
|
||||||
target:
|
target:
|
||||||
entity_id: switch.shelly_sliding_glass_door
|
entity_id: light.deck
|
||||||
|
|||||||
@@ -8,11 +8,17 @@ substitutions:
|
|||||||
board: wemos_d1_mini32
|
board: wemos_d1_mini32
|
||||||
static_ip: !secret hvac-multisensor-ip
|
static_ip: !secret hvac-multisensor-ip
|
||||||
|
|
||||||
|
# For i2c devices
|
||||||
|
# In this case it's just the display
|
||||||
sda_pin: GPIO21
|
sda_pin: GPIO21
|
||||||
scl_pin: GPIO22
|
scl_pin: GPIO22
|
||||||
|
|
||||||
door_pin: GPIO19
|
door_pin: GPIO19
|
||||||
one_wire_pin: GPIO14
|
|
||||||
trigger_pin: GPIO04
|
one_wire_pin: GPIO26
|
||||||
|
|
||||||
|
# For the ultrasonic sensor
|
||||||
|
trigger_pin: GPIO16
|
||||||
echo_pin: GPIO13
|
echo_pin: GPIO13
|
||||||
|
|
||||||
#mdc_pin: GPIO23
|
#mdc_pin: GPIO23
|
||||||
@@ -21,8 +27,8 @@ substitutions:
|
|||||||
#power_pin: GPIO5
|
#power_pin: GPIO5
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
#wifi: !include common/wifi_no_power_save.yaml
|
# network: !include common/ethernet.yaml
|
||||||
ethernet: !include common/ethernet.yaml
|
network: !include common/wifi.yaml
|
||||||
device_base: !include common/device_base.yaml
|
device_base: !include common/device_base.yaml
|
||||||
ble_proxy: !include common/ble_proxy.yaml
|
ble_proxy: !include common/ble_proxy.yaml
|
||||||
|
|
||||||
@@ -30,34 +36,14 @@ esphome:
|
|||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
on_boot:
|
|
||||||
- priority: -100
|
|
||||||
then:
|
|
||||||
- lambda: |-
|
|
||||||
if (id(oled)) {
|
|
||||||
id(oled_enabled) = true;
|
|
||||||
} else {
|
|
||||||
id(oled_enabled) = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
esp32:
|
esp32:
|
||||||
board: ${board}
|
board: ${board}
|
||||||
framework:
|
framework:
|
||||||
type: esp-idf
|
type: esp-idf
|
||||||
|
|
||||||
# web_server:
|
|
||||||
# port: 80
|
|
||||||
# version: 3
|
|
||||||
# include_internal: true
|
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
level: DEBUG
|
|
||||||
logs:
|
|
||||||
sensor: INFO
|
|
||||||
component: INFO
|
|
||||||
ultrasonic: INFO
|
|
||||||
ethernet: DEBUG
|
|
||||||
|
|
||||||
api: # Using settings from common/device_base.yaml
|
api: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
@@ -74,13 +60,22 @@ globals:
|
|||||||
- id: screen_power
|
- id: screen_power
|
||||||
type: bool
|
type: bool
|
||||||
restore_value: yes
|
restore_value: yes
|
||||||
initial_value: 'true'
|
initial_value: 'false'
|
||||||
|
|
||||||
font:
|
font:
|
||||||
- file: 'CascadiaMonoPL.ttf'
|
- file: 'fonts/CascadiaMonoPL.ttf'
|
||||||
id: font1
|
id: font1
|
||||||
size: 17
|
size: 17
|
||||||
|
|
||||||
|
# - file: "gfonts://Roboto"
|
||||||
|
# id: roboto_20
|
||||||
|
# size: 20
|
||||||
|
|
||||||
|
# - file: "gfonts://Material+Symbols+Outlined"
|
||||||
|
# id: icons_50
|
||||||
|
# size: 50
|
||||||
|
# glyphs: ["\U0000e425"] # mdi-timer
|
||||||
|
|
||||||
one_wire:
|
one_wire:
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
pin: ${one_wire_pin}
|
pin: ${one_wire_pin}
|
||||||
@@ -142,7 +137,7 @@ sensor:
|
|||||||
trigger_pin: ${trigger_pin}
|
trigger_pin: ${trigger_pin}
|
||||||
echo_pin: ${echo_pin}
|
echo_pin: ${echo_pin}
|
||||||
id: ultrasonic_source
|
id: ultrasonic_source
|
||||||
#update_interval: 5s
|
update_interval: 1s
|
||||||
internal: True
|
internal: True
|
||||||
filters:
|
filters:
|
||||||
- sliding_window_moving_average:
|
- sliding_window_moving_average:
|
||||||
@@ -221,24 +216,21 @@ binary_sensor:
|
|||||||
filters:
|
filters:
|
||||||
- invert:
|
- invert:
|
||||||
|
|
||||||
# switch:
|
switch:
|
||||||
# - platform: template
|
- platform: template
|
||||||
# id: display_switch
|
id: display_switch
|
||||||
# name: "Display"
|
icon: mdi:console
|
||||||
# lambda: |-
|
name: "Display"
|
||||||
# if (id(oled_enabled)) {
|
lambda: |-
|
||||||
# if (id(screen_power)) {
|
// if (id(screen_power)) {
|
||||||
# id(oled).turn_on();
|
// id(oled).turn_on();
|
||||||
# } else {
|
// } else {
|
||||||
# id(oled).turn_off();
|
// id(oled).turn_off();
|
||||||
# }
|
// }
|
||||||
# }
|
return id(screen_power);
|
||||||
# return id(screen_power);
|
turn_on_action:
|
||||||
# turn_on_action:
|
- lambda: |-
|
||||||
# - lambda: |-
|
id(screen_power) = true;
|
||||||
# id(screen_power) = true;
|
turn_off_action:
|
||||||
# // id(oled).turn_on();
|
- lambda: |-
|
||||||
# turn_off_action:
|
id(screen_power) = false;
|
||||||
# - lambda: |-
|
|
||||||
# id(screen_power) = false;
|
|
||||||
# // id(oled).turn_off();
|
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
||||||
|
substitutions:
|
||||||
|
devicename: water-softener-multisensor
|
||||||
|
entity_name: water_softener_multisensor
|
||||||
|
friendly_name: Water Softener MultiSensor
|
||||||
|
comment: Clever Water Softener MultiSensor
|
||||||
|
platform: ESP32
|
||||||
|
board: wemos_d1_mini32
|
||||||
|
static_ip: !secret water-softener-multisensor-ip
|
||||||
|
|
||||||
|
door_pin: GPIO18
|
||||||
|
|
||||||
|
# For the ultrasonic sensor
|
||||||
|
trigger_pin: GPIO16
|
||||||
|
echo_pin: GPIO17
|
||||||
|
|
||||||
|
packages:
|
||||||
|
# network: !include common/ethernet.yaml
|
||||||
|
network: !include common/wifi.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
|
ble_proxy: !include common/ble_proxy.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: ${devicename}
|
||||||
|
friendly_name: ${friendly_name}
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: ${board}
|
||||||
|
framework:
|
||||||
|
type: esp-idf
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
|
ota: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
|
esp32_ble_tracker:
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: ultrasonic
|
||||||
|
trigger_pin: ${trigger_pin}
|
||||||
|
echo_pin: ${echo_pin}
|
||||||
|
id: ultrasonic_source
|
||||||
|
update_interval: 1s
|
||||||
|
internal: True
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 5
|
||||||
|
send_every: 5
|
||||||
|
send_first_at: 1
|
||||||
|
on_value:
|
||||||
|
then:
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: distance_from_bottom
|
||||||
|
state: !lambda 'return id(ultrasonic_source).state;'
|
||||||
|
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: distance_from_top
|
||||||
|
state: !lambda 'return id(ultrasonic_source).state;'
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "cm"
|
||||||
|
state_class: measurement
|
||||||
|
id: distance_from_bottom
|
||||||
|
name: "Salt Level in CM"
|
||||||
|
icon: mdi:arrow-collapse-up
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return (0.94 - (id(ultrasonic_source).state)) * 100;'
|
||||||
|
on_value:
|
||||||
|
then:
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: level_in_bags
|
||||||
|
state: !lambda 'return id(distance_from_bottom).state;'
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "cm"
|
||||||
|
state_class: measurement
|
||||||
|
id: distance_from_top
|
||||||
|
name: "Salt Level From Top in CM"
|
||||||
|
icon: mdi:arrow-collapse-down
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return (id(ultrasonic_source).state) * 100;'
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "bags"
|
||||||
|
state_class: measurement
|
||||||
|
id: level_in_bags
|
||||||
|
name: "Salt Level in Bags"
|
||||||
|
icon: mdi:counter
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return (id(distance_from_bottom).state) / 17.5;'
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
name: "Door"
|
||||||
|
device_class: door
|
||||||
|
pin:
|
||||||
|
number: ${door_pin}
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
# filters:
|
||||||
|
# - invert:
|
||||||
|
|
||||||
@@ -3,14 +3,17 @@ platform: wifi_info
|
|||||||
ip_address:
|
ip_address:
|
||||||
name: IP
|
name: IP
|
||||||
icon: mdi:ip
|
icon: mdi:ip
|
||||||
|
update_interval: 60s
|
||||||
disabled_by_default: true
|
disabled_by_default: true
|
||||||
ssid:
|
ssid:
|
||||||
name: SSID
|
name: SSID
|
||||||
icon: mdi:lan
|
icon: mdi:lan
|
||||||
|
update_interval: 60s
|
||||||
disabled_by_default: true
|
disabled_by_default: true
|
||||||
bssid:
|
bssid:
|
||||||
name: BSSID
|
name: BSSID
|
||||||
disabled_by_default: true
|
disabled_by_default: true
|
||||||
|
update_interval: 60s
|
||||||
icon: mdi:router-network
|
icon: mdi:router-network
|
||||||
mac_address:
|
mac_address:
|
||||||
name: Wifi MAC Address
|
name: Wifi MAC Address
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+595
-130
@@ -5,32 +5,41 @@ substitutions:
|
|||||||
friendly_name: HVAC MultiSensor
|
friendly_name: HVAC MultiSensor
|
||||||
comment: Clever MultiSensor
|
comment: Clever MultiSensor
|
||||||
platform: ESP32
|
platform: ESP32
|
||||||
board: wemos_d1_mini32
|
board: esp32-wroom-32d
|
||||||
|
variant: esp32
|
||||||
|
# framework: esp-idf
|
||||||
|
framework: arduino
|
||||||
static_ip: !secret hvac-multisensor-ip
|
static_ip: !secret hvac-multisensor-ip
|
||||||
|
|
||||||
|
# Backlight Button
|
||||||
|
backlight_button: GPIO34
|
||||||
|
|
||||||
|
# For TFT Display
|
||||||
|
tft_dc_pin: GPIO02
|
||||||
|
tft_reset_pin: GPIO04
|
||||||
|
tft_cs_pin: GPIO15
|
||||||
|
tft_backlight_pin: GPIO32
|
||||||
|
|
||||||
|
# For SPI and TFT
|
||||||
|
spi_miso_pin: GPIO19
|
||||||
|
spi_mosi_pin: GPIO23
|
||||||
|
spi_clock_pin: GPIO18
|
||||||
|
|
||||||
|
# For Touchscreen
|
||||||
|
touchscreen_irq_pin: GPIO27
|
||||||
|
|
||||||
# For i2c devices
|
# For i2c devices
|
||||||
# In this case it's just the display
|
|
||||||
sda_pin: GPIO21
|
sda_pin: GPIO21
|
||||||
scl_pin: GPIO22
|
scl_pin: GPIO22
|
||||||
|
|
||||||
door_pin: GPIO19
|
passive_buzzer_pin: GPIO26
|
||||||
|
one_wire_pin: GPIO17
|
||||||
one_wire_pin: GPIO26
|
|
||||||
|
|
||||||
# For the ultrasonic sensor
|
|
||||||
trigger_pin: GPIO16
|
|
||||||
echo_pin: GPIO13
|
|
||||||
|
|
||||||
#mdc_pin: GPIO23
|
|
||||||
#mdio_pin: GPIO18
|
|
||||||
#clk_mode: GPIO17_OUT
|
|
||||||
#power_pin: GPIO5
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
# network: !include common/ethernet.yaml
|
# network: !include common/ethernet.yaml
|
||||||
network: !include common/wifi.yaml
|
network: !include common/wifi.yaml
|
||||||
device_base: !include common/device_base.yaml
|
device_base: !include common/device_base.yaml
|
||||||
ble_proxy: !include common/ble_proxy.yaml
|
# ble_proxy: !include common/ble_proxy.yaml
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
@@ -38,34 +47,103 @@ esphome:
|
|||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
esp32:
|
esp32:
|
||||||
board: ${board}
|
# board: ${board}
|
||||||
|
variant: ${variant}
|
||||||
framework:
|
framework:
|
||||||
type: esp-idf
|
type: ${framework}
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
|
level: VERBOSE
|
||||||
|
|
||||||
|
time:
|
||||||
|
- id: !remove homeassistant_time
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
timezone: America/Detroit
|
||||||
|
on_time:
|
||||||
|
- hours: 2,3,4,5
|
||||||
|
minutes: 5
|
||||||
|
seconds: 0
|
||||||
|
then:
|
||||||
|
- switch.turn_on: switch_antiburn
|
||||||
|
- hours: 2,3,4,5
|
||||||
|
minutes: 35
|
||||||
|
seconds: 0
|
||||||
|
then:
|
||||||
|
- switch.turn_off: switch_antiburn
|
||||||
|
|
||||||
api: # Using settings from common/device_base.yaml
|
api: # Using settings from common/device_base.yaml
|
||||||
|
actions:
|
||||||
|
- action: play_rtttl
|
||||||
|
variables:
|
||||||
|
song_str: string
|
||||||
|
then:
|
||||||
|
- rtttl.play: !lambda 'return song_str;'
|
||||||
|
on_client_connected:
|
||||||
|
- logger.log:
|
||||||
|
format: "Client %s connected to API with IP %s"
|
||||||
|
args: ["client_info.c_str()", "client_address.c_str()"]
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return (0 == client_info.find("Home Assistant "));'
|
||||||
|
then:
|
||||||
|
- lvgl.widget.show: lbl_hastatus
|
||||||
|
on_client_disconnected:
|
||||||
|
- logger.log:
|
||||||
|
format: "Client %s disconnected to API with IP %s"
|
||||||
|
args: ["client_info.c_str()", "client_address.c_str()"]
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return (0 == client_info.find("Home Assistant "));'
|
||||||
|
then:
|
||||||
|
- lvgl.widget.hide: lbl_hastatus
|
||||||
|
|
||||||
ota: # Using settings from common/device_base.yaml
|
ota: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
esp32_ble_tracker:
|
# esp32_ble_tracker:
|
||||||
|
|
||||||
globals:
|
# globals:
|
||||||
- id: oled_enabled
|
# - id: oled_enabled
|
||||||
type: bool
|
# type: bool
|
||||||
restore_value: yes
|
# restore_value: yes
|
||||||
initial_value: 'false'
|
# initial_value: 'false'
|
||||||
|
|
||||||
- id: screen_power
|
# - id: screen_power
|
||||||
type: bool
|
# type: bool
|
||||||
restore_value: yes
|
# restore_value: yes
|
||||||
initial_value: 'false'
|
# initial_value: 'false'
|
||||||
|
|
||||||
font:
|
font:
|
||||||
- file: 'fonts/CascadiaMonoPL.ttf'
|
# - file: 'fonts/CascadiaMonoPL.ttf'
|
||||||
id: font1
|
# id: regular_20
|
||||||
size: 17
|
# size: 20
|
||||||
|
# bpp: 4
|
||||||
|
# extras:
|
||||||
|
# - file: "fonts/materialdesignicons-webfont.ttf"
|
||||||
|
# glyphs: [
|
||||||
|
# "\U000F02D1", # mdi-heart
|
||||||
|
# "\U000F05D4", # mdi-airplane-landing
|
||||||
|
# "\U000F02DC", # mdi-home
|
||||||
|
# "\U000F035E", # mdi-menu-left
|
||||||
|
# "\U000F035F", # mdi-menu-right
|
||||||
|
# ]
|
||||||
|
|
||||||
|
- file: 'fonts/RobotoCondensed-Regular.ttf'
|
||||||
|
id: regular_20
|
||||||
|
size: 20
|
||||||
|
bpp: 4
|
||||||
|
extras:
|
||||||
|
- file: "fonts/materialdesignicons-webfont.ttf"
|
||||||
|
glyphs: [
|
||||||
|
"\U000F02DC", # mdi-home
|
||||||
|
"\U000F035E", # mdi-menu-left
|
||||||
|
"\U000F035F", # mdi-menu-right
|
||||||
|
"\U000F05A9", # mdi-wifi
|
||||||
|
"\U000F19B2", # mdi-arrow-up-thin
|
||||||
|
"\U000F19B3", # mdi-arrow-down-thin
|
||||||
|
"\U000F04DB", # mdi-stop
|
||||||
|
]
|
||||||
|
|
||||||
# - file: "gfonts://Roboto"
|
# - file: "gfonts://Roboto"
|
||||||
# id: roboto_20
|
# id: roboto_20
|
||||||
@@ -78,13 +156,92 @@ font:
|
|||||||
|
|
||||||
one_wire:
|
one_wire:
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
pin: ${one_wire_pin}
|
pin:
|
||||||
|
number: ${one_wire_pin}
|
||||||
|
mode:
|
||||||
|
input: true
|
||||||
|
pullup: true
|
||||||
|
|
||||||
i2c:
|
i2c:
|
||||||
sda: ${sda_pin}
|
sda: ${sda_pin}
|
||||||
scl: ${scl_pin}
|
scl: ${scl_pin}
|
||||||
frequency: 800kHz
|
frequency: 800kHz
|
||||||
|
|
||||||
|
spi:
|
||||||
|
clk_pin: ${spi_clock_pin}
|
||||||
|
mosi_pin: ${spi_mosi_pin}
|
||||||
|
miso_pin: ${spi_miso_pin}
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: ledc
|
||||||
|
pin: ${tft_backlight_pin}
|
||||||
|
id: backlight_pwm
|
||||||
|
|
||||||
|
- platform: ledc
|
||||||
|
pin: ${passive_buzzer_pin}
|
||||||
|
id: rtttl_out
|
||||||
|
|
||||||
|
rtttl:
|
||||||
|
output: rtttl_out
|
||||||
|
id: buzzer
|
||||||
|
gain: 60%
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: template
|
||||||
|
name: Antiburn
|
||||||
|
id: switch_antiburn
|
||||||
|
icon: mdi:television-shimmer
|
||||||
|
optimistic: true
|
||||||
|
entity_category: "config"
|
||||||
|
turn_on_action:
|
||||||
|
- logger.log: "Starting Antiburn"
|
||||||
|
- if:
|
||||||
|
condition: lvgl.is_paused
|
||||||
|
then:
|
||||||
|
- lvgl.resume:
|
||||||
|
- lvgl.widget.redraw:
|
||||||
|
- lvgl.pause:
|
||||||
|
show_snow: true
|
||||||
|
turn_off_action:
|
||||||
|
- logger.log: "Stopping Antiburn"
|
||||||
|
- if:
|
||||||
|
condition: lvgl.is_paused
|
||||||
|
then:
|
||||||
|
- lvgl.resume:
|
||||||
|
- lvgl.widget.redraw:
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: monochromatic
|
||||||
|
output: backlight_pwm
|
||||||
|
name: "Display Backlight"
|
||||||
|
id: display_backlight
|
||||||
|
restore_mode: RESTORE_DEFAULT_OFF
|
||||||
|
|
||||||
|
number:
|
||||||
|
- platform: template
|
||||||
|
name: LVGL Screen timeout
|
||||||
|
optimistic: true
|
||||||
|
id: display_timeout
|
||||||
|
unit_of_measurement: "s"
|
||||||
|
initial_value: 30
|
||||||
|
restore_value: true
|
||||||
|
min_value: 10
|
||||||
|
max_value: 180
|
||||||
|
step: 5
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
# binary_sensor:
|
||||||
|
# - platform: gpio
|
||||||
|
# pin:
|
||||||
|
# number: ${backlight_button}
|
||||||
|
# id: backlight_switch
|
||||||
|
# filters:
|
||||||
|
# - delayed_on: 10ms
|
||||||
|
# - delayed_off: 10ms
|
||||||
|
# on_press:
|
||||||
|
# - light.toggle:
|
||||||
|
# id: display_backlight
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: dallas_temp
|
- platform: dallas_temp
|
||||||
address: 0xB33C01B607798528
|
address: 0xB33C01B607798528
|
||||||
@@ -93,7 +250,16 @@ sensor:
|
|||||||
icon: mdi:home-thermometer-outline
|
icon: mdi:home-thermometer-outline
|
||||||
update_interval: 10s
|
update_interval: 10s
|
||||||
filters:
|
filters:
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
- lambda: |-
|
||||||
|
float val = x;
|
||||||
|
if (isnan(val)) {
|
||||||
|
val = 0.0;
|
||||||
|
}
|
||||||
|
return val * (9.0/5.0) + 32.0;
|
||||||
|
#- lambda: return x * (9.0/5.0) + 32.0;
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 100.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -105,6 +271,9 @@ sensor:
|
|||||||
update_interval: 10s
|
update_interval: 10s
|
||||||
filters:
|
filters:
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
- lambda: return x * (9.0/5.0) + 32.0;
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 100.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -116,6 +285,9 @@ sensor:
|
|||||||
update_interval: 10s
|
update_interval: 10s
|
||||||
filters:
|
filters:
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
- lambda: return x * (9.0/5.0) + 32.0;
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 100.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -129,108 +301,401 @@ sensor:
|
|||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
filters:
|
filters:
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 100.0
|
||||||
- or:
|
- or:
|
||||||
- throttle: 60s
|
- throttle: 60s
|
||||||
- delta: 1.0
|
- delta: 1.0
|
||||||
|
|
||||||
- platform: ultrasonic
|
|
||||||
trigger_pin: ${trigger_pin}
|
|
||||||
echo_pin: ${echo_pin}
|
|
||||||
id: ultrasonic_source
|
|
||||||
update_interval: 1s
|
|
||||||
internal: True
|
|
||||||
filters:
|
|
||||||
- sliding_window_moving_average:
|
|
||||||
window_size: 5
|
|
||||||
send_every: 5
|
|
||||||
send_first_at: 1
|
|
||||||
on_value:
|
|
||||||
then:
|
|
||||||
- sensor.template.publish:
|
|
||||||
id: distance_from_bottom
|
|
||||||
state: !lambda 'return id(ultrasonic_source).state;'
|
|
||||||
|
|
||||||
- sensor.template.publish:
|
|
||||||
id: distance_from_top
|
|
||||||
state: !lambda 'return id(ultrasonic_source).state;'
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
unit_of_measurement: "cm"
|
|
||||||
state_class: measurement
|
|
||||||
id: distance_from_bottom
|
|
||||||
name: "Salt Level in CM"
|
|
||||||
icon: mdi:arrow-collapse-up
|
|
||||||
disabled_by_default: true
|
|
||||||
#update_interval: 5s
|
|
||||||
filters:
|
|
||||||
- lambda: 'return (0.94 - (id(ultrasonic_source).state)) * 100;'
|
|
||||||
on_value:
|
|
||||||
then:
|
|
||||||
- sensor.template.publish:
|
|
||||||
id: level_in_bags
|
|
||||||
state: !lambda 'return id(distance_from_bottom).state;'
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
unit_of_measurement: "cm"
|
|
||||||
state_class: measurement
|
|
||||||
id: distance_from_top
|
|
||||||
name: "Salt Level From Top in CM"
|
|
||||||
icon: mdi:arrow-collapse-down
|
|
||||||
disabled_by_default: true
|
|
||||||
#update_interval: 5s
|
|
||||||
filters:
|
|
||||||
- lambda: 'return (id(ultrasonic_source).state) * 100;'
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
unit_of_measurement: "bags"
|
|
||||||
state_class: measurement
|
|
||||||
id: level_in_bags
|
|
||||||
name: "Salt Level in Bags"
|
|
||||||
icon: mdi:counter
|
|
||||||
disabled_by_default: true
|
|
||||||
#update_interval: 5s
|
|
||||||
filters:
|
|
||||||
- lambda: 'return (id(distance_from_bottom).state) / 17.5;'
|
|
||||||
|
|
||||||
display:
|
display:
|
||||||
- platform: ssd1306_i2c
|
- platform: ili9xxx
|
||||||
id: oled
|
id: main_display
|
||||||
model: "SSD1306 128x64"
|
# data_rate: 20MHz
|
||||||
#reset_pin: GPIO14 #D0
|
# spi_mode: MODE3
|
||||||
address: 0x3C
|
# color_palette: 8BIT
|
||||||
lambda: |-
|
invert_colors: false
|
||||||
it.print(0, 0, id(font1), "Delta:");
|
auto_clear_enabled: false
|
||||||
it.printf(128, 0, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_delta).state);
|
update_interval: never
|
||||||
it.print(0, 16, id(font1), "Supply:");
|
model: ili9488
|
||||||
it.printf(128, 16, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_supply).state);
|
dc_pin: ${tft_dc_pin}
|
||||||
it.print(0, 32, id(font1), "Return:");
|
reset_pin: ${tft_reset_pin}
|
||||||
it.printf(128, 32, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_return).state);
|
cs_pin: ${tft_cs_pin}
|
||||||
it.print(0, 48, id(font1), "Ambient:");
|
transform:
|
||||||
it.printf(128, 48, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(ambient).state);
|
swap_xy: true
|
||||||
|
mirror_x: true
|
||||||
|
dimensions:
|
||||||
|
height: 480
|
||||||
|
width: 320
|
||||||
|
|
||||||
binary_sensor:
|
touchscreen:
|
||||||
- platform: gpio
|
# - platform: ft5x06
|
||||||
name: "Door"
|
- platform: ft63x6
|
||||||
device_class: door
|
id: main_touchscreen
|
||||||
pin: ${door_pin}
|
display: main_display
|
||||||
filters:
|
transform:
|
||||||
- invert:
|
swap_xy: true
|
||||||
|
mirror_y: true
|
||||||
|
interrupt_pin: ${touchscreen_irq_pin}
|
||||||
|
# on_touch:
|
||||||
|
# - lambda: |-
|
||||||
|
# ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d",
|
||||||
|
# touch.x,
|
||||||
|
# touch.y,
|
||||||
|
# touch.x_raw,
|
||||||
|
# touch.y_raw
|
||||||
|
# );
|
||||||
|
on_release:
|
||||||
|
- if:
|
||||||
|
condition: lvgl.is_paused
|
||||||
|
then:
|
||||||
|
- logger.log: "LVGL resuming"
|
||||||
|
- lvgl.resume:
|
||||||
|
- lvgl.widget.redraw:
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
light.is_off: display_backlight
|
||||||
|
then:
|
||||||
|
- light.turn_on: display_backlight
|
||||||
|
|
||||||
switch:
|
lvgl:
|
||||||
- platform: template
|
buffer_size: 25%
|
||||||
id: display_switch
|
displays: main_display
|
||||||
icon: mdi:console
|
top_layer:
|
||||||
name: "Display"
|
widgets:
|
||||||
lambda: |-
|
- label:
|
||||||
// if (id(screen_power)) {
|
text: "\U000F05A9"
|
||||||
// id(oled).turn_on();
|
id: lbl_hastatus
|
||||||
// } else {
|
hidden: true
|
||||||
// id(oled).turn_off();
|
align: top_right
|
||||||
// }
|
x: -2
|
||||||
return id(screen_power);
|
y: 7
|
||||||
turn_on_action:
|
text_align: right
|
||||||
- lambda: |-
|
|
||||||
id(screen_power) = true;
|
- buttonmatrix:
|
||||||
turn_off_action:
|
align: bottom_mid
|
||||||
- lambda: |-
|
styles: header_footer
|
||||||
id(screen_power) = false;
|
pad_all: 0
|
||||||
|
outline_width: 0
|
||||||
|
id: top_layer
|
||||||
|
items:
|
||||||
|
styles: header_footer
|
||||||
|
rows:
|
||||||
|
- buttons:
|
||||||
|
- id: page_prev
|
||||||
|
text: "\U000F035E"
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
lvgl.page.previous:
|
||||||
|
- id: page_home
|
||||||
|
text: "\U000F02DC"
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
lvgl.page.show: main_page
|
||||||
|
- id: page_next
|
||||||
|
text: "\U000F035F"
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
lvgl.page.next:
|
||||||
|
on_idle:
|
||||||
|
timeout: !lambda "return (id(display_timeout).state * 1000);"
|
||||||
|
then:
|
||||||
|
- logger.log: "LVGL is idle"
|
||||||
|
- light.turn_off: display_backlight
|
||||||
|
- lvgl.pause:
|
||||||
|
|
||||||
|
pages:
|
||||||
|
- id: room_page
|
||||||
|
widgets:
|
||||||
|
- obj: # a properly placed coontainer object for all these controls
|
||||||
|
align: CENTER
|
||||||
|
width: 400
|
||||||
|
height: 256
|
||||||
|
pad_all: 2
|
||||||
|
bg_color: 0x414559
|
||||||
|
bg_opa: TRANSP
|
||||||
|
border_opa: TRANSP
|
||||||
|
layout: # enable the GRID layout for the children widgets
|
||||||
|
pad_row: 6
|
||||||
|
pad_column: 8
|
||||||
|
type: GRID # split the rows and the columns proportionally
|
||||||
|
grid_columns: [FR(1), FR(1), FR(1)] # equal
|
||||||
|
grid_rows: [FR(10), FR(30), FR(30), FR(30)] # like percents
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
text: "Red"
|
||||||
|
grid_cell_column_pos: 0 # place the widget in
|
||||||
|
grid_cell_row_pos: 0 # the corresponding cell
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
- button:
|
||||||
|
id: but_cov_up_east
|
||||||
|
bg_color: 0xFF0000
|
||||||
|
grid_cell_column_pos: 0
|
||||||
|
grid_cell_row_pos: 1
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_up_east
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B2"
|
||||||
|
- button:
|
||||||
|
id: but_cov_stop_east
|
||||||
|
bg_color: 0xFF0000
|
||||||
|
grid_cell_column_pos: 0
|
||||||
|
grid_cell_row_pos: 2
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_stop_east
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F04DB"
|
||||||
|
- button:
|
||||||
|
id: but_cov_down_east
|
||||||
|
bg_color: 0xFF0000
|
||||||
|
grid_cell_column_pos: 0
|
||||||
|
grid_cell_row_pos: 3
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_down_east
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B3"
|
||||||
|
|
||||||
|
- label:
|
||||||
|
text: "Green"
|
||||||
|
grid_cell_column_pos: 1
|
||||||
|
grid_cell_row_pos: 0
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
- button:
|
||||||
|
id: but_cov_up_south
|
||||||
|
bg_color: 0x00FF00
|
||||||
|
grid_cell_column_pos: 1
|
||||||
|
grid_cell_row_pos: 1
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_up_south
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B2"
|
||||||
|
- button:
|
||||||
|
id: but_cov_stop_south
|
||||||
|
bg_color: 0x00FF00
|
||||||
|
grid_cell_column_pos: 1
|
||||||
|
grid_cell_row_pos: 2
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_stop_south
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F04DB"
|
||||||
|
- button:
|
||||||
|
id: but_cov_down_south
|
||||||
|
bg_color: 0x00FF00
|
||||||
|
grid_cell_column_pos: 1
|
||||||
|
grid_cell_row_pos: 3
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_down_south
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B3"
|
||||||
|
|
||||||
|
- label:
|
||||||
|
text: "Blue"
|
||||||
|
grid_cell_column_pos: 2
|
||||||
|
grid_cell_row_pos: 0
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
- button:
|
||||||
|
id: but_cov_up_west
|
||||||
|
bg_color: 0x0000FF
|
||||||
|
grid_cell_column_pos: 2
|
||||||
|
grid_cell_row_pos: 1
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_up_west
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B2"
|
||||||
|
- button:
|
||||||
|
id: but_cov_stop_west
|
||||||
|
bg_color: 0x0000FF
|
||||||
|
grid_cell_column_pos: 2
|
||||||
|
grid_cell_row_pos: 2
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_stop_west
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F04DB"
|
||||||
|
- button:
|
||||||
|
id: but_cov_down_west
|
||||||
|
bg_color: 0x0000FF
|
||||||
|
grid_cell_column_pos: 2
|
||||||
|
grid_cell_row_pos: 3
|
||||||
|
grid_cell_x_align: STRETCH
|
||||||
|
grid_cell_y_align: STRETCH
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
id: cov_down_west
|
||||||
|
align: CENTER
|
||||||
|
text: "\U000F19B3"
|
||||||
|
- id: main_page
|
||||||
|
widgets:
|
||||||
|
- obj:
|
||||||
|
align: TOP_MID
|
||||||
|
styles: header_footer
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
text: "ESPHome LVGL Display"
|
||||||
|
align: CENTER
|
||||||
|
text_align: CENTER
|
||||||
|
- label:
|
||||||
|
align: CENTER
|
||||||
|
text: 'Hello World!'
|
||||||
|
- label:
|
||||||
|
align: LEFT_MID
|
||||||
|
text: 'Left Mid'
|
||||||
|
- label:
|
||||||
|
align: RIGHT_MID
|
||||||
|
text: 'Right Mid'
|
||||||
|
- id: second_page
|
||||||
|
widgets:
|
||||||
|
- obj:
|
||||||
|
align: TOP_MID
|
||||||
|
styles: header_footer
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
text: "A second page"
|
||||||
|
align: CENTER
|
||||||
|
text_align: CENTER
|
||||||
|
- label:
|
||||||
|
align: CENTER
|
||||||
|
text: 'Hello Again!'
|
||||||
|
- id: third_page
|
||||||
|
widgets:
|
||||||
|
- obj:
|
||||||
|
align: TOP_MID
|
||||||
|
styles: header_footer
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
text: "A third page"
|
||||||
|
align: CENTER
|
||||||
|
text_align: CENTER
|
||||||
|
- label:
|
||||||
|
align: CENTER
|
||||||
|
text: 'I am the very model of a modern major general'
|
||||||
|
- id: fourth_page
|
||||||
|
widgets:
|
||||||
|
- obj:
|
||||||
|
align: TOP_MID
|
||||||
|
styles: header_footer
|
||||||
|
widgets:
|
||||||
|
- label:
|
||||||
|
text: "A fourth page"
|
||||||
|
align: CENTER
|
||||||
|
text_align: CENTER
|
||||||
|
- label:
|
||||||
|
align: CENTER
|
||||||
|
text: "I've information vegetable animal and mineral"
|
||||||
|
|
||||||
|
theme:
|
||||||
|
label:
|
||||||
|
text_font: regular_20 # set all your labels to use your custom defined font
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
button:
|
||||||
|
bg_color: 0x24273a
|
||||||
|
bg_grad_color: 0x005782
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
border_color: 0x0077b3
|
||||||
|
border_width: 1
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
pressed: # set some button colors to be different in pressed state
|
||||||
|
bg_color: 0x006699
|
||||||
|
bg_grad_color: 0x00334d
|
||||||
|
checked: # set some button colors to be different in checked state
|
||||||
|
bg_color: 0x1d5f96
|
||||||
|
bg_grad_color: 0x03324A
|
||||||
|
text_color: 0xfff300
|
||||||
|
buttonmatrix:
|
||||||
|
bg_opa: TRANSP
|
||||||
|
border_color: 0x0077b3
|
||||||
|
border_width: 0
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
pad_all: 0
|
||||||
|
items: # set all your buttonmatrix buttons to use your custom defined styles and font
|
||||||
|
bg_color: 0x24273a
|
||||||
|
bg_grad_color: 0x005782
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
border_color: 0x0077b3
|
||||||
|
border_width: 1
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
text_font: regular_20
|
||||||
|
pressed:
|
||||||
|
bg_color: 0x006699
|
||||||
|
bg_grad_color: 0x00334d
|
||||||
|
checked:
|
||||||
|
bg_color: 0x1d5f96
|
||||||
|
bg_grad_color: 0x03324A
|
||||||
|
text_color: 0x005580
|
||||||
|
switch:
|
||||||
|
bg_color: 0xC0C0C0
|
||||||
|
bg_grad_color: 0xb0b0b0
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
checked:
|
||||||
|
bg_color: 0x1d5f96
|
||||||
|
bg_grad_color: 0x03324A
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
knob:
|
||||||
|
bg_color: 0xFFFFFF
|
||||||
|
bg_grad_color: 0xC0C0C0
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
slider:
|
||||||
|
border_width: 1
|
||||||
|
border_opa: 15%
|
||||||
|
bg_color: 0xcccaca
|
||||||
|
bg_opa: 15%
|
||||||
|
indicator:
|
||||||
|
bg_color: 0x1d5f96
|
||||||
|
bg_grad_color: 0x03324A
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
knob:
|
||||||
|
bg_color: 0x24273a
|
||||||
|
bg_grad_color: 0x005782
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
border_color: 0x0077b3
|
||||||
|
border_width: 1
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
|
||||||
|
style_definitions:
|
||||||
|
- id: header_footer
|
||||||
|
bg_color: 0x24273a
|
||||||
|
bg_grad_color: 0x005782
|
||||||
|
bg_grad_dir: VER
|
||||||
|
bg_opa: COVER
|
||||||
|
border_opa: TRANSP
|
||||||
|
radius: 0
|
||||||
|
pad_all: 0
|
||||||
|
pad_row: 0
|
||||||
|
pad_column: 0
|
||||||
|
border_color: 0x0077b3
|
||||||
|
text_color: 0xcad3f5
|
||||||
|
width: 100%
|
||||||
|
height: 30
|
||||||
@@ -92,6 +92,7 @@ esp32:
|
|||||||
time:
|
time:
|
||||||
- platform: sntp
|
- platform: sntp
|
||||||
id: sntp_time
|
id: sntp_time
|
||||||
|
timezone: America/Detroit
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
level: DEBUG
|
level: DEBUG
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
||||||
|
substitutions:
|
||||||
|
devicename: water-softener-multisensor
|
||||||
|
entity_name: water_softener_multisensor
|
||||||
|
friendly_name: Water Softener MultiSensor
|
||||||
|
comment: Clever Water Softener MultiSensor
|
||||||
|
board: nodemcuv2
|
||||||
|
static_ip: !secret water-softener-multisensor-ip
|
||||||
|
|
||||||
|
door_pin: D5
|
||||||
|
|
||||||
|
# For the ultrasonic sensor
|
||||||
|
trigger_pin: D7
|
||||||
|
echo_pin: D6
|
||||||
|
|
||||||
|
packages:
|
||||||
|
# network: !include common/ethernet.yaml
|
||||||
|
network: !include common/wifi.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: ${devicename}
|
||||||
|
friendly_name: ${friendly_name}
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
|
esp8266:
|
||||||
|
board: ${board}
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
|
ota: # Using settings from common/device_base.yaml
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: ultrasonic
|
||||||
|
trigger_pin: ${trigger_pin}
|
||||||
|
echo_pin: ${echo_pin}
|
||||||
|
id: ultrasonic_source
|
||||||
|
update_interval: 1s
|
||||||
|
internal: True
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 5
|
||||||
|
send_every: 5
|
||||||
|
send_first_at: 1
|
||||||
|
- lambda: 'return round( x * 10.0) / 10.0;'
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
on_value:
|
||||||
|
then:
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: distance_from_bottom
|
||||||
|
state: !lambda 'return id(ultrasonic_source).state;'
|
||||||
|
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: distance_from_top
|
||||||
|
state: !lambda 'return id(ultrasonic_source).state;'
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "cm"
|
||||||
|
state_class: measurement
|
||||||
|
id: distance_from_bottom
|
||||||
|
name: "Salt Level in CM"
|
||||||
|
icon: mdi:arrow-collapse-up
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return (0.94 - x) * 100;'
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
|
||||||
|
on_value:
|
||||||
|
then:
|
||||||
|
- sensor.template.publish:
|
||||||
|
id: level_in_bags
|
||||||
|
state: !lambda 'return id(distance_from_bottom).state;'
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "cm"
|
||||||
|
state_class: measurement
|
||||||
|
id: distance_from_top
|
||||||
|
name: "Salt Level From Top in CM"
|
||||||
|
icon: mdi:arrow-collapse-down
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return x * 100;'
|
||||||
|
- round: 1
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
unit_of_measurement: "bags"
|
||||||
|
state_class: measurement
|
||||||
|
id: level_in_bags
|
||||||
|
name: "Salt Level in Bags"
|
||||||
|
icon: mdi:counter
|
||||||
|
disabled_by_default: true
|
||||||
|
#update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: 'return x / 17.5;'
|
||||||
|
- round: 1
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 10.0
|
||||||
|
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
name: "Door"
|
||||||
|
device_class: door
|
||||||
|
pin:
|
||||||
|
number: ${door_pin}
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
# filters:
|
||||||
|
# - invert:
|
||||||
|
|
||||||
@@ -88,6 +88,7 @@ card:
|
|||||||
style:
|
style:
|
||||||
left: 50%
|
left: 50%
|
||||||
top: 95%
|
top: 95%
|
||||||
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: input_boolean.boys_room_occupied
|
entity: input_boolean.boys_room_occupied
|
||||||
tap_action:
|
tap_action:
|
||||||
@@ -95,6 +96,7 @@ card:
|
|||||||
style:
|
style:
|
||||||
left: 70%
|
left: 70%
|
||||||
top: 95%
|
top: 95%
|
||||||
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.boys_room_occupied
|
entity: binary_sensor.boys_room_occupied
|
||||||
style:
|
style:
|
||||||
@@ -169,11 +171,17 @@ card:
|
|||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.white_bed_occupied
|
entity: binary_sensor.white_bed_occupied
|
||||||
style:
|
style:
|
||||||
top: 45%
|
top: 55%
|
||||||
left: 40%
|
left: 25%
|
||||||
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: media_player.boys_room_clock
|
entity: media_player.boys_room_clock
|
||||||
style:
|
style:
|
||||||
left: 38%
|
left: 21%
|
||||||
top: 22%
|
top: 75%
|
||||||
|
|
||||||
|
- type: state-icon
|
||||||
|
entity: light.accent
|
||||||
|
style:
|
||||||
|
left: 6%
|
||||||
|
top: 49%
|
||||||
@@ -47,7 +47,8 @@ cards:
|
|||||||
entity: binary_sensor.frigate_cam14_person_occupancy
|
entity: binary_sensor.frigate_cam14_person_occupancy
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras:
|
cameras:
|
||||||
- camera_entity: camera.frigate_cam14
|
- camera_entity: camera.frigate_cam12
|
||||||
|
# - camera_entity: camera.frigate_cam14
|
||||||
title: Person
|
title: Person
|
||||||
icon: mdi:slide
|
icon: mdi:slide
|
||||||
live_provider: ha
|
live_provider: ha
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ sections:
|
|||||||
layout: vertical
|
layout: vertical
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.front_room_light_cycle
|
entity_id: input_boolean.front_room_light_cycle
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ cards:
|
|||||||
- type: horizontal-stack
|
- type: horizontal-stack
|
||||||
cards:
|
cards:
|
||||||
- type: custom:mushroom-entity-card
|
- type: custom:mushroom-entity-card
|
||||||
entity: switch.hvac_multisensor_display
|
entity: light.hvac_multisensor_display_backlight
|
||||||
name: HVAC Display
|
name: HVAC Display
|
||||||
icon: mdi:monitor
|
icon: mdi:monitor
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ cards:
|
|||||||
action: more-info
|
action: more-info
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: light.black_bed_wled
|
entity_id: light.black_bed_wled
|
||||||
@@ -202,7 +202,7 @@ cards:
|
|||||||
action: more-info
|
action: more-info
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: light.white_bed_wled
|
entity_id: light.white_bed_wled
|
||||||
@@ -264,7 +264,7 @@ cards:
|
|||||||
name: All Songs
|
name: All Songs
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: script.all_kids_youtube_music
|
service: script.all_kids_youtube_music
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target: {}
|
target: {}
|
||||||
primary_info: name
|
primary_info: name
|
||||||
@@ -276,7 +276,7 @@ cards:
|
|||||||
name: Goodnight Songs
|
name: Goodnight Songs
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: script.goodnight_kids_youtube_music
|
service: script.goodnight_kids_youtube_music
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target: {}
|
target: {}
|
||||||
primary_info: name
|
primary_info: name
|
||||||
@@ -288,7 +288,7 @@ cards:
|
|||||||
name: "Off"
|
name: "Off"
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.turn_off
|
service: homeassistant.turn_off
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: media_player.ytube_music_player
|
entity_id: media_player.ytube_music_player
|
||||||
@@ -319,13 +319,13 @@ cards:
|
|||||||
primary: Black Bed
|
primary: Black Bed
|
||||||
double_tap_action:
|
double_tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: switch.black_bed_force_occupancy
|
entity_id: switch.black_bed_force_occupancy
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: button.press
|
service: button.press
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: button.black_bed_manual_tare
|
entity_id: button.black_bed_manual_tare
|
||||||
|
|||||||
+102
-104
@@ -292,7 +292,7 @@ cards:
|
|||||||
- type: vertical-stack
|
- type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
- type: custom:mushroom-title-card
|
- type: custom:mushroom-title-card
|
||||||
title: Upstairs
|
title: Private
|
||||||
- type: horizontal-stack
|
- type: horizontal-stack
|
||||||
cards:
|
cards:
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
@@ -310,6 +310,21 @@ cards:
|
|||||||
icon_color: "{{iif(is_state('light.nursery_hue','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.nursery_hue','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Boy's Room
|
||||||
|
icon: mdi:earth
|
||||||
|
entity: light.boys_room_hue
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: boys-room
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: |-
|
||||||
|
{{states('sensor.boys_room_multisensor_air_temperature')}}°F
|
||||||
|
{{states('sensor.boys_room_multisensor_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.boys_room_hue','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
primary: Master Bedroom
|
primary: Master Bedroom
|
||||||
icon: mdi:bed-king
|
icon: mdi:bed-king
|
||||||
@@ -319,15 +334,16 @@ cards:
|
|||||||
navigation_path: master-bedroom
|
navigation_path: master-bedroom
|
||||||
hold_action:
|
hold_action:
|
||||||
action: toggle
|
action: toggle
|
||||||
secondary: >-
|
secondary: |-
|
||||||
{{states('sensor.master_bedroom_multisensor_air_temperature')}}°F
|
{{states('sensor.master_bedroom_multisensor_air_temperature')}}°F
|
||||||
|
|
||||||
{{states('sensor.master_bedroom_multisensor_humidity')}}%
|
{{states('sensor.master_bedroom_multisensor_humidity')}}%
|
||||||
icon_color: "{{iif(is_state('light.master_bedroom_hue','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.master_bedroom_hue','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
- type: horizontal-stack
|
||||||
|
cards:
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
primary: Master Bathroom
|
primary: Bathroom
|
||||||
icon: mdi:shower
|
icon: mdi:shower
|
||||||
entity: light.master_bathroom_hue
|
entity: light.master_bathroom_hue
|
||||||
tap_action:
|
tap_action:
|
||||||
@@ -338,9 +354,43 @@ cards:
|
|||||||
secondary: |-
|
secondary: |-
|
||||||
{{states('sensor.master_bathroom_thermostat_temperature')}}°F
|
{{states('sensor.master_bathroom_thermostat_temperature')}}°F
|
||||||
{{states('sensor.master_bathroom_thermostat_humidity')}}%
|
{{states('sensor.master_bathroom_thermostat_humidity')}}%
|
||||||
icon_color: "{{iif(is_state('light.master_bathroom_hue','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.master_bathroom','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Utility Room
|
||||||
|
icon: mdi:washing-machine
|
||||||
|
entity: light.utility_room_vanity
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: utility-room
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: |-
|
||||||
|
{{states('sensor.utility_room_thermostat_temperature')}}°F
|
||||||
|
{{states('sensor.utility_room_thermostat_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.utility_room_vanity','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Furnace Room
|
||||||
|
icon: mdi:hvac
|
||||||
|
entity: light.furnace_room
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: furnace-room
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: |-
|
||||||
|
{{states('sensor.furnace_room_thermostat_temperature')}}°F
|
||||||
|
{{states('sensor.furnace_room_thermostat_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.furnace_room','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
|
- type: vertical-stack
|
||||||
|
cards:
|
||||||
|
- type: custom:mushroom-title-card
|
||||||
|
title: Public
|
||||||
- type: horizontal-stack
|
- type: horizontal-stack
|
||||||
cards:
|
cards:
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
@@ -388,6 +438,53 @@ cards:
|
|||||||
icon_color: "{{iif(is_state('light.dining_room_switch','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.dining_room_switch','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
- type: horizontal-stack
|
||||||
|
cards:
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Computer Area
|
||||||
|
icon: mdi:desktop-classic
|
||||||
|
entity: light.computer_area_hue
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: computer-area
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: >-
|
||||||
|
{{states('sensor.computer_area_multisensor_air_temperature')}}°F
|
||||||
|
{{states('sensor.computer_area_multisensor_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.computer_area_hue','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Great Room
|
||||||
|
icon: mdi:microsoft-xbox-controller
|
||||||
|
entity: light.great_room_hue
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: great-room
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: |-
|
||||||
|
{{states('sensor.great_room_multisensor_air_temperature')}}°F
|
||||||
|
{{states('sensor.great_room_multisensor_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.great_room_hue','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
primary: Mancave
|
||||||
|
icon: mdi:human-male
|
||||||
|
entity: light.mancave
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: mancave
|
||||||
|
hold_action:
|
||||||
|
action: toggle
|
||||||
|
secondary: |-
|
||||||
|
{{states('sensor.mancave_thermostat_temperature')}}°F
|
||||||
|
{{states('sensor.mancave_thermostat_humidity')}}%
|
||||||
|
icon_color: "{{iif(is_state('light.mancave','on'),'yellow')}}"
|
||||||
|
multiline_secondary: true
|
||||||
|
layout: vertical
|
||||||
- type: vertical-stack
|
- type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
- type: custom:mushroom-title-card
|
- type: custom:mushroom-title-card
|
||||||
@@ -486,102 +583,3 @@ cards:
|
|||||||
icon_color: "{{iif(is_state('light.deck','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.deck','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
- type: vertical-stack
|
|
||||||
cards:
|
|
||||||
- type: custom:mushroom-title-card
|
|
||||||
subtitle: Downstairs
|
|
||||||
- type: horizontal-stack
|
|
||||||
cards:
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Computer Area
|
|
||||||
icon: mdi:desktop-classic
|
|
||||||
entity: light.computer_area_hue
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: computer-area
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: >-
|
|
||||||
{{states('sensor.computer_area_multisensor_air_temperature')}}°F
|
|
||||||
|
|
||||||
{{states('sensor.computer_area_multisensor_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.computer_area_hue','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Great Room
|
|
||||||
icon: mdi:microsoft-xbox-controller
|
|
||||||
entity: light.great_room_hue
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: great-room
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: |-
|
|
||||||
{{states('sensor.great_room_multisensor_air_temperature')}}°F
|
|
||||||
{{states('sensor.great_room_multisensor_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.great_room_hue','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Utility Room
|
|
||||||
icon: mdi:washing-machine
|
|
||||||
entity: light.utility_room_vanity
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: utility-room
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: |-
|
|
||||||
{{states('sensor.utility_room_thermostat_temperature')}}°F
|
|
||||||
{{states('sensor.utility_room_thermostat_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.utility_room_vanity','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
- type: horizontal-stack
|
|
||||||
cards:
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Boy's Room
|
|
||||||
icon: mdi:earth
|
|
||||||
entity: light.boys_room_hue
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: boys-room
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: |-
|
|
||||||
{{states('sensor.boys_room_multisensor_air_temperature')}}°F
|
|
||||||
{{states('sensor.boys_room_multisensor_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.boys_room_hue','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Mancave
|
|
||||||
icon: mdi:human-male
|
|
||||||
entity: light.mancave
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: mancave
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: |-
|
|
||||||
{{states('sensor.mancave_thermostat_temperature')}}°F
|
|
||||||
{{states('sensor.mancave_thermostat_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.mancave','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
- type: custom:mushroom-template-card
|
|
||||||
primary: Furnace Room
|
|
||||||
icon: mdi:hvac
|
|
||||||
entity: light.furnace_room
|
|
||||||
tap_action:
|
|
||||||
action: navigate
|
|
||||||
navigation_path: furnace-room
|
|
||||||
hold_action:
|
|
||||||
action: toggle
|
|
||||||
secondary: |-
|
|
||||||
{{states('sensor.furnace_room_thermostat_temperature')}}°F
|
|
||||||
{{states('sensor.furnace_room_thermostat_humidity')}}%
|
|
||||||
icon_color: "{{iif(is_state('light.furnace_room','on'),'yellow')}}"
|
|
||||||
multiline_secondary: true
|
|
||||||
layout: vertical
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ cards:
|
|||||||
use_light_color: false
|
use_light_color: false
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.nursery_occupied
|
entity_id: input_boolean.nursery_occupied
|
||||||
@@ -43,7 +43,7 @@ cards:
|
|||||||
'yellow') }}
|
'yellow') }}
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.nursery_light_cycle
|
entity_id: input_boolean.nursery_light_cycle
|
||||||
@@ -62,7 +62,7 @@ cards:
|
|||||||
action: more-info
|
action: more-info
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: light.black_bed_wled
|
entity_id: light.black_bed_wled
|
||||||
@@ -79,7 +79,7 @@ cards:
|
|||||||
action: more-info
|
action: more-info
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: light.white_bed_wled
|
entity_id: light.white_bed_wled
|
||||||
@@ -109,7 +109,7 @@ cards:
|
|||||||
'yellow') }}
|
'yellow') }}
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.front_room_light_cycle
|
entity_id: input_boolean.front_room_light_cycle
|
||||||
@@ -207,7 +207,7 @@ cards:
|
|||||||
'on'), 'yellow') }}
|
'on'), 'yellow') }}
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.computer_area_light_cycle
|
entity_id: input_boolean.computer_area_light_cycle
|
||||||
@@ -237,7 +237,7 @@ cards:
|
|||||||
'yellow') }}
|
'yellow') }}
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: homeassistant.toggle
|
service: homeassistant.toggle
|
||||||
service_data: {}
|
service_data: {}
|
||||||
target:
|
target:
|
||||||
entity_id: input_boolean.great_room_light_cycle
|
entity_id: input_boolean.great_room_light_cycle
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ sections:
|
|||||||
value: false
|
value: false
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: ytube_music_player.call_method
|
service: ytube_music_player.call_method
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: media_player.ytube_music_player
|
entity_id: media_player.ytube_music_player
|
||||||
command: rate_track
|
command: rate_track
|
||||||
|
|||||||
@@ -181,14 +181,14 @@ cards:
|
|||||||
name: 5 Minute Test
|
name: 5 Minute Test
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: opensprinkler.run
|
service: opensprinkler.run
|
||||||
data:
|
data:
|
||||||
entity_id: switch.5_minute_test_program_enabled
|
entity_id: switch.5_minute_test_program_enabled
|
||||||
- entity: binary_sensor.full_run_program_running
|
- entity: binary_sensor.full_run_program_running
|
||||||
name: Full Run
|
name: Full Run
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: opensprinkler.run
|
service: opensprinkler.run
|
||||||
data:
|
data:
|
||||||
entity_id: switch.full_run_program_enabled
|
entity_id: switch.full_run_program_enabled
|
||||||
- entity: switch.morning_program_enabled
|
- entity: switch.morning_program_enabled
|
||||||
@@ -203,14 +203,14 @@ cards:
|
|||||||
name: Front Yard Fun
|
name: Front Yard Fun
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: opensprinkler.run
|
service: opensprinkler.run
|
||||||
data:
|
data:
|
||||||
entity_id: switch.front_yard_fun_program_enabled
|
entity_id: switch.front_yard_fun_program_enabled
|
||||||
- entity: binary_sensor.back_yard_fun_program_running
|
- entity: binary_sensor.back_yard_fun_program_running
|
||||||
name: Back Yard Fun
|
name: Back Yard Fun
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: opensprinkler.run
|
service: opensprinkler.run
|
||||||
data:
|
data:
|
||||||
entity_id: switch.back_yard_fun_program_enabled
|
entity_id: switch.back_yard_fun_program_enabled
|
||||||
columns: 2
|
columns: 2
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
cameras:
|
||||||
- camera_entity: camera.frigate_cam14
|
- camera_entity: camera.frigate_cam12
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ cameras:
|
|||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam04_sub
|
stream: rtsp_cam04_sub
|
||||||
- camera_entity: camera.frigate_cam14
|
# - camera_entity: camera.frigate_cam14
|
||||||
title: Back Yard
|
# title: Back Yard
|
||||||
live_provider: go2rtc
|
# live_provider: go2rtc
|
||||||
go2rtc:
|
# go2rtc:
|
||||||
modes:
|
# modes:
|
||||||
- webrtc
|
# - webrtc
|
||||||
stream: rtsp_cam14_sub
|
# stream: rtsp_cam14_sub
|
||||||
- camera_entity: camera.frigate_cam18
|
- camera_entity: camera.frigate_cam18
|
||||||
title: Front Yard
|
title: Front Yard
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ cards:
|
|||||||
enabled: false
|
enabled: false
|
||||||
style: none
|
style: none
|
||||||
cameras:
|
cameras:
|
||||||
- camera_entity: camera.frigate_cam14
|
- camera_entity: camera.frigate_cam12
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
id: frigate-cam14
|
id: frigate-cam14
|
||||||
capabilities:
|
capabilities:
|
||||||
|
|||||||
@@ -140,25 +140,25 @@ cards:
|
|||||||
# name: Hassio
|
# name: Hassio
|
||||||
# tap_action:
|
# tap_action:
|
||||||
# action: call-service
|
# action: call-service
|
||||||
# action: homeassistant.restart
|
# service: homeassistant.restart
|
||||||
# - entity: zone.home
|
# - entity: zone.home
|
||||||
# icon: mdi:cogs
|
# icon: mdi:cogs
|
||||||
# name: Automation
|
# name: Automation
|
||||||
# tap_action:
|
# tap_action:
|
||||||
# action: call-service
|
# action: call-service
|
||||||
# action: automation.reload
|
# service: automation.reload
|
||||||
# - entity: zone.home
|
# - entity: zone.home
|
||||||
# icon: mdi:script-text
|
# icon: mdi:script-text
|
||||||
# name: Script
|
# name: Script
|
||||||
# tap_action:
|
# tap_action:
|
||||||
# action: call-service
|
# action: call-service
|
||||||
# action: script.reload
|
# service: script.reload
|
||||||
# - entity: zone.home
|
# - entity: zone.home
|
||||||
# icon: mdi:group
|
# icon: mdi:group
|
||||||
# name: Groups
|
# name: Groups
|
||||||
# tap_action:
|
# tap_action:
|
||||||
# action: call-service
|
# action: call-service
|
||||||
# action: group.reload
|
# service: group.reload
|
||||||
|
|
||||||
# - type: vertical-stack
|
# - type: vertical-stack
|
||||||
# cards:
|
# cards:
|
||||||
|
|||||||
@@ -425,6 +425,27 @@ cards:
|
|||||||
return "temp-unknown";
|
return "temp-unknown";
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# The HVAC Delta can be positive or negative, depending on if the furnace, heat pump, or ac is running
|
||||||
|
- entities:
|
||||||
|
- sensor.hvac_multisensor_delta
|
||||||
|
# An example of rounding up a number, i.e. a temperature of 90.1 becomes 91
|
||||||
|
text_template: '${entity.state ? Math.ceil(entity.state) : "undefined"} F'
|
||||||
|
class_template: '
|
||||||
|
var temp = parseFloat(entity.state.replace("°", ""));
|
||||||
|
if (temp < -30)
|
||||||
|
return "temp-freeze";
|
||||||
|
else if (temp < -20)
|
||||||
|
return "temp-low";
|
||||||
|
else if (temp < 10)
|
||||||
|
return "temp-medium";
|
||||||
|
else if (temp < 30)
|
||||||
|
return "temp-high";
|
||||||
|
else if (temp >= 100)
|
||||||
|
return "temp-hot";
|
||||||
|
else
|
||||||
|
return "hidden-entity";
|
||||||
|
'
|
||||||
|
|
||||||
- entities:
|
- entities:
|
||||||
- sensor.kitchen_fridge_thermostat_temperature
|
- sensor.kitchen_fridge_thermostat_temperature
|
||||||
text_template: '${entity.state ? Math.floor(entity.state) : "unknown"}'
|
text_template: '${entity.state ? Math.floor(entity.state) : "unknown"}'
|
||||||
@@ -547,7 +568,8 @@ cards:
|
|||||||
'
|
'
|
||||||
|
|
||||||
- entities:
|
- entities:
|
||||||
- sensor.hvac_multisensor_salt_level_in_bags
|
- sensor.water_softener_multisensor_salt_level_in_bags
|
||||||
|
text_template: '${entity.state ? Math.floor(entity.state) : "undefined"}'
|
||||||
class_template: '
|
class_template: '
|
||||||
var bags = parseFloat(entity.state);
|
var bags = parseFloat(entity.state);
|
||||||
if (bags > 4)
|
if (bags > 4)
|
||||||
@@ -729,7 +751,7 @@ cards:
|
|||||||
- binary_sensor.storage_room_door_contact
|
- binary_sensor.storage_room_door_contact
|
||||||
- binary_sensor.mancave_door_contact
|
- binary_sensor.mancave_door_contact
|
||||||
- binary_sensor.boys_room_door_contact
|
- binary_sensor.boys_room_door_contact
|
||||||
- binary_sensor.hvac_multisensor_door
|
- binary_sensor.water_softener_multisensor_door
|
||||||
#- binary_sensor.furnace_room_door_contact
|
#- binary_sensor.furnace_room_door_contact
|
||||||
- binary_sensor.utility_room_door_contact
|
- binary_sensor.utility_room_door_contact
|
||||||
states:
|
states:
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ cards:
|
|||||||
- entity: input_boolean.master_bedroom_asleep
|
- entity: input_boolean.master_bedroom_asleep
|
||||||
tap_action:
|
tap_action:
|
||||||
action: toggle
|
action: toggle
|
||||||
- entity: input_boolean.nursery_asleep
|
- entity: input_boolean.girls_room_asleep
|
||||||
tap_action:
|
tap_action:
|
||||||
action: toggle
|
action: toggle
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ cards:
|
|||||||
camera_image: camera.clint
|
camera_image: camera.clint
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: input_boolean.toggle
|
service: input_boolean.toggle
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: input_boolean.lovelace_clint_more
|
entity_id: input_boolean.lovelace_clint_more
|
||||||
- type: conditional
|
- type: conditional
|
||||||
@@ -58,7 +58,7 @@ cards:
|
|||||||
camera_image: camera.emmett
|
camera_image: camera.emmett
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: input_boolean.toggle
|
service: input_boolean.toggle
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: input_boolean.lovelace_emmett_more
|
entity_id: input_boolean.lovelace_emmett_more
|
||||||
- type: conditional
|
- type: conditional
|
||||||
@@ -94,7 +94,7 @@ cards:
|
|||||||
camera_image: camera.bridget
|
camera_image: camera.bridget
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: call-service
|
||||||
action: input_boolean.toggle
|
service: input_boolean.toggle
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: input_boolean.lovelace_bridget_more
|
entity_id: input_boolean.lovelace_bridget_more
|
||||||
- type: conditional
|
- type: conditional
|
||||||
|
|||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="0.028284271"
|
inkscape:zoom="0.079999999"
|
||||||
inkscape:cx="61076.349"
|
inkscape:cx="66018.751"
|
||||||
inkscape:cy="43045.126"
|
inkscape:cy="37168.75"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
@@ -1605,14 +1605,14 @@
|
|||||||
style="stroke-width:0.012145"
|
style="stroke-width:0.012145"
|
||||||
transform="scale(-1)" />
|
transform="scale(-1)" />
|
||||||
<rect
|
<rect
|
||||||
id="binary_sensor.hvac_multisensor_door"
|
id="binary_sensor.water_softener_multisensor_door"
|
||||||
width="28.25"
|
width="28.25"
|
||||||
height="1.25"
|
height="1.25"
|
||||||
x="-719.29169"
|
x="-719.29169"
|
||||||
y="17456.875"
|
y="17456.875"
|
||||||
style="fill:#a05a2c;stroke:#a05a2c;stroke-width:0.00515836"
|
style="fill:#a05a2c;stroke:#a05a2c;stroke-width:0.00515836"
|
||||||
transform="scale(-1)"
|
transform="scale(-1)"
|
||||||
inkscape:label="binary_sensor.hvac_multisensor_door" />
|
inkscape:label="binary_sensor.water_softener_multisensor_door" />
|
||||||
<rect
|
<rect
|
||||||
id="rect12-8-8-9-3-20-4-5-2"
|
id="rect12-8-8-9-3-20-4-5-2"
|
||||||
width="68.25"
|
width="68.25"
|
||||||
@@ -3153,8 +3153,8 @@
|
|||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
x="611.51886"
|
x="611.51886"
|
||||||
y="-17958.744"
|
y="-17958.744"
|
||||||
id="sensor.hvac_multisensor_salt_level_in_bags"
|
id="sensor.water_softener_multisensor_salt_level_in_bags"
|
||||||
inkscape:label="sensor.hvac_multisensor_salt_level_in_bags"
|
inkscape:label="sensor.water_softener_multisensor_salt_level_in_bags"
|
||||||
transform="scale(1.0282777,0.97249994)"
|
transform="scale(1.0282777,0.97249994)"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.5306px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#d4d4d4;fill-opacity:1;stroke-width:1.20408"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.5306px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#d4d4d4;fill-opacity:1;stroke-width:1.20408"><tspan
|
||||||
style="stroke-width:1.20408"
|
style="stroke-width:1.20408"
|
||||||
@@ -3857,7 +3857,7 @@
|
|||||||
d="m 720.0222,-17679.003 a 4.5,4.5 0 0 1 4.99225,3.941 4.5,4.5 0 0 1 -3.93422,4.997 4.5,4.5 0 0 1 -5.00204,-3.928 4.5,4.5 0 0 1 3.92178,-5.007"
|
d="m 720.0222,-17679.003 a 4.5,4.5 0 0 1 4.99225,3.941 4.5,4.5 0 0 1 -3.93422,4.997 4.5,4.5 0 0 1 -5.00204,-3.928 4.5,4.5 0 0 1 3.92178,-5.007"
|
||||||
inkscape:label="light.storage_room"
|
inkscape:label="light.storage_room"
|
||||||
sodipodi:arc-type="arc" />
|
sodipodi:arc-type="arc" />
|
||||||
inkscape:label="light.front_porch_overhead" /> <rect
|
inkscape:label="light.front_porch_overhead" /> <rect
|
||||||
id="rect12-8-8-9-3-20-4-5-3"
|
id="rect12-8-8-9-3-20-4-5-3"
|
||||||
width="43.5"
|
width="43.5"
|
||||||
height="4.5"
|
height="4.5"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 521 KiB After Width: | Height: | Size: 521 KiB |
Reference in New Issue
Block a user