Refactor camera cards to use advanced-camera-card format

- Updated garage-card.yaml to use vertical-stack and advanced-camera-card structure.
- Refactored indoor-camera-cycler.yaml to include multiple cameras in advanced-camera-card format.
- Modified kitchen-card.yaml to align with new advanced-camera-card structure.
- Consolidated master-bedroom-card.yaml to include both left and right cameras in a single advanced-camera-card.
- Removed deprecated master-bedroom-left-card.yaml and master-bedroom-right-card.yaml files.
- Updated nursery-card.yaml to follow the new advanced-camera-card format.
- Refactored outdoor-camera-cycler.yaml to utilize advanced-camera-card for multiple outdoor cameras.
- Cleaned up view-ha-floorplan.yaml by removing commented-out code.
- Updated view-overview.yaml to remove unused plant entities.
- Corrected media source paths in wake_up_the_master_bedroom.yaml and take_meds.yaml scripts.
- Added new ESPHome configurations for bed presence sensors.
- Updated full-sized floorplan SVG with new IDs for bed presence sensors.
This commit is contained in:
CeeWeasel
2025-07-28 20:52:16 -04:00
parent 6638faaf14
commit d60b56b37a
57 changed files with 3064 additions and 2997 deletions
+1 -1
View File
@@ -38,7 +38,7 @@ media/
custom_components/
custom_logs/
snapshots/
rtl_433/
rtl_433*/
tts/
/lovelace/private
model_cache/
-303
View File
@@ -1,303 +0,0 @@
alias: Cycle Cameras
id: automation_cycle_cameras
mode: queued
trigger:
- id: automatic
platform: homeassistant
event: start
- id: automatic
platform: time_pattern
seconds: "/10"
- id: cam01
platform: state
entity_id: binary_sensor.frigate_cam01_person_occupancy
from: 'off'
to: 'on'
- id: cam03
platform: state
entity_id: binary_sensor.frigate_cam03_person_occupancy
from: 'off'
to: 'on'
- id: cam04
platform: state
entity_id: binary_sensor.frigate_cam04_person_occupancy
from: 'off'
to: 'on'
- id: cam06
platform: state
entity_id: binary_sensor.frigate_cam06_person_occupancy
from: 'off'
to: 'on'
- id: cam07
platform: state
entity_id: binary_sensor.frigate_cam07_person_occupancy
from: 'off'
to: 'on'
- id: cam08
platform: state
entity_id: binary_sensor.frigate_cam08_person_occupancy
from: 'off'
to: 'on'
- id: cam12
platform: state
entity_id: binary_sensor.frigate_cam12_person_occupancy
from: 'off'
to: 'on'
- id: cam13
platform: state
entity_id: binary_sensor.frigate_cam13_person_occupancy
from: 'off'
to: 'on'
- id: cam14
platform: state
entity_id: binary_sensor.frigate_cam14_person_occupancy
from: 'off'
to: 'on'
- id: cam19
platform: state
entity_id: binary_sensor.frigate_cam19_person_occupancy
from: 'off'
to: 'on'
action:
- service: input_select.select_next
data: {}
target:
entity_id: input_select.master_bedroom_camera
- choose:
- conditions:
- condition: trigger
id: cam01
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Blue Room
- conditions:
- condition: trigger
id: cam03
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Computer Area
- conditions:
- condition: trigger
id: cam04
- condition: state
entity_id: input_boolean.outdoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.outdoor_camera_cycle
data:
option: Garage
- conditions:
- condition: trigger
id: cam06
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Bedroom Left
- conditions:
- condition: trigger
id: cam07
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Bedroom Right
- conditions:
- condition: trigger
id: cam08
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Nursery
- conditions:
- condition: trigger
id: cam12
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Kitchen
- conditions:
- condition: trigger
id: cam13
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.indoor_camera_cycle
data:
option: Front Room
- conditions:
- condition: trigger
id: cam14
- condition: state
entity_id: input_boolean.outdoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.outdoor_camera_cycle
data:
option: Back Yard
- conditions:
- condition: trigger
id: cam19
- condition: state
entity_id: input_boolean.outdoor_camera_lock
state: 'off'
sequence:
- service: input_select.select_option
target:
entity_id: input_select.outdoor_camera_cycle
data:
option: Front Porch
default:
- choose:
- conditions:
- condition: trigger
id: automatic
- condition: state
entity_id: input_boolean.indoor_camera_lock
state: 'off'
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Blue Room
- condition: state
entity_id: binary_sensor.frigate_cam01_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Computer Area
- condition: state
entity_id: binary_sensor.frigate_cam03_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Bedroom Left
- condition: state
entity_id: binary_sensor.frigate_cam06_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Bedroom Right
- condition: state
entity_id: binary_sensor.frigate_cam07_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Nursery
- condition: state
entity_id: binary_sensor.frigate_cam08_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Kitchen
- condition: state
entity_id: binary_sensor.frigate_cam12_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.indoor_camera_cycle
state: Front Room
- condition: state
entity_id: binary_sensor.frigate_cam13_person_occupancy
state: 'off'
sequence:
- service: input_select.select_next
data: {}
target:
entity_id: input_select.indoor_camera_cycle
- choose:
- conditions:
- condition: trigger
id: automatic
- condition: state
entity_id: input_boolean.outdoor_camera_lock
state: 'off'
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: input_select.outdoor_camera_cycle
state: Garage
- condition: state
entity_id: binary_sensor.frigate_cam04_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.outdoor_camera_cycle
state: Back Yard
- condition: state
entity_id: binary_sensor.frigate_cam14_person_occupancy
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: input_select.outdoor_camera_cycle
state: Front Porch
- condition: state
entity_id: binary_sensor.frigate_cam19_person_occupancy
state: 'off'
sequence:
- service: input_select.select_next
data: {}
target:
entity_id: input_select.outdoor_camera_cycle
+2 -2
View File
@@ -37,13 +37,13 @@ action:
- media_player.bathroom_mini
- media_player.kitchen
- media_player.great_room
media_content_id: media-source://media_source/local/sounds/tts/almost_bedtime.mp3
media_content_id: media-source://media_source/tts/almost_bedtime.mp3
volume: 0.7
default:
- service: script.make_clever_announcement
data:
entity_id: media_player.announcements
media_content_id: media-source://media_source/local/sounds/tts/almost_bedtime.mp3
media_content_id: media-source://media_source/tts/almost_bedtime.mp3
volume: 0.7
# Because of how we're calling the script, the automation won't continue until the script is done, so we don't need a delay here
+2 -2
View File
@@ -2,8 +2,8 @@ initial_state: 'on'
alias: 'Bedtime'
id: automation_bedtime
trigger:
- platform: homeassistant
event: start
# - platform: homeassistant
# event: start
- platform: state
entity_id:
+14 -14
View File
@@ -40,23 +40,23 @@ action:
{% if is_state('input_boolean.emmett_home', 'on') %}
{% if is_state('input_boolean.bridget_home', 'on') %}
{% if is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_emmett_bridget_ebin.mp3
media-source://media_source/tts/goodnight_emmett_bridget_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_emmett_bridget.mp3
media-source://media_source/tts/goodnight_emmett_bridget.mp3
{% endif %}
{% elif is_state('input_boolean.ebin_home','on') %}
media-source://media_source/local/sounds/tts/goodnight_emmett_ebin.mp3
media-source://media_source/tts/goodnight_emmett_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_emmett.mp3
media-source://media_source/tts/goodnight_emmett.mp3
{% endif %}
{% elif is_state('input_boolean.bridget_home', 'on') %}
{% if is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_bridget_ebin.mp3
media-source://media_source/tts/goodnight_bridget_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_bridget.mp3
media-source://media_source/tts/goodnight_bridget.mp3
{% endif %}
{% elif is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_ebin.mp3
media-source://media_source/tts/goodnight_ebin.mp3
{% endif %}
volume: 0.7
default:
@@ -67,23 +67,23 @@ action:
{% if is_state('input_boolean.emmett_home', 'on') %}
{% if is_state('input_boolean.bridget_home', 'on') %}
{% if is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_emmett_bridget_ebin.mp3
media-source://media_source/tts/goodnight_emmett_bridget_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_emmett_bridget.mp3
media-source://media_source/tts/goodnight_emmett_bridget.mp3
{% endif %}
{% elif is_state('input_boolean.ebin_home','on') %}
media-source://media_source/local/sounds/tts/goodnight_emmett_ebin.mp3
media-source://media_source/tts/goodnight_emmett_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_emmett.mp3
media-source://media_source/tts/goodnight_emmett.mp3
{% endif %}
{% elif is_state('input_boolean.bridget_home', 'on') %}
{% if is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_bridget_ebin.mp3
media-source://media_source/tts/goodnight_bridget_ebin.mp3
{% else %}
media-source://media_source/local/sounds/tts/goodnight_bridget.mp3
media-source://media_source/tts/goodnight_bridget.mp3
{% endif %}
{% elif is_state('input_boolean.ebin_home', 'on') %}
media-source://media_source/local/sounds/tts/goodnight_ebin.mp3
media-source://media_source/tts/goodnight_ebin.mp3
{% endif %}
volume: 0.7
+42 -25
View File
@@ -8,18 +8,24 @@ trigger:
entity_id:
- binary_sensor.front_porch_motion
- binary_sensor.front_porch_person_occupancy
- binary_sensor.front_yard_person_occupancy
to: "on"
- platform: state
id: motion_off
entity_id: binary_sensor.front_porch_motion, binary_sensor.front_porch_person_occupancy
entity_id:
- binary_sensor.front_porch_motion
- binary_sensor.front_porch_person_occupancy
- binary_sensor.front_yard_person_occupancy
to: "off"
for:
minutes: 5
- platform: state
id: door_open
entity_id: binary_sensor.garage_door, binary_sensor.outer_garage_door_contact #, binary_sensor.outer_garage_door
entity_id:
- binary_sensor.garage_door
- binary_sensor.outer_garage_door_contact #, binary_sensor.outer_garage_door
to: "on"
- platform: state
@@ -33,34 +39,15 @@ trigger:
id: too_dark
entity_id: binary_sensor.front_porch_naturally_lit
to: "off"
for:
seconds: 30
- platform: state
id: too_bright
entity_id: binary_sensor.front_porch_naturally_lit
to: "on"
condition:
# - condition: or
# conditions:
# - alias: "Front porch not naturally lit"
# condition: state
# entity_id: binary_sensor.front_porch_naturally_lit
# state: 'off'
# - alias: "Light is already off"
# condition: state
# entity_id: light.front_porch_overhead
# state: 'off'
- alias: "It is not late evening"
condition: state
entity_id: binary_sensor.late_evening
state: 'off'
- alias: "It is not night"
condition: state
entity_id: binary_sensor.night
state: 'off'
for:
seconds: 30
action:
- choose:
@@ -72,6 +59,16 @@ action:
entity_id: light.front_porch_overhead
state: 'off'
- alias: "It is not late evening"
condition: state
entity_id: binary_sensor.late_evening
state: 'off'
- alias: "It is not night"
condition: state
entity_id: binary_sensor.night
state: 'off'
- alias: "Front porch not naturally lit"
condition: state
entity_id: binary_sensor.front_porch_naturally_lit
@@ -113,6 +110,26 @@ action:
target:
entity_id: light.front_porch_overhead
- conditions:
- condition: trigger
id: "too_dark"
- condition: state
entity_id: light.front_porch_overhead
state: 'off'
- condition: state
entity_id:
- binary_sensor.front_porch_motion
- binary_sensor.front_porch_person_occupancy
- binary_sensor.front_yard_person_occupancy
state: 'on'
sequence:
- service: light.turn_on
target:
entity_id: light.front_porch_overhead
- conditions:
- condition: state
entity_id: binary_sensor.front_porch_motion
+1 -1
View File
@@ -54,4 +54,4 @@ action:
- alias: "Announce that the coffee is ready"
service: script.make_clever_announcement
data:
media_content_id: media-source://media_source/local/sounds/tts/coffee_ready.mp3
media_content_id: media-source://media_source/tts/coffee_ready.mp3
+1 -1
View File
@@ -46,7 +46,7 @@ action:
sequence:
- service: script.make_clever_announcement
data:
media_content_id: media-source://media_source/local/sounds/tts/kitchen_fridge_open_too_long.mp3
media_content_id: media-source://media_source/tts/kitchen_fridge_open_too_long.mp3
- choose:
- conditions:
@@ -18,7 +18,7 @@ observations:
# platform: state
# to_state: 'on'
- entity_id: binary_sensor.master_bathroom_hygrostat
- entity_id: binary_sensor.master_bathroom_too_humid
prob_given_true: .99
prob_given_false: 0.05
platform: state
@@ -18,7 +18,7 @@ observations:
# platform: state
# to_state: 'on'
- entity_id: binary_sensor.utility_room_hygrostat
- entity_id: binary_sensor.utility_room_too_humid
prob_given_true: .99
prob_given_false: 0.05
platform: state
@@ -435,43 +435,6 @@ automation:
data:
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.ecowitt_wh40_21917_precipitation')}},{{states('binary_sensor.is_raining')}},{{state_attr('binary_sensor.is_raining','sample_count')}},{{state_attr('binary_sensor.is_raining','sample_duration')}},{{state_attr('binary_sensor.is_raining','min_gradient')}},{{state_attr('binary_sensor.is_raining','gradient')}}"
- alias: "Log Soil Moisture"
id: 362fbc8d-64f1-47dd-a686-e460e9c18690
trigger:
- platform: state
entity_id: input_boolean.log_soil_moisture
from: "off"
to: "on"
- platform: state
entity_id: sensor.fineoffset_wh51_00f935_moisture
not_to:
- "unknown"
- "unavailable"
- platform: state
entity_id: sensor.fineoffset_wh51_0ce593_moisture
not_to:
- "unknown"
- "unavailable"
- platform: state
entity_id: sensor.fineoffset_wh51_0d1e11_moisture
not_to:
- "unknown"
- "unavailable"
condition:
- condition: state
entity_id: input_boolean.log_soil_moisture
state: "on"
action:
- service: notify.send_message
target:
entity_id: notify.soil_moisture
data:
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.fineoffset_wh51_00f935_moisture')}},{{states('sensor.fineoffset_wh51_0ce593_moisture')}},{{states('sensor.fineoffset_wh51_0d1e11_moisture')}}"
- alias: "Sprinkler: Reset After Automatic Run"
id: automation_sprinkler_reset_after_automatic_run
trigger:
@@ -15,7 +15,7 @@ script:
media_content_id:
description: "Media Content ID to announce"
example: media-source://media_source/local/sounds/tts/welcome_to_daddys_house.mp3
example: media-source://media_source/tts/welcome_to_daddys_house.mp3
selector:
text:
@@ -42,7 +42,7 @@ script:
# If YTube Music Player is not in use, play the announcement over the media_player.announcements speaker group
media_player: '{{ iif(entity_id is defined, entity_id, iif(is_state("media_player.ytube_music_player","playing") or is_state("media_player.ytube_music_player","idle") or is_state("media_player.ytube_music_player","paused"),state_attr("media_player.ytube_music_player","remote_player_id"),"media_player.announcements")) }}'
remote_player: '{{ state_attr("media_player.ytube_music_player","remote_player_id") }}'
content_id: '{{ iif(media_content_id is defined,media_content_id,"media-source://media_source/local/sounds/tts/welcome_to_daddys_house.mp3") }}'
content_id: '{{ iif(media_content_id is defined,media_content_id,"media-source://media_source/tts/welcome_to_daddys_house.mp3") }}'
content_type: '{{ iif(media_content_type is defined,media_content_type,"audio/mpeg") }}'
volume: "{{ iif(volume is defined,volume,0.6) }}"
original_volume: '{{ iif(is_state("media_player.ytube_music_player","off"),0.0,state_attr(state_attr("media_player.ytube_music_player","remote_player_id"), "volume_level")) }}'
+37
View File
@@ -0,0 +1,37 @@
template:
- binary_sensor:
- name: White Bed Occupied
state: "{{ is_state('binary_sensor.bed_presence_2d14a4_bed_occupied_either', 'on') }}"
icon: >
{% if is_state("binary_sensor.white_bed_occupied", "on") %}
mdi:bed-single
{% else %}
mdi:bed-single-outline
{% endif %}
- name: Master Bed Occupied
state: "{{ is_state('binary_sensor.bed_presence_2d14a4_bed_occupied_either', 'on') }}"
icon: >
{% if is_state("binary_sensor.master_bed_occupied", "on") %}
mdi:bed-king
{% else %}
mdi:bed-king-outline
{% endif %}
- name: Master Bed Left Occupied
state: "{{ is_state('binary_sensor.bed_presence_c175a4_bed_occupied_left', 'on') }}"
icon: >
{% if is_state("binary_sensor.master_bed_left_occupied", "on") %}
mdi:bed-king
{% else %}
mdi:bed-king-outline
{% endif %}
- name: Master Bed Right Occupied
state: "{{ is_state('binary_sensor.bed_presence_c175a4_bed_occupied_right', 'on') }}"
icon: >
{% if is_state("binary_sensor.master_bed_right_occupied", "on") %}
mdi:bed-king
{% else %}
mdi:bed-king-outline
{% endif %}
@@ -13,7 +13,5 @@ sensor:
name: Lowest Ecowitt Battery
type: min
entity_ids:
- sensor.fineoffset_wh51_0d1e11_battery
- sensor.fineoffset_wh51_00f935_battery
- sensor.fineoffset_wh51_0ce593_battery
-26
View File
@@ -44,19 +44,6 @@ plant:
min_conductivity: 10
max_conductivity: 5700
fineoffset_wh51_00f935:
sensors:
moisture: sensor.fineoffset_wh51_00f935_moisture
temperature: sensor.outdoor_temperature
battery: sensor.fineoffset_wh51_00f935_battery
brightness: sensor.outdoors_mean_illuminance
min_moisture: 15
max_moisture: 80
min_brightness: 200
max_brightness: 300000
min_temperature: -30
max_temperature: 120
fineoffset_wh51_0ce593:
sensors:
moisture: sensor.fineoffset_wh51_0ce593_moisture
@@ -69,16 +56,3 @@ plant:
max_brightness: 300000
min_temperature: -30
max_temperature: 120
fineoffset_wh51_0d1e11:
sensors:
moisture: sensor.fineoffset_wh51_0d1e11_moisture
temperature: sensor.outdoor_temperature
battery: sensor.fineoffset_wh51_0d1e11_battery
brightness: sensor.outdoors_mean_illuminance
min_moisture: 15
max_moisture: 80
min_brightness: 200
max_brightness: 300000
min_temperature: -30
max_temperature: 120
@@ -1,44 +0,0 @@
# White Ziptie
mqtt:
sensor:
- name: "Timestamp"
device_class: timestamp
icon: mdi:clock-in
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/time"
force_update: true
entity_category: diagnostic
unique_id: Fineoffset-WH51-00f935-UTC
device:
identifiers: Fineoffset-WH51-00f935
name: Fineoffset-WH51-00f935
model: Fineoffset-WH51
manufacturer: rtl_433
- name: "Battery"
device_class: battery
unit_of_measurement: "%"
value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
state_class: measurement
entity_category: diagnostic
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/battery_ok"
force_update: true
unique_id: Fineoffset-WH51-00f935-B
device:
identifiers: Fineoffset-WH51-00f935
name: Fineoffset-WH51-00f935
model: Fineoffset-WH51
manufacturer: rtl_433
- name: "Moisture"
device_class: moisture
unit_of_measurement: "%"
value_template: "{{ value|float }}"
state_class: measurement
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/moisture"
force_update: true
unique_id: Fineoffset-WH51-00f935-H
device:
identifiers: Fineoffset-WH51-00f935
name: Fineoffset-WH51-00f935
model: Fineoffset-WH51
manufacturer: rtl_433
@@ -3,7 +3,7 @@ mqtt:
- name: "Timestamp"
device_class: timestamp
icon: mdi:clock-in
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/106/time"
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/233/time"
force_update: true
entity_category: diagnostic
unique_id: LaCrosse-TX141THBv2-0-UTC
@@ -19,7 +19,7 @@ mqtt:
value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
state_class: measurement
entity_category: diagnostic
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/106/battery_ok"
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/233/battery_ok"
force_update: true
unique_id: LaCrosse-TX141THBv2-0-B
device:
@@ -33,7 +33,7 @@ mqtt:
unit_of_measurement: "°C"
value_template: "{{ value|float }}"
state_class: measurement
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/106/temperature_C"
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/233/temperature_C"
force_update: true
unique_id: LaCrosse-TX141THBv2-0-T
device:
@@ -47,7 +47,7 @@ mqtt:
unit_of_measurement: "%"
value_template: "{{ value|float }}"
state_class: measurement
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/106/humidity"
state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/233/humidity"
force_update: true
unique_id: LaCrosse-TX141THBv2-0-H
device:
@@ -1,44 +0,0 @@
# Yellow Ziptie
mqtt:
sensor:
- name: "Timestamp"
device_class: timestamp
icon: mdi:clock-in
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/time"
force_update: true
entity_category: diagnostic
unique_id: Fineoffset-WH51-0d1e11-UTC
device:
identifiers: Fineoffset-WH51-0d1e11
name: Fineoffset-WH51-0d1e11
model: Fineoffset-WH51
manufacturer: rtl_433
- name: "Battery"
device_class: battery
unit_of_measurement: "%"
value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
state_class: measurement
entity_category: diagnostic
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/battery_ok"
force_update: true
unique_id: Fineoffset-WH51-0d1e11-B
device:
identifiers: Fineoffset-WH51-0d1e11
name: Fineoffset-WH51-0d1e11
model: Fineoffset-WH51
manufacturer: rtl_433
- name: "Moisture"
device_class: moisture
unit_of_measurement: "%"
value_template: "{{ value|float }}"
state_class: measurement
state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/moisture"
force_update: true
unique_id: Fineoffset-WH51-0d1e11-H
device:
identifiers: Fineoffset-WH51-0d1e11
name: Fineoffset-WH51-0d1e11
model: Fineoffset-WH51
manufacturer: rtl_433
+3 -11
View File
@@ -22,18 +22,10 @@ plant.plant_sensor_3eb0:
# entity_picture: /local/image/pansy.jpg
# friendly_name: Pansy
plant.fineoffset_wh51_00f935:
entity_picture: /local/image/daisy.jpg
friendly_name: Daisies (F935)
plant.fineoffset_wh51_0ce593:
entity_picture: /local/image/hosta.jpg
friendly_name: Hostas (E593)
plant.fineoffset_wh51_0d1e11:
entity_picture: /local/image/cacti_planter.jpg
friendly_name: Cacti Planter (1E11)
## Groups
group.front_yard_plants:
@@ -44,9 +36,9 @@ group.back_yard_plants:
entity_picture: /local/image/daisy.jpg
friendly_name: Back Yard Plants
group.indoor_plants:
entity_picture: /local/image/cacti_planter.jpg
friendly_name: Indoor Plants
# group.indoor_plants:
# entity_picture: /local/image/cacti_planter.jpg
# friendly_name: Indoor Plants
group.outdoor_plants:
entity_picture: /local/image/daisy.jpg
+64
View File
@@ -0,0 +1,64 @@
esphome:
name: bed-presence-2d14a4
friendly_name: Bed Presence 2d14a4
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: ElevatedSensors.BedPresenceMk1
version: DIY
platformio_options:
board_build.flash_mode: dio
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
sdkconfig_options:
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
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:
remote_package:
url: https://github.com/ElevatedSensors/sensor-configs
ref: main
refresh: 1s
files:
- bed-presence-mk1/base.yaml
- esphome-common/bluetooth-proxy.yaml
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
# description of available substitutions.
#
# substitutions:
# trigger_percentile: '0.75'
# averaging_window_samples: '5'
# fast_delayed_on: '0ms'
# fast_delayed_off: '0ms'
# standard_delayed_on: '0s'
# standard_delayed_off: '1s'
# slow_delayed_on: '2s'
# slow_delayed_off: '5s'
# reporting_delta: '1.0'
# reporting_interval_max: '180s'
# calibrate_100: '408000'
# calibrate_0: '276000'
+64
View File
@@ -0,0 +1,64 @@
esphome:
name: bed-presence-c175a4
friendly_name: Bed Presence c175a4
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: ElevatedSensors.BedPresenceMk1
version: DIY
platformio_options:
board_build.flash_mode: dio
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
sdkconfig_options:
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
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:
remote_package:
url: https://github.com/ElevatedSensors/sensor-configs
ref: main
refresh: 1s
files:
- bed-presence-mk1/base.yaml
- esphome-common/bluetooth-proxy.yaml
# See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed
# description of available substitutions.
#
# substitutions:
# trigger_percentile: '0.75'
# averaging_window_samples: '5'
# fast_delayed_on: '0ms'
# fast_delayed_off: '0ms'
# standard_delayed_on: '0s'
# standard_delayed_off: '1s'
# slow_delayed_on: '2s'
# slow_delayed_off: '5s'
# reporting_delta: '1.0'
# reporting_interval_max: '180s'
# calibrate_100: '408000'
# calibrate_0: '276000'
+2
View File
@@ -9,6 +9,8 @@ ethernet:
power_pin: GPIO5
phy_addr: 0
use_address: ${devicename}.local
manual_ip:
static_ip: ${static_ip}
gateway: !secret iot_default_gateway
+3
View File
@@ -1,3 +1,4 @@
esphome:
captive_portal:
wifi:
@@ -14,6 +15,8 @@ wifi:
gateway: !secret iot_default_gateway
subnet: !secret iot_subnet_mask
use_address: ${devicename}.local
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${friendly_name}"
+2
View File
@@ -9,6 +9,8 @@ wifi:
- ssid: !secret IoT_Wifi_SSID
password: !secret IoT_Wifi_PWD
use_address: ${devicename}.local
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${friendly_name}"
+3
View File
@@ -1,3 +1,4 @@
esphome:
captive_portal:
wifi:
@@ -7,6 +8,8 @@ wifi:
#- 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
-5
View File
@@ -8,15 +8,10 @@ front_yard_plants:
back_yard_plants:
- plant.plant_sensor_3eb0 #Manly Deck Box
- plant.fineoffset_wh51_00f935 #Daisies
- plant.plant_sensor_3eae #Golden Deck Box
indoor_plants:
- plant.fineoffset_wh51_0d1e11 #Cactus Planter
outdoor_plants:
- plant.fineoffset_wh51_0ce593 #Hostas
- plant.fineoffset_wh51_00f935 #Daisies
ceiling_fans:
- fan.master_bedroom
+5 -17
View File
@@ -11,8 +11,6 @@ card:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
@@ -20,26 +18,16 @@ card:
modes:
- webrtc
stream: rtsp_cam12_sub
cast:
method: dashboard
dashboard:
dashboard_path: camera-casting-yml
view_path: kitchen-camera
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
-4
View File
@@ -14,10 +14,6 @@ cards:
- type: entities
title: Ecowitt Batteries
entities:
- entity: sensor.fineoffset_wh51_0d1e11_battery
name: Computer Area - 1e11
- entity: sensor.fineoffset_wh51_00f935_battery
name: Daisies - f935
- entity: sensor.fineoffset_wh51_0ce593_battery
name: Hostas - e593
- type: entities
File diff suppressed because it is too large Load Diff
-2
View File
@@ -61,8 +61,6 @@ cards:
- !include /config/lovelace/plant-cards/plant_sensor_3eae.yaml
- !include /config/lovelace/plant-cards/plant_sensor_3eb0.yaml
- !include /config/lovelace/plant-cards/fineoffset_wh51_0ce593.yaml
- !include /config/lovelace/plant-cards/fineoffset_wh51_00f935.yaml
- !include /config/lovelace/plant-cards/fineoffset_wh51_0d1e11.yaml
- type: vertical-stack
view_layout:
@@ -1,4 +0,0 @@
type: vertical-stack
cards:
- type: plant-status
entity: plant.fineoffset_wh51_00f935
@@ -1,4 +0,0 @@
type: vertical-stack
cards:
- type: plant-status
entity: plant.fineoffset_wh51_0d1e11
+2 -2
View File
@@ -25,13 +25,13 @@ elements:
# text-transform: capitalize
- type: state-label
entity: sensor.deck_temperature
entity: sensor.acurite_592txr_a_temperature
style:
left: 15%
top: 35%
font-size: 180%
- type: state-label
entity: sensor.lacrosse_tx141thbv2_0_temperature
entity: sensor.acurite_592txr_a_humidity
style:
left: 85%
top: 35%
+2 -2
View File
@@ -30,13 +30,13 @@ elements:
text-transform: capitalize
- type: state-label
entity: sensor.front_porch_temperature
entity: sensor.lacrosse_tx141thbv2_0_temperature
style:
left: 15%
top: 35%
font-size: 180%
- type: state-label
entity: sensor.lacrosse_tx141thbv2_0_temperature
entity: sensor.lacrosse_tx141thbv2_0_humidity
style:
left: 85%
top: 35%
+1 -1
View File
@@ -50,7 +50,7 @@ elements:
# left: 76%
# top: 9%
- type: state-icon
entity: binary_sensor.master_bathroom_hygrostat
entity: binary_sensor.master_bathroom_too_humid
style:
left: 76%
top: 9%
+1 -1
View File
@@ -51,7 +51,7 @@ elements:
# left: 76%
# top: 9%
- type: state-icon
entity: binary_sensor.utility_room_hygrostat
entity: binary_sensor.utility_room_too_humid
style:
left: 76%
top: 9%
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam14
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam14_sub
icon: mdi:grass
title: Back Yard
id: back_yard
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam14
live_provider: go2rtc
id: frigate-cam14
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam14_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam01
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam01_sub
icon: mdi:yoga
title: Blue Room
id: blue_room
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam01
live_provider: go2rtc
id: frigate-cam01
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam01_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam03
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam03_sub
icon: mdi:desktop-classic
title: Computer Area
id: computer_area
live:
layout:
fit: fill
preload: true
draggable: false
show_image_during_load: true
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam03
live_provider: go2rtc
id: frigate-cam03
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam03_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam19
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam19_sub
icon: mdi:doorbell-video
title: Front Porch
id: front_porch
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam19
live_provider: go2rtc
id: frigate-cam19
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam19_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam13
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam13_sub
icon: mdi:television
title: Front Room
id: front_room
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam13
live_provider: go2rtc
id: frigate-cam13
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam13_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam18
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam18_sub
icon: mdi:grass
title: Front Yard
id: front_yard
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam18
live_provider: go2rtc
id: frigate-cam18
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam18_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam04_sub
icon: mdi:garage
title: Garage
id: garage
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
id: frigate-cam04
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam04_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
@@ -1,44 +1,97 @@
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Blue Room
card:
!include /config/lovelace/stretch-cameras/blue-room-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Computer Area
card:
!include /config/lovelace/stretch-cameras/computer-area-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Bedroom Left
card:
!include /config/lovelace/stretch-cameras/master-bedroom-left-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Bedroom Right
card:
!include /config/lovelace/stretch-cameras/master-bedroom-right-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Nursery
card:
!include /config/lovelace/stretch-cameras/nursery-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Kitchen
card:
!include /config/lovelace/stretch-cameras/kitchen-card.yaml
- type: conditional
conditions:
- entity: input_select.indoor_camera_cycle
state: Front Room
card:
!include /config/lovelace/stretch-cameras/front-room-card.yaml
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam03
live_provider: go2rtc
id: frigate-cam03
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam03_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
events: []
occupancy: false
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
id: frigate-cam04
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam04_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
events: []
occupancy: false
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
id: frigate-cam12
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam12_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam12_sub
icon: mdi:fridge
title: Kitchen
id: kitchen
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
aspect_ratio_mode: static
aspect_ratio: 1280:800
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: hidden
cameras:
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
id: frigate-cam12
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam12_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
profiles:
- low-performance
- casting
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,14 +1,85 @@
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_select.master_bedroom_camera
state: Left
card:
!include /config/lovelace/stretch-cameras/master-bedroom-left-card.yaml
- type: conditional
conditions:
- entity: input_select.master_bedroom_camera
state: Right
card:
!include /config/lovelace/stretch-cameras/master-bedroom-right-card.yaml
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam06
live_provider: go2rtc
id: frigate-cam06
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam06_sub
modes:
- webrtc
title: MBR Left
icon: mdi:bed-king
always_error_if_entity_unavailable: false
triggers:
motion: false
events: []
occupancy: false
- camera_entity: camera.frigate_cam07
live_provider: go2rtc
id: frigate-cam07
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam07_sub
modes:
- webrtc
title: MBR Right
icon: mdi:bed-king
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
@@ -1,40 +0,0 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam06
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam06_sub
icon: mdi:bed-queen
title: MBR Left
id: mbr_left
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
@@ -1,6 +0,0 @@
title: Master Bedroom Left
path: mbr-camera-left
icon: mdi:bed-king
panel: true
cards:
- !include /config/lovelace/stretch-cameras/master-bedroom-left-card.yaml
@@ -1,40 +0,0 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam07
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam07_sub
icon: mdi:bed-queen
title: MBR Right
id: mbr_right
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
@@ -1,6 +0,0 @@
title: Master Bedroom Right
path: mbr-camera-right
icon: mdi:bed-king
panel: true
cards:
- !include /config/lovelace/stretch-cameras/master-bedroom-right-card.yaml
+65 -40
View File
@@ -1,40 +1,65 @@
type: custom:advanced-camera-card
cameras:
- camera_entity: camera.frigate_cam08
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam08_sub
icon: mdi:bunk-bed
title: Nursery
id: nursery
live:
layout:
fit: fill
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
view:
actions:
tap_action:
action: more-info
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam08
live_provider: go2rtc
id: frigate-cam08
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam08_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
@@ -1,26 +1,97 @@
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_select.outdoor_camera_cycle
state: Garage
card:
!include /config/lovelace/stretch-cameras/garage-card.yaml
- type: conditional
conditions:
- entity: input_select.outdoor_camera_cycle
state: Back Yard
card:
!include /config/lovelace/stretch-cameras/back-yard-card.yaml
- type: conditional
conditions:
- entity: input_select.outdoor_camera_cycle
state: Front Porch
card:
!include /config/lovelace/stretch-cameras/front-porch-card.yaml
- type: conditional
conditions:
- entity: input_select.outdoor_camera_cycle
state: Front Yard
card:
!include /config/lovelace/stretch-cameras/front-yard-card.yaml
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
menu:
buttons:
frigate:
enabled: false
style: none
cameras:
- camera_entity: camera.frigate_cam18
live_provider: go2rtc
id: frigate-cam18
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam18_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
events: []
occupancy: false
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
id: frigate-cam04
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam04_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
events: []
occupancy: false
- camera_entity: camera.frigate_cam19
live_provider: go2rtc
id: frigate-cam19
capabilities:
disable: []
disable_except:
- live
go2rtc:
stream: rtsp_cam19_sub
modes:
- webrtc
always_error_if_entity_unavailable: false
triggers:
motion: false
entities: []
view:
default: live
default_reset:
every_seconds: 5
after_interaction: true
interaction_mode: all
default_cycle_camera: true
triggers:
filter_selected_camera: false
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
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:10'
+3 -44
View File
@@ -36,36 +36,6 @@ cards:
- state: idle
class: hvac-idle
# - entities:
# - input_boolean.clint_in_bed
# - input_boolean.emmett_in_bed
# - input_boolean.bridget_in_bed
# - input_boolean.kristy_in_bed
# - input_boolean.marshall_in_bed
# - input_boolean.tess_in_bed
# - input_boolean.ebin_in_bed
# - input_boolean.guest_in_bed
# states:
# - state: 'on'
# class: in-bed
# - state: 'off'
# class: out-of-bed
# - entities:
# - input_boolean.clint_is_awake
# - input_boolean.emmett_is_awake
# - input_boolean.bridget_is_awake
# - input_boolean.kristy_is_awake
# - input_boolean.marshall_is_awake
# - input_boolean.tess_is_awake
# - input_boolean.ebin_is_awake
# - input_boolean.guest_is_awake
# states:
# - state: 'on'
# class: awake
# - state: 'off'
# class: sleeping
- entities:
- input_boolean.entryway_occupied
- input_boolean.front_room_occupied
@@ -127,10 +97,8 @@ cards:
- entities:
- plant.plant_sensor_cea4
- plant.plant_sensor_3eae
- plant.fineoffset_wh51_00f935
- plant.fineoffset_wh51_0ce593
- plant.plant_sensor_3eb0
- plant.fineoffset_wh51_0d1e11
states:
- state: "problem"
class: "health-warning"
@@ -142,9 +110,9 @@ cards:
- entities:
- binary_sensor.black_bed_occupied
- input_boolean.white_bed_occupied
- binary_sensor.bed_presence_c175a4_bed_occupied_left
- binary_sensor.bed_presence_c175a4_bed_occupied_right
- binary_sensor.white_bed_occupied
- binary_sensor.master_bed_left_occupied
- binary_sensor.master_bed_right_occupied
- binary_sensor.computer_area_person_occupancy
- binary_sensor.dining_room_person_occupancy
- binary_sensor.entryway_person_occupancy
@@ -712,22 +680,13 @@ cards:
- binary_sensor.deck_motion
- binary_sensor.entryway_motion
- binary_sensor.frigate_cam01_person_occupancy
#- binary_sensor.frigate_cam02_person_occupancy
- binary_sensor.frigate_cam03_person_occupancy
- binary_sensor.frigate_cam04_person_occupancy
#- binary_sensor.frigate_cam05_person_occupancy
- binary_sensor.frigate_cam06_person_occupancy
- binary_sensor.frigate_cam07_person_occupancy
- binary_sensor.frigate_cam08_person_occupancy
#- binary_sensor.frigate_cam09_person_occupancy
#- binary_sensor.frigate_cam10_person_occupancy
#- binary_sensor.frigate_cam11_person_occupancy
- binary_sensor.frigate_cam12_person_occupancy
#- binary_sensor.frigate_cam13_person_occupancy
#- binary_sensor.frigate_cam14_motion
#- binary_sensor.frigate_cam14_person_occupancy
- binary_sensor.frigate_cam18_person_occupancy
#- binary_sensor.frigate_cam19_motion
- binary_sensor.frigate_cam19_person_occupancy
- binary_sensor.great_room_multisensor_home_security_motion_detection
- binary_sensor.garage_multisensor_home_security_motion_detection
-14
View File
@@ -850,20 +850,6 @@ badges:
navigation_path: /phone-yaml/plants
hold_action:
action: more-info
- entity: plant.fineoffset_wh51_00f935
name: Dasies
tap_action:
action: navigate
navigation_path: /phone-yaml/plants
hold_action:
action: more-info
- entity: plant.fineoffset_wh51_0d1e11
name: Cacti
tap_action:
action: navigate
navigation_path: /phone-yaml/plants
hold_action:
action: more-info
- entity: binary_sensor.check_mail
name: Mail
tap_action:
@@ -25,7 +25,7 @@ sequence:
- action: media_player.play_media
data:
media_content_id: media-source://media_source/local/sounds/alarms/Alarm_Clock.mp3
media_content_id: media-source://media_source/alarms/Alarm_Clock.mp3
media_content_type: music
target:
entity_id: media_player.master_bedroom_clock
+3 -3
View File
@@ -17,7 +17,7 @@ sequence:
entity_id:
- media_player.bathroom_mini
data:
media_content_id: media-source://media_source/local/sounds/tts/taking_morning_meds.mp3
media_content_id: media-source://media_source/tts/taking_morning_meds.mp3
media_content_type: "audio/mpeg"
- conditions:
- alias: "Afternoon meds needed"
@@ -34,7 +34,7 @@ sequence:
entity_id:
- media_player.bathroom_mini
data:
media_content_id: media-source://media_source/local/sounds/tts/taking_afternoon_meds.mp3
media_content_id: media-source://media_source/tts/taking_afternoon_meds.mp3
media_content_type: "audio/mpeg"
default:
- service: media_player.play_media
@@ -42,5 +42,5 @@ sequence:
entity_id:
- media_player.bathroom_mini
data:
media_content_id: media-source://media_source/local/sounds/tts/meds_not_needed.mp3
media_content_id: media-source://media_source/tts/meds_not_needed.mp3
media_content_type: "audio/mpeg"
+11 -11
View File
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.01"
inkscape:cx="52050"
inkscape:cy="21950"
inkscape:zoom="0.02"
inkscape:cx="48525"
inkscape:cy="32825"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
@@ -49,7 +49,7 @@
showborder="true"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
@@ -3113,9 +3113,9 @@
<path
inkscape:connector-curvature="0"
d="m 317.37099,-17378.244 a 4.387797,4.387797 0 0 1 4.213,-4.381 4.387797,4.387797 0 0 1 4.21,4.381 4.387797,4.387797 0 0 1 -4.21,4.381 4.387797,4.387797 0 0 1 -4.213,-4.381 m 10.53,3.286 v -6.572 a 4.387797,4.387797 0 0 1 4.213,-4.38 h 12.636 v 3.285 h 16.85 v 8.783 h -16.85 v 3.285 H 332.114 a 4.387797,4.387797 0 0 1 -4.213,-4.38 z"
id="binary_sensor.bed_presence_c175a4_bed_occupied_right"
id="binary_sensor.master_bed_right_occupied"
style="stroke-width:2.1939"
inkscape:label="binary_sensor.bed_presence_c175a4_bed_occupied_right" />
inkscape:label="binary_sensor.master_bed_right_occupied" />
<path
inkscape:connector-curvature="0"
d="m 597.88155,-17477.881 a 3.2614898,3.2614898 0 0 1 -3.13156,3.256 3.2614898,3.2614898 0 0 1 -3.12933,-3.256 3.2614898,3.2614898 0 0 1 3.12933,-3.257 3.2614898,3.2614898 0 0 1 3.13156,3.257 m -7.82704,-2.443 v 4.885 a 3.2614898,3.2614898 0 0 1 -3.13157,3.256 h -9.39245 v -2.442 h -12.52476 v -6.528 h 12.52476 v -2.442 h 9.39245 a 3.2614898,3.2614898 0 0 1 3.13157,3.256 z"
@@ -3125,9 +3125,9 @@
<path
inkscape:connector-curvature="0"
d="m 493.649,-17377.744 a 3.2614898,3.2614898 0 0 1 3.132,-3.256 3.2614898,3.2614898 0 0 1 3.129,3.256 3.2614898,3.2614898 0 0 1 -3.129,3.257 3.2614898,3.2614898 0 0 1 -3.132,-3.257 m 7.827,2.443 v -4.885 a 3.2614898,3.2614898 0 0 1 3.132,-3.256 H 514 v 2.442 h 12.52501 v 6.528 H 514 v 2.442 h -9.392 a 3.2614898,3.2614898 0 0 1 -3.132,-3.256 z"
id="input_boolean.white_bed_occupied"
id="binary_sensor.white_bed_occupied"
style="stroke-width:1.63075"
inkscape:label="input_boolean.white_bed_occupied" />
inkscape:label="binary_sensor.white_bed_occupied" />
<path
inkscape:connector-curvature="0"
d="m 513.78981,-17586.132 a 1.7840606,1.7840606 0 0 1 1.78106,1.713 1.7840606,1.7840606 0 0 1 -1.78106,1.711 1.7840606,1.7840606 0 0 1 -1.7816,-1.711 1.7840606,1.7840606 0 0 1 1.7816,-1.713 m -1.33634,4.281 h 2.67214 a 1.7840606,1.7840606 0 0 1 1.78105,1.713 v 5.138 h -1.33579 v 6.851 H 512 v -6.851 h -1.33579 v -5.138 a 1.7840606,1.7840606 0 0 1 1.78106,-1.713 z"
@@ -3167,9 +3167,9 @@
<path
inkscape:connector-curvature="0"
d="m 317.37099,-17357.027 a 4.387797,4.387797 0 0 1 4.213,-4.381 4.387797,4.387797 0 0 1 4.21,4.381 4.387797,4.387797 0 0 1 -4.21,4.381 4.387797,4.387797 0 0 1 -4.213,-4.381 m 10.53,3.286 v -6.572 a 4.387797,4.387797 0 0 1 4.213,-4.38 h 12.636 v 3.285 h 16.85 v 8.783 h -16.85 v 3.285 H 332.114 a 4.387797,4.387797 0 0 1 -4.213,-4.38 z"
id="binary_sensor.bed_presence_c175a4_bed_occupied_left"
id="binary_sensor.master_bed_left_occupied"
style="stroke-width:2.1939"
inkscape:label="binary_sensor.bed_presence_c175a4_bed_occupied_left" />
inkscape:label="binary_sensor.master_bed_left_occupied" />
<text
xml:space="preserve"
x="611.51886"
@@ -3864,7 +3864,7 @@
d="m 720.0222,-17679.003 a 4.5,4.5 0 0 1 4.99225,3.941 4.5,4.5 0 0 1 -3.93422,4.997 4.5,4.5 0 0 1 -5.00204,-3.928 4.5,4.5 0 0 1 3.92178,-5.007"
inkscape:label="light.storage_room"
sodipodi:arc-type="arc" />
&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10; inkscape:label=&quot;light.front_porch_overhead&quot; /&gt;&#10; <rect
&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10; inkscape:label=&quot;light.front_porch_overhead&quot; /&gt;&#10; <rect
id="rect12-8-8-9-3-20-4-5-3"
width="43.5"
height="4.5"

Before

Width:  |  Height:  |  Size: 519 KiB

After

Width:  |  Height:  |  Size: 519 KiB