mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 18:40:14 -04:00
so many freaking changes!
This commit is contained in:
@@ -22,7 +22,7 @@ action:
|
|||||||
- action: media_player.volume_set
|
- action: media_player.volume_set
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
||||||
volume_level: 0.50
|
volume_level: 0.60
|
||||||
|
|
||||||
- action: input_select.select_option
|
- action: input_select.select_option
|
||||||
data:
|
data:
|
||||||
@@ -35,7 +35,10 @@ action:
|
|||||||
entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
||||||
data:
|
data:
|
||||||
media_type: playlist
|
media_type: playlist
|
||||||
media_id: library://playlist/32
|
#media_id: library://playlist/7
|
||||||
|
media_id: >
|
||||||
|
{% set playlists = ['library://playlist/33','library://playlist/32','library://playlist/21','library://playlist/28','library://playlist/27','library://playlist/22','library://playlist/29','library://playlist/36','library://playlist/23','library://playlist/12','library://playlist/34','library://playlist/35','library://playlist/19'] %}
|
||||||
|
{{ playlists|random }}
|
||||||
enqueue: replace
|
enqueue: replace
|
||||||
|
|
||||||
- action: script.wake_the_bedroom
|
- action: script.wake_the_bedroom
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ action:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam01_sub
|
url: cam01_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
@@ -112,7 +112,7 @@ action:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.front_room_hub
|
entity_id: media_player.front_room_hub
|
||||||
url: rtsp_cam01_sub
|
url: cam01_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -28,31 +28,10 @@ action:
|
|||||||
target:
|
target:
|
||||||
entity_id: media_player.ma_boys_room_clock
|
entity_id: media_player.ma_boys_room_clock
|
||||||
|
|
||||||
- action: media_player.volume_set
|
- action: script.search_and_play_playlist
|
||||||
data:
|
|
||||||
volume_level: 0.30
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_boys_room_clock
|
|
||||||
|
|
||||||
#- action: script.goodnight_kids_youtube_music
|
|
||||||
|
|
||||||
- action: media_player.shuffle_set
|
|
||||||
metadata: {}
|
|
||||||
data:
|
data:
|
||||||
|
speaker: media_player.ma_boys_room_clock
|
||||||
|
search_term: CleverThunderstorm
|
||||||
|
volume: 0.3
|
||||||
|
repeat: all
|
||||||
shuffle: false
|
shuffle: false
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_boys_room_clock
|
|
||||||
- action: media_player.repeat_set
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
repeat: "all"
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_boys_room_clock
|
|
||||||
- action: music_assistant.play_media
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
media_id: library://track/101
|
|
||||||
media_type: track
|
|
||||||
enqueue: replace
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_boys_room_clock
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ description: "Handles the lights in the furnace room"
|
|||||||
mode: queued
|
mode: queued
|
||||||
triggers:
|
triggers:
|
||||||
- id: door_open
|
- id: door_open
|
||||||
entity_id: binary_sensor.water_softener_multisensor_door
|
entity_id: binary_sensor.furnace_room_multisensor_door
|
||||||
from: "off"
|
from: "off"
|
||||||
to: "on"
|
to: "on"
|
||||||
trigger: state
|
trigger: state
|
||||||
@@ -12,7 +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: binary_sensor.water_softener_multisensor_door
|
entity_id: binary_sensor.furnace_room_multisensor_door
|
||||||
to: "off"
|
to: "off"
|
||||||
for: "00:10:00"
|
for: "00:10:00"
|
||||||
trigger: state
|
trigger: state
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ action:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam08_sub
|
url: cam08_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
@@ -117,7 +117,7 @@ action:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.front_room_hub
|
entity_id: media_player.front_room_hub
|
||||||
url: rtsp_cam08_sub
|
url: cam08_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -29,31 +29,10 @@ action:
|
|||||||
target:
|
target:
|
||||||
entity_id: media_player.ma_girls_room_hub
|
entity_id: media_player.ma_girls_room_hub
|
||||||
|
|
||||||
- action: media_player.volume_set
|
- action: script.search_and_play_playlist
|
||||||
data:
|
|
||||||
volume_level: 0.25
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_girls_room_hub
|
|
||||||
|
|
||||||
#- action: script.goodnight_kids_youtube_music
|
|
||||||
|
|
||||||
- action: media_player.shuffle_set
|
|
||||||
metadata: {}
|
|
||||||
data:
|
data:
|
||||||
|
speaker: media_player.ma_girls_room_hub
|
||||||
|
search_term: Clever Kids Goodnight Songs
|
||||||
|
volume: 0.25
|
||||||
|
repeat: all
|
||||||
shuffle: false
|
shuffle: false
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_girls_room_hub
|
|
||||||
- action: media_player.repeat_set
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
repeat: "all"
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_girls_room_hub
|
|
||||||
- action: music_assistant.play_media
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
media_id: library://track/101
|
|
||||||
media_type: track
|
|
||||||
enqueue: replace
|
|
||||||
target:
|
|
||||||
entity_id: media_player.ma_girls_room_hub
|
|
||||||
|
|||||||
@@ -7,35 +7,10 @@ trigger:
|
|||||||
to: "on"
|
to: "on"
|
||||||
|
|
||||||
action:
|
action:
|
||||||
#- action: input_select.select_option
|
- action: script.search_and_play_playlist
|
||||||
# data:
|
|
||||||
# entity_id: input_select.master_bedroom_mode
|
|
||||||
# option: 'Off'
|
|
||||||
- action: media_player.volume_set
|
|
||||||
data:
|
data:
|
||||||
volume_level: 0.25
|
speaker: media_player.ma_home_assistant_voice_097b44_media_player
|
||||||
target:
|
search_term: CleverThunderstorm
|
||||||
device_id: 8350a88218fdf3807d190142a9e2dc18
|
volume: 0.25
|
||||||
|
repeat: all
|
||||||
#- action: script.goodnight_kids_youtube_music
|
shuffle: false
|
||||||
- action: music_assistant.play_media
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
media_id: library://track/101
|
|
||||||
media_type: track
|
|
||||||
enqueue: replace
|
|
||||||
target:
|
|
||||||
device_id: 8350a88218fdf3807d190142a9e2dc18
|
|
||||||
|
|
||||||
# - action: media_player.shuffle_set
|
|
||||||
# metadata: {}
|
|
||||||
# data:
|
|
||||||
# shuffle: false
|
|
||||||
# target:
|
|
||||||
# entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
|
||||||
# - action: media_player.repeat_set
|
|
||||||
# metadata: {}
|
|
||||||
# data:
|
|
||||||
# repeat: "all"
|
|
||||||
# target:
|
|
||||||
# entity_id: media_player.ma_home_assistant_voice_097b44_media_player
|
|
||||||
@@ -33,6 +33,12 @@ condition:
|
|||||||
entity_id: light.utility_room_vanity
|
entity_id: light.utility_room_vanity
|
||||||
state: "on"
|
state: "on"
|
||||||
|
|
||||||
|
variables:
|
||||||
|
switch_name: switch.utility_room_motion_switch
|
||||||
|
light_name: utility_room_hue
|
||||||
|
mode_name: input_select.utility_room_mode
|
||||||
|
automatic_profile: input_select.automatic_light_profile
|
||||||
|
|
||||||
action:
|
action:
|
||||||
- alias: "Make sure Z-Wave switch is turned on"
|
- alias: "Make sure Z-Wave switch is turned on"
|
||||||
action: homeassistant.turn_on
|
action: homeassistant.turn_on
|
||||||
@@ -47,10 +53,10 @@ action:
|
|||||||
sequence:
|
sequence:
|
||||||
- action: scene.turn_on
|
- action: scene.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: "scene.utility_room_hue_{{states('input_select.automatic_light_profile').lower().replace(' ','_')}}"
|
entity_id: "scene.{{light_name}}_{{states(automatic_profile).lower().replace(' ','_')}}"
|
||||||
default:
|
default:
|
||||||
- action: scene.turn_on
|
- action: scene.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: "scene.utility_room_hue_{{states('input_select.utility_room_mode').lower().replace(' ','_')}}"
|
entity_id: "scene.{{light_name}}_{{states(mode_name).lower().replace(' ','_')}}"
|
||||||
|
|
||||||
- delay: 1
|
- delay: 1
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -30,12 +30,6 @@ observations:
|
|||||||
prob_given_false: 0.01
|
prob_given_false: 0.01
|
||||||
to_state: 'on'
|
to_state: 'on'
|
||||||
|
|
||||||
# - platform: template
|
|
||||||
# value_template: >
|
|
||||||
# {{ states('sensor.master_bathroom_thermostat_humidity') | float(default=0) - states('sensor.master_bedroom_multisensor_humidity') | float(default=0) > 30 }}
|
|
||||||
# prob_given_true: 0.99
|
|
||||||
# prob_given_false: 0.01
|
|
||||||
|
|
||||||
# - entity_id: input_boolean.home_occupied
|
# - entity_id: input_boolean.home_occupied
|
||||||
# platform: state
|
# platform: state
|
||||||
# prob_given_true: .01
|
# prob_given_true: .01
|
||||||
|
|||||||
@@ -136,18 +136,17 @@ sensors:
|
|||||||
friendly_name: Bathroom Getting Humid
|
friendly_name: Bathroom Getting Humid
|
||||||
delay_off:
|
delay_off:
|
||||||
minutes: 5
|
minutes: 5
|
||||||
#value_template: "{{ is_state('binary_sensor.trend_bathroom_humidity','on') or states('sensor.master_bathroom_thermostat_humidity') | int(default=0) - states('sensor.master_bedroom_multisensor_humidity') | int(default=100) > 5}}"
|
value_template: "{{ states('sensor.bathroom_multisensor_relative_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=100) > 10 }}"
|
||||||
value_template: "{{ states('sensor.master_bathroom_thermostat_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=100) > 10 }}"
|
|
||||||
icon_template: >
|
icon_template: >
|
||||||
{% if states('sensor.master_bathroom_thermostat_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=100) > 10 %}
|
{% if states('sensor.bathroom_multisensor_relative_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=100) > 10 %}
|
||||||
mdi:water-percent
|
mdi:water-percent
|
||||||
{% else %}
|
{% else %}
|
||||||
mdi:water-off
|
mdi:water-off
|
||||||
{% endif %}
|
{% endif %}
|
||||||
attribute_templates:
|
attribute_templates:
|
||||||
room_humidity: "{{ states('sensor.master_bathroom_thermostat_humidity') | float(default=0) }}"
|
room_humidity: "{{ states('sensor.bathroom_multisensor_relative_humidity') | float(default=0) }}"
|
||||||
mean_humidity: "{{ states('sensor.upstairs_mean_humidity') | float(default=0) }}"
|
mean_humidity: "{{ states('sensor.upstairs_mean_humidity') | float(default=0) }}"
|
||||||
difference: "{{ states('sensor.master_bathroom_thermostat_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=0) }}"
|
difference: "{{ states('sensor.bathroom_multisensor_relative_humidity') | float(default=0) - states('sensor.upstairs_mean_humidity') | float(default=0) }}"
|
||||||
|
|
||||||
utility_room_getting_humid:
|
utility_room_getting_humid:
|
||||||
unique_id: templatebinarysensor.utility_room_getting_humid
|
unique_id: templatebinarysensor.utility_room_getting_humid
|
||||||
@@ -584,7 +583,7 @@ sensors:
|
|||||||
mancave_light_left_on:
|
mancave_light_left_on:
|
||||||
unique_id: templatebinarysensor.mancave_light_left_on
|
unique_id: templatebinarysensor.mancave_light_left_on
|
||||||
friendly_name: Mancave Light Left On
|
friendly_name: Mancave Light Left On
|
||||||
value_template: "{{ is_state('light.mancave','on') }}"
|
value_template: "{{ is_state('light.mancave','on') and is_state('input_boolean.mancave_occupied','off') }}"
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 30
|
seconds: 30
|
||||||
|
|
||||||
@@ -687,7 +686,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.water_softener_multisensor_status', 'on') and is_state('sensor.water_softener_multisensor_salt_level_in_bags','0') }}"
|
value_template: "{{ is_state('binary_sensor.furnace_room_multisensor_status', 'on') and is_state('sensor.furnace_room_multisensor_salt_level_in_bags','1') }}"
|
||||||
icon_template: mdi:shaker-outline
|
icon_template: mdi:shaker-outline
|
||||||
delay_on:
|
delay_on:
|
||||||
seconds: 900
|
seconds: 900
|
||||||
|
|||||||
@@ -82,25 +82,25 @@ script:
|
|||||||
# {% endif %}
|
# {% endif %}
|
||||||
# url: >
|
# url: >
|
||||||
# {% if is_state('input_select.camera_dropdown', 'Boys Room') %}
|
# {% if is_state('input_select.camera_dropdown', 'Boys Room') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam01_sub
|
# rtsp://192.168.1.11:8554/cam01_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Kitchen') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Kitchen') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam12_sub
|
# rtsp://192.168.1.11:8554/cam12_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Computer Area') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Computer Area') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam03_sub
|
# rtsp://192.168.1.11:8554/cam03_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Garage') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Garage') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam04_sub
|
# rtsp://192.168.1.11:8554/cam04_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Master Bedroom') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Master Bedroom') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam06_sub
|
# rtsp://192.168.1.11:8554/cam06_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Nursery') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Nursery') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam08_sub
|
# rtsp://192.168.1.11:8554/cam08_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Back Yard') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Back Yard') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam14_sub
|
# rtsp://192.168.1.11:8554/cam14_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Front Yard') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Front Yard') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam18_sub
|
# rtsp://192.168.1.11:8554/cam18_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Front Door') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Front Door') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam19_sub
|
# rtsp://192.168.1.11:8554/cam19_sub_opus
|
||||||
# {% elif is_state('input_select.camera_dropdown', 'Front Room') %}
|
# {% elif is_state('input_select.camera_dropdown', 'Front Room') %}
|
||||||
# rtsp://192.168.1.11:8554/rtsp_cam13_sub
|
# rtsp://192.168.1.11:8554/cam13_sub_opus
|
||||||
# {% endif %}
|
# {% endif %}
|
||||||
# force: true
|
# force: true
|
||||||
# extra:
|
# extra:
|
||||||
|
|||||||
@@ -49,3 +49,10 @@ template:
|
|||||||
icon: mdi:chip
|
icon: mdi:chip
|
||||||
attributes:
|
attributes:
|
||||||
devices: "{{ states.update | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | select ('in',integration_entities('esphome')) | list }}"
|
devices: "{{ states.update | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | select ('in',integration_entities('esphome')) | list }}"
|
||||||
|
|
||||||
|
- name: ESPHome Offline Devices
|
||||||
|
unique_id: c17e967e-e3ff-42dd-a85c-a5c1d1e9ae63
|
||||||
|
state: "{{ integration_entities('esphome') | select('search', 'status') | select('is_state', 'off') | list | count }}"
|
||||||
|
icon: mdi:chip
|
||||||
|
attributes:
|
||||||
|
devices: "{{ integration_entities('esphome') | select('search', 'status') | select('is_state', 'off') | list }}"
|
||||||
@@ -0,0 +1,798 @@
|
|||||||
|
substitutions:
|
||||||
|
devicename: circuit-sensor
|
||||||
|
entity_name: circuit_sensor
|
||||||
|
friendly_name: Circuit Sensor
|
||||||
|
board: esp32-s3-devkitc-1
|
||||||
|
framework: esp-idf
|
||||||
|
comment: Clever ${friendly_name}
|
||||||
|
name_prefix: 'PM:'
|
||||||
|
static_ip: !secret circuit-sensor-ip
|
||||||
|
update_time: 500ms
|
||||||
|
kwh_report_interval: 60s
|
||||||
|
watt_heartbeat: 60s
|
||||||
|
throttle_time: 60s
|
||||||
|
watt_delta: "50.0"
|
||||||
|
grid_watt_delta: "200.0"
|
||||||
|
|
||||||
|
# Current Transformer Names
|
||||||
|
ct01Name: 'Grid Phase A'
|
||||||
|
ct04Name: 'Grid Phase B'
|
||||||
|
|
||||||
|
ct22Name: 'Well' # 1, 3 # sct010 - O
|
||||||
|
ct12Name: 'Kitchen 1' # 5 # sct006 - L
|
||||||
|
ct16Name: 'Kitchen 2' # 7 # sct006 - S
|
||||||
|
ct18Name: 'Laundry Plug' # 9 # sct006 - N
|
||||||
|
ct08Name: 'Microwave Plug' # 11 # sct006 - H
|
||||||
|
ct17Name: 'Bathroom Plug' # 13 # sct006 - R
|
||||||
|
ct11Name: 'Heat Pump' # 15, 17 - M
|
||||||
|
ct24Name: 'Basement Bedroom and Furnace Room Lights' # 19 # sct006 - K
|
||||||
|
ct05Name: 'Basement Plugs' # 21a # sct006 - E
|
||||||
|
ct23Name: 'Basement and Laundry Lights and Plugs' # 21b # sct006 - W
|
||||||
|
ct07Name: 'Sump Pump Plug' # 23 # sct006 - C
|
||||||
|
|
||||||
|
ct06Name: 'Nursery, Dining, Kitchen Lights' # 2 # sct006 - F
|
||||||
|
ct20Name: 'Master Suite' # 4 # sct006 - T
|
||||||
|
ct03Name: 'Furnace' # 6 # sct006 - D
|
||||||
|
ct15Name: 'Basement Stairs and Lights' # 8 # sct006 - P
|
||||||
|
ct21Name: 'Dishwasher' # 10 # sct006 - V
|
||||||
|
ct13Name: 'Garage Outside and Front Garage Lights' # 12 # sct006 - U
|
||||||
|
ct10Name: 'Front Room Plugs' # 14 # sct006 - J
|
||||||
|
ct14Name: 'Garage and Outside Plugs' # 16 # sct006 - Q
|
||||||
|
ct09Name: 'Stove' # 18, 20 # sct016 - I
|
||||||
|
ct02Name: 'Dryer' # 22, 24 # sct010 - G
|
||||||
|
|
||||||
|
ct19Name: 'Unused'
|
||||||
|
|
||||||
|
# Current Transformers:
|
||||||
|
sct006: '11143'
|
||||||
|
sct010: '41660'
|
||||||
|
sct013: '27518'
|
||||||
|
sct016: '41787'
|
||||||
|
voltage_cal: '7305'
|
||||||
|
|
||||||
|
# Sensor Pins
|
||||||
|
spi_clk: 7
|
||||||
|
spi_miso: 5
|
||||||
|
spi_mosi: 6
|
||||||
|
ic1_main: 8
|
||||||
|
ic1_addon1: 0
|
||||||
|
ic1_addon2: 7
|
||||||
|
ic1_addon3: 2
|
||||||
|
ic2_main: 4
|
||||||
|
ic2_addon1: 16
|
||||||
|
ic2_addon2: 17
|
||||||
|
ic2_addon3: 21
|
||||||
|
|
||||||
|
packages:
|
||||||
|
network: !include common/waveshare_esp32_s3_eth.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
|
web_server: !include common/web_server.yaml
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: ${board}
|
||||||
|
framework:
|
||||||
|
type: ${framework}
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
timezone: America/Detroit
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: If I want to use this board, I'd need to translate PINs
|
||||||
|
# https://www.waveshare.com/esp32-s3-eth.htm
|
||||||
|
# Use a 40 pin ribbon cable so that the esp can be outside the breaker box?
|
||||||
|
|
||||||
|
# https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/blob/master/Software/ESPHome/README.md
|
||||||
|
|
||||||
|
# QUESTION: Is there a way to separate the power so this can use POE
|
||||||
|
# Either way, the power from the adapter would need to make it to the main board somehow.
|
||||||
|
|
||||||
|
spi:
|
||||||
|
clk_pin: ${spi_clk}
|
||||||
|
miso_pin: ${spi_miso}
|
||||||
|
mosi_pin: ${spi_mosi}
|
||||||
|
interface: any
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
#IC1 Main
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic1_main}
|
||||||
|
phase_a:
|
||||||
|
voltage:
|
||||||
|
name: ${name_prefix} [V]
|
||||||
|
id: ic1Volts
|
||||||
|
filters:
|
||||||
|
- throttle_average: 60s
|
||||||
|
accuracy_decimals: 1
|
||||||
|
current:
|
||||||
|
name: ${name_prefix} ${ct01Name} [A]
|
||||||
|
id: ct1Amps
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: 2
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct01Name} [W]
|
||||||
|
id: ct1Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${grid_watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct016}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct02Name} [W]
|
||||||
|
id: ct2Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct010}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct03Name} [W]
|
||||||
|
id: ct3Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
frequency:
|
||||||
|
name: ${name_prefix} Freq A
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: 0.05
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
|
||||||
|
#IC2 Main
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic2_main}
|
||||||
|
phase_a:
|
||||||
|
current:
|
||||||
|
name: ${name_prefix} ${ct04Name} [A]
|
||||||
|
id: ct4Amps
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${grid_watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct04Name} [W]
|
||||||
|
id: ct4Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct016}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct05Name} [W]
|
||||||
|
id: ct5Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct06Name} [W]
|
||||||
|
id: ct6Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
frequency:
|
||||||
|
name: ${name_prefix} Freq B
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: 0.05
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
|
||||||
|
|
||||||
|
#IC1 AddOn 1
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic1_addon1}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct07Name} [W]
|
||||||
|
id: ct7Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct08Name} [W]
|
||||||
|
id: ct8Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct09Name} [W]
|
||||||
|
id: ct9Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct013}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
#IC2 AddOn 1
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic2_addon1}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct10Name} [W]
|
||||||
|
id: ct10Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct11Name} [W]
|
||||||
|
id: ct11Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct010}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct12Name} [W]
|
||||||
|
id: ct12Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
|
||||||
|
#IC1 AddOn 2
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic1_addon2}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct13Name} [W]
|
||||||
|
id: ct13Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct14Name} [W]
|
||||||
|
id: ct14Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct15Name} [W]
|
||||||
|
id: ct15Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
#IC2 AddOn 2
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic2_addon2}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct16Name} [W]
|
||||||
|
id: ct16Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct17Name} [W]
|
||||||
|
id: ct17Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct18Name} [W]
|
||||||
|
id: ct18Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
#IC1 AddOn 3
|
||||||
|
- platform: atm90e32
|
||||||
|
#do not use GPIO2 if ESP32 has an on-board LED assigned to it
|
||||||
|
cs_pin: ${ic1_addon3}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct19Name} [W]
|
||||||
|
id: ct19Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct20Name} [W]
|
||||||
|
id: ct20Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct21Name} [W]
|
||||||
|
id: ct21Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
#IC2 AddOn 3
|
||||||
|
- platform: atm90e32
|
||||||
|
cs_pin: ${ic2_addon3}
|
||||||
|
phase_a:
|
||||||
|
power:
|
||||||
|
#name: ${name_prefix} ${ct22Name} [W]
|
||||||
|
internal: true
|
||||||
|
id: ct22Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct010}
|
||||||
|
phase_b:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct23Name} [W]
|
||||||
|
id: ct23Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
phase_c:
|
||||||
|
power:
|
||||||
|
name: ${name_prefix} ${ct24Name} [W]
|
||||||
|
id: ct24Watts
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: ${watt_delta}
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
- multiply: -1
|
||||||
|
accuracy_decimals: 1
|
||||||
|
gain_voltage: ${voltage_cal}
|
||||||
|
gain_ct: ${sct006}
|
||||||
|
line_frequency: 60Hz
|
||||||
|
gain_pga: 1X
|
||||||
|
update_interval: ${update_time}
|
||||||
|
|
||||||
|
#Total Amps From Grid
|
||||||
|
- platform: template
|
||||||
|
name: ${name_prefix} Grid Total [A]
|
||||||
|
id: totalAmpsFromGrid
|
||||||
|
lambda: return id(ct1Amps).state + id(ct4Amps).state ;
|
||||||
|
accuracy_decimals: 1
|
||||||
|
unit_of_measurement: A
|
||||||
|
device_class: current
|
||||||
|
state_class: measurement
|
||||||
|
update_interval: ${update_time}
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: 2.0
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
|
||||||
|
#Total Watts From Grid
|
||||||
|
- platform: template
|
||||||
|
name: ${name_prefix} Grid Total [W]
|
||||||
|
id: totalWattsFromGrid
|
||||||
|
lambda: return id(ct1Watts).state + id(ct4Watts).state ;
|
||||||
|
accuracy_decimals: 1
|
||||||
|
unit_of_measurement: W
|
||||||
|
device_class: power
|
||||||
|
state_class: measurement
|
||||||
|
update_interval: ${update_time}
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- delta: 5.0
|
||||||
|
- throttle_average: ${throttle_time}
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
|
||||||
|
#kWh From Grid
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} Grid [kWh]
|
||||||
|
power_id: totalWattsFromGrid
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
# - heartbeat: ${kwh_report_interval}
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
# The CT for the Well needs to be calibrated.
|
||||||
|
# In the interim, I'm using this lambda
|
||||||
|
- platform: template
|
||||||
|
name: ${name_prefix} ${ct22Name} [W]
|
||||||
|
id: ct22WattsPositive
|
||||||
|
state_class: measurement
|
||||||
|
lambda: |-
|
||||||
|
if (id(ct22Watts).state < 0){
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return id(ct22Watts).state ;
|
||||||
|
}
|
||||||
|
accuracy_decimals: 1
|
||||||
|
unit_of_measurement: W
|
||||||
|
icon: mdi:lightning-bolt-circle
|
||||||
|
update_interval: ${update_time}
|
||||||
|
filters:
|
||||||
|
- delta: 5.0
|
||||||
|
# - heartbeat: ${watt_heartbeat}
|
||||||
|
|
||||||
|
# kWh from CT1
|
||||||
|
# This is included in the grid calculation
|
||||||
|
|
||||||
|
# kWh from CT2 (the dryer)
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct02Name} [kWh]
|
||||||
|
power_id: ct2Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 3
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct03Name} [kWh]
|
||||||
|
power_id: ct3Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
# kWh From CT 4
|
||||||
|
# This is included in the Grid calculation area
|
||||||
|
|
||||||
|
#kWh From CT 5
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct05Name} [kWh]
|
||||||
|
power_id: ct5Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 6
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct06Name} [kWh]
|
||||||
|
power_id: ct6Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 7
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct07Name} [kWh]
|
||||||
|
power_id: ct7Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 8
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct08Name} [kWh]
|
||||||
|
power_id: ct8Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 9
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct09Name} [kWh]
|
||||||
|
power_id: ct9Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 10
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct10Name} [kWh]
|
||||||
|
power_id: ct10Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 11 (Heat Pump)
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct11Name} [kWh]
|
||||||
|
power_id: ct11Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 12
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct12Name} [kWh]
|
||||||
|
power_id: ct12Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 13
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct13Name} [kWh]
|
||||||
|
power_id: ct13Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 14
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct14Name} [kWh]
|
||||||
|
power_id: ct14Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 15
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct15Name} [kWh]
|
||||||
|
power_id: ct15Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 16
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct16Name} [kWh]
|
||||||
|
power_id: ct16Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 17
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct17Name} [kWh]
|
||||||
|
power_id: ct17Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 18
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct18Name} [kWh]
|
||||||
|
power_id: ct18Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 19
|
||||||
|
# this is not used
|
||||||
|
# - platform: total_daily_energy
|
||||||
|
# name: ${name_prefix} ${ct19Name} [kWh]
|
||||||
|
# power_id: ct19Watts
|
||||||
|
# filters:
|
||||||
|
# - multiply: 0.001
|
||||||
|
# - throttle_average: ${kwh_report_interval}
|
||||||
|
# unit_of_measurement: kWh
|
||||||
|
# device_class: energy
|
||||||
|
# state_class: total_increasing
|
||||||
|
# # min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 20
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct20Name} [kWh]
|
||||||
|
power_id: ct20Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 21
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct21Name} [kWh]
|
||||||
|
power_id: ct21Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 22
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct22Name} [kWh]
|
||||||
|
power_id: ct22WattsPositive
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 23
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct23Name} [kWh]
|
||||||
|
power_id: ct23Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
|
|
||||||
|
#kWh From CT 24
|
||||||
|
- platform: total_daily_energy
|
||||||
|
name: ${name_prefix} ${ct24Name} [kWh]
|
||||||
|
power_id: ct24Watts
|
||||||
|
filters:
|
||||||
|
- multiply: 0.001
|
||||||
|
unit_of_measurement: kWh
|
||||||
|
device_class: energy
|
||||||
|
state_class: total_increasing
|
||||||
|
# min_save_interval: ${update_time}
|
||||||
@@ -1,220 +0,0 @@
|
|||||||
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
|
||||||
substitutions:
|
|
||||||
devicename: furnace-room-multisensor
|
|
||||||
entity_name: furnace_room_multisensor
|
|
||||||
friendly_name: Furnace Room MultiSensor
|
|
||||||
comment: Clever MultiSensor
|
|
||||||
platform: ESP32
|
|
||||||
board: wemos_d1_mini32
|
|
||||||
static_ip: !secret furnace-room-multisensor-ip
|
|
||||||
|
|
||||||
one_wire_pin: GPIO14
|
|
||||||
sda_pin: GPIO21
|
|
||||||
scl_pin: GPIO22
|
|
||||||
door_pin: GPIO34
|
|
||||||
trigger_pin: GPIO33
|
|
||||||
echo_pin: GPIO35
|
|
||||||
#mdc_pin: GPIO23
|
|
||||||
#mdio_pin: GPIO18
|
|
||||||
#clk_mode: GPIO17_OUT
|
|
||||||
#power_pin: GPIO5
|
|
||||||
|
|
||||||
packages:
|
|
||||||
#wifi: !include common/wifi_no_power_save.yaml
|
|
||||||
ethernet: !include common/ethernet.yaml
|
|
||||||
device_base: !include common/device_base.yaml
|
|
||||||
ble_proxy: !include common/ble_proxy.yaml
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: ${devicename}
|
|
||||||
friendly_name: ${friendly_name}
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
globals:
|
|
||||||
- id: screen_power
|
|
||||||
type: bool
|
|
||||||
restore_value: yes
|
|
||||||
initial_value: 'true'
|
|
||||||
|
|
||||||
font:
|
|
||||||
- file: 'CascadiaMonoPL.ttf'
|
|
||||||
id: font1
|
|
||||||
size: 17
|
|
||||||
|
|
||||||
one_wire:
|
|
||||||
- platform: gpio
|
|
||||||
pin: ${one_wire_pin}
|
|
||||||
|
|
||||||
i2c:
|
|
||||||
sda: ${sda_pin}
|
|
||||||
scl: ${scl_pin}
|
|
||||||
frequency: 800kHz
|
|
||||||
|
|
||||||
display:
|
|
||||||
- platform: ssd1306_i2c
|
|
||||||
id: oled
|
|
||||||
model: "SSD1306 128x64"
|
|
||||||
#reset_pin: GPIO14 #D0
|
|
||||||
address: 0x3C
|
|
||||||
lambda: |-
|
|
||||||
it.print(0, 0, id(font1), "Delt:");
|
|
||||||
it.printf(128, 0, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_delta).state);
|
|
||||||
it.print(0, 16, id(font1), "HVAC:");
|
|
||||||
it.printf(128, 16, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac).state);
|
|
||||||
it.print(0, 32, id(font1), "Retn:");
|
|
||||||
it.printf(128, 32, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_return).state);
|
|
||||||
it.print(0, 48, id(font1), "Ambt:");
|
|
||||||
it.printf(128, 48, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(ambient).state);
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0xB33C01B607798528
|
|
||||||
name: "Return Temperature"
|
|
||||||
id: hvac_return
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0x0F3C01B6070C1328
|
|
||||||
name: "Supply Temperature"
|
|
||||||
id: hvac_supply
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0xFA3C01B607005B28
|
|
||||||
name: "Ambient Temperature"
|
|
||||||
id: ambient
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: "Delta Temperature"
|
|
||||||
id: hvac_delta
|
|
||||||
lambda: |-
|
|
||||||
return (id(hvac_supply).state - id(hvac_return).state);
|
|
||||||
update_interval: 10s
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
filters:
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
|
|
||||||
- platform: ultrasonic
|
|
||||||
trigger_pin: ${trigger_pin}
|
|
||||||
echo_pin: ${echo_pin}
|
|
||||||
id: ultrasonic_source
|
|
||||||
#update_interval: 5s
|
|
||||||
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"
|
|
||||||
#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"
|
|
||||||
#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"
|
|
||||||
#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
|
|
||||||
|
|
||||||
- platform: homeassistant
|
|
||||||
internal: true
|
|
||||||
id: light_state
|
|
||||||
entity_id: light.furnace_room
|
|
||||||
on_state:
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
lambda: 'return id(light_state).state;'
|
|
||||||
then:
|
|
||||||
- logger.log: "The light is on"
|
|
||||||
else:
|
|
||||||
- logger.log: "The is off. Turning off display"
|
|
||||||
- switch.turn_off: display_switch
|
|
||||||
|
|
||||||
switch:
|
|
||||||
- platform: template
|
|
||||||
id: display_switch
|
|
||||||
name: "Display"
|
|
||||||
lambda: |-
|
|
||||||
if (id(screen_power)) {
|
|
||||||
id(oled).turn_on();
|
|
||||||
} else {
|
|
||||||
id(oled).turn_off();
|
|
||||||
}
|
|
||||||
return id(screen_power);
|
|
||||||
turn_on_action:
|
|
||||||
- lambda: |-
|
|
||||||
id(screen_power) = true;
|
|
||||||
// id(oled).turn_on();
|
|
||||||
turn_off_action:
|
|
||||||
- lambda: |-
|
|
||||||
id(screen_power) = false;
|
|
||||||
// id(oled).turn_off();
|
|
||||||
@@ -1,141 +1,141 @@
|
|||||||
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
|
||||||
substitutions:
|
substitutions:
|
||||||
devicename: furnace-room-multisensor
|
devicename: furnace-room-multisensor
|
||||||
entity_name: furnace_room_multisensor
|
entity_name: furnace_room_multisensor
|
||||||
friendly_name: Furnace Room MultiSensor
|
friendly_name: Furnace Room MultiSensor
|
||||||
comment: Clever MultiSensor
|
comment: Clever MultiSensor
|
||||||
platform: ESP32
|
board: nodemcuv2
|
||||||
board: wemos_d1_mini32
|
|
||||||
static_ip: !secret furnace-room-multisensor-ip
|
static_ip: !secret furnace-room-multisensor-ip
|
||||||
|
|
||||||
sda_pin: GPIO21
|
|
||||||
scl_pin: GPIO22
|
|
||||||
door_pin: GPIO19
|
|
||||||
|
|
||||||
|
# For the reed switches
|
||||||
|
door: 35
|
||||||
|
moisture: 36
|
||||||
|
|
||||||
one_wire_pin: GPIO14
|
# For the ultrasonic sensor
|
||||||
trigger_pin: GPIO04
|
trigger: 14
|
||||||
echo_pin: GPIO12
|
echo: 15
|
||||||
#mdc_pin: GPIO23
|
|
||||||
#mdio_pin: GPIO18
|
|
||||||
#clk_mode: GPIO17_OUT
|
|
||||||
#power_pin: GPIO5
|
|
||||||
|
|
||||||
packages:
|
# Infrared Sensor
|
||||||
#wifi: !include common/wifi_no_power_save.yaml
|
ir_tx: 12
|
||||||
ethernet: !include common/ethernet.yaml
|
ir_rx: 39
|
||||||
device_base: !include common/device_base.yaml
|
|
||||||
ble_proxy: !include common/ble_proxy.yaml
|
# I2C Pins
|
||||||
|
i2c_sda: 13
|
||||||
|
i2c_scl: 16
|
||||||
|
|
||||||
|
# For the ethernet adapter
|
||||||
|
ethernet_mdc_pin: 23
|
||||||
|
ethernet_mdio_pin: 18
|
||||||
|
ethernet_clk_pin: 0
|
||||||
|
|
||||||
|
# For the relays
|
||||||
|
relay1: 32
|
||||||
|
relay2: 33
|
||||||
|
|
||||||
|
# Built-in button
|
||||||
|
button1: 34
|
||||||
|
|
||||||
|
# For the HVAC temperature sensors
|
||||||
|
one_wire: 17
|
||||||
|
|
||||||
|
one_wire:
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${one_wire}
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
esp32:
|
packages:
|
||||||
board: ${board}
|
network: !include common/olimex_evb.yaml
|
||||||
framework:
|
device_base: !include common/device_base.yaml
|
||||||
type: esp-idf
|
|
||||||
|
|
||||||
|
# Included in common/olimex-evb.yaml
|
||||||
|
# esp32:
|
||||||
|
# board: esp32dev
|
||||||
|
# framework:
|
||||||
|
# type: esp-idf
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
api: # Using settings from common/device_base.yaml
|
web_server:
|
||||||
|
port: 80
|
||||||
|
version: 3
|
||||||
|
include_internal: True
|
||||||
|
|
||||||
ota: # Using settings from common/device_base.yaml
|
# # Enable Home Assistant API
|
||||||
|
# api:
|
||||||
|
# encryption:
|
||||||
|
# key: "mupTLNBggWPdKHxBeY1yV47qXgyhVJUgIVVAvfGrZ40="
|
||||||
|
|
||||||
esp32_ble_tracker:
|
# ota:
|
||||||
|
# - platform: esphome
|
||||||
|
# password: "b43bd5c6f724d64a9bd4e92504830d8f"
|
||||||
|
|
||||||
globals:
|
remote_receiver:
|
||||||
- id: screen_power
|
pin: ${ir_rx}
|
||||||
type: bool
|
dump: all
|
||||||
restore_value: yes
|
|
||||||
initial_value: 'true'
|
|
||||||
|
|
||||||
font:
|
remote_transmitter:
|
||||||
- file: 'CascadiaMonoPL.ttf'
|
pin: ${ir_tx}
|
||||||
id: font1
|
carrier_duty_percent: 50%
|
||||||
size: 17
|
|
||||||
|
|
||||||
one_wire:
|
|
||||||
- platform: gpio
|
|
||||||
pin: ${one_wire_pin}
|
|
||||||
|
|
||||||
i2c:
|
i2c:
|
||||||
sda: ${sda_pin}
|
sda: ${i2c_sda}
|
||||||
scl: ${scl_pin}
|
scl: ${i2c_scl}
|
||||||
frequency: 800kHz
|
scan: true
|
||||||
|
id: bus_a
|
||||||
|
|
||||||
display:
|
binary_sensor:
|
||||||
- platform: ssd1306_i2c
|
- platform: gpio
|
||||||
id: oled
|
name: "ESP32-EVB button"
|
||||||
model: "SSD1306 128x64"
|
pin: ${button1}
|
||||||
#reset_pin: GPIO14 #D0
|
|
||||||
address: 0x3C
|
- platform: gpio
|
||||||
lambda: |-
|
name: "Door"
|
||||||
it.print(0, 0, id(font1), "Delta:");
|
device_class: door
|
||||||
it.printf(128, 0, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_delta).state);
|
filters:
|
||||||
it.print(0, 16, id(font1), "Supply:");
|
- invert:
|
||||||
it.printf(128, 16, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_supply).state);
|
pin:
|
||||||
it.print(0, 32, id(font1), "Return:");
|
number: ${door}
|
||||||
it.printf(128, 32, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_return).state);
|
# mode: INPUT_PULLUP
|
||||||
it.print(0, 48, id(font1), "Ambient:");
|
|
||||||
it.printf(128, 48, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(ambient).state);
|
- platform: gpio
|
||||||
|
name: "Moisture"
|
||||||
|
device_class: moisture
|
||||||
|
pin:
|
||||||
|
number: ${moisture}
|
||||||
|
# mode: INPUT_PULLUP
|
||||||
|
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${relay1}
|
||||||
|
name: "Relay1"
|
||||||
|
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${relay2}
|
||||||
|
name: "Relay2"
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0xB33C01B607798528
|
|
||||||
name: "Return Temperature"
|
|
||||||
id: hvac_return
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0x0F3C01B6070C1328
|
|
||||||
name: "Supply Temperature"
|
|
||||||
id: hvac_supply
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0xFA3C01B607005B28
|
|
||||||
name: "Ambient Temperature"
|
|
||||||
id: ambient
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: "Delta Temperature"
|
|
||||||
id: hvac_delta
|
|
||||||
lambda: |-
|
|
||||||
return (id(hvac_supply).state - id(hvac_return).state);
|
|
||||||
update_interval: 10s
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
filters:
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
|
|
||||||
- platform: ultrasonic
|
- platform: ultrasonic
|
||||||
trigger_pin: ${trigger_pin}
|
trigger_pin: ${trigger}
|
||||||
echo_pin: ${echo_pin}
|
echo_pin: ${echo}
|
||||||
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:
|
||||||
window_size: 5
|
window_size: 5
|
||||||
send_every: 5
|
send_every: 5
|
||||||
send_first_at: 1
|
send_first_at: 1
|
||||||
|
- lambda: 'return round( x * 10.0) / 10.0;'
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
on_value:
|
on_value:
|
||||||
then:
|
then:
|
||||||
- sensor.template.publish:
|
- sensor.template.publish:
|
||||||
@@ -151,9 +151,15 @@ sensor:
|
|||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: distance_from_bottom
|
id: distance_from_bottom
|
||||||
name: "Salt Level in CM"
|
name: "Salt Level in CM"
|
||||||
|
icon: mdi:arrow-collapse-up
|
||||||
|
disabled_by_default: true
|
||||||
#update_interval: 5s
|
#update_interval: 5s
|
||||||
filters:
|
filters:
|
||||||
- lambda: 'return (0.94 - (id(ultrasonic_source).state)) * 100;'
|
- lambda: 'return (0.94 - x) * 100;'
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
|
||||||
on_value:
|
on_value:
|
||||||
then:
|
then:
|
||||||
- sensor.template.publish:
|
- sensor.template.publish:
|
||||||
@@ -165,58 +171,28 @@ sensor:
|
|||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: distance_from_top
|
id: distance_from_top
|
||||||
name: "Salt Level From Top in CM"
|
name: "Salt Level From Top in CM"
|
||||||
|
icon: mdi:arrow-collapse-down
|
||||||
|
disabled_by_default: true
|
||||||
#update_interval: 5s
|
#update_interval: 5s
|
||||||
filters:
|
filters:
|
||||||
- lambda: 'return (id(ultrasonic_source).state) * 100;'
|
- lambda: 'return x * 100;'
|
||||||
|
- round: 1
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
|
||||||
|
|
||||||
- platform: template
|
- platform: template
|
||||||
unit_of_measurement: "bags"
|
unit_of_measurement: "bags"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: level_in_bags
|
id: level_in_bags
|
||||||
name: "Salt Level in Bags"
|
name: "Salt Level in Bags"
|
||||||
|
icon: mdi:counter
|
||||||
|
disabled_by_default: true
|
||||||
#update_interval: 5s
|
#update_interval: 5s
|
||||||
filters:
|
filters:
|
||||||
- lambda: 'return (id(distance_from_bottom).state) / 17.5;'
|
- lambda: 'return x / 17.5;'
|
||||||
|
- round: 1
|
||||||
binary_sensor:
|
- clamp:
|
||||||
- platform: gpio
|
min_value: 0.0
|
||||||
name: "Door"
|
max_value: 10.0
|
||||||
device_class: door
|
|
||||||
pin:
|
|
||||||
number: ${door_pin}
|
|
||||||
mode: INPUT_PULLUP
|
|
||||||
|
|
||||||
- platform: homeassistant
|
|
||||||
internal: true
|
|
||||||
id: light_state
|
|
||||||
entity_id: light.furnace_room
|
|
||||||
on_state:
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
lambda: 'return id(light_state).state;'
|
|
||||||
then:
|
|
||||||
- logger.log: "The light is on"
|
|
||||||
else:
|
|
||||||
- logger.log: "The is off. Turning off display"
|
|
||||||
- switch.turn_off: display_switch
|
|
||||||
|
|
||||||
switch:
|
|
||||||
- platform: template
|
|
||||||
id: display_switch
|
|
||||||
name: "Display"
|
|
||||||
lambda: |-
|
|
||||||
if (id(screen_power)) {
|
|
||||||
id(oled).turn_on();
|
|
||||||
} else {
|
|
||||||
id(oled).turn_off();
|
|
||||||
}
|
|
||||||
return id(screen_power);
|
|
||||||
turn_on_action:
|
|
||||||
- lambda: |-
|
|
||||||
id(screen_power) = true;
|
|
||||||
// id(oled).turn_on();
|
|
||||||
turn_off_action:
|
|
||||||
- lambda: |-
|
|
||||||
id(screen_power) = false;
|
|
||||||
// id(oled).turn_off();
|
|
||||||
@@ -4,243 +4,35 @@ substitutions:
|
|||||||
entity_name: hvac_multisensor
|
entity_name: hvac_multisensor
|
||||||
friendly_name: HVAC MultiSensor
|
friendly_name: HVAC MultiSensor
|
||||||
comment: Clever MultiSensor
|
comment: Clever MultiSensor
|
||||||
platform: ESP32
|
platform: ESP8266
|
||||||
board: esp32-wroom-32d
|
board: d1_mini
|
||||||
variant: esp32
|
#variant: esp32
|
||||||
# framework: esp-idf
|
# framework: esp-idf
|
||||||
framework: arduino
|
#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 Ultrasonic Sensor
|
|
||||||
trigger_pin: GPIO14
|
|
||||||
echo_pin: GPIO16
|
|
||||||
|
|
||||||
# For i2c devices
|
|
||||||
sda_pin: GPIO21
|
|
||||||
scl_pin: GPIO22
|
|
||||||
|
|
||||||
# For additional devices
|
|
||||||
passive_buzzer_pin: GPIO26
|
|
||||||
one_wire_pin: GPIO17
|
|
||||||
moisture_pin: GPIO33
|
|
||||||
door_pin: GPIO34
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
# 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
|
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
esp32:
|
esp8266:
|
||||||
# board: ${board}
|
board: ${board}
|
||||||
variant: ${variant}
|
|
||||||
framework:
|
|
||||||
type: ${framework}
|
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
#level: VERBOSE
|
#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
|
|
||||||
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
|
|
||||||
|
|
||||||
font:
|
|
||||||
- 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
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
one_wire:
|
one_wire:
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
pin:
|
pin: D5
|
||||||
number: ${one_wire_pin}
|
|
||||||
# mode:
|
|
||||||
# input: true
|
|
||||||
# pullup: true
|
|
||||||
|
|
||||||
i2c:
|
|
||||||
- id: bus_a
|
|
||||||
sda: ${sda_pin}
|
|
||||||
scl: ${scl_pin}
|
|
||||||
#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
|
|
||||||
|
|
||||||
binary_sensor:
|
|
||||||
- platform: gpio
|
|
||||||
name: "Door"
|
|
||||||
device_class: door
|
|
||||||
pin:
|
|
||||||
number: ${door_pin}
|
|
||||||
inverted: True
|
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: ultrasonic
|
|
||||||
trigger_pin: ${trigger_pin}
|
|
||||||
echo_pin: ${echo_pin}
|
|
||||||
name: "Ultrasonic Sensor"
|
|
||||||
update_interval: 1s
|
|
||||||
|
|
||||||
- platform: bme280_i2c
|
|
||||||
i2c_id: bus_a
|
|
||||||
address: 0x76
|
|
||||||
update_interval: 10s
|
|
||||||
temperature:
|
|
||||||
name: "BME280 76A Temperature"
|
|
||||||
pressure:
|
|
||||||
name: "BME280 76A Pressure"
|
|
||||||
humidity:
|
|
||||||
name: "BME280 76A Humidity"
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
- platform: dallas_temp
|
||||||
address: 0x5a3c01d6078a2e28
|
address: 0x5a3c01d6078a2e28
|
||||||
name: "Probe 1"
|
name: "Probe 1"
|
||||||
@@ -257,6 +49,9 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.0
|
max_value: 150.0
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -271,6 +66,9 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.0
|
max_value: 150.0
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -285,6 +83,9 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.0
|
max_value: 150.0
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
|
||||||
@@ -293,409 +94,17 @@ sensor:
|
|||||||
id: hvac_delta
|
id: hvac_delta
|
||||||
icon: mdi:thermometer-lines
|
icon: mdi:thermometer-lines
|
||||||
lambda: |-
|
lambda: |-
|
||||||
return (id(probe1).state - id(probe2).state);
|
return round( (id(probe1).state - id(probe2).state) * 100.0) / 100.0;
|
||||||
update_interval: 10s
|
update_interval: 10s
|
||||||
unit_of_measurement: "°F"
|
unit_of_measurement: "°F"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
|
device_class: ""
|
||||||
|
accuracy_decimals: 1
|
||||||
filters:
|
filters:
|
||||||
- lambda: 'return round( x * 100.0) / 100.0;'
|
#- lambda: 'return round( (id(probe1).state - id(probe2).state) * 100.0) / 100.0;'
|
||||||
- clamp:
|
- clamp:
|
||||||
min_value: -100.0
|
min_value: -100.0
|
||||||
max_value: 100.0
|
max_value: 100.0
|
||||||
- or:
|
- or:
|
||||||
- throttle: 60s
|
- throttle: 60s
|
||||||
- delta: 1.0
|
- delta: 1.0
|
||||||
|
|
||||||
display:
|
|
||||||
- platform: ili9xxx
|
|
||||||
id: main_display
|
|
||||||
# data_rate: 20MHz
|
|
||||||
# spi_mode: MODE3
|
|
||||||
# color_palette: 8BIT
|
|
||||||
invert_colors: false
|
|
||||||
auto_clear_enabled: false
|
|
||||||
update_interval: never
|
|
||||||
model: ili9488
|
|
||||||
dc_pin: ${tft_dc_pin}
|
|
||||||
reset_pin: ${tft_reset_pin}
|
|
||||||
cs_pin: ${tft_cs_pin}
|
|
||||||
transform:
|
|
||||||
swap_xy: true
|
|
||||||
mirror_x: true
|
|
||||||
dimensions:
|
|
||||||
height: 480
|
|
||||||
width: 320
|
|
||||||
|
|
||||||
touchscreen:
|
|
||||||
# - platform: ft5x06
|
|
||||||
# Uses i2c
|
|
||||||
- platform: ft63x6
|
|
||||||
i2c_id: bus_a
|
|
||||||
id: main_touchscreen
|
|
||||||
display: main_display
|
|
||||||
transform:
|
|
||||||
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
|
|
||||||
|
|
||||||
lvgl:
|
|
||||||
buffer_size: 25%
|
|
||||||
displays: main_display
|
|
||||||
top_layer:
|
|
||||||
widgets:
|
|
||||||
- label:
|
|
||||||
text: "\U000F05A9"
|
|
||||||
id: lbl_hastatus
|
|
||||||
hidden: true
|
|
||||||
align: top_right
|
|
||||||
x: -2
|
|
||||||
y: 7
|
|
||||||
text_align: right
|
|
||||||
|
|
||||||
- buttonmatrix:
|
|
||||||
align: bottom_mid
|
|
||||||
styles: header_footer
|
|
||||||
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
|
|
||||||
+106
-31
@@ -1,42 +1,129 @@
|
|||||||
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
|
||||||
substitutions:
|
substitutions:
|
||||||
devicename: water-softener-multisensor
|
devicename: furnace-room-multisensor
|
||||||
entity_name: water_softener_multisensor
|
entity_name: furnace_room_multisensor
|
||||||
friendly_name: Water Softener MultiSensor
|
friendly_name: Furnace Room MultiSensor
|
||||||
comment: Clever Water Softener MultiSensor
|
comment: Clever MultiSensor
|
||||||
board: nodemcuv2
|
board: nodemcuv2
|
||||||
static_ip: !secret water-softener-multisensor-ip
|
static_ip: !secret furnace-room-multisensor-ip
|
||||||
|
|
||||||
door_pin: D5
|
|
||||||
|
# For the reed switches
|
||||||
|
door: 35
|
||||||
|
moisture: 36
|
||||||
|
|
||||||
# For the ultrasonic sensor
|
# For the ultrasonic sensor
|
||||||
trigger_pin: D7
|
trigger: 14
|
||||||
echo_pin: D6
|
echo: 15
|
||||||
|
|
||||||
packages:
|
# Infrared Sensor
|
||||||
# network: !include common/ethernet.yaml
|
ir_tx: 12
|
||||||
network: !include common/wifi.yaml
|
ir_rx: 39
|
||||||
device_base: !include common/device_base.yaml
|
|
||||||
|
# I2C Pins
|
||||||
|
i2c_sda: 13
|
||||||
|
i2c_scl: 16
|
||||||
|
|
||||||
|
# For the ethernet adapter
|
||||||
|
ethernet_mdc_pin: 23
|
||||||
|
ethernet_mdio_pin: 18
|
||||||
|
ethernet_clk_pin: 0
|
||||||
|
|
||||||
|
# For the relays
|
||||||
|
relay1: 32
|
||||||
|
relay2: 33
|
||||||
|
|
||||||
|
# Built-in button
|
||||||
|
button1: 34
|
||||||
|
|
||||||
|
# For the HVAC temperature sensors
|
||||||
|
one_wire: 17
|
||||||
|
|
||||||
|
one_wire:
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${one_wire}
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
esp8266:
|
packages:
|
||||||
board: ${board}
|
network: !include common/olimex_evb.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
|
|
||||||
|
|
||||||
|
# Included in common/olimex-evb.yaml
|
||||||
|
# esp32:
|
||||||
|
# board: esp32dev
|
||||||
|
# framework:
|
||||||
|
# type: esp-idf
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
api: # Using settings from common/device_base.yaml
|
web_server:
|
||||||
|
port: 80
|
||||||
|
version: 3
|
||||||
|
include_internal: True
|
||||||
|
|
||||||
ota: # Using settings from common/device_base.yaml
|
# # Enable Home Assistant API
|
||||||
|
# api:
|
||||||
|
# encryption:
|
||||||
|
# key: "mupTLNBggWPdKHxBeY1yV47qXgyhVJUgIVVAvfGrZ40="
|
||||||
|
|
||||||
|
# ota:
|
||||||
|
# - platform: esphome
|
||||||
|
# password: "b43bd5c6f724d64a9bd4e92504830d8f"
|
||||||
|
|
||||||
|
remote_receiver:
|
||||||
|
pin: ${ir_rx}
|
||||||
|
dump: all
|
||||||
|
|
||||||
|
remote_transmitter:
|
||||||
|
pin: ${ir_tx}
|
||||||
|
carrier_duty_percent: 50%
|
||||||
|
|
||||||
|
i2c:
|
||||||
|
sda: ${i2c_sda}
|
||||||
|
scl: ${i2c_scl}
|
||||||
|
scan: true
|
||||||
|
id: bus_a
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
name: "ESP32-EVB button"
|
||||||
|
pin: ${button1}
|
||||||
|
|
||||||
|
- platform: gpio
|
||||||
|
name: "Door"
|
||||||
|
device_class: door
|
||||||
|
filters:
|
||||||
|
- invert:
|
||||||
|
pin:
|
||||||
|
number: ${door}
|
||||||
|
# mode: INPUT_PULLUP
|
||||||
|
|
||||||
|
- platform: gpio
|
||||||
|
name: "Moisture"
|
||||||
|
device_class: moisture
|
||||||
|
pin:
|
||||||
|
number: ${moisture}
|
||||||
|
# mode: INPUT_PULLUP
|
||||||
|
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${relay1}
|
||||||
|
name: "Relay1"
|
||||||
|
|
||||||
|
- platform: gpio
|
||||||
|
pin: ${relay2}
|
||||||
|
name: "Relay2"
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: ultrasonic
|
- platform: ultrasonic
|
||||||
trigger_pin: ${trigger_pin}
|
trigger_pin: ${trigger}
|
||||||
echo_pin: ${echo_pin}
|
echo_pin: ${echo}
|
||||||
id: ultrasonic_source
|
id: ultrasonic_source
|
||||||
update_interval: 1s
|
update_interval: 1s
|
||||||
internal: True
|
internal: True
|
||||||
@@ -109,15 +196,3 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 10.0
|
max_value: 10.0
|
||||||
|
|
||||||
|
|
||||||
binary_sensor:
|
|
||||||
- platform: gpio
|
|
||||||
name: "Door"
|
|
||||||
device_class: door
|
|
||||||
pin:
|
|
||||||
number: ${door_pin}
|
|
||||||
mode: INPUT_PULLUP
|
|
||||||
# filters:
|
|
||||||
# - invert:
|
|
||||||
|
|
||||||
@@ -5,11 +5,13 @@ substitutions:
|
|||||||
comment: Clever MultiSensor
|
comment: Clever MultiSensor
|
||||||
platform: ESP8266
|
platform: ESP8266
|
||||||
board: nodemcu
|
board: nodemcu
|
||||||
|
i2c_id: bus_a
|
||||||
static_ip: !secret bathroom-multisensor-ip
|
static_ip: !secret bathroom-multisensor-ip
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
network: !include common/wifi.yaml
|
network: !include common/wifi.yaml
|
||||||
device_base: !include common/device_base.yaml
|
device_base: !include common/device_base.yaml
|
||||||
|
bme680: !include common/bme680.yaml
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
@@ -29,207 +31,6 @@ web_server:
|
|||||||
include_internal: True
|
include_internal: True
|
||||||
|
|
||||||
i2c:
|
i2c:
|
||||||
- id: bus_a
|
- id: ${i2c_id}
|
||||||
sda: D2
|
sda: D2
|
||||||
scl: D1
|
scl: D1
|
||||||
|
|
||||||
bme680_bsec:
|
|
||||||
i2c_id: bus_a
|
|
||||||
|
|
||||||
# i2c address
|
|
||||||
# -----------
|
|
||||||
# Common values are:
|
|
||||||
# - 0x76
|
|
||||||
# - 0x77
|
|
||||||
# Default: 0x76
|
|
||||||
address: 0x77
|
|
||||||
|
|
||||||
# Temperature offset
|
|
||||||
# ------------------
|
|
||||||
# Useful if device is in enclosure and reads too high
|
|
||||||
# Default: 0
|
|
||||||
temperature_offset: 0
|
|
||||||
|
|
||||||
# IAQ calculation mode
|
|
||||||
# --------------------
|
|
||||||
# Available options:
|
|
||||||
# - static (for fixed position devices)
|
|
||||||
# - mobile (for on person or other moveable devices)
|
|
||||||
# Default: static
|
|
||||||
iaq_mode: static
|
|
||||||
|
|
||||||
# Sample rate
|
|
||||||
# -----------
|
|
||||||
# This controls the sampling rate for gas-dependant sensors and will govern the interval
|
|
||||||
# at which the sensor heater is operated.
|
|
||||||
# By default this rate will also be used for temperature, pressure and humidity sensors
|
|
||||||
# but these can be overridden on a per-sensor level if required.
|
|
||||||
#
|
|
||||||
# Available options:
|
|
||||||
# - lp (low power - samples every 3 seconds)
|
|
||||||
# - ulp (ultra low power - samples every 5 minutes)
|
|
||||||
# Default: lp
|
|
||||||
sample_rate: lp
|
|
||||||
|
|
||||||
# Interval at which to save BSEC state
|
|
||||||
# ------------------------------------
|
|
||||||
# Default: 6h
|
|
||||||
state_save_interval: 6h
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
# - platform: bme680
|
|
||||||
# i2c_id: bus_a
|
|
||||||
# address: 0x77
|
|
||||||
# update_interval: 3s
|
|
||||||
# temperature:
|
|
||||||
# name: "Standard Temperature"
|
|
||||||
# oversampling: 16x
|
|
||||||
# device_class: temperature
|
|
||||||
# unit_of_measurement: "°C"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 10
|
|
||||||
# pressure:
|
|
||||||
# name: "Standard Pressure"
|
|
||||||
# device_class: atmospheric_pressure
|
|
||||||
# unit_of_measurement: hPa
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 20
|
|
||||||
# humidity:
|
|
||||||
# id: "humidity"
|
|
||||||
# name: "Standard Humidity"
|
|
||||||
# device_class: humidity
|
|
||||||
# unit_of_measurement: "%"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 30
|
|
||||||
# gas_resistance:
|
|
||||||
# id: "gas_resistance"
|
|
||||||
# name: "Standard Gas Resistance"
|
|
||||||
# unit_of_measurement: "Ω"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 40
|
|
||||||
|
|
||||||
# - platform: template
|
|
||||||
# name: "Standard Indoor Air Quality"
|
|
||||||
# id: iaq
|
|
||||||
# icon: "mdi:gauge"
|
|
||||||
# # calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh]
|
|
||||||
# lambda: |-
|
|
||||||
# return log(id(gas_resistance).state) + 0.04 * id(humidity).state;
|
|
||||||
# state_class: "measurement"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 50
|
|
||||||
|
|
||||||
- platform: bme680_bsec
|
|
||||||
temperature:
|
|
||||||
# Temperature in °C
|
|
||||||
name: "Temperature"
|
|
||||||
id: temp
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "°C"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 11
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
pressure:
|
|
||||||
# Pressure in hPa
|
|
||||||
name: "Pressure"
|
|
||||||
id: pressure
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "hPa"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 21
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
humidity:
|
|
||||||
# Relative humidity %
|
|
||||||
id: humidity
|
|
||||||
name: "Relative Humidity"
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "%"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 31
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
gas_resistance:
|
|
||||||
# Gas resistance in Ω
|
|
||||||
name: "Gas Resistance"
|
|
||||||
id: gas_resistance
|
|
||||||
unit_of_measurement: "Ω"
|
|
||||||
disabled_by_default: True
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 41
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
iaq:
|
|
||||||
# Indoor air quality value
|
|
||||||
name: "Air Quality Index"
|
|
||||||
unit_of_measurement: "AQI"
|
|
||||||
id: iaq
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 51
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
iaq_accuracy:
|
|
||||||
# IAQ accuracy as a numeric value of 0, 1, 2, 3
|
|
||||||
name: "Numeric IAQ Accuracy"
|
|
||||||
id: iaq_accuracy
|
|
||||||
disabled_by_default: True
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 71
|
|
||||||
co2_equivalent:
|
|
||||||
# CO2 equivalent estimate in ppm
|
|
||||||
name: "CO2 Equivalent"
|
|
||||||
id: co2
|
|
||||||
unit_of_measurement: "ppm"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 81
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
breath_voc_equivalent:
|
|
||||||
# Volatile organic compounds equivalent estimate in ppm
|
|
||||||
name: "Breath VOC Equivalent"
|
|
||||||
id: breath_voc
|
|
||||||
unit_of_measurement: "ppm"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 91
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
|
|
||||||
text_sensor:
|
|
||||||
- platform: template
|
|
||||||
name: "IAQ Classification"
|
|
||||||
icon: "mdi:checkbox-marked-circle-outline"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 60
|
|
||||||
lambda: |-
|
|
||||||
if (int(id(iaq).state) <= 50) {
|
|
||||||
return {"Excellent"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 100) {
|
|
||||||
return {"Good"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 150) {
|
|
||||||
return {"Lightly polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 200) {
|
|
||||||
return {"Moderately polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 250) {
|
|
||||||
return {"Heavily polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 350) {
|
|
||||||
return {"Severely polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 500) {
|
|
||||||
return {"Extremely polluted"};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return {"unknown"};
|
|
||||||
}
|
|
||||||
|
|
||||||
- platform: bme680_bsec
|
|
||||||
iaq_accuracy:
|
|
||||||
# IAQ accuracy as a text value of Stabilizing, Uncertain, Calibrating, Calibrated
|
|
||||||
name: "AQI Accuracy"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 61
|
|
||||||
@@ -1,7 +1,14 @@
|
|||||||
esphome:
|
substitutions:
|
||||||
name: bed-presence-2d14a4
|
name: bed-presence-2d14a4
|
||||||
|
devicename: bed-presence-2d14a4
|
||||||
friendly_name: Bed Presence 2d14a4
|
friendly_name: Bed Presence 2d14a4
|
||||||
comment: White Bed Sensor
|
comment: White Bed Sensor
|
||||||
|
static_ip: !secret white-bed-ip
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: ${name}
|
||||||
|
friendly_name: ${friendly_name}
|
||||||
|
comment: ${comment}
|
||||||
min_version: 2024.6.0
|
min_version: 2024.6.0
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
project:
|
project:
|
||||||
@@ -18,27 +25,11 @@ esp32:
|
|||||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
|
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
|
||||||
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: n
|
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: n
|
||||||
|
|
||||||
# Enable logging
|
|
||||||
logger:
|
|
||||||
|
|
||||||
# Enable Home Assistant API
|
|
||||||
api:
|
|
||||||
|
|
||||||
# Enable wifi
|
|
||||||
wifi:
|
|
||||||
# Set up a wifi access point
|
|
||||||
ap: {}
|
|
||||||
|
|
||||||
# In combination with the `ap` this allows the user
|
|
||||||
# to provision wifi credentials to the device via WiFi AP.
|
|
||||||
captive_portal:
|
|
||||||
|
|
||||||
# Enable esphome OTA updates
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
packages:
|
packages:
|
||||||
|
base: !include common/device_base.yaml
|
||||||
|
network: !include common/wifi.yaml
|
||||||
remote_package:
|
remote_package:
|
||||||
url: https://github.com/ElevatedSensors/sensor-configs
|
url: https://github.com/ElevatedSensors/sensor-configs
|
||||||
ref: main
|
ref: main
|
||||||
@@ -47,6 +38,15 @@ packages:
|
|||||||
- bed-presence-mk1/base.yaml
|
- bed-presence-mk1/base.yaml
|
||||||
- esphome-common/bluetooth-proxy.yaml
|
- esphome-common/bluetooth-proxy.yaml
|
||||||
|
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- id: !remove bed_presence_status
|
||||||
|
|
||||||
|
button:
|
||||||
|
- id: !remove btn_restart
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- id: !remove bed_presence_uptime
|
||||||
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
|
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
|
||||||
# description of available substitutions.
|
# description of available substitutions.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
esphome:
|
substitutions:
|
||||||
name: bed-presence-c175a4
|
name: bed-presence-c175a4
|
||||||
|
devicename: bed-presence-c175a4
|
||||||
friendly_name: Bed Presence c175a4
|
friendly_name: Bed Presence c175a4
|
||||||
comment: Master Bed Sensor
|
comment: Master Bed Sensor
|
||||||
|
static_ip: !secret master-bed-ip
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: ${name}
|
||||||
|
friendly_name: ${friendly_name}
|
||||||
|
comment: ${comment}
|
||||||
min_version: 2024.6.0
|
min_version: 2024.6.0
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
project:
|
project:
|
||||||
@@ -18,27 +25,11 @@ esp32:
|
|||||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
|
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
|
||||||
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: n
|
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: n
|
||||||
|
|
||||||
# Enable logging
|
|
||||||
logger:
|
|
||||||
|
|
||||||
# Enable Home Assistant API
|
|
||||||
api:
|
|
||||||
|
|
||||||
# Enable wifi
|
|
||||||
wifi:
|
|
||||||
# Set up a wifi access point
|
|
||||||
ap: {}
|
|
||||||
|
|
||||||
# In combination with the `ap` this allows the user
|
|
||||||
# to provision wifi credentials to the device via WiFi AP.
|
|
||||||
captive_portal:
|
|
||||||
|
|
||||||
# Enable esphome OTA updates
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
packages:
|
packages:
|
||||||
|
base: !include common/device_base.yaml
|
||||||
|
network: !include common/wifi.yaml
|
||||||
remote_package:
|
remote_package:
|
||||||
url: https://github.com/ElevatedSensors/sensor-configs
|
url: https://github.com/ElevatedSensors/sensor-configs
|
||||||
ref: main
|
ref: main
|
||||||
@@ -47,6 +38,14 @@ packages:
|
|||||||
- bed-presence-mk1/base.yaml
|
- bed-presence-mk1/base.yaml
|
||||||
- esphome-common/bluetooth-proxy.yaml
|
- esphome-common/bluetooth-proxy.yaml
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- id: !remove bed_presence_status
|
||||||
|
|
||||||
|
button:
|
||||||
|
- id: !remove btn_restart
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- id: !remove bed_presence_uptime
|
||||||
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
|
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
|
||||||
# description of available substitutions.
|
# description of available substitutions.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
substitutions:
|
||||||
|
devicename: circuit-sensor
|
||||||
|
entity_name: circuit_sensor
|
||||||
|
friendly_name: Circuit Sensor
|
||||||
|
board: esp32-s3-devkitc-1
|
||||||
|
framework: esp-idf
|
||||||
|
comment: Clever ${friendly_name}
|
||||||
|
static_ip: !secret circuit-sensor-ip
|
||||||
|
|
||||||
|
packages:
|
||||||
|
network: !include common/waveshare_esp32_s3_eth.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
|
web_server: !include common/web_server.yaml
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: ${board}
|
||||||
|
framework:
|
||||||
|
type: ${framework}
|
||||||
|
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
web_server:
|
||||||
|
port: 80
|
||||||
|
version: 3
|
||||||
|
include_internal: true
|
||||||
|
sorting_groups:
|
||||||
|
- id: sorting_group_temperature_settings
|
||||||
|
name: "Temperature Settings"
|
||||||
|
sorting_weight: 10
|
||||||
|
- id: sorting_group_humidity_settings
|
||||||
|
name: "Humidity Settings"
|
||||||
|
sorting_weight: 20
|
||||||
|
- id: sorting_group_pressure_settings
|
||||||
|
name: "Pressure Settings"
|
||||||
|
sorting_weight: 30
|
||||||
|
- id: sorting_group_quality_settings
|
||||||
|
name: "Quality Settings"
|
||||||
|
sorting_weight: 40
|
||||||
|
|
||||||
|
|
||||||
|
bme680_bsec:
|
||||||
|
i2c_id: ${i2c_id}
|
||||||
|
|
||||||
|
# i2c address
|
||||||
|
# -----------
|
||||||
|
# Common values are:
|
||||||
|
# - 0x76
|
||||||
|
# - 0x77
|
||||||
|
# Default: 0x76
|
||||||
|
address: 0x77
|
||||||
|
|
||||||
|
# Temperature offset
|
||||||
|
# ------------------
|
||||||
|
# Useful if device is in enclosure and reads too high
|
||||||
|
# Default: 0
|
||||||
|
temperature_offset: 0
|
||||||
|
|
||||||
|
# IAQ calculation mode
|
||||||
|
# --------------------
|
||||||
|
# Available options:
|
||||||
|
# - static (for fixed position devices)
|
||||||
|
# - mobile (for on person or other moveable devices)
|
||||||
|
# Default: static
|
||||||
|
iaq_mode: static
|
||||||
|
|
||||||
|
# Sample rate
|
||||||
|
# -----------
|
||||||
|
# This controls the sampling rate for gas-dependant sensors and will govern the interval
|
||||||
|
# at which the sensor heater is operated.
|
||||||
|
# By default this rate will also be used for temperature, pressure and humidity sensors
|
||||||
|
# but these can be overridden on a per-sensor level if required.
|
||||||
|
#
|
||||||
|
# Available options:
|
||||||
|
# - lp (low power - samples every 3 seconds)
|
||||||
|
# - ulp (ultra low power - samples every 5 minutes)
|
||||||
|
# Default: lp
|
||||||
|
sample_rate: lp
|
||||||
|
|
||||||
|
# Interval at which to save BSEC state
|
||||||
|
# ------------------------------------
|
||||||
|
# Default: 6h
|
||||||
|
state_save_interval: 6h
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: bme680_bsec
|
||||||
|
temperature:
|
||||||
|
# Temperature in °C
|
||||||
|
id: temperature
|
||||||
|
internal: true
|
||||||
|
sample_rate: lp
|
||||||
|
unit_of_measurement: "°C"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 11
|
||||||
|
sorting_group_id: sorting_group_temperature_settings
|
||||||
|
|
||||||
|
humidity:
|
||||||
|
# Relative humidity %
|
||||||
|
id: humidity
|
||||||
|
internal: true
|
||||||
|
sample_rate: lp
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 21
|
||||||
|
sorting_group_id: sorting_group_humidity_settings
|
||||||
|
|
||||||
|
pressure:
|
||||||
|
# Pressure in hPa
|
||||||
|
id: pressure
|
||||||
|
internal: true
|
||||||
|
sample_rate: lp
|
||||||
|
unit_of_measurement: "hPa"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 31
|
||||||
|
sorting_group_id: sorting_group_pressure_settings
|
||||||
|
|
||||||
|
gas_resistance:
|
||||||
|
# Gas resistance in Ω
|
||||||
|
id: resistance
|
||||||
|
internal: true
|
||||||
|
unit_of_measurement: "Ω"
|
||||||
|
disabled_by_default: True
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 41
|
||||||
|
sorting_group_id: sorting_group_pressure_settings
|
||||||
|
|
||||||
|
iaq:
|
||||||
|
# Indoor air quality value
|
||||||
|
id: iaq
|
||||||
|
internal: true
|
||||||
|
unit_of_measurement: "AQI"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 51
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
co2_equivalent:
|
||||||
|
# CO2 equivalent estimate in ppm
|
||||||
|
id: co2
|
||||||
|
internal: true
|
||||||
|
unit_of_measurement: "ppm"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 61
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
breath_voc_equivalent:
|
||||||
|
# Volatile organic compounds equivalent estimate in ppm
|
||||||
|
id: breath_voc
|
||||||
|
internal: true
|
||||||
|
unit_of_measurement: "ppm"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 71
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
iaq_accuracy:
|
||||||
|
# IAQ accuracy as a numeric value of 0, 1, 2, 3
|
||||||
|
name: "Numeric IAQ Accuracy"
|
||||||
|
id: iaq_accuracy
|
||||||
|
disabled_by_default: True
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 81
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
filters:
|
||||||
|
- median:
|
||||||
|
window_size: 20
|
||||||
|
send_every: 20
|
||||||
|
send_first_at: 1
|
||||||
|
|
||||||
|
# These source sensors update every 3 seconds
|
||||||
|
# An average with a window size of 10 and send_every of 10 means that an average is pushed out every 30 seconds
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: temperature
|
||||||
|
device_class: temperature
|
||||||
|
unit_of_measurement: "°C"
|
||||||
|
name: "Air Temperature"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 12
|
||||||
|
sorting_group_id: sorting_group_temperature_settings
|
||||||
|
|
||||||
|
# These derivatives attempt to calculate the change per minute
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: temperature
|
||||||
|
device_class: temperature
|
||||||
|
unit_of_measurement: "°C/m"
|
||||||
|
name: "Air Temperature Change"
|
||||||
|
icon: mdi:chart-line
|
||||||
|
disabled_by_default: true
|
||||||
|
filters:
|
||||||
|
- lambda: |-
|
||||||
|
static float last_value = 0;
|
||||||
|
static float last_time = 0;
|
||||||
|
float time = (float) millis();
|
||||||
|
if (last_time == 0){
|
||||||
|
last_value = x;
|
||||||
|
last_time = time;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
float change = ( ( x - last_value ) / ( time - last_time ) ) *1000*5;
|
||||||
|
last_value = x;
|
||||||
|
last_time = time;
|
||||||
|
return change;
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 13
|
||||||
|
sorting_group_id: sorting_group_temperature_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: humidity
|
||||||
|
device_class: humidity
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
name: "Relative Humidity"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 22
|
||||||
|
sorting_group_id: sorting_group_humidity_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: humidity
|
||||||
|
device_class: humidity
|
||||||
|
unit_of_measurement: "%/m"
|
||||||
|
name: "Relative Humidity Change"
|
||||||
|
icon: mdi:chart-line
|
||||||
|
disabled_by_default: true
|
||||||
|
filters:
|
||||||
|
- lambda: |-
|
||||||
|
static float last_value = 0;
|
||||||
|
static float last_time = 0;
|
||||||
|
float time = (float) millis();
|
||||||
|
if (last_time == 0){
|
||||||
|
last_value = x;
|
||||||
|
last_time = time;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
float change = ( ( x - last_value ) / ( time - last_time ) ) *1000*5;
|
||||||
|
last_value = x;
|
||||||
|
last_time = time;
|
||||||
|
return change;
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 23
|
||||||
|
sorting_group_id: sorting_group_humidity_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: pressure
|
||||||
|
unit_of_measurement: "hPa"
|
||||||
|
name: "Pressure"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_group_id: sorting_group_pressure_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: resistance
|
||||||
|
unit_of_measurement: "Ω"
|
||||||
|
name: "Gas Resistance"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_group_id: sorting_group_pressure_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: iaq
|
||||||
|
unit_of_measurement: "AQI"
|
||||||
|
name: "Air Quality Index"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: co2
|
||||||
|
unit_of_measurement: "ppm"
|
||||||
|
name: "CO2 Equivalent"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: breath_voc
|
||||||
|
unit_of_measurement: "ppm"
|
||||||
|
name: "Breath VOC Equivalent"
|
||||||
|
filters:
|
||||||
|
- sliding_window_moving_average:
|
||||||
|
window_size: 10
|
||||||
|
send_every: 10
|
||||||
|
send_first_at: 1
|
||||||
|
web_server:
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: template
|
||||||
|
name: "IAQ Classification"
|
||||||
|
icon: "mdi:checkbox-marked-circle-outline"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 60
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
|
lambda: |-
|
||||||
|
if (int(id(iaq).state) <= 50) {
|
||||||
|
return {"Excellent"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 100) {
|
||||||
|
return {"Good"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 150) {
|
||||||
|
return {"Lightly polluted"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 200) {
|
||||||
|
return {"Moderately polluted"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 250) {
|
||||||
|
return {"Heavily polluted"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 350) {
|
||||||
|
return {"Severely polluted"};
|
||||||
|
}
|
||||||
|
else if (int(id(iaq).state) <= 500) {
|
||||||
|
return {"Extremely polluted"};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return {"unknown"};
|
||||||
|
}
|
||||||
|
|
||||||
|
- platform: bme680_bsec
|
||||||
|
iaq_accuracy:
|
||||||
|
# IAQ accuracy as a text value of Stabilizing, Uncertain, Calibrating, Calibrated
|
||||||
|
name: "AQI Accuracy"
|
||||||
|
web_server:
|
||||||
|
sorting_weight: 61
|
||||||
|
sorting_group_id: sorting_group_quality_settings
|
||||||
@@ -16,9 +16,12 @@ time:
|
|||||||
# Enable Home Assistant API
|
# Enable Home Assistant API
|
||||||
api:
|
api:
|
||||||
reboot_timeout: 15min
|
reboot_timeout: 15min
|
||||||
|
encryption:
|
||||||
|
key: !secret api-encryption-key
|
||||||
|
|
||||||
ota:
|
ota:
|
||||||
- platform: esphome
|
- platform: esphome
|
||||||
|
password: !secret ota-password
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- <<: !include binary_sensor/status_sensor.config.yaml
|
- <<: !include binary_sensor/status_sensor.config.yaml
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ ethernet:
|
|||||||
gateway: !secret iot_default_gateway
|
gateway: !secret iot_default_gateway
|
||||||
subnet: !secret iot_subnet_mask
|
subnet: !secret iot_subnet_mask
|
||||||
dns1: !secret iot_default_dns1
|
dns1: !secret iot_default_dns1
|
||||||
dns2: !secret iot_default_dns2
|
|
||||||
|
|
||||||
text_sensor:
|
text_sensor:
|
||||||
- <<: !include text_sensor/ethernet_info.config.yaml
|
- <<: !include text_sensor/ethernet_info.config.yaml
|
||||||
@@ -21,7 +21,6 @@ ethernet:
|
|||||||
gateway: !secret iot_default_gateway
|
gateway: !secret iot_default_gateway
|
||||||
subnet: !secret iot_subnet_mask
|
subnet: !secret iot_subnet_mask
|
||||||
dns1: !secret iot_default_dns1
|
dns1: !secret iot_default_dns1
|
||||||
dns2: !secret iot_default_dns2
|
|
||||||
|
|
||||||
text_sensor:
|
text_sensor:
|
||||||
- <<: !include text_sensor/ethernet_info.config.yaml
|
- <<: !include text_sensor/ethernet_info.config.yaml
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
esphome:
|
||||||
|
name: ${devicename}
|
||||||
|
platformio_options:
|
||||||
|
board_build.arduino.memory_type: qio_opi
|
||||||
|
board_build.flash_mode: dio
|
||||||
|
upload_speed: 921600
|
||||||
|
monitor_speed: 115200
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: ${board}
|
||||||
|
flash_size: 16MB
|
||||||
|
framework:
|
||||||
|
type: ${framework}
|
||||||
|
sdkconfig_options:
|
||||||
|
CONFIG_ESP32_S3_BOX_BOARD: "y"
|
||||||
|
|
||||||
|
psram:
|
||||||
|
mode: octal
|
||||||
|
speed: 80MHz
|
||||||
|
|
||||||
|
# logger:
|
||||||
|
|
||||||
|
# api:
|
||||||
|
# encryption:
|
||||||
|
# key: !secret api_encryption_psk
|
||||||
|
|
||||||
|
# ota:
|
||||||
|
# - platform: esphome
|
||||||
|
# password: !secret ota-password
|
||||||
|
|
||||||
|
ethernet:
|
||||||
|
type: W5500
|
||||||
|
clk_pin: GPIO13
|
||||||
|
mosi_pin: GPIO11
|
||||||
|
miso_pin: GPIO12
|
||||||
|
cs_pin: GPIO14
|
||||||
|
interrupt_pin: GPIO10
|
||||||
|
reset_pin: GPIO9
|
||||||
|
|
||||||
|
######################################
|
||||||
|
### Camera
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# esp32_camera:
|
||||||
|
# name: ${room_friendly_name} Camera
|
||||||
|
# external_clock:
|
||||||
|
# pin: GPIO3
|
||||||
|
# frequency: 20MHz
|
||||||
|
# i2c_pins:
|
||||||
|
# sda: GPIO48
|
||||||
|
# scl: GPIO47
|
||||||
|
# data_pins: [GPIO41, GPIO45, GPIO46, GPIO42, GPIO40, GPIO38, GPIO15, GPIO18]
|
||||||
|
# vsync_pin: GPIO1
|
||||||
|
# href_pin: GPIO2
|
||||||
|
# pixel_clock_pin: GPIO39
|
||||||
|
# power_down_pin: GPIO8
|
||||||
|
# resolution: 640x480
|
||||||
|
# jpeg_quality: 10
|
||||||
|
# #resolution: 1280x1024
|
||||||
|
# #jpeg_quality: 30
|
||||||
|
# vertical_flip: false
|
||||||
|
# horizontal_mirror: false
|
||||||
|
# # aec_mode: MANUAL
|
||||||
|
# # aec_value: 1200
|
||||||
|
# # brightness: 2
|
||||||
|
# # wb_mode: HOME
|
||||||
|
# # agc_mode: AUTO
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
### Bluetooth Proxy
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
esp32_ble_tracker:
|
||||||
|
scan_parameters:
|
||||||
|
# only use these values on Ethernet not WIFI
|
||||||
|
interval: 1100ms
|
||||||
|
window: 1100ms
|
||||||
|
active: true
|
||||||
|
|
||||||
|
bluetooth_proxy:
|
||||||
|
active: true
|
||||||
+20
-4
@@ -1,8 +1,22 @@
|
|||||||
|
esphome:
|
||||||
|
name: ${devicename}
|
||||||
|
platformio_options:
|
||||||
|
board_build.arduino.memory_type: qio_opi
|
||||||
|
board_build.flash_mode: dio
|
||||||
|
upload_speed: 921600
|
||||||
|
monitor_speed: 115200
|
||||||
|
|
||||||
esp32:
|
esp32:
|
||||||
board: esp32-s3
|
board: ${board}
|
||||||
|
flash_size: 16MB
|
||||||
framework:
|
framework:
|
||||||
#type: arduino
|
type: ${framework}
|
||||||
type: esp-idf
|
sdkconfig_options:
|
||||||
|
CONFIG_ESP32_S3_BOX_BOARD: "y"
|
||||||
|
|
||||||
|
psram:
|
||||||
|
mode: octal
|
||||||
|
speed: 80MHz
|
||||||
|
|
||||||
ethernet:
|
ethernet:
|
||||||
id: eth
|
id: eth
|
||||||
@@ -21,7 +35,9 @@ ethernet:
|
|||||||
gateway: !secret iot_default_gateway
|
gateway: !secret iot_default_gateway
|
||||||
subnet: !secret iot_subnet_mask
|
subnet: !secret iot_subnet_mask
|
||||||
dns1: !secret iot_default_dns1
|
dns1: !secret iot_default_dns1
|
||||||
dns2: !secret iot_default_dns2
|
|
||||||
|
packages:
|
||||||
|
ble_proxy: !include ../common/ble_proxy.yaml
|
||||||
|
|
||||||
text_sensor:
|
text_sensor:
|
||||||
- <<: !include text_sensor/ethernet_info.config.yaml
|
- <<: !include text_sensor/ethernet_info.config.yaml
|
||||||
@@ -2,29 +2,27 @@ esphome:
|
|||||||
captive_portal:
|
captive_portal:
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
#power_save_mode: none
|
# Enable fast connect
|
||||||
networks:
|
fast_connect: true
|
||||||
- ssid: !secret Wifi_SSID
|
min_auth_mode: WPA2
|
||||||
password: !secret Wifi_PWD
|
use_address: ${devicename}.local
|
||||||
|
|
||||||
#- ssid: !secret IoT_Wifi_SSID
|
networks:
|
||||||
# password: !secret IoT_Wifi_PWD
|
- ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
hidden: true
|
||||||
|
|
||||||
manual_ip:
|
manual_ip:
|
||||||
static_ip: ${static_ip}
|
static_ip: ${static_ip}
|
||||||
gateway: !secret iot_default_gateway
|
gateway: !secret iot_default_gateway
|
||||||
subnet: !secret iot_subnet_mask
|
subnet: !secret iot_subnet_mask
|
||||||
|
dns1: !secret iot_default_dns1
|
||||||
use_address: ${devicename}.local
|
|
||||||
|
|
||||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
ap:
|
ap:
|
||||||
ssid: "${friendly_name}"
|
ssid: "${friendly_name}"
|
||||||
password: !secret fallback_ap_password
|
password: !secret fallback_ap_password
|
||||||
|
|
||||||
# Enable fast connect
|
|
||||||
fast_connect: true
|
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- <<: !include sensor/rssi_sensor.config.yaml
|
- <<: !include sensor/rssi_sensor.config.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
|
esphome:
|
||||||
captive_portal:
|
captive_portal:
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
power_save_mode: none
|
# Enable fast connect
|
||||||
networks:
|
fast_connect: true
|
||||||
- ssid: !secret Wifi_SSID
|
min_auth_mode: WPA2
|
||||||
password: !secret Wifi_PWD
|
|
||||||
|
|
||||||
- ssid: !secret IoT_Wifi_SSID
|
|
||||||
password: !secret IoT_Wifi_PWD
|
|
||||||
|
|
||||||
use_address: ${devicename}.local
|
use_address: ${devicename}.local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
- ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
hidden: true
|
||||||
|
|
||||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
ap:
|
ap:
|
||||||
ssid: "${friendly_name}"
|
ssid: "${friendly_name}"
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
esphome:
|
|
||||||
captive_portal:
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret Wifi_SSID
|
|
||||||
password: !secret Wifi_PWD
|
|
||||||
|
|
||||||
#- ssid: !secret IoT_Wifi_SSID
|
|
||||||
# password: !secret IoT_Wifi_PWD
|
|
||||||
|
|
||||||
use_address: ${devicename}.local
|
|
||||||
|
|
||||||
manual_ip:
|
|
||||||
static_ip: ${static_ip}
|
|
||||||
gateway: !secret iot_default_gateway
|
|
||||||
subnet: !secret iot_subnet_mask
|
|
||||||
|
|
||||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
||||||
ap:
|
|
||||||
ssid: "${friendly_name}"
|
|
||||||
password: !secret fallback_ap_password
|
|
||||||
|
|
||||||
# Enable fast connect
|
|
||||||
fast_connect: true
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- <<: !include sensor/rssi_sensor.config.yaml
|
|
||||||
|
|
||||||
text_sensor:
|
|
||||||
- <<: !include text_sensor/wifi_sensor.config.yaml
|
|
||||||
@@ -53,25 +53,19 @@
|
|||||||
|
|
||||||
substitutions:
|
substitutions:
|
||||||
name: everything-presence-lite-8fa4fc
|
name: everything-presence-lite-8fa4fc
|
||||||
|
devicename: everything-presence-lite-8fa4fc
|
||||||
friendly_name: Everything Presence Great Room
|
friendly_name: Everything Presence Great Room
|
||||||
|
static_ip: !secret everything-presence-greate-room-ip
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
base: !include common/device_base.yaml
|
||||||
|
network: !include common/wifi.yaml
|
||||||
EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main
|
EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${name}
|
name: ${name}
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
api:
|
|
||||||
encryption:
|
|
||||||
key: Qi7Fi+ayleijFB6gE1/jnEtuI95NCEiwNM/QnqB+e28=
|
|
||||||
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_password
|
|
||||||
|
|
||||||
binary_sensor:
|
|
||||||
- platform: status
|
|
||||||
name: "Status"
|
|
||||||
|
|
||||||
# sensor:
|
# sensor:
|
||||||
# - platform: bme280_i2c
|
# - platform: bme280_i2c
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
||||||
substitutions:
|
substitutions:
|
||||||
devicename: furnace-room-multisensor
|
devicename: furnace-room-multisensor
|
||||||
entity_name: furnace_room_multisensor
|
entity_name: furnace_room_multisensor
|
||||||
@@ -6,126 +7,42 @@ substitutions:
|
|||||||
board: nodemcuv2
|
board: nodemcuv2
|
||||||
static_ip: !secret furnace-room-multisensor-ip
|
static_ip: !secret furnace-room-multisensor-ip
|
||||||
|
|
||||||
|
moisture: D1
|
||||||
|
door: D2
|
||||||
|
one_wire: D5
|
||||||
|
ultrasonic_trigger: D6
|
||||||
|
ultrasonic_echo: D7
|
||||||
|
|
||||||
# For the reed switches
|
packages:
|
||||||
door: 35
|
network: !include common/wifi.yaml
|
||||||
moisture: 36
|
device_base: !include common/device_base.yaml
|
||||||
|
web_server: !include common/web_server.yaml
|
||||||
# For the ultrasonic sensor
|
|
||||||
trigger: 14
|
|
||||||
echo: 15
|
|
||||||
|
|
||||||
# Infrared Sensor
|
|
||||||
ir_tx: 12
|
|
||||||
ir_rx: 39
|
|
||||||
|
|
||||||
# I2C Pins
|
|
||||||
i2c_sda: 13
|
|
||||||
i2c_scl: 16
|
|
||||||
|
|
||||||
# For the ethernet adapter
|
|
||||||
ethernet_mdc_pin: 23
|
|
||||||
ethernet_mdio_pin: 18
|
|
||||||
ethernet_clk_pin: 0
|
|
||||||
|
|
||||||
# For the relays
|
|
||||||
relay1: 32
|
|
||||||
relay2: 33
|
|
||||||
|
|
||||||
# Built-in button
|
|
||||||
button1: 34
|
|
||||||
|
|
||||||
# For the HVAC temperature sensors
|
|
||||||
one_wire: 17
|
|
||||||
|
|
||||||
one_wire:
|
|
||||||
- platform: gpio
|
|
||||||
pin: ${one_wire}
|
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
name_add_mac_suffix: false
|
name_add_mac_suffix: false
|
||||||
|
|
||||||
packages:
|
esp8266:
|
||||||
network: !include common/olimex_evb.yaml
|
board: ${board}
|
||||||
device_base: !include common/device_base.yaml
|
|
||||||
|
|
||||||
|
|
||||||
# Included in common/olimex-evb.yaml
|
|
||||||
# esp32:
|
|
||||||
# board: esp32dev
|
|
||||||
# framework:
|
|
||||||
# type: esp-idf
|
|
||||||
|
|
||||||
# Enable logging
|
# Enable logging
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
web_server:
|
api: # Using settings from common/device_base.yaml
|
||||||
port: 80
|
|
||||||
version: 3
|
|
||||||
include_internal: True
|
|
||||||
|
|
||||||
# # Enable Home Assistant API
|
ota: # Using settings from common/device_base.yaml
|
||||||
# api:
|
|
||||||
# encryption:
|
|
||||||
# key: "mupTLNBggWPdKHxBeY1yV47qXgyhVJUgIVVAvfGrZ40="
|
|
||||||
|
|
||||||
# ota:
|
one_wire:
|
||||||
# - platform: esphome
|
|
||||||
# password: "b43bd5c6f724d64a9bd4e92504830d8f"
|
|
||||||
|
|
||||||
remote_receiver:
|
|
||||||
pin: ${ir_rx}
|
|
||||||
dump: all
|
|
||||||
|
|
||||||
remote_transmitter:
|
|
||||||
pin: ${ir_tx}
|
|
||||||
carrier_duty_percent: 50%
|
|
||||||
|
|
||||||
i2c:
|
|
||||||
sda: ${i2c_sda}
|
|
||||||
scl: ${i2c_scl}
|
|
||||||
scan: true
|
|
||||||
id: bus_a
|
|
||||||
|
|
||||||
binary_sensor:
|
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
name: "ESP32-EVB button"
|
pin: ${one_wire}
|
||||||
pin: ${button1}
|
|
||||||
|
|
||||||
- platform: gpio
|
|
||||||
name: "Door"
|
|
||||||
device_class: door
|
|
||||||
filters:
|
|
||||||
- invert:
|
|
||||||
pin:
|
|
||||||
number: ${door}
|
|
||||||
# mode: INPUT_PULLUP
|
|
||||||
|
|
||||||
- platform: gpio
|
|
||||||
name: "Moisture"
|
|
||||||
device_class: moisture
|
|
||||||
pin:
|
|
||||||
number: ${moisture}
|
|
||||||
# mode: INPUT_PULLUP
|
|
||||||
|
|
||||||
|
|
||||||
switch:
|
|
||||||
- platform: gpio
|
|
||||||
pin: ${relay1}
|
|
||||||
name: "Relay1"
|
|
||||||
|
|
||||||
- platform: gpio
|
|
||||||
pin: ${relay2}
|
|
||||||
name: "Relay2"
|
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: ultrasonic
|
- platform: ultrasonic
|
||||||
trigger_pin: ${trigger}
|
trigger_pin: ${ultrasonic_trigger}
|
||||||
echo_pin: ${echo}
|
echo_pin: ${ultrasonic_echo}
|
||||||
id: ultrasonic_source
|
id: ultrasonic_source
|
||||||
update_interval: 1s
|
update_interval: 60s
|
||||||
internal: True
|
internal: True
|
||||||
filters:
|
filters:
|
||||||
- sliding_window_moving_average:
|
- sliding_window_moving_average:
|
||||||
@@ -136,17 +53,9 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.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:
|
- platform: copy
|
||||||
id: distance_from_top
|
source_id: ultrasonic_source
|
||||||
state: !lambda 'return id(ultrasonic_source).state;'
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
unit_of_measurement: "cm"
|
unit_of_measurement: "cm"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: distance_from_bottom
|
id: distance_from_bottom
|
||||||
@@ -160,13 +69,8 @@ sensor:
|
|||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.0
|
max_value: 150.0
|
||||||
|
|
||||||
on_value:
|
- platform: copy
|
||||||
then:
|
source_id: ultrasonic_source
|
||||||
- sensor.template.publish:
|
|
||||||
id: level_in_bags
|
|
||||||
state: !lambda 'return id(distance_from_bottom).state;'
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
unit_of_measurement: "cm"
|
unit_of_measurement: "cm"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: distance_from_top
|
id: distance_from_top
|
||||||
@@ -181,8 +85,8 @@ sensor:
|
|||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 150.0
|
max_value: 150.0
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
- platform: template
|
source_id: distance_from_bottom
|
||||||
unit_of_measurement: "bags"
|
unit_of_measurement: "bags"
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
id: level_in_bags
|
id: level_in_bags
|
||||||
@@ -196,3 +100,88 @@ sensor:
|
|||||||
- clamp:
|
- clamp:
|
||||||
min_value: 0.0
|
min_value: 0.0
|
||||||
max_value: 10.0
|
max_value: 10.0
|
||||||
|
|
||||||
|
- platform: dallas_temp
|
||||||
|
address: 0x5a3c01d6078a2e28
|
||||||
|
name: "Probe 1"
|
||||||
|
id: probe1
|
||||||
|
device_class: "temperature"
|
||||||
|
update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: return x * (9.0/5.0) + 32.0;
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
- round: 2
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
|
unit_of_measurement: "°F"
|
||||||
|
state_class: measurement
|
||||||
|
|
||||||
|
- platform: dallas_temp
|
||||||
|
address: 0x6b3c01d6077bbb28
|
||||||
|
name: "Probe 2"
|
||||||
|
id: probe2
|
||||||
|
device_class: "temperature"
|
||||||
|
update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
|
- lambda: return round( (x * (9.0/5.0) + 32.0) * 100.0) / 100.0;
|
||||||
|
unit_of_measurement: "°F"
|
||||||
|
state_class: measurement
|
||||||
|
|
||||||
|
- platform: dallas_temp
|
||||||
|
address: 0x2a3c01d6073e0728
|
||||||
|
name: "Probe 3"
|
||||||
|
id: probe3
|
||||||
|
device_class: "temperature"
|
||||||
|
update_interval: 5s
|
||||||
|
filters:
|
||||||
|
- lambda: return round( (x * (9.0/5.0) + 32.0) * 100.0) / 100.0;
|
||||||
|
- clamp:
|
||||||
|
min_value: 0.0
|
||||||
|
max_value: 150.0
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
|
accuracy_decimals: 2
|
||||||
|
unit_of_measurement: "°F"
|
||||||
|
state_class: measurement
|
||||||
|
|
||||||
|
- platform: template
|
||||||
|
name: "Delta"
|
||||||
|
id: hvac_delta
|
||||||
|
icon: mdi:thermometer-lines
|
||||||
|
lambda: |-
|
||||||
|
return id(probe1).state - id(probe2).state;
|
||||||
|
update_interval: 10s
|
||||||
|
unit_of_measurement: "°F"
|
||||||
|
state_class: measurement
|
||||||
|
device_class: ""
|
||||||
|
accuracy_decimals: 2
|
||||||
|
filters:
|
||||||
|
- or:
|
||||||
|
- throttle: 60s
|
||||||
|
- delta: 1.0
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
name: "Door"
|
||||||
|
device_class: door
|
||||||
|
pin:
|
||||||
|
number: ${door}
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
|
||||||
|
- platform: gpio
|
||||||
|
name: "Leak"
|
||||||
|
device_class: moisture
|
||||||
|
pin:
|
||||||
|
number: ${moisture}
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
inverted: true
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ esphome:
|
|||||||
friendly_name: ${friendly_name}
|
friendly_name: ${friendly_name}
|
||||||
api:
|
api:
|
||||||
encryption:
|
encryption:
|
||||||
key: iAx9Roq7zrUefNVRfIGGd+5u7QXMYdCMoCPXfIIACpk=
|
key: !secret api-encryption-key
|
||||||
|
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v
|
|
||||||
substitutions:
|
|
||||||
devicename: hvac-multisensor
|
|
||||||
entity_name: hvac_multisensor
|
|
||||||
friendly_name: HVAC MultiSensor
|
|
||||||
comment: Clever MultiSensor
|
|
||||||
platform: ESP8266
|
|
||||||
board: d1_mini
|
|
||||||
#variant: esp32
|
|
||||||
# framework: esp-idf
|
|
||||||
#framework: arduino
|
|
||||||
static_ip: !secret hvac-multisensor-ip
|
|
||||||
|
|
||||||
packages:
|
|
||||||
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:
|
|
||||||
#level: VERBOSE
|
|
||||||
|
|
||||||
|
|
||||||
one_wire:
|
|
||||||
- platform: gpio
|
|
||||||
pin: D5
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0x5a3c01d6078a2e28
|
|
||||||
name: "Probe 1"
|
|
||||||
id: probe1
|
|
||||||
icon: mdi:thermostat
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: |-
|
|
||||||
float val = x;
|
|
||||||
if (isnan(val)) {
|
|
||||||
val = 0.0;
|
|
||||||
}
|
|
||||||
return val * (9.0/5.0) + 32.0;
|
|
||||||
- clamp:
|
|
||||||
min_value: 0.0
|
|
||||||
max_value: 150.0
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0x6b3c01d6077bbb28
|
|
||||||
name: "Probe 2"
|
|
||||||
id: probe2
|
|
||||||
icon: mdi:thermostat
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
- clamp:
|
|
||||||
min_value: 0.0
|
|
||||||
max_value: 150.0
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: dallas_temp
|
|
||||||
address: 0x2a3c01d6073e0728
|
|
||||||
name: "Probe 3"
|
|
||||||
id: probe3
|
|
||||||
icon: mdi:thermostat
|
|
||||||
update_interval: 10s
|
|
||||||
filters:
|
|
||||||
- lambda: return x * (9.0/5.0) + 32.0;
|
|
||||||
- clamp:
|
|
||||||
min_value: 0.0
|
|
||||||
max_value: 150.0
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: "Delta"
|
|
||||||
id: hvac_delta
|
|
||||||
icon: mdi:thermometer-lines
|
|
||||||
lambda: |-
|
|
||||||
return round( (id(probe1).state - id(probe2).state) * 100.0) / 100.0;
|
|
||||||
update_interval: 10s
|
|
||||||
unit_of_measurement: "°F"
|
|
||||||
state_class: measurement
|
|
||||||
device_class: ""
|
|
||||||
accuracy_decimals: 1
|
|
||||||
filters:
|
|
||||||
#- lambda: 'return round( (id(probe1).state - id(probe2).state) * 100.0) / 100.0;'
|
|
||||||
- clamp:
|
|
||||||
min_value: -100.0
|
|
||||||
max_value: 100.0
|
|
||||||
- or:
|
|
||||||
- throttle: 60s
|
|
||||||
- delta: 1.0
|
|
||||||
+38
-14
@@ -78,6 +78,30 @@ substitutions:
|
|||||||
# >= v1.3: 7305
|
# >= v1.3: 7305
|
||||||
voltage_cal: '7305'
|
voltage_cal: '7305'
|
||||||
|
|
||||||
|
|
||||||
|
spi_clk: 18
|
||||||
|
spi_miso: 19
|
||||||
|
spi_mosi: 23
|
||||||
|
ic1_main: 5
|
||||||
|
ic1_addon1: 0
|
||||||
|
ic1_addon2: 27
|
||||||
|
ic1_addon3: 2
|
||||||
|
ic2_main: 4
|
||||||
|
ic2_addon1: 16
|
||||||
|
ic2_addon2: 17
|
||||||
|
ic2_addon3: 21
|
||||||
|
|
||||||
|
# ethernet:
|
||||||
|
# id: eth
|
||||||
|
# type: W5500
|
||||||
|
# clk_pin: GPIO13
|
||||||
|
# mosi_pin: GPIO11
|
||||||
|
# miso_pin: GPIO12
|
||||||
|
# cs_pin: GPIO14
|
||||||
|
# interrupt_pin: GPIO10
|
||||||
|
# reset_pin: GPIO9
|
||||||
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
wifi: !include common/wifi.yaml
|
wifi: !include common/wifi.yaml
|
||||||
# device_base: !include common/complex_esp32_base.yaml
|
# device_base: !include common/complex_esp32_base.yaml
|
||||||
@@ -95,19 +119,19 @@ time:
|
|||||||
timezone: America/Detroit
|
timezone: America/Detroit
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
level: DEBUG
|
# level: DEBUG
|
||||||
logs:
|
# logs:
|
||||||
sensor: DEBUG
|
# sensor: DEBUG
|
||||||
|
|
||||||
spi:
|
spi:
|
||||||
clk_pin: 18
|
clk_pin: ${spi_clk}
|
||||||
miso_pin: 19
|
miso_pin: ${spi_miso}
|
||||||
mosi_pin: 23
|
mosi_pin: ${spi_mosi}
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
#IC1 Main
|
#IC1 Main
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 5
|
cs_pin: ${ic1_main}
|
||||||
phase_a:
|
phase_a:
|
||||||
voltage:
|
voltage:
|
||||||
name: ${friendly_name} [V]
|
name: ${friendly_name} [V]
|
||||||
@@ -171,7 +195,7 @@ sensor:
|
|||||||
|
|
||||||
#IC2 Main
|
#IC2 Main
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 4
|
cs_pin: ${ic2_main}
|
||||||
phase_a:
|
phase_a:
|
||||||
current:
|
current:
|
||||||
name: ${friendly_name} ${ct04Name} [A]
|
name: ${friendly_name} ${ct04Name} [A]
|
||||||
@@ -230,7 +254,7 @@ sensor:
|
|||||||
|
|
||||||
#IC1 AddOn 1
|
#IC1 AddOn 1
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 0
|
cs_pin: ${ic1_addon1}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
name: ${friendly_name} ${ct07Name} [W]
|
name: ${friendly_name} ${ct07Name} [W]
|
||||||
@@ -273,7 +297,7 @@ sensor:
|
|||||||
update_interval: ${update_time}
|
update_interval: ${update_time}
|
||||||
#IC2 AddOn 1
|
#IC2 AddOn 1
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 16
|
cs_pin: ${ic2_addon1}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
name: ${friendly_name} ${ct10Name} [W]
|
name: ${friendly_name} ${ct10Name} [W]
|
||||||
@@ -318,7 +342,7 @@ sensor:
|
|||||||
|
|
||||||
#IC1 AddOn 2
|
#IC1 AddOn 2
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 27
|
cs_pin: ${ic1_addon2}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
name: ${friendly_name} ${ct13Name} [W]
|
name: ${friendly_name} ${ct13Name} [W]
|
||||||
@@ -363,7 +387,7 @@ sensor:
|
|||||||
update_interval: ${update_time}
|
update_interval: ${update_time}
|
||||||
#IC2 AddOn 2
|
#IC2 AddOn 2
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 17
|
cs_pin: ${ic2_addon2}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
name: ${friendly_name} ${ct16Name} [W]
|
name: ${friendly_name} ${ct16Name} [W]
|
||||||
@@ -408,7 +432,7 @@ sensor:
|
|||||||
#IC1 AddOn 3
|
#IC1 AddOn 3
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
#do not use GPIO2 if ESP32 has an on-board LED assigned to it
|
#do not use GPIO2 if ESP32 has an on-board LED assigned to it
|
||||||
cs_pin: 2
|
cs_pin: ${ic1_addon3}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
name: ${friendly_name} ${ct19Name} [W]
|
name: ${friendly_name} ${ct19Name} [W]
|
||||||
@@ -449,7 +473,7 @@ sensor:
|
|||||||
update_interval: ${update_time}
|
update_interval: ${update_time}
|
||||||
#IC2 AddOn 3
|
#IC2 AddOn 3
|
||||||
- platform: atm90e32
|
- platform: atm90e32
|
||||||
cs_pin: 21
|
cs_pin: ${ic2_addon3}
|
||||||
phase_a:
|
phase_a:
|
||||||
power:
|
power:
|
||||||
#name: ${friendly_name} ${ct22Name} [W]
|
#name: ${friendly_name} ${ct22Name} [W]
|
||||||
|
|||||||
+80
-94
@@ -1,56 +1,42 @@
|
|||||||
esphome:
|
substitutions:
|
||||||
name: test-device-1
|
devicename: test-device-1
|
||||||
|
entity_name: test_device_1
|
||||||
friendly_name: Test Device 1
|
friendly_name: Test Device 1
|
||||||
|
board: esp32dev
|
||||||
|
framework: esp-idf
|
||||||
|
comment: Clever Device
|
||||||
|
|
||||||
esp32:
|
esp32:
|
||||||
board: esp32dev
|
board: ${board}
|
||||||
framework:
|
framework:
|
||||||
type: esp-idf
|
type: ${framework}
|
||||||
|
|
||||||
# Enable logging
|
packages:
|
||||||
logger:
|
network: !include common/wifi_dhcp.yaml
|
||||||
|
device_base: !include common/device_base.yaml
|
||||||
# Enable Home Assistant API
|
web_server: !include common/web_server.yaml
|
||||||
api:
|
|
||||||
encryption:
|
|
||||||
key: "PySr6PXZw6crnoT/oQJC3hYyVnPlXi2OwF8CAuA1d1U="
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: "d9ccd2607c37bc67061f8f76971ec953"
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_password
|
|
||||||
|
|
||||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
||||||
ap:
|
|
||||||
ssid: "Test-Device-1 Fallback Hotspot"
|
|
||||||
password: "ELfuAtKmRwOC"
|
|
||||||
|
|
||||||
# For Ultrasonic Sensor
|
# For Ultrasonic Sensor
|
||||||
# trigger_pin: GPIO13
|
# trigger_pin: GPIO13
|
||||||
# echo_pin: GPIO14
|
# echo_pin: GPIO14
|
||||||
|
|
||||||
captive_portal:
|
# i2c:
|
||||||
|
# - id: bus_a
|
||||||
|
# sda: 21
|
||||||
|
# scl: 22
|
||||||
|
# scan: true
|
||||||
|
|
||||||
i2c:
|
# - id: bus_b
|
||||||
- id: bus_a
|
# sda: 32
|
||||||
sda: 21
|
# scl: 33
|
||||||
scl: 22
|
# scan: true
|
||||||
scan: true
|
|
||||||
|
|
||||||
- id: bus_b
|
# sensor:
|
||||||
sda: 32
|
# - platform: ultrasonic
|
||||||
scl: 33
|
# update_interval: 1s
|
||||||
scan: true
|
# trigger_pin: GPIO13
|
||||||
|
# echo_pin: GPIO14
|
||||||
sensor:
|
# name: "Ultrasonic Sensor"
|
||||||
- platform: ultrasonic
|
|
||||||
update_interval: 1s
|
|
||||||
trigger_pin: GPIO13
|
|
||||||
echo_pin: GPIO14
|
|
||||||
name: "Ultrasonic Sensor"
|
|
||||||
|
|
||||||
# - platform: bme280_i2c
|
# - platform: bme280_i2c
|
||||||
# i2c_id: bus_a
|
# i2c_id: bus_a
|
||||||
@@ -74,63 +60,63 @@ sensor:
|
|||||||
# humidity:
|
# humidity:
|
||||||
# name: "BME280 76B Humidity"
|
# name: "BME280 76B Humidity"
|
||||||
|
|
||||||
- platform: bme680
|
# - platform: bme680
|
||||||
i2c_id: bus_a
|
# i2c_id: bus_a
|
||||||
temperature:
|
# temperature:
|
||||||
name: "BME680 Temperature"
|
# name: "BME680 Temperature"
|
||||||
oversampling: 16x
|
# oversampling: 16x
|
||||||
pressure:
|
# pressure:
|
||||||
name: "BME680 Pressure"
|
# name: "BME680 Pressure"
|
||||||
humidity:
|
# humidity:
|
||||||
id: "humidity"
|
# id: "humidity"
|
||||||
name: "BME680 Humidity"
|
# name: "BME680 Humidity"
|
||||||
gas_resistance:
|
# gas_resistance:
|
||||||
id: "gas_resistance"
|
# id: "gas_resistance"
|
||||||
name: "BME680 Gas Resistance"
|
# name: "BME680 Gas Resistance"
|
||||||
address: 0x77
|
# address: 0x77
|
||||||
update_interval: 60s
|
# update_interval: 60s
|
||||||
- platform: template
|
# - platform: template
|
||||||
name: "BME680 Indoor Air Quality"
|
# name: "BME680 Indoor Air Quality"
|
||||||
id: iaq
|
# id: iaq
|
||||||
icon: "mdi:gauge"
|
# icon: "mdi:gauge"
|
||||||
# calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh]
|
# # calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh]
|
||||||
lambda: |-
|
# lambda: |-
|
||||||
return log(id(gas_resistance).state) + 0.04 * id(humidity).state;
|
# return log(id(gas_resistance).state) + 0.04 * id(humidity).state;
|
||||||
state_class: "measurement"
|
# state_class: "measurement"
|
||||||
|
|
||||||
|
|
||||||
text_sensor:
|
# text_sensor:
|
||||||
- platform: template
|
# - platform: template
|
||||||
name: "BME680 IAQ Classification"
|
# name: "BME680 IAQ Classification"
|
||||||
icon: "mdi:checkbox-marked-circle-outline"
|
# icon: "mdi:checkbox-marked-circle-outline"
|
||||||
lambda: |-
|
# lambda: |-
|
||||||
if (int(id(iaq).state) <= 50) {
|
# if (int(id(iaq).state) <= 50) {
|
||||||
return {"Excellent"};
|
# return {"Excellent"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 100) {
|
# else if (int(id(iaq).state) <= 100) {
|
||||||
return {"Good"};
|
# return {"Good"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 150) {
|
# else if (int(id(iaq).state) <= 150) {
|
||||||
return {"Lightly polluted"};
|
# return {"Lightly polluted"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 200) {
|
# else if (int(id(iaq).state) <= 200) {
|
||||||
return {"Moderately polluted"};
|
# return {"Moderately polluted"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 250) {
|
# else if (int(id(iaq).state) <= 250) {
|
||||||
return {"Heavily polluted"};
|
# return {"Heavily polluted"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 350) {
|
# else if (int(id(iaq).state) <= 350) {
|
||||||
return {"Severely polluted"};
|
# return {"Severely polluted"};
|
||||||
}
|
# }
|
||||||
else if (int(id(iaq).state) <= 500) {
|
# else if (int(id(iaq).state) <= 500) {
|
||||||
return {"Extremely polluted"};
|
# return {"Extremely polluted"};
|
||||||
}
|
# }
|
||||||
else {
|
# else {
|
||||||
return {"unknown"};
|
# return {"unknown"};
|
||||||
}
|
# }
|
||||||
|
|
||||||
|
|
||||||
esp32_touch:
|
# esp32_touch:
|
||||||
|
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
|
|||||||
@@ -5,11 +5,13 @@ substitutions:
|
|||||||
comment: Clever MultiSensor
|
comment: Clever MultiSensor
|
||||||
platform: ESP8266
|
platform: ESP8266
|
||||||
board: nodemcu
|
board: nodemcu
|
||||||
|
i2c_id: bus_a
|
||||||
static_ip: !secret utility-room-multisensor-ip
|
static_ip: !secret utility-room-multisensor-ip
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
network: !include common/wifi.yaml
|
network: !include common/wifi.yaml
|
||||||
device_base: !include common/device_base.yaml
|
device_base: !include common/device_base.yaml
|
||||||
|
bme680: !include common/bme680.yaml
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${devicename}
|
name: ${devicename}
|
||||||
@@ -29,207 +31,6 @@ web_server:
|
|||||||
include_internal: True
|
include_internal: True
|
||||||
|
|
||||||
i2c:
|
i2c:
|
||||||
- id: bus_a
|
- id: ${i2c_id}
|
||||||
sda: D6
|
sda: D6
|
||||||
scl: D5
|
scl: D5
|
||||||
|
|
||||||
bme680_bsec:
|
|
||||||
i2c_id: bus_a
|
|
||||||
|
|
||||||
# i2c address
|
|
||||||
# -----------
|
|
||||||
# Common values are:
|
|
||||||
# - 0x76
|
|
||||||
# - 0x77
|
|
||||||
# Default: 0x76
|
|
||||||
address: 0x77
|
|
||||||
|
|
||||||
# Temperature offset
|
|
||||||
# ------------------
|
|
||||||
# Useful if device is in enclosure and reads too high
|
|
||||||
# Default: 0
|
|
||||||
temperature_offset: 0
|
|
||||||
|
|
||||||
# IAQ calculation mode
|
|
||||||
# --------------------
|
|
||||||
# Available options:
|
|
||||||
# - static (for fixed position devices)
|
|
||||||
# - mobile (for on person or other moveable devices)
|
|
||||||
# Default: static
|
|
||||||
iaq_mode: static
|
|
||||||
|
|
||||||
# Sample rate
|
|
||||||
# -----------
|
|
||||||
# This controls the sampling rate for gas-dependant sensors and will govern the interval
|
|
||||||
# at which the sensor heater is operated.
|
|
||||||
# By default this rate will also be used for temperature, pressure and humidity sensors
|
|
||||||
# but these can be overridden on a per-sensor level if required.
|
|
||||||
#
|
|
||||||
# Available options:
|
|
||||||
# - lp (low power - samples every 3 seconds)
|
|
||||||
# - ulp (ultra low power - samples every 5 minutes)
|
|
||||||
# Default: lp
|
|
||||||
sample_rate: lp
|
|
||||||
|
|
||||||
# Interval at which to save BSEC state
|
|
||||||
# ------------------------------------
|
|
||||||
# Default: 6h
|
|
||||||
state_save_interval: 6h
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
# - platform: bme680
|
|
||||||
# i2c_id: bus_a
|
|
||||||
# address: 0x77
|
|
||||||
# update_interval: 3s
|
|
||||||
# temperature:
|
|
||||||
# name: "Standard Temperature"
|
|
||||||
# oversampling: 16x
|
|
||||||
# device_class: temperature
|
|
||||||
# unit_of_measurement: "°C"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 10
|
|
||||||
# pressure:
|
|
||||||
# name: "Standard Pressure"
|
|
||||||
# device_class: atmospheric_pressure
|
|
||||||
# unit_of_measurement: hPa
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 20
|
|
||||||
# humidity:
|
|
||||||
# id: "humidity"
|
|
||||||
# name: "Standard Humidity"
|
|
||||||
# device_class: humidity
|
|
||||||
# unit_of_measurement: "%"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 30
|
|
||||||
# gas_resistance:
|
|
||||||
# id: "gas_resistance"
|
|
||||||
# name: "Standard Gas Resistance"
|
|
||||||
# unit_of_measurement: "Ω"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 40
|
|
||||||
|
|
||||||
# - platform: template
|
|
||||||
# name: "Standard Indoor Air Quality"
|
|
||||||
# id: iaq
|
|
||||||
# icon: "mdi:gauge"
|
|
||||||
# # calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh]
|
|
||||||
# lambda: |-
|
|
||||||
# return log(id(gas_resistance).state) + 0.04 * id(humidity).state;
|
|
||||||
# state_class: "measurement"
|
|
||||||
# web_server:
|
|
||||||
# sorting_weight: 50
|
|
||||||
|
|
||||||
- platform: bme680_bsec
|
|
||||||
temperature:
|
|
||||||
# Temperature in °C
|
|
||||||
name: "Temperature"
|
|
||||||
id: temp
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "°C"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 11
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
pressure:
|
|
||||||
# Pressure in hPa
|
|
||||||
name: "Pressure"
|
|
||||||
id: pressure
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "hPa"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 21
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
humidity:
|
|
||||||
# Relative humidity %
|
|
||||||
id: humidity
|
|
||||||
name: "Relative Humidity"
|
|
||||||
sample_rate: lp
|
|
||||||
unit_of_measurement: "%"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 31
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
gas_resistance:
|
|
||||||
# Gas resistance in Ω
|
|
||||||
name: "Gas Resistance"
|
|
||||||
id: gas_resistance
|
|
||||||
unit_of_measurement: "Ω"
|
|
||||||
disabled_by_default: True
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 41
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
iaq:
|
|
||||||
# Indoor air quality value
|
|
||||||
name: "Air Quality Index"
|
|
||||||
unit_of_measurement: "AQI"
|
|
||||||
id: iaq
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 51
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
iaq_accuracy:
|
|
||||||
# IAQ accuracy as a numeric value of 0, 1, 2, 3
|
|
||||||
name: "Numeric IAQ Accuracy"
|
|
||||||
id: iaq_accuracy
|
|
||||||
disabled_by_default: True
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 71
|
|
||||||
co2_equivalent:
|
|
||||||
# CO2 equivalent estimate in ppm
|
|
||||||
name: "CO2 Equivalent"
|
|
||||||
id: co2
|
|
||||||
unit_of_measurement: "ppm"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 81
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
breath_voc_equivalent:
|
|
||||||
# Volatile organic compounds equivalent estimate in ppm
|
|
||||||
name: "Breath VOC Equivalent"
|
|
||||||
id: breath_voc
|
|
||||||
unit_of_measurement: "ppm"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 91
|
|
||||||
filters:
|
|
||||||
- median
|
|
||||||
|
|
||||||
text_sensor:
|
|
||||||
- platform: template
|
|
||||||
name: "IAQ Classification"
|
|
||||||
icon: "mdi:checkbox-marked-circle-outline"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 60
|
|
||||||
lambda: |-
|
|
||||||
if (int(id(iaq).state) <= 50) {
|
|
||||||
return {"Excellent"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 100) {
|
|
||||||
return {"Good"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 150) {
|
|
||||||
return {"Lightly polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 200) {
|
|
||||||
return {"Moderately polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 250) {
|
|
||||||
return {"Heavily polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 350) {
|
|
||||||
return {"Severely polluted"};
|
|
||||||
}
|
|
||||||
else if (int(id(iaq).state) <= 500) {
|
|
||||||
return {"Extremely polluted"};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return {"unknown"};
|
|
||||||
}
|
|
||||||
|
|
||||||
- platform: bme680_bsec
|
|
||||||
iaq_accuracy:
|
|
||||||
# IAQ accuracy as a text value of Stabilizing, Uncertain, Calibrating, Calibrated
|
|
||||||
name: "AQI Accuracy"
|
|
||||||
web_server:
|
|
||||||
sorting_weight: 61
|
|
||||||
@@ -106,7 +106,6 @@ kitchen_motion:
|
|||||||
icon: mdi:motion-sensor
|
icon: mdi:motion-sensor
|
||||||
name: Kitchen Motion
|
name: Kitchen Motion
|
||||||
entities:
|
entities:
|
||||||
- binary_sensor.kitchen_motion_sensor_home_security_motion_detection
|
|
||||||
- binary_sensor.kitchen_multisensor_home_security_motion_detection
|
- binary_sensor.kitchen_multisensor_home_security_motion_detection
|
||||||
|
|
||||||
great_room_motion:
|
great_room_motion:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam01_sub
|
stream: cam01_sub_opus
|
||||||
icon: mdi:earth
|
icon: mdi:earth
|
||||||
title: Boys Room
|
title: Boys Room
|
||||||
id: boys_room
|
id: boys_room
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam03_sub
|
stream: cam03_sub_opus
|
||||||
icon: mdi:desktop-classic
|
icon: mdi:desktop-classic
|
||||||
title: Computer Area
|
title: Computer Area
|
||||||
id: computer_area
|
id: computer_area
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam04_sub
|
stream: cam04_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam06_sub
|
stream: cam06_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam07_sub
|
stream: cam07_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam08_sub
|
stream: cam08_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam12_sub
|
stream: cam12_sub_opus
|
||||||
cast:
|
cast:
|
||||||
method: dashboard
|
method: dashboard
|
||||||
dashboard:
|
dashboard:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam13_sub
|
stream: cam13_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam14_sub
|
stream: cam14_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam18_sub
|
stream: cam18_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ card:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam19_sub
|
stream: cam19_sub_opus
|
||||||
live:
|
live:
|
||||||
preload: true
|
preload: true
|
||||||
draggable: true
|
draggable: true
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ card:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam06_sub
|
stream: cam06_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
title: MBR Left
|
title: MBR Left
|
||||||
@@ -46,7 +46,7 @@ card:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam07_sub
|
stream: cam07_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
title: MBR Right
|
title: MBR Right
|
||||||
|
|||||||
@@ -1389,11 +1389,11 @@ sections:
|
|||||||
heading_style: title
|
heading_style: title
|
||||||
badges:
|
badges:
|
||||||
- type: entity
|
- type: entity
|
||||||
entity: sensor.master_bathroom_thermostat_temperature
|
entity: sensor.bathroom_multisensor_air_temperature
|
||||||
tap_action:
|
tap_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
- type: entity
|
- type: entity
|
||||||
entity: sensor.master_bathroom_thermostat_humidity
|
entity: sensor.bathroom_multisensor_relative_humidity
|
||||||
tap_action:
|
tap_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ cards:
|
|||||||
- camera_entity: camera.frigate_cam03
|
- camera_entity: camera.frigate_cam03
|
||||||
live_provider: webrtc-card
|
live_provider: webrtc-card
|
||||||
webrtc_card:
|
webrtc_card:
|
||||||
url: rtsp://192.168.1.7:8554/rtsp_cam03_sub
|
url: rtsp://192.168.1.7:8554/cam03_sub_opus
|
||||||
- frigate:
|
- frigate:
|
||||||
camera_name: frigate_cam03
|
camera_name: frigate_cam03
|
||||||
label: person
|
label: person
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ cards:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam03_sub
|
stream: cam03_sub_opus
|
||||||
frigate:
|
frigate:
|
||||||
camera_name: frigate_cam03
|
camera_name: frigate_cam03
|
||||||
zone: great_room
|
zone: great_room
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ cards:
|
|||||||
layout: vertical
|
layout: vertical
|
||||||
secondary_info: none
|
secondary_info: none
|
||||||
- type: custom:mushroom-entity-card
|
- type: custom:mushroom-entity-card
|
||||||
entity: binary_sensor.furnace_room_door_contact
|
entity: binary_sensor.furnace_room_multisensor_door
|
||||||
name: Furnace
|
name: Furnace
|
||||||
layout: vertical
|
layout: vertical
|
||||||
secondary_info: none
|
secondary_info: none
|
||||||
|
|||||||
@@ -55,11 +55,11 @@ cards:
|
|||||||
title: Water Softener
|
title: Water Softener
|
||||||
columns: 3
|
columns: 3
|
||||||
entities:
|
entities:
|
||||||
- entity: sensor.water_softener_multisensor_salt_level_in_bags
|
- entity: sensor.furnace_room_multisensor_salt_level_in_bags
|
||||||
name: Salt (cm)
|
name: Salt (cm)
|
||||||
- entity: sensor.water_softener_multisensor_salt_level_in_cm
|
- entity: sensor.furnace_room_multisensor_salt_level_in_cm
|
||||||
name: From Bottom (cm)
|
name: From Bottom (cm)
|
||||||
- entity: sensor.water_softener_multisensor_salt_level_from_top_in_cm
|
- entity: sensor.furnace_room_multisensor_salt_level_from_top_in_cm
|
||||||
name: From Top (cm)
|
name: From Top (cm)
|
||||||
- type: vertical-stack
|
- type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
|
|||||||
@@ -352,8 +352,8 @@ cards:
|
|||||||
hold_action:
|
hold_action:
|
||||||
action: toggle
|
action: toggle
|
||||||
secondary: |-
|
secondary: |-
|
||||||
{{states('sensor.master_bathroom_thermostat_temperature')}}°F
|
{{states('sensor.bathroom_multisensor_air_temperature')}}°F
|
||||||
{{states('sensor.master_bathroom_thermostat_humidity')}}%
|
{{states('sensor.bathroom_multisensor_relative_humidity')}}%
|
||||||
icon_color: "{{iif(is_state('light.master_bathroom_hue','on'),'yellow')}}"
|
icon_color: "{{iif(is_state('light.master_bathroom_hue','on'),'yellow')}}"
|
||||||
multiline_secondary: true
|
multiline_secondary: true
|
||||||
layout: vertical
|
layout: vertical
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ cards:
|
|||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
graph: line
|
graph: line
|
||||||
type: sensor
|
type: sensor
|
||||||
entity: sensor.bathroom_multisensor_temperature
|
entity: sensor.bathroom_multisensor_air_temperature
|
||||||
detail: 1
|
detail: 1
|
||||||
name: Multisensor
|
name: Multisensor
|
||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
@@ -28,14 +28,14 @@ cards:
|
|||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
graph: line
|
graph: line
|
||||||
type: sensor
|
type: sensor
|
||||||
entity: sensor.master_bathroom_thermostat_temperature
|
entity: sensor.bathroom_multisensor_air_temperature
|
||||||
detail: 1
|
detail: 1
|
||||||
name: Thermostat
|
name: Thermostat
|
||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
graph: line
|
graph: line
|
||||||
type: sensor
|
type: sensor
|
||||||
detail: 1
|
detail: 1
|
||||||
entity: sensor.master_bathroom_thermostat_humidity
|
entity: sensor.bathroom_multisensor_relative_humidity
|
||||||
name: Thermostat
|
name: Thermostat
|
||||||
- type: horizontal-stack
|
- type: horizontal-stack
|
||||||
cards:
|
cards:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ cards:
|
|||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
graph: line
|
graph: line
|
||||||
type: sensor
|
type: sensor
|
||||||
entity: sensor.utility_room_multisensor_temperature
|
entity: sensor.utility_room_multisensor_air_temperature
|
||||||
detail: 1
|
detail: 1
|
||||||
name: Multisensor
|
name: Multisensor
|
||||||
- hours_to_show: 24
|
- hours_to_show: 24
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam14_sub
|
stream: cam14_sub_opus
|
||||||
live:
|
live:
|
||||||
auto_mute: all
|
auto_mute: all
|
||||||
preload: true
|
preload: true
|
||||||
|
|||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam01
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam01_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam01
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam01
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam01_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
|
# status_bar:
|
||||||
|
# style: none
|
||||||
|
# menu:
|
||||||
|
# buttons:
|
||||||
|
# frigate:
|
||||||
|
# enabled: false
|
||||||
|
# style: none
|
||||||
cameras:
|
cameras:
|
||||||
- camera_entity: camera.frigate_cam03
|
- camera_entity: camera.frigate_cam03
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam03
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
|
stream: cam03_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam03_sub
|
# view:
|
||||||
live:
|
# default: live
|
||||||
auto_mute: all
|
# profiles: []
|
||||||
preload: true
|
# grid_options:
|
||||||
draggable: false
|
# columns: full
|
||||||
show_image_during_load: true
|
# live:
|
||||||
lazy_load: false
|
# preload: true
|
||||||
controls:
|
# draggable: false
|
||||||
title:
|
# show_image_during_load: false
|
||||||
mode: none
|
# lazy_load: false
|
||||||
timeline:
|
# controls:
|
||||||
mode: none
|
# timeline:
|
||||||
thumbnails:
|
# mode: none
|
||||||
mode: none
|
# thumbnails:
|
||||||
menu:
|
# mode: none
|
||||||
buttons:
|
# builtin: false
|
||||||
frigate:
|
# next_previous:
|
||||||
enabled: false
|
# style: none
|
||||||
performance:
|
# zoomable: false
|
||||||
profile: low
|
# auto_play:
|
||||||
|
# - selected
|
||||||
|
# transition_effect: slide
|
||||||
|
# display:
|
||||||
|
# mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam19
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam19_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam19
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam19
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam19_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -5,7 +5,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam13_sub
|
stream: cam13_sub_opus
|
||||||
live:
|
live:
|
||||||
auto_mute: all
|
auto_mute: all
|
||||||
preload: true
|
preload: true
|
||||||
|
|||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam18
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam18_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam18
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam18
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam18_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam04
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam04_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam04
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam04
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam04_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -6,7 +6,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam08_sub
|
stream: cam08_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -19,7 +19,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam01_sub
|
stream: cam01_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -32,7 +32,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam12_sub
|
stream: cam12_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -45,7 +45,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam13_sub
|
stream: cam13_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -57,7 +57,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam03_sub
|
stream: cam03_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -71,7 +71,7 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam06_sub
|
stream: cam06_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
@@ -83,36 +83,36 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam07_sub
|
stream: cam07_sub_opus
|
||||||
triggers:
|
triggers:
|
||||||
occupancy: false
|
occupancy: false
|
||||||
motion: false
|
motion: false
|
||||||
entities:
|
entities:
|
||||||
- binary_sensor.bed_presence_c175a4_bed_occupied_either
|
- binary_sensor.bed_presence_c175a4_bed_occupied_either
|
||||||
timeline:
|
# timeline:
|
||||||
media: snapshots
|
# media: snapshots
|
||||||
show_recordings: false
|
# show_recordings: false
|
||||||
view:
|
# view:
|
||||||
scan:
|
# scan:
|
||||||
enabled: true
|
# enabled: true
|
||||||
untrigger_seconds: 10
|
# untrigger_seconds: 10
|
||||||
untrigger_reset: true
|
# untrigger_reset: true
|
||||||
default: live
|
# default: live
|
||||||
camera_select: live
|
# camera_select: live
|
||||||
dark_mode: "on"
|
# dark_mode: "on"
|
||||||
update_cycle_camera: true
|
# update_cycle_camera: true
|
||||||
update_seconds: 10
|
# update_seconds: 10
|
||||||
menu:
|
# menu:
|
||||||
buttons:
|
# buttons:
|
||||||
clips:
|
# clips:
|
||||||
enabled: false
|
# enabled: false
|
||||||
timeline:
|
# timeline:
|
||||||
enabled: false
|
# enabled: false
|
||||||
snapshots:
|
# snapshots:
|
||||||
enabled: false
|
# enabled: false
|
||||||
media_player:
|
# media_player:
|
||||||
enabled: false
|
# enabled: false
|
||||||
live:
|
# live:
|
||||||
lazy_load: true
|
# lazy_load: true
|
||||||
preload: true
|
# preload: true
|
||||||
lazy_unload: hidden
|
# lazy_unload: hidden
|
||||||
|
|||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam12
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam12_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam12
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam12
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam12_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam06
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam06_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam06
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam06
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam06_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam07
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam07_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam07
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam07
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam07_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -1,27 +1,44 @@
|
|||||||
type: custom:advanced-camera-card
|
type: custom:advanced-camera-card
|
||||||
cameras:
|
status_bar:
|
||||||
- camera_entity: camera.frigate_cam08
|
style: none
|
||||||
live_provider: go2rtc
|
|
||||||
go2rtc:
|
|
||||||
modes:
|
|
||||||
- webrtc
|
|
||||||
stream: rtsp_cam08_sub
|
|
||||||
live:
|
|
||||||
auto_mute: all
|
|
||||||
preload: true
|
|
||||||
draggable: false
|
|
||||||
show_image_during_load: true
|
|
||||||
lazy_load: false
|
|
||||||
controls:
|
|
||||||
title:
|
|
||||||
mode: none
|
|
||||||
timeline:
|
|
||||||
mode: none
|
|
||||||
thumbnails:
|
|
||||||
mode: none
|
|
||||||
menu:
|
menu:
|
||||||
buttons:
|
buttons:
|
||||||
frigate:
|
frigate:
|
||||||
enabled: false
|
enabled: false
|
||||||
performance:
|
style: none
|
||||||
profile: low
|
cameras:
|
||||||
|
- camera_entity: camera.frigate_cam08
|
||||||
|
live_provider: go2rtc
|
||||||
|
id: frigate-cam08
|
||||||
|
capabilities:
|
||||||
|
disable: []
|
||||||
|
disable_except:
|
||||||
|
- live
|
||||||
|
go2rtc:
|
||||||
|
stream: cam08_sub_opus
|
||||||
|
modes:
|
||||||
|
- webrtc
|
||||||
|
view:
|
||||||
|
default: live
|
||||||
|
profiles: []
|
||||||
|
grid_options:
|
||||||
|
columns: full
|
||||||
|
live:
|
||||||
|
preload: true
|
||||||
|
draggable: false
|
||||||
|
show_image_during_load: false
|
||||||
|
lazy_load: false
|
||||||
|
controls:
|
||||||
|
timeline:
|
||||||
|
mode: none
|
||||||
|
thumbnails:
|
||||||
|
mode: none
|
||||||
|
builtin: false
|
||||||
|
next_previous:
|
||||||
|
style: none
|
||||||
|
zoomable: false
|
||||||
|
auto_play:
|
||||||
|
- selected
|
||||||
|
transition_effect: slide
|
||||||
|
display:
|
||||||
|
mode: single
|
||||||
@@ -6,52 +6,25 @@ cameras:
|
|||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam04_sub
|
stream: cam04_sub_opus
|
||||||
# - 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: cam14_sub_opus
|
||||||
- camera_entity: camera.frigate_cam18
|
- camera_entity: camera.frigate_cam18
|
||||||
title: Front Yard
|
title: Front Yard
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam18_sub
|
stream: cam18_sub_opus
|
||||||
- camera_entity: camera.frigate_cam19
|
- camera_entity: camera.frigate_cam19
|
||||||
title: Front Porch
|
title: Front Porch
|
||||||
live_provider: go2rtc
|
live_provider: go2rtc
|
||||||
go2rtc:
|
go2rtc:
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
stream: rtsp_cam19_sub
|
stream: cam19_sub_opus
|
||||||
timeline:
|
|
||||||
media: snapshots
|
|
||||||
show_recordings: false
|
|
||||||
view:
|
|
||||||
scan:
|
|
||||||
enabled: true
|
|
||||||
untrigger_seconds: 10
|
|
||||||
untrigger_reset: true
|
|
||||||
default: live
|
|
||||||
camera_select: live
|
|
||||||
dark_mode: "on"
|
|
||||||
update_cycle_camera: true
|
|
||||||
update_seconds: 10
|
|
||||||
menu:
|
|
||||||
buttons:
|
|
||||||
clips:
|
|
||||||
enabled: false
|
|
||||||
timeline:
|
|
||||||
enabled: false
|
|
||||||
snapshots:
|
|
||||||
enabled: false
|
|
||||||
media_player:
|
|
||||||
enabled: false
|
|
||||||
live:
|
|
||||||
lazy_load: false
|
|
||||||
preload: true
|
|
||||||
lazy_unload: hidden
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ elements:
|
|||||||
top: 9%
|
top: 9%
|
||||||
#top icon spot #1
|
#top icon spot #1
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.furnace_room_door_contact
|
entity: binary_sensor.furnace_room_multisensor_door
|
||||||
style:
|
style:
|
||||||
left: 76%
|
left: 76%
|
||||||
top: 9%
|
top: 9%
|
||||||
@@ -173,7 +173,6 @@ elements:
|
|||||||
action: toggle
|
action: toggle
|
||||||
hold_action:
|
hold_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
|
|
||||||
# 12,31,50,69,88
|
# 12,31,50,69,88
|
||||||
# 14,38,62,86
|
# 14,38,62,86
|
||||||
# 25,50,75
|
# 25,50,75
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ elements:
|
|||||||
# left: 76%
|
# left: 76%
|
||||||
# top: 9%
|
# top: 9%
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.furnace_room_door_contact
|
entity: binary_sensor.furnace_room_multisensor_door
|
||||||
style:
|
style:
|
||||||
left: 84%
|
left: 84%
|
||||||
top: 9%
|
top: 9%
|
||||||
@@ -94,8 +94,8 @@ elements:
|
|||||||
action: more-info
|
action: more-info
|
||||||
|
|
||||||
- type: custom:mushroom-template-card
|
- type: custom:mushroom-template-card
|
||||||
primary: "{{ states('sensor.hvac_multisensor_delta') | float | round(2) }}"
|
primary: "{{ states('sensor.hvac_delta_temperature') | float | round(2) }}"
|
||||||
entity: sensor.hvac_multisensor_delta
|
entity: sensor.hvac_delta_temperature
|
||||||
tap_action:
|
tap_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ elements:
|
|||||||
top: 88%
|
top: 88%
|
||||||
|
|
||||||
- type: state-label
|
- type: state-label
|
||||||
entity: sensor.master_bathroom_thermostat_temperature
|
entity: sensor.bathroom_multisensor_air_temperature
|
||||||
style:
|
style:
|
||||||
left: 15%
|
left: 15%
|
||||||
top: 35%
|
top: 35%
|
||||||
font-size: 180%
|
font-size: 180%
|
||||||
- type: state-label
|
- type: state-label
|
||||||
entity: sensor.master_bathroom_thermostat_humidity
|
entity: sensor.bathroom_multisensor_relative_humidity
|
||||||
style:
|
style:
|
||||||
left: 85%
|
left: 85%
|
||||||
top: 35%
|
top: 35%
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam14_sub
|
stream: cam14_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam01_sub
|
stream: cam01_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam03_sub
|
stream: cam03_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ cards:
|
|||||||
cards:
|
cards:
|
||||||
- !include /config/lovelace/stretch-cameras/indoor-camera-cycler.yaml
|
- !include /config/lovelace/stretch-cameras/indoor-camera-cycler.yaml
|
||||||
- !include /config/lovelace/stretch-cameras/outdoor-camera-cycler.yaml
|
- !include /config/lovelace/stretch-cameras/outdoor-camera-cycler.yaml
|
||||||
|
# - !include /config/lovelace/stretch-cameras/indoor-camera-view.yaml
|
||||||
|
# - !include /config/lovelace/stretch-cameras/outdoor-camera-view.yaml
|
||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam19_sub
|
stream: cam19_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam13_sub
|
stream: cam13_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam18_sub
|
stream: cam18_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam04_sub
|
stream: cam04_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam08_sub
|
stream: cam08_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -62,4 +62,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam03_sub
|
stream: cam03_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -38,7 +38,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam04_sub
|
stream: cam04_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -54,44 +54,44 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam12_sub
|
stream: cam12_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
triggers:
|
triggers:
|
||||||
motion: false
|
motion: false
|
||||||
entities: []
|
entities: []
|
||||||
view:
|
# view:
|
||||||
default: live
|
# default: live
|
||||||
default_reset:
|
# default_reset:
|
||||||
every_seconds: 5
|
# every_seconds: 5
|
||||||
after_interaction: true
|
# after_interaction: true
|
||||||
interaction_mode: all
|
# interaction_mode: all
|
||||||
default_cycle_camera: true
|
# default_cycle_camera: true
|
||||||
triggers:
|
# triggers:
|
||||||
filter_selected_camera: false
|
# filter_selected_camera: false
|
||||||
profiles: []
|
# profiles: []
|
||||||
grid_options:
|
# grid_options:
|
||||||
columns: full
|
# columns: full
|
||||||
live:
|
# live:
|
||||||
preload: true
|
# preload: true
|
||||||
draggable: false
|
# draggable: false
|
||||||
show_image_during_load: false
|
# show_image_during_load: false
|
||||||
lazy_load: false
|
# lazy_load: false
|
||||||
controls:
|
# controls:
|
||||||
timeline:
|
# timeline:
|
||||||
mode: none
|
# mode: none
|
||||||
thumbnails:
|
# thumbnails:
|
||||||
mode: none
|
# mode: none
|
||||||
builtin: false
|
# builtin: false
|
||||||
next_previous:
|
# next_previous:
|
||||||
style: none
|
# style: none
|
||||||
zoomable: false
|
# zoomable: false
|
||||||
auto_play:
|
# auto_play:
|
||||||
- selected
|
# - selected
|
||||||
transition_effect: slide
|
# transition_effect: slide
|
||||||
display:
|
# display:
|
||||||
mode: single
|
# mode: single
|
||||||
dimensions:
|
# dimensions:
|
||||||
aspect_ratio_mode: static
|
# aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
# aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam12_sub
|
stream: cam12_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam06_sub
|
stream: cam06_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
title: MBR Left
|
title: MBR Left
|
||||||
@@ -40,7 +40,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam07_sub
|
stream: cam07_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
title: MBR Right
|
title: MBR Right
|
||||||
@@ -82,4 +82,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam18_sub
|
stream: cam18_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -38,7 +38,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam04_sub
|
stream: cam04_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -54,7 +54,7 @@ cards:
|
|||||||
disable_except:
|
disable_except:
|
||||||
- live
|
- live
|
||||||
go2rtc:
|
go2rtc:
|
||||||
stream: rtsp_cam19_sub
|
stream: cam19_sub_opus
|
||||||
modes:
|
modes:
|
||||||
- webrtc
|
- webrtc
|
||||||
always_error_if_entity_unavailable: false
|
always_error_if_entity_unavailable: false
|
||||||
@@ -94,4 +94,4 @@ cards:
|
|||||||
mode: single
|
mode: single
|
||||||
dimensions:
|
dimensions:
|
||||||
aspect_ratio_mode: static
|
aspect_ratio_mode: static
|
||||||
aspect_ratio: '16:10'
|
aspect_ratio: "16:10"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ cards:
|
|||||||
entities:
|
entities:
|
||||||
- entity: device_tracker.chevrolet_mylink
|
- entity: device_tracker.chevrolet_mylink
|
||||||
- entity: device_tracker.chevrolet_traverse_location
|
- entity: device_tracker.chevrolet_traverse_location
|
||||||
|
- entity: device_tracker.alpsalpine_co_ltd
|
||||||
|
|
||||||
- type: entities
|
- type: entities
|
||||||
title: Bridget's Tablet
|
title: Bridget's Tablet
|
||||||
|
|||||||
@@ -291,6 +291,7 @@ cards:
|
|||||||
- media_player.front_room_hub
|
- media_player.front_room_hub
|
||||||
- media_player.girls_room_hub
|
- media_player.girls_room_hub
|
||||||
- media_player.boys_room_clock
|
- media_player.boys_room_clock
|
||||||
|
- media_player.ma_home_assistant_voice_097b44_media_player
|
||||||
states:
|
states:
|
||||||
- state: "playing"
|
- state: "playing"
|
||||||
class: "squeezebox-on"
|
class: "squeezebox-on"
|
||||||
@@ -363,7 +364,7 @@ cards:
|
|||||||
- sensor.master_bedroom_multisensor_air_temperature
|
- sensor.master_bedroom_multisensor_air_temperature
|
||||||
- sensor.thermostat_temperature
|
- sensor.thermostat_temperature
|
||||||
- sensor.utility_room_thermostat_temperature
|
- sensor.utility_room_thermostat_temperature
|
||||||
- sensor.master_bathroom_thermostat_temperature
|
- sensor.bathroom_multisensor_relative_humidity
|
||||||
- sensor.downstairs_temperature
|
- sensor.downstairs_temperature
|
||||||
- sensor.computer_area_multisensor_air_temperature
|
- sensor.computer_area_multisensor_air_temperature
|
||||||
- sensor.mancave_thermostat_temperature
|
- sensor.mancave_thermostat_temperature
|
||||||
@@ -475,7 +476,7 @@ cards:
|
|||||||
|
|
||||||
# Bathrooms are expected to be a bit more humid
|
# Bathrooms are expected to be a bit more humid
|
||||||
- entities:
|
- entities:
|
||||||
- sensor.master_bathroom_thermostat_humidity
|
- sensor.bathroom_multisensor_relative_humidity
|
||||||
- sensor.utility_room_thermostat_humidity
|
- sensor.utility_room_thermostat_humidity
|
||||||
text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} %'
|
text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} %'
|
||||||
class_template: '
|
class_template: '
|
||||||
@@ -566,7 +567,7 @@ cards:
|
|||||||
'
|
'
|
||||||
|
|
||||||
- entities:
|
- entities:
|
||||||
- sensor.water_softener_multisensor_salt_level_in_bags
|
- sensor.furnace_room_multisensor_salt_level_in_bags
|
||||||
text_template: '${entity.state ? Math.floor(entity.state) : "undefined"}'
|
text_template: '${entity.state ? Math.floor(entity.state) : "undefined"}'
|
||||||
class_template: '
|
class_template: '
|
||||||
var bags = parseFloat(entity.state);
|
var bags = parseFloat(entity.state);
|
||||||
@@ -749,8 +750,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.water_softener_multisensor_door
|
- binary_sensor.furnace_room_multisensor_door
|
||||||
#- binary_sensor.furnace_room_door_contact
|
|
||||||
- binary_sensor.utility_room_door_contact
|
- binary_sensor.utility_room_door_contact
|
||||||
states:
|
states:
|
||||||
- state: "off"
|
- state: "off"
|
||||||
|
|||||||
+17
-44
@@ -38,8 +38,7 @@ cards:
|
|||||||
type: custom:mini-media-player
|
type: custom:mini-media-player
|
||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.kitchen
|
- entity: media_player.kitchen
|
||||||
name: Kitchen
|
name: Kitchen
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -47,8 +46,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.bathroom_mini
|
- entity: media_player.bathroom_mini
|
||||||
name: Bathroom
|
name: Bathroom
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -56,8 +54,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.girls_room_hub
|
- entity: media_player.girls_room_hub
|
||||||
name: Nursery
|
name: Nursery
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -65,8 +62,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.master_bedroom_clock
|
- entity: media_player.master_bedroom_clock
|
||||||
name: Master Bedroom
|
name: Master Bedroom
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -74,8 +70,15 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
- entity: media_player.ma_home_assistant_voice_097b44_media_player
|
||||||
|
name: Master Bedroom
|
||||||
|
#type: media-control
|
||||||
|
type: custom:mini-media-player
|
||||||
|
group: true
|
||||||
|
artwork: cover
|
||||||
|
show_source: true
|
||||||
|
|
||||||
- entity: media_player.computer_area_hub
|
- entity: media_player.computer_area_hub
|
||||||
name: Computer Area
|
name: Computer Area
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -83,8 +86,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.garage
|
- entity: media_player.garage
|
||||||
name: Garage
|
name: Garage
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -92,8 +94,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.deck
|
- entity: media_player.deck
|
||||||
name: Deck
|
name: Deck
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -101,8 +102,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.great_room
|
- entity: media_player.great_room
|
||||||
name: Great Room
|
name: Great Room
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -110,8 +110,7 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
- entity: media_player.boys_room_clock
|
- entity: media_player.boys_room_clock
|
||||||
name: Boys Room
|
name: Boys Room
|
||||||
#type: media-control
|
#type: media-control
|
||||||
@@ -119,8 +118,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: cover
|
artwork: cover
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
|
|
||||||
- type: vertical-stack
|
- type: vertical-stack
|
||||||
cards:
|
cards:
|
||||||
@@ -140,9 +137,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.all_downstairs_speakers
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.all_public_speakers
|
- entity: media_player.all_public_speakers
|
||||||
@@ -152,9 +146,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.all_public_speakers
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.all_upstairs_speakers
|
- entity: media_player.all_upstairs_speakers
|
||||||
@@ -164,9 +155,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.all_upstairs_speakers
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.downstairs_public
|
- entity: media_player.downstairs_public
|
||||||
@@ -176,9 +164,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.downstairs_public
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.front_yard
|
- entity: media_player.front_yard
|
||||||
@@ -188,9 +173,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.front_yard
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.inside_and_outside #All indoors and outdoor speakers
|
- entity: media_player.inside_and_outside #All indoors and outdoor speakers
|
||||||
@@ -200,9 +182,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.inside_and_outside
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.outside
|
- entity: media_player.outside
|
||||||
@@ -212,9 +191,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.outside
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
- entity: media_player.upstairs_public
|
- entity: media_player.upstairs_public
|
||||||
@@ -224,9 +200,6 @@ cards:
|
|||||||
group: true
|
group: true
|
||||||
artwork: material
|
artwork: material
|
||||||
show_source: true
|
show_source: true
|
||||||
tts:
|
|
||||||
platform: google_translate
|
|
||||||
entity_id: media_player.upstairs_public
|
|
||||||
hide:
|
hide:
|
||||||
controls: false
|
controls: false
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ cards:
|
|||||||
title: Upstairs Humidity
|
title: Upstairs Humidity
|
||||||
type: history-graph
|
type: history-graph
|
||||||
- entities:
|
- entities:
|
||||||
- entity: sensor.master_bathroom_thermostat_temperature
|
- entity: sensor.bathroom_multisensor_relative_humidity
|
||||||
name: Master Bathroom
|
name: Master Bathroom
|
||||||
- entity: sensor.utility_room_thermostat_temperature
|
- entity: sensor.utility_room_thermostat_temperature
|
||||||
name: Utility Room
|
name: Utility Room
|
||||||
@@ -85,7 +85,7 @@ cards:
|
|||||||
title: Downstairs Humidity
|
title: Downstairs Humidity
|
||||||
type: history-graph
|
type: history-graph
|
||||||
- entities:
|
- entities:
|
||||||
- entity: sensor.master_bathroom_thermostat_humidity
|
- entity: sensor.bathroom_multisensor_relative_humidity
|
||||||
name: Master Bathroom
|
name: Master Bathroom
|
||||||
- entity: sensor.utility_room_thermostat_humidity
|
- entity: sensor.utility_room_thermostat_humidity
|
||||||
name: Utility Room
|
name: Utility Room
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ badges:
|
|||||||
- type: conditional
|
- type: conditional
|
||||||
conditions:
|
conditions:
|
||||||
- entity: sensor.watchman_missing_entities
|
- entity: sensor.watchman_missing_entities
|
||||||
state_not: unavailable
|
state_not: unavailable, unknowne
|
||||||
- entity: sensor.watchman_missing_entities
|
- entity: sensor.watchman_missing_entities
|
||||||
state_not: "0"
|
state_not: "0"
|
||||||
chip:
|
chip:
|
||||||
@@ -1059,12 +1059,6 @@ cards:
|
|||||||
action: toggle
|
action: toggle
|
||||||
hold_action:
|
hold_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
- entity: light.garage_overhead
|
|
||||||
name: Garage
|
|
||||||
tap_action:
|
|
||||||
action: toggle
|
|
||||||
hold_action:
|
|
||||||
action: more-info
|
|
||||||
- entity: light.front_porch_overhead
|
- entity: light.front_porch_overhead
|
||||||
name: Porch
|
name: Porch
|
||||||
tap_action:
|
tap_action:
|
||||||
@@ -1107,7 +1101,7 @@ cards:
|
|||||||
- entity: binary_sensor.black_bed_status
|
- entity: binary_sensor.black_bed_status
|
||||||
state_filter:
|
state_filter:
|
||||||
- "off"
|
- "off"
|
||||||
- entity: binary_sensor.hvac_multisensor_status
|
- entity: binary_sensor.furnace_room_multisensor_status
|
||||||
state_filter:
|
state_filter:
|
||||||
- "off"
|
- "off"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam03_sub
|
url: cam03_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam08_sub
|
url: cam08_sub_opus
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.front_room_hub
|
entity_id: media_player.front_room_hub
|
||||||
url: rtsp_cam08_sub
|
url: cam08_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam13_sub
|
url: cam13_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.front_room_hub
|
entity_id: media_player.front_room_hub
|
||||||
url: rtsp_cam13_sub
|
url: cam13_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ sequence:
|
|||||||
- action: webrtc.dash_cast
|
- action: webrtc.dash_cast
|
||||||
data:
|
data:
|
||||||
entity_id: media_player.computer_area_hub
|
entity_id: media_player.computer_area_hub
|
||||||
url: rtsp_cam19_sub
|
url: cam19_sub_opus
|
||||||
force: true
|
force: true
|
||||||
extra:
|
extra:
|
||||||
mode: webrtc
|
mode: webrtc
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user