From 97a0e678c07e586e2e78921363fb251af2d94432 Mon Sep 17 00:00:00 2001 From: CeeWeasel Date: Mon, 19 Jan 2026 14:47:59 -0500 Subject: [PATCH] Refactor code structure for improved readability and maintainability --- automations/house/all_away_media_off.yaml | 4 +- automations/people/Clint/Clint_in_bed.yaml | 8 +- automations/people/Clint/Clint_up.yaml | 4 + automations/people/Clint/Clint_wakeup.yaml | 4 + automations/people/Clint/wake_clint.yaml | 4 +- automations/people/Kristy/kristy_in_bed.yaml | 4 +- automations/people/almost_bedtime_tts.yaml | 4 +- .../people/continue_nursery_noise.yaml | 2 +- automations/people/kids_away_videos_on.yaml | 14 +- .../computer_area/computer_area_occupied.yaml | 33 - .../furnace_room_water_sensor_on.yaml | 2 +- .../girls_room/girls_room_bedtime_button.yaml | 10 +- .../girls_room/girls_room_lights_to_on.yaml | 14 +- .../girls_room_white_noise_off.yaml | 2 +- .../girls_room/girls_room_white_noise_on.yaml | 8 +- .../master_bedroom_white_noise_off.yaml | 2 +- .../master_bedroom_white_noise_on.yaml | 6 +- automations/things/handle_music_tag_scan.yaml | 2 +- .../things/handle_tag_scan_example.yaml | 2 +- automations/things/handle_video_tag_scan.yaml | 2 +- .../automation/Twanne/party_lights.yaml | 442 +++++++ components/alerts/dream_frigate_offline.yaml | 12 + components/packages/adaptive_lighting.yaml | 68 +- components/packages/ambientsounds.yaml | 16 +- components/packages/camera_casting.yaml | 12 +- components/packages/esphome_devices.yaml | 2 +- components/packages/logger.yaml | 2 + .../packages/temperature_management.yaml | 8 + components/packages/zwave_nodes.yaml | 15 +- custom_sentences/en/media.yaml | 4 +- customizations/entities/media_players.yaml | 4 +- esphome/archive/power-monitor.yaml | 2 +- esphome/bed-presence-c175a4.yaml | 7 +- .../meter_sensors/6chan_addon1.yaml | 126 +- .../meter_sensors/6chan_addon2.yaml | 126 +- .../meter_sensors/6chan_addon3.yaml | 126 +- .../meter_sensors/6chan_main_sensor.yaml | 130 ++- esphome/common/device_base.yaml | 6 +- .../common/sensor/debug_sensor.config.yaml | 10 + esphome/common/sensor/rssi_sensor.config.yaml | 1 + .../text_sensor/wifi_sensor.config.yaml | 6 +- esphome/common/waveshare_esp32_s3_wifi.yaml | 2 - esphome/common/wifi.yaml | 2 +- esphome/common/wifi_dhcp.yaml | 1 - esphome/power-monitor.yaml | 1032 +++++------------ groups.yaml | 4 +- lovelace/appliances/dishwasher.yaml | 154 +-- lovelace/cameras/view-camera-14.yaml | 7 + lovelace/cameras/view-camera-15.yaml | 7 + lovelace/details/view-power-breaker.yaml | 6 +- lovelace/frigate/view-ai-cam15.yaml | 2 +- lovelace/phone/girls-room.yaml | 2 +- lovelace/phone/master-bedroom.yaml | 2 +- lovelace/room_cards/girls_room.yaml | 2 +- lovelace/room_cards/master_bedroom.yaml | 2 +- .../templates/card-mini-media-player.yaml | 2 +- lovelace/view-cameras.yaml | 2 +- lovelace/view-ha-floorplan.yaml | 8 +- lovelace/view-media.yaml | 24 +- lovelace/view-overview.yaml | 4 +- lovelace/view-power-breaker copy.yaml | 6 +- lovelace/view-power.yaml | 2 +- scripts/cameras/cam03_computer_area.yaml | 18 +- scripts/cameras/cam03_sub_computer_area.yaml | 18 +- scripts/cameras/cam08_computer_area.yaml | 16 +- scripts/cameras/cam08_front_room.yaml | 18 +- scripts/cameras/cam13_computer_area.yaml | 18 +- scripts/cameras/cam13_front_room.yaml | 18 +- scripts/cameras/cam19_computer_area.yaml | 18 +- scripts/cameras/cam19_front_room.yaml | 18 +- scripts/cameras/create_camera_link.yaml | 30 +- scripts/house_alert.yaml | 14 +- .../wake_up_the_master_bedroom.yaml | 4 +- scripts/people/all_kids_youtube_music.yaml | 2 +- .../people/goodnight_kids_youtube_music.yaml | 2 +- ui-cameras.yaml | 7 +- www/floorplan/fullsized_floorplan.svg | 60 +- www/mail_and_packages/.PLACEHOLDER | 1 + ... 0eb48ea5-95c1-4db5-81d3-81450c08f48d.gif} | Bin ...48ea5-95c1-4db5-81d3-81450c08f48d_grid.png | Bin 0 -> 64244 bytes ... d449ea58-02b6-4211-882b-2ccf5e4663dd.jpg} | Bin .../f0ed786f-014e-4d93-bb60-8e239e9d450e.jpg | Bin 0 -> 41496 bytes .../db3fed34-18e8-4b38-9741-fa4b63010359.jpg | Bin 0 -> 34834 bytes .../51734701-963f-4def-a367-41be4404c1d2.jpg | Bin 0 -> 47455 bytes 84 files changed, 1614 insertions(+), 1177 deletions(-) delete mode 100644 automations/rooms/computer_area/computer_area_occupied.yaml create mode 100644 blueprints/automation/Twanne/party_lights.yaml create mode 100644 components/alerts/dream_frigate_offline.yaml create mode 100644 esphome/common/sensor/debug_sensor.config.yaml create mode 100644 www/mail_and_packages/.PLACEHOLDER rename www/mail_and_packages/{6c84a73d-d5a3-4fad-8bc2-3c6d663eff40.gif => 0eb48ea5-95c1-4db5-81d3-81450c08f48d.gif} (100%) create mode 100644 www/mail_and_packages/0eb48ea5-95c1-4db5-81d3-81450c08f48d_grid.png rename www/mail_and_packages/amazon/{b7353e92-f701-4f3d-a3d9-0673f7d8d05f.jpg => d449ea58-02b6-4211-882b-2ccf5e4663dd.jpg} (100%) create mode 100644 www/mail_and_packages/fedex/f0ed786f-014e-4d93-bb60-8e239e9d450e.jpg create mode 100644 www/mail_and_packages/ups/db3fed34-18e8-4b38-9741-fa4b63010359.jpg create mode 100644 www/mail_and_packages/walmart/51734701-963f-4def-a367-41be4404c1d2.jpg diff --git a/automations/house/all_away_media_off.yaml b/automations/house/all_away_media_off.yaml index 4100de4..ce86629 100644 --- a/automations/house/all_away_media_off.yaml +++ b/automations/house/all_away_media_off.yaml @@ -25,10 +25,10 @@ condition: entity_id: media_player.front_room_hub state: "playing" - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.girls_room_clock state: "playing" - condition: state - entity_id: media_player.girls_room_hub + entity_id: media_player.bedroom_hub state: "playing" - condition: state entity_id: media_player.bathroom_mini diff --git a/automations/people/Clint/Clint_in_bed.yaml b/automations/people/Clint/Clint_in_bed.yaml index ba4d962..7ed45ba 100644 --- a/automations/people/Clint/Clint_in_bed.yaml +++ b/automations/people/Clint/Clint_in_bed.yaml @@ -7,12 +7,16 @@ trigger: - platform: state entity_id: binary_sensor.bed_presence_c175a4_bed_occupied_either to: "on" + # Bed in master bedroom is occupied + - platform: state + entity_id: input_boolean.master_bed_occupied + to: "on" # Radio playing - platform: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub to: "playing" - platform: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub to: "idle" # Light on - platform: state diff --git a/automations/people/Clint/Clint_up.yaml b/automations/people/Clint/Clint_up.yaml index ae9823f..156209c 100644 --- a/automations/people/Clint/Clint_up.yaml +++ b/automations/people/Clint/Clint_up.yaml @@ -13,6 +13,10 @@ trigger: entity_id: binary_sensor.bed_presence_c175a4_bed_occupied_right to: "off" for: "00:05:00" + # Bed in master bedroom is occupied + - platform: state + entity_id: input_boolean.master_bed_occupied + to: "on" - platform: state entity_id: - binary_sensor.master_bedroom_door_contact diff --git a/automations/people/Clint/Clint_wakeup.yaml b/automations/people/Clint/Clint_wakeup.yaml index 7c9f025..7e51021 100644 --- a/automations/people/Clint/Clint_wakeup.yaml +++ b/automations/people/Clint/Clint_wakeup.yaml @@ -10,6 +10,10 @@ trigger: - platform: state entity_id: binary_sensor.bed_presence_c175a4_bed_occupied_right to: "on" + # Bed in master bedroom is occupied + - platform: state + entity_id: input_boolean.master_bed_occupied + to: "on" condition: - condition: state diff --git a/automations/people/Clint/wake_clint.yaml b/automations/people/Clint/wake_clint.yaml index 351996e..237ec3a 100644 --- a/automations/people/Clint/wake_clint.yaml +++ b/automations/people/Clint/wake_clint.yaml @@ -28,7 +28,7 @@ action: - action: media_player.volume_set data: #entity_id: media_player.ma_home_assistant_voice_097b44_media_player - entity_id: media_player.ma_master_bedroom_clock + entity_id: media_player.ma_bedroom_hub volume_level: 0.90 - action: input_select.select_option @@ -40,7 +40,7 @@ action: - action: music_assistant.play_media target: #entity_id: media_player.ma_home_assistant_voice_097b44_media_player - entity_id: media_player.ma_master_bedroom_clock + entity_id: media_player.ma_bedroom_hub data: media_type: playlist #media_id: library://playlist/7 diff --git a/automations/people/Kristy/kristy_in_bed.yaml b/automations/people/Kristy/kristy_in_bed.yaml index ffb9304..b7671e0 100644 --- a/automations/people/Kristy/kristy_in_bed.yaml +++ b/automations/people/Kristy/kristy_in_bed.yaml @@ -8,10 +8,10 @@ trigger: to: "on" # Radio playing - platform: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub to: "playing" - platform: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub to: "idle" # Light on - platform: state diff --git a/automations/people/almost_bedtime_tts.yaml b/automations/people/almost_bedtime_tts.yaml index 674626a..d9a2363 100644 --- a/automations/people/almost_bedtime_tts.yaml +++ b/automations/people/almost_bedtime_tts.yaml @@ -29,8 +29,8 @@ action: - media_player.bathroom_mini - media_player.front_room_hub - media_player.kitchen - - media_player.girls_room_hub - - media_player.master_bedroom_clock + - media_player.girls_room_clock + - media_player.bedroom_hub volume_level: 0.7 - delay: "00:00:03" - action: tts.speak diff --git a/automations/people/continue_nursery_noise.yaml b/automations/people/continue_nursery_noise.yaml index ffcf5f1..9e72a1c 100644 --- a/automations/people/continue_nursery_noise.yaml +++ b/automations/people/continue_nursery_noise.yaml @@ -2,7 +2,7 @@ alias: Continue Girls Room Noise id: automation_continue_girls_room_noise trigger: - platform: state - entity_id: media_player.girls_room_hub + entity_id: media_player.girls_room_clock from: "playing" condition: - condition: state diff --git a/automations/people/kids_away_videos_on.yaml b/automations/people/kids_away_videos_on.yaml index 84a2619..a8f1fee 100644 --- a/automations/people/kids_away_videos_on.yaml +++ b/automations/people/kids_away_videos_on.yaml @@ -35,11 +35,11 @@ condition: attribute: source state: "YouTube" - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub attribute: source state: "PBS Kids" - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub attribute: source state: "YouTube" @@ -94,23 +94,23 @@ action: - choose: - conditions: - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub state: "playing" - condition: or conditions: - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub attribute: source state: "YouTube" - condition: state - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub attribute: source state: "PBS Kids" sequence: - action: media_player.select_source data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub source: Home - action: media_player.turn_off data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub diff --git a/automations/rooms/computer_area/computer_area_occupied.yaml b/automations/rooms/computer_area/computer_area_occupied.yaml deleted file mode 100644 index 71d1341..0000000 --- a/automations/rooms/computer_area/computer_area_occupied.yaml +++ /dev/null @@ -1,33 +0,0 @@ -alias: "Computer Area Occupied" -id: automation_computer_area_occupied -mode: restart - -trigger: - - platform: state - entity_id: - - binary_sensor.computer_area_occupied - to: "on" -condition: - # Computer area was not already occupied or computer area light is off while not set to manual or off - - condition: or - conditions: - - condition: state - entity_id: input_boolean.computer_area_occupied - state: "off" - - condition: and - conditions: - - condition: state - entity_id: light.computer_area_hue - state: "off" - - condition: not - conditions: - - condition: state - entity_id: input_select.computer_area_mode - state: "Off" - - condition: state - entity_id: input_select.computer_area_mode - state: "Manual" - -action: - - action: input_boolean.turn_on - entity_id: input_boolean.computer_area_occupied diff --git a/automations/rooms/furnace_room/furnace_room_water_sensor_on.yaml b/automations/rooms/furnace_room/furnace_room_water_sensor_on.yaml index 5042241..c197661 100644 --- a/automations/rooms/furnace_room/furnace_room_water_sensor_on.yaml +++ b/automations/rooms/furnace_room/furnace_room_water_sensor_on.yaml @@ -12,7 +12,7 @@ action: target: entity_id: tts.google_translate_en_com data: - media_player_entity_id: media_player.front_room_hub, media_player.bathroom_mini, media_player.kitchen, media_player.master_bedroom_clock + media_player_entity_id: media_player.front_room_hub, media_player.bathroom_mini, media_player.kitchen, media_player.bedroom_hub message: Attention! A water leak has been detected on the furnace room floor! - action: notify.mobile_app_pixel_7 diff --git a/automations/rooms/girls_room/girls_room_bedtime_button.yaml b/automations/rooms/girls_room/girls_room_bedtime_button.yaml index 4cb566f..1dc408c 100644 --- a/automations/rooms/girls_room/girls_room_bedtime_button.yaml +++ b/automations/rooms/girls_room/girls_room_bedtime_button.yaml @@ -31,27 +31,27 @@ action: condition: and conditions: - condition: state - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock state: "playing" - action: media_player.volume_set data: volume_level: 0.4 target: - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock #- action: script.goodnight_kids_youtube_music - action: media_player.shuffle_set data: shuffle: false target: - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock - action: media_player.repeat_set data: repeat: all target: - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock - action: music_assistant.play_media data: @@ -59,4 +59,4 @@ action: media_type: playlist enqueue: replace target: - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock diff --git a/automations/rooms/girls_room/girls_room_lights_to_on.yaml b/automations/rooms/girls_room/girls_room_lights_to_on.yaml index d25c325..c10d9ac 100644 --- a/automations/rooms/girls_room/girls_room_lights_to_on.yaml +++ b/automations/rooms/girls_room/girls_room_lights_to_on.yaml @@ -89,7 +89,7 @@ action: sequence: - action: light.turn_on target: - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue - alias: "If the room is set to auto, the lights are on, and the automatic profile is set to Nightlight, change to the Automatic Light Profile scene with a short transition" conditions: @@ -99,7 +99,7 @@ action: state: Auto - alias: "Lights are on" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "on" - alias: "Automatic light profile set to Nightlight" condition: state @@ -120,7 +120,7 @@ action: state: Auto - alias: "Lights are on" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "on" sequence: - action: scene.turn_on @@ -137,7 +137,7 @@ action: state: Auto - alias: "Lights are off" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "off" sequence: - action: scene.turn_on @@ -148,7 +148,7 @@ action: conditions: - alias: "Room not manual or auto and lights are on" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "on" - alias: "Room set to Nightlight" condition: state @@ -165,7 +165,7 @@ action: conditions: - alias: "Room not manual or auto and lights are on" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "on" sequence: - action: scene.turn_on @@ -178,7 +178,7 @@ action: conditions: - alias: "Room not manual or auto and lights are off" condition: state - entity_id: light.girls_room_fan_light_switch_light + entity_id: light.girls_room_hue state: "off" sequence: - action: scene.turn_on diff --git a/automations/rooms/girls_room/girls_room_white_noise_off.yaml b/automations/rooms/girls_room/girls_room_white_noise_off.yaml index a5c2745..4a2a0a2 100644 --- a/automations/rooms/girls_room/girls_room_white_noise_off.yaml +++ b/automations/rooms/girls_room/girls_room_white_noise_off.yaml @@ -8,4 +8,4 @@ trigger: action: - action: media_player.turn_off - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock diff --git a/automations/rooms/girls_room/girls_room_white_noise_on.yaml b/automations/rooms/girls_room/girls_room_white_noise_on.yaml index d769db8..7db8a04 100644 --- a/automations/rooms/girls_room/girls_room_white_noise_on.yaml +++ b/automations/rooms/girls_room/girls_room_white_noise_on.yaml @@ -7,7 +7,7 @@ trigger: to: "on" - platform: state - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock to: "idle" for: 00:00:05 @@ -22,16 +22,16 @@ action: - choose: - conditions: - condition: state - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock state: "playing" sequence: - action: media_player.media_stop target: - entity_id: media_player.ma_girls_room_hub + entity_id: media_player.ma_girls_room_clock - action: script.search_and_play_playlist data: - speaker: media_player.ma_girls_room_hub + speaker: media_player.ma_girls_room_clock search_term: Clever Kids Goodnight Songs volume: 0.25 repeat: all diff --git a/automations/rooms/master_bedroom/master_bedroom_white_noise_off.yaml b/automations/rooms/master_bedroom/master_bedroom_white_noise_off.yaml index f0493a9..d763528 100644 --- a/automations/rooms/master_bedroom/master_bedroom_white_noise_off.yaml +++ b/automations/rooms/master_bedroom/master_bedroom_white_noise_off.yaml @@ -10,4 +10,4 @@ action: - action: media_player.turn_off data: {} target: - entity_id: media_player.ma_home_assistant_voice_097b44_media_player + entity_id: media_player.ma_bedroom_hub diff --git a/automations/rooms/master_bedroom/master_bedroom_white_noise_on.yaml b/automations/rooms/master_bedroom/master_bedroom_white_noise_on.yaml index 453c641..3a12ff2 100644 --- a/automations/rooms/master_bedroom/master_bedroom_white_noise_on.yaml +++ b/automations/rooms/master_bedroom/master_bedroom_white_noise_on.yaml @@ -9,8 +9,8 @@ trigger: action: - action: script.search_and_play_playlist data: - speaker: media_player.ma_master_bedroom_clock + speaker: media_player.ma_bedroom_hub search_term: CleverThunderstorm - volume: 0.25 + volume: 0.35 repeat: all - shuffle: false \ No newline at end of file + shuffle: false diff --git a/automations/things/handle_music_tag_scan.yaml b/automations/things/handle_music_tag_scan.yaml index 3f71a3f..e926270 100644 --- a/automations/things/handle_music_tag_scan.yaml +++ b/automations/things/handle_music_tag_scan.yaml @@ -7,7 +7,7 @@ max_exceeded: silent variables: # Map scanner device ID to media player entity ID sources: - 299e280bcc3579ca9b3ef714677dbf9b: girls_room_hub + 299e280bcc3579ca9b3ef714677dbf9b: girls_room_clock 75060fd1afdd90be: upstairs_speakers # Map tag ID to content tags: diff --git a/automations/things/handle_tag_scan_example.yaml b/automations/things/handle_tag_scan_example.yaml index 73ef879..3674653 100644 --- a/automations/things/handle_tag_scan_example.yaml +++ b/automations/things/handle_tag_scan_example.yaml @@ -8,7 +8,7 @@ max_exceeded: silent variables: # Map scanner device ID to media player entity ID sources: - 299e280bcc3579ca9b3ef714677dbf9b: girls_room_hub + 299e280bcc3579ca9b3ef714677dbf9b: girls_room_clock 75060fd1afdd90be: front_room_hub # Map tag ID to content tags: diff --git a/automations/things/handle_video_tag_scan.yaml b/automations/things/handle_video_tag_scan.yaml index 9d3a71f..7703b9f 100644 --- a/automations/things/handle_video_tag_scan.yaml +++ b/automations/things/handle_video_tag_scan.yaml @@ -7,7 +7,7 @@ max_exceeded: silent variables: # Map scanner device ID to media player entity ID devices: - 299e280bcc3579ca9b3ef714677dbf9b: media_player.girls_room_hub + 299e280bcc3579ca9b3ef714677dbf9b: media_player.girls_room_clock # Map tag ID to content tags: diff --git a/blueprints/automation/Twanne/party_lights.yaml b/blueprints/automation/Twanne/party_lights.yaml new file mode 100644 index 0000000..ebbe66b --- /dev/null +++ b/blueprints/automation/Twanne/party_lights.yaml @@ -0,0 +1,442 @@ +blueprint: + name: Party Lights + author: AntonH + homeassistant: + min_version: 2024.10.0 + description: '**Version 3.2** + + + Lights go to party mode (color loops or fade-in-and-out) + + + ⚠️ **NOTE:** ⚠️ + + *This automation is triggered by the status of a switch or an input_boolean entity.* + + *You can create this input_boolean by going to Settings > Devices & services > + Helpers* + + *There you click on ''Create helper and choose ''Toggle''.* + + ' + source_url: https://gist.github.com/Twanne/fe33ab8466f9a4e94b3f8e21f745a377 + domain: automation + input: + party_mode_trigger: + name: Party mode trigger + description: "The trigger you want to use to turn the party mode on.\nThe automation + will keep running until this is turned off.\nSupported entity types:\n - + input_boolean\n - switch\n" + default: [] + selector: + entity: + filter: + - domain: + - input_boolean + - switch + reorder: false + multiple: false + target_lights: + name: Target lights + description: Which lights do you want to control? + selector: + entity: + multiple: true + filter: + - domain: + - light + reorder: false + input_sync_lights: + name: Synchronize lights + description: 'If more than 1 target light is selected, choose if they will all + change to the same state or if they each get their own random values. + + `ℹ️ Light groups will be seen an a single entity.` + + ' + default: true + selector: + boolean: {} + time_between_changes: + name: Time between changes + description: Change the lights setting after this duration + default: + hours: 0 + minutes: 0 + seconds: 0 + milliseconds: 0 + selector: + duration: + enable_millisecond: true + transition_time: + name: Transition time + description: 'The time it takes for the light to transition to the assigned + value when it''s triggered. + + `⚠️ This value should not be greater than the time between changes!` + + ' + default: 0 + selector: + number: + min: 0.0 + max: 300.0 + step: 1.0 + unit_of_measurement: s + mode: slider + color_mode: + name: Color mode + description: "Select how the lights need to change\n \n 1. ⬛ **NO COLOR CHANGE:**\n + \ Don't change colors.\n 2. \U0001F500 **RANDOM COLOR MODE:**\n Change all + RGB values randomly.\n 3. \U0001F308 **SATURATED COLOR MODE**\n Random, + but deeply saturated, colors only.\n 4. \U0001F384 **CHRISTMAS COLORS:**\n + \ Change only between Christmas colors.\n 5. \U0001F6A8 **POLICE LIGHTS**\n + \ Change between red and blue.\n `⚠️ Lights will be synchronized!`\n 6. + \U0001F7E5 **REDS ONLY MODE:**\n Change only red value randomly.\n 7. \U0001F7E9 + **GREENS ONLY MODE:**\n Change only green value randomly.\n 8. \U0001F7E6 + **BLUES ONLY MODE:**\n Change only blue value randomly.\n 9. \U0001F7E6 + **TEALS ONLY MODE:**\n Change only teal shades randomly.\n 10. \U0001F338 + **PINKS ONLY MODE:**\n Change only pink shades randomly.\n 11. \U0001F7E8 + **YELLOWS ONLY MODE:**\n Change only yellow shades randomly.\n" + default: no_color_change + selector: + select: + mode: dropdown + options: + - label: NO COLOR CHANGE + value: no_color_change + - label: RANDOM COLOR MODE + value: random + - label: SATURATED COLOR MODE + value: deep + - label: CHRISTMAS COLORS + value: christmas + - label: POLICE LIGHTS + value: police + - label: REDS ONLY MODE + value: red + - label: GREENS ONLY MODE + value: green + - label: BLUES ONLY MODE + value: blue + - label: TEALS ONLY MODE + value: teal + - label: PINKS ONLY MODE + value: pink + - label: YELLOWS ONLY MODE + value: yellow + multiple: false + custom_value: false + sort: false + brightness_mode: + name: Brightness mode + description: "Select how the lights need to change\n 1. **RANDOM BRIGHTNESS:**\n + \ Change the brightness randomly within a set range\n \n 2. **FIXED BRIGHTNESS:**\n + \ Keep the light at a user defined brightness\n" + default: random + selector: + select: + mode: dropdown + options: + - label: RANDOM BRIGHTNESS + value: random + - label: FIXED BRIGHTNESS + value: fixed + multiple: false + custom_value: false + sort: false + random_brightness_section: + name: Settings for RANDOM BRIGHTNESS + icon: mdi:brightness-auto + collapsed: true + input: + min_brightness_pct: + name: Minimum brightness (RANDOM BRIGHTNESS MODE) + description: Don't set the brightness of the light below this value + default: 0 + selector: + number: + min: 0.0 + max: 100.0 + step: 1.0 + mode: slider + unit_of_measurement: '%' + max_brightness_pct: + name: Maximum brightness (RANDOM BRIGHTNESS MODE) + description: Don't set the brightness of the light above this value + default: 100 + selector: + number: + min: 0.0 + max: 100.0 + step: 1.0 + mode: slider + unit_of_measurement: '%' + fixed_brightness_section: + name: Settings for FIXED BRIGHTNESS + icon: mdi:brightness-percent + collapsed: true + input: + fixed_brightness_pct: + name: Brightness (FIXED BRIGHTNESS MODE) + description: Keep the light at this percentage (color changes might affect + this somewhat) + default: 0 + selector: + number: + min: 0.0 + max: 100.0 + step: 1.0 + mode: slider + unit_of_measurement: '%' + light_effects_section: + name: Light Effects + icon: mdi:creation-outline + collapsed: true + input: + light_effect: + name: Effects (All modes) + description: 'Which light effect do you want to run? + + `ℹ️ Recommended to set the time between changes long enough for the effects + to loop at least once.` + + ' + default: '' + selector: + text: + multiple: false + multiline: false + turn_off_settings_section: + name: Turn off settings + icon: mdi:cog-stop-outline + collapsed: true + input: + turn_off_delay: + name: Turn off delay + description: 'The time to wait before the automation is turned off and the + After Party State becomes active. + + ' + default: + hours: 0 + minutes: 0 + seconds: 0 + selector: + duration: {} + after_party_state: + name: After party state + description: "What state should the lights have when the party mode is turned + off.\n \n 1. **NO CHANGE:**\n Keep the lights in the state they are + at the end of the party.\n 2. **TURN OFF:**\n Turn the lights off.\n + \ 3. **RETURN TO PREVIOUS STATE:**\n Return the lights to the state they + were before the party began.\n 4. **USER DEFINED SCENE:**\n Activate + a scene that determines the state of the lights after the party.\n 5. + **SCENE THEN OFF**\n Set the lights to a specific setting by activating + the user defined scene, then turn them off.\n" + default: return_to_previous + selector: + select: + mode: dropdown + options: + - label: NO CHANGE + value: no_change + - label: LIGHTS OFF + value: lights_off + - label: RETURN TO PREVIOUS STATE + value: return_to_previous + - label: USER DEFINED SCENE + value: user_defined_scene + - label: SCENE THEN OFF + value: scene_then_off + multiple: false + custom_value: false + sort: false + after_party_scene: + name: After party scene + description: 'User defined scene that can be activated after the party mode + is turned off. + + ' + default: [] + selector: + entity: + filter: + - domain: + - scene + reorder: false + multiple: false +mode: restart +variables: + party_mode_trigger: !input party_mode_trigger + target_lights: !input target_lights + time_between_changes: !input time_between_changes + transition_time: !input transition_time + color_mode: !input color_mode + brightness_mode: !input brightness_mode + min_brightness_pct: !input min_brightness_pct + max_brightness_pct: !input max_brightness_pct + fixed_brightness_pct: !input fixed_brightness_pct + light_effect: !input light_effect + after_party_state: !input after_party_state + after_party_scene: !input after_party_scene + turn_off_delay: !input turn_off_delay + input_sync_lights: !input input_sync_lights + sync_lights: '{{ true if color_mode == "police" else input_sync_lights }} + + ' +triggers: +- trigger: state + entity_id: !input party_mode_trigger + to: 'on' +actions: +- action: scene.create + metadata: {} + data: + scene_id: before_state + snapshot_entities: '{{ target_lights }}' +- repeat: + sequence: + - choose: + - conditions: '{{ sync_lights is true }}' + sequence: + - variables: + brightness_value: "{% if brightness_mode == \"random\" %}\n {{ range(min_brightness_pct, + max_brightness_pct) | random }}\n{% else %}\n {{ fixed_brightness_pct + }}\n{% endif %}\n" + rgb_value: "{% if color_mode == \"random\" %}\n {{ range(256) | random, + range(256) | random, range(256) | random }}\n{% elif color_mode == \"deep\" + %}\n {% set r = range(256) |random %}\n {% set g = range(256) |random + %}\n {% set b = range(256) |random %}\n {# check if all values aren't + too high. This will mute the colors as they will go towards white. #}\n + \ {% if ( r >= 200 and g >= 200 and b >= 200) %}\n {% set rgb_changer + = range(3) | random %}\n \n {% if rgb_changer == 0 %}\n {{ + (r - 100), g, b }}\n {% elif rgb_changer == 1 %}\n {{ r, (g + - 100), b }}\n {% elif rgb_changer == 2 %}\n {{ r, g, (b - 100) + }}\n {% endif %} \n \n {# check if all values aren't too close + together. This will mute the colors because they will form a grey color. + #}\n {% elif ( (r - g)|abs <= 100 and (g - b)|abs <= 100 and (b - r)|abs + <= 100 ) %}\n {% set rgb_changer = range(3) | random %}\n {% + if rgb_changer == 0 %}\n {{ (r / 2)|int , g, b }}\n {% elif + rgb_changer == 1 %}\n {{ r, (g / 2)|int, b }}\n {% elif rgb_changer + == 2 %}\n {{ r, g, (b / 2)|int }}\n {% endif %}\n {% else %}\n + \ {{ r, g, b }}\n {% endif %}\n{% elif color_mode == \"christmas\" + %} \n {% macro random_rgb_component(max) %}\n {{ range(256) | random + }}\n {% endmacro %}\n {% macro get_color(color_key) %}\n {% if + color_key == 1 %}\n [{{ random_rgb_component(256) }}, 0, 0]\n {% + elif color_key == 2 %}\n [0, {{ random_rgb_component(256) }}, 0]\n + \ {% elif color_key == 3 %}\n [0, 0, {{ random_rgb_component(256) + }}]\n {% elif color_key == 4 %}\n [255, 255, {{ random_rgb_component(50) + }}]\n {% endif %}\n {% endmacro %}\n {% set color_key = range(1, + 5) | random %}\n {% set random_color = get_color(color_key) %}\n {{ + random_color }} \n{% elif color_mode == \"police\" %}\n {% if state_attr( + target_lights[0], 'rgb_color') | string == '(255, 0, 0)' %}\n [ 0, + 0, 255 ]\n {% else %}\n [ 255, 0, 0 ]\n {% endif %}\n{% elif color_mode + == \"red\" %}\n {{ range(256) | random, 0, 0 }}\n{% elif color_mode + == \"green\" %}\n {{ 0, range(256) | random, 0 }}\n{% elif color_mode + == \"blue\" %}\n {{ 0, 0, range(256) | random }}\n{% elif color_mode + == \"teal\" %}\n {{ range(256) | random, 255, 255 }}\n{% elif color_mode + == \"pink\" %}\n {{ 255, range(256) | random, 255 }}\n{% elif color_mode + == \"yellow\" %}\n {{ 255, 255, range(256) | random }}\n{% else %}\n + \ {{ 255, 255, 255 }}\n{% endif %}\n" + - action: light.turn_on + data: "{% if light_effect == \"\" %}\n {% if color_mode == \"no_color_change\" + %}\n {{ { \"transition\": transition_time, \"brightness_pct\": brightness_value + } }}\n {% else %}\n {{ { \"transition\": transition_time, \"brightness_pct\": + brightness_value, \"rgb_color\": rgb_value } }}\n {% endif %}\n{% else + %}\n {% if color_mode == \"no_color_change\" %}\n {{ { \"transition\": + transition_time, \"brightness_pct\": brightness_value, \"effect\": light_effect + \ } }}\n {% else %}\n {{ { \"transition\": transition_time, \"brightness_pct\": + brightness_value, \"rgb_color\": rgb_value, \"effect\": light_effect } + }}\n {% endif %}\n{% endif %}\n" + target: + entity_id: '{{ target_lights }}' + - conditions: '{{ sync_lights is false }}' + sequence: + - repeat: + for_each: '{{ target_lights }}' + sequence: + - variables: + brightness_value: "{% if brightness_mode == \"random\" %}\n {{ range(min_brightness_pct, + max_brightness_pct) | random }}\n{% else %}\n {{ fixed_brightness_pct + }}\n{% endif %}\n" + rgb_value: "{% if color_mode == \"random\" %}\n {{ range(256) | random, + range(256) | random, range(256) | random }}\n{% elif color_mode + == \"deep\" %}\n {% set r = range(256) |random %}\n {% set g = + range(256) |random %}\n {% set b = range(256) |random %}\n {# + check if all values aren't too high. This will mute the colors as + they will go towards white. #}\n {% if ( r >= 200 and g >= 200 + and b >= 200) %}\n {% set rgb_changer = range(3) | random %}\n + \ \n {% if rgb_changer == 0 %}\n {{ (r - 100), g, b }}\n + \ {% elif rgb_changer == 1 %}\n {{ r, (g - 100), b }}\n {% + elif rgb_changer == 2 %}\n {{ r, g, (b - 100) }}\n {% endif + %} \n \n {# check if all values aren't too close together. + This will mute the colors because they will form a grey color. #}\n + \ {% elif ( (r - g)|abs <= 100 and (g - b)|abs <= 100 and (b - r)|abs + <= 100 ) %}\n {% set rgb_changer = range(3) | random %}\n {% + if rgb_changer == 0 %}\n {{ (r / 2)|int , g, b }}\n {% elif + rgb_changer == 1 %}\n {{ r, (g / 2)|int, b }}\n {% elif + rgb_changer == 2 %}\n {{ r, g, (b / 2)|int }}\n {% endif + %}\n {% else %}\n {{ r, g, b }}\n {% endif %}\n{% elif color_mode + == \"christmas\" %} \n {% macro random_rgb_component(max) %}\n + \ {{ range(0, max) | random }}\n {% endmacro %}\n {% macro get_color(color_key) + %}\n {% if color_key == 1 %}\n [{{ random_rgb_component(256) + }}, 0, 0]\n {% elif color_key == 2 %}\n [0, {{ random_rgb_component(256) + }}, 0]\n {% elif color_key == 3 %}\n [0, 0, {{ random_rgb_component(256) + }}]\n {% elif color_key == 4 %}\n [255, 255, {{ random_rgb_component(50) + }}]\n {% endif %}\n {% endmacro %}\n {% set color_key = range(1, + 5) | random %}\n {% set random_color = get_color(color_key) %}\n + \ {{ random_color }}\n{% elif color_mode == \"red\" %}\n {{ range(256) + | random, 0, 0 }}\n{% elif color_mode == \"green\" %}\n {{ 0, range(256) + | random, 0 }}\n{% elif color_mode == \"blue\" %}\n {{ 0, 0, range(256) + | random }}\n{% elif color_mode == \"teal\" %}\n {{ range(256) + | random, 255, 255 }}\n{% elif color_mode == \"pink\" %}\n {{ 255, + range(256) | random, 255 }}\n{% elif color_mode == \"yellow\" %}\n + \ {{ 255, 255, range(256) | random }}\n{% else %}\n {{ 255, 255, + 255 }}\n{% endif %}\n" + - action: light.turn_on + data: "{% if light_effect == \"\" %}\n {% if color_mode == \"no_color_change\" + %}\n {{ { \"transition\": transition_time, \"brightness_pct\": + brightness_value } }}\n {% else %}\n {{ { \"transition\": transition_time, + \"brightness_pct\": brightness_value, \"rgb_color\": rgb_value } }}\n + \ {% endif %}\n{% else %}\n {% if color_mode == \"no_color_change\" + %}\n {{ { \"transition\": transition_time, \"brightness_pct\": + brightness_value, \"effect\": light_effect } }}\n {% else %}\n {{ + { \"transition\": transition_time, \"brightness_pct\": brightness_value, + \"rgb_color\": rgb_value, \"effect\": light_effect } }}\n {% endif + %}\n{% endif %}\n" + target: + entity_id: '{{ repeat.item }}' + - delay: !input time_between_changes + until: + - condition: state + entity_id: !input party_mode_trigger + state: 'off' +- delay: !input turn_off_delay +- choose: + - conditions: '{{ "lights_off" in after_party_state }}' + sequence: + - action: light.turn_off + target: + entity_id: '{{ target_lights }}' + - conditions: '{{ "return_to_previous" in after_party_state }}' + sequence: + - action: scene.turn_on + metadata: {} + target: + entity_id: scene.before_state + - conditions: '{{ "user_defined_scene" in after_party_state }}' + sequence: + - action: scene.turn_on + metadata: {} + target: + entity_id: '{{ after_party_scene }}' + - conditions: '{{ "scene_then_off" in after_party_state }}' + sequence: + - action: scene.turn_on + metadata: {} + target: + entity_id: '{{ after_party_scene }}' + - action: light.turn_off + target: + entity_id: '{{ target_lights }}' diff --git a/components/alerts/dream_frigate_offline.yaml b/components/alerts/dream_frigate_offline.yaml new file mode 100644 index 0000000..fd0f1d3 --- /dev/null +++ b/components/alerts/dream_frigate_offline.yaml @@ -0,0 +1,12 @@ +name: "Dream-Frigate is unavailable" +done_message: "Dream-Frigate is now available" +entity_id: sensor.frigate_status +state: unavailable +repeat: + - 1 + - 5 + - 15 +can_acknowledge: True +skip_first: true +notifiers: + - mobile_app_pixel_7 diff --git a/components/packages/adaptive_lighting.yaml b/components/packages/adaptive_lighting.yaml index bb4d1d9..420ad83 100644 --- a/components/packages/adaptive_lighting.yaml +++ b/components/packages/adaptive_lighting.yaml @@ -1,36 +1,36 @@ adaptive_lighting: - - name: "Southern" - lights: [] - interval: 90 - transition: 45 - initial_transition: 1 - min_brightness: 1 - max_brightness: 100 - min_color_temp: 2000 - max_color_temp: 6500 - prefer_rgb_color: false - sleep_brightness: 1 - sleep_color_temp: 1000 - min_sunrise_time: "05:30:00" - max_sunrise_time: "07:00:00" - min_sunset_time: "19:00:00" - max_sunset_time: "21:00:00" - take_over_control: true - detect_non_ha_changes: false - only_once: false + # - name: "Southern" + # lights: [] + # interval: 90 + # transition: 45 + # initial_transition: 1 + # min_brightness: 1 + # max_brightness: 100 + # min_color_temp: 2000 + # max_color_temp: 6500 + # prefer_rgb_color: false + # sleep_brightness: 1 + # sleep_color_temp: 1000 + # min_sunrise_time: "05:30:00" + # max_sunrise_time: "07:00:00" + # min_sunset_time: "19:00:00" + # max_sunset_time: "21:00:00" + # take_over_control: true + # detect_non_ha_changes: false + # only_once: false - - name: "Northern" - lights: [] - interval: 90 - transition: 45 - initial_transition: 1 - min_brightness: 1 - max_brightness: 100 - min_color_temp: 2000 - max_color_temp: 6500 - prefer_rgb_color: false - sleep_brightness: 1 - sleep_color_temp: 1000 - take_over_control: true - detect_non_ha_changes: false - only_once: false \ No newline at end of file + # - name: "Northern" + # lights: [] + # interval: 90 + # transition: 45 + # initial_transition: 1 + # min_brightness: 1 + # max_brightness: 100 + # min_color_temp: 2000 + # max_color_temp: 6500 + # prefer_rgb_color: false + # sleep_brightness: 1 + # sleep_color_temp: 1000 + # take_over_control: true + # detect_non_ha_changes: false + # only_once: false \ No newline at end of file diff --git a/components/packages/ambientsounds.yaml b/components/packages/ambientsounds.yaml index 54bb5da..813c82e 100644 --- a/components/packages/ambientsounds.yaml +++ b/components/packages/ambientsounds.yaml @@ -28,10 +28,10 @@ group: - media_player.great_room - media_player.kitchen - media_player.front_room_hub - - media_player.girls_room_hub + - media_player.girls_room_clock - media_player.boys_room_clock - media_player.bathroom_mini - - media_player.ma_home_assistant_voice_097b44_media_player + - media_player.bedroom_hub - media_player.computer_area_hub ###### INPUT SELECT ------------------------------------------ @@ -101,7 +101,7 @@ script: {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.ma_home_assistant_voice_097b44_media_player {% elif is_state("input_select.google_home", "Master Bathroom") %} media_player.great_room {% elif is_state("input_select.google_home", "Kitchen") %} media_player.kitchen - {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_hub + {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_clock {% elif is_state("input_select.google_home", "Boys Room") %} media_player.boys_room_clock {% elif is_state("input_select.google_home", "Computer Area") %} media_player.computer_area_hub {% elif is_state("input_select.google_home", "Downstairs") %} media_player.downstairs_public @@ -116,7 +116,7 @@ script: {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.ma_home_assistant_voice_097b44_media_player {% elif is_state("input_select.google_home", "Master Bathroom") %} media_player.great_room {% elif is_state("input_select.google_home", "Kitchen") %} media_player.kitchen - {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_hub + {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_clock {% elif is_state("input_select.google_home", "Boys Room") %} media_player.boys_room_clock {% elif is_state("input_select.google_home", "Computer Area") %} media_player.computer_area_hub {% elif is_state("input_select.google_home", "Downstairs") %} media_player.downstairs_public @@ -162,10 +162,10 @@ script: data_template: entity_id: > {% if is_state("input_select.google_home", "Front Room") %} media_player.front_room_hub - {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.ma_home_assistant_voice_097b44_media_player + {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.bedroom_hub {% elif is_state("input_select.google_home", "Master Bathroom") %} media_player.great_room {% elif is_state("input_select.google_home", "Kitchen") %} media_player.kitchen - {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_hub + {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_clock {% elif is_state("input_select.google_home", "Boys Room") %} media_player.boys_room_clock {% elif is_state("input_select.google_home", "Computer Area") %} media_player.computer_area_hub {% elif is_state("input_select.google_home", "Downstairs") %} media_player.downstairs_public @@ -188,10 +188,10 @@ automation: data_template: entity_id: > {% if is_state("input_select.google_home", "Front Room") %} media_player.front_room_hub - {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.ma_home_assistant_voice_097b44_media_player + {% elif is_state("input_select.google_home", "Master Bedroom") %} media_player.bedroom_hub {% elif is_state("input_select.google_home", "Master Bathroom") %} media_player.great_room {% elif is_state("input_select.google_home", "Kitchen") %} media_player.kitchen - {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_hub + {% elif is_state("input_select.google_home", "Girls Room") %} media_player.girls_room_clock {% elif is_state("input_select.google_home", "Boys Room") %} media_player.boys_room_clock {% elif is_state("input_select.google_home", "Computer Area") %} media_player.computer_area_hub {% elif is_state("input_select.google_home", "Downstairs") %} media_player.downstairs_public diff --git a/components/packages/camera_casting.yaml b/components/packages/camera_casting.yaml index 203df71..299b121 100644 --- a/components/packages/camera_casting.yaml +++ b/components/packages/camera_casting.yaml @@ -18,7 +18,7 @@ input_select: name: To Screen options: - Front Room Display - - Girls Room Hub + - Bedroom Hub - Computer Area Hub script: @@ -31,8 +31,8 @@ script: media_player: > {% if is_state('input_select.cast_to_screen_dropdown', 'Front Room Display') %} media_player.front_room_hub - {% elif is_state('input_select.cast_to_screen_dropdown', 'Girls Room Hub') %} - media_player.girls_room_hub + {% elif is_state('input_select.cast_to_screen_dropdown', 'Bedroom Hub') %} + media_player.bedroom_hub {% elif is_state('input_select.cast_to_screen_dropdown', 'Computer Area Hub') %} media_player.computer_area_hub {% endif %} @@ -119,7 +119,7 @@ script: # {% if is_state('input_select.cast_to_screen_dropdown', 'Front Room Display') %} # media_player.front_room_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Girls Room Hub') %} - # media_player.girls_room_hub + # media_player.bedroom_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Computer Area Hub') %} # media_player.computer_area_hub # {% endif %} @@ -152,7 +152,7 @@ script: # {% if is_state('input_select.cast_to_screen_dropdown', 'Front Room Display') %} # media_player.front_room_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Girls Room Hub') %} - # media_player.girls_room_hub + # media_player.bedroom_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Computer Area Hub') %} # media_player.computer_area_hub # {% endif %} @@ -188,7 +188,7 @@ script: # {% if is_state('input_select.cast_to_screen_dropdown', 'Front Room Display') %} # media_player.front_room_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Girls Room Hub') %} - # media_player.girls_room_hub + # media_player.bedroom_hub # {% elif is_state('input_select.cast_to_screen_dropdown', 'Computer Area Hub') %} # media_player.computer_area_hub # {% endif %} diff --git a/components/packages/esphome_devices.yaml b/components/packages/esphome_devices.yaml index ff15a38..0fba8f3 100644 --- a/components/packages/esphome_devices.yaml +++ b/components/packages/esphome_devices.yaml @@ -14,7 +14,7 @@ template: - name: Master Bed Occupied unique_id: a5620335-43a1-47ce-bf37-ac8433f3a406 - state: "{{ is_state('binary_sensor.bed_presence_2d14a4_bed_occupied_either', 'on') }}" + state: "{{ is_state('binary_sensor.bed_presence_c175a4_bed_occupied_either', 'on') }}" icon: > {% if is_state("binary_sensor.master_bed_occupied", "on") %} mdi:bed-king diff --git a/components/packages/logger.yaml b/components/packages/logger.yaml index 2c85149..d1c5798 100644 --- a/components/packages/logger.yaml +++ b/components/packages/logger.yaml @@ -2,6 +2,8 @@ logger: default: warning logs: + # Adaptive Lighting Issues + # custom_components.adaptive_lighting: debug # WebRTC issues # custom_components.webrtc: debug diff --git a/components/packages/temperature_management.yaml b/components/packages/temperature_management.yaml index 8d13d34..9767810 100644 --- a/components/packages/temperature_management.yaml +++ b/components/packages/temperature_management.yaml @@ -254,3 +254,11 @@ template: availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}" device_class: duration unit_of_measurement: min + + - name: HVAC Preset Mode + unique_id: templatesensor_hvac_preset_mode + state: "{{state_attr('climate.thermostat','preset_mode')}}" + availability: "{{ (states('climate.thermostat') not in ['unknown', 'unavailable']) }}" + device_class: enum + attributes: + options: "{{state_attr('climate.thermostat','preset_modes')}}" \ No newline at end of file diff --git a/components/packages/zwave_nodes.yaml b/components/packages/zwave_nodes.yaml index 8e5ed77..87b5e20 100644 --- a/components/packages/zwave_nodes.yaml +++ b/components/packages/zwave_nodes.yaml @@ -7,17 +7,28 @@ template: {{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") | selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list | count | int(default=0)}} + attributes: + devices: >- + {{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") | + selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list }} - name: "Dead ZWave Devices" unique_id: template_sensor_failed_zwave icon: mdi:z-wave state: >- {{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") | - selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list | count | int(default=0)}} + selectattr('state', 'in', 'dead') | map(attribute='entity_id')| list | count | int(default=0)}} attributes: devices: >- {{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") | - selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list }} + selectattr('state', 'in', 'dead') | map(attribute='entity_id')| list }} + + - name: ZWave Pending Updates + unique_id: 6bf2876a-378a-4394-8a97-5b0603b17f2e + state: "{{ states.update | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | select ('in',integration_entities('Z-Wave JS')) | list | count }}" + icon: mdi:z-wave + attributes: + devices: "{{ states.update | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | select ('in',integration_entities('Z-Wave JS')) | list }}" automation: - id: automation_alert_failed_zwave_nodes diff --git a/custom_sentences/en/media.yaml b/custom_sentences/en/media.yaml index 603601b..c919da9 100644 --- a/custom_sentences/en/media.yaml +++ b/custom_sentences/en/media.yaml @@ -12,10 +12,10 @@ lists: - in: "front room" out: "media_player.front_room_hub" - in: "master bedroom" - out: "media_player.master_bedroom_clock" + out: "media_player.bedroom_hub" - in: "downstairs" out: "media_player.computer_area_hub" volume: range: from: 0 - to: 100 \ No newline at end of file + to: 100 diff --git a/customizations/entities/media_players.yaml b/customizations/entities/media_players.yaml index 274def1..5222014 100644 --- a/customizations/entities/media_players.yaml +++ b/customizations/entities/media_players.yaml @@ -46,13 +46,13 @@ # media_player.kitchen: # icon: mdi:cast-audio -# media_player.master_bedroom_clock: +# media_player.bedroom_hub: # icon: mdi:cast-audio # # media_player.master_bedroom_tv: # # icon: mdi:cast-variant -# media_player.girls_room_hub: +# media_player.bedroom_hub: # icon: mdi:cast-variant # media_player.outside: diff --git a/esphome/archive/power-monitor.yaml b/esphome/archive/power-monitor.yaml index 556a5d5..e3d8c16 100644 --- a/esphome/archive/power-monitor.yaml +++ b/esphome/archive/power-monitor.yaml @@ -810,7 +810,7 @@ sensor: topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh/status payload_available: online payload_not_available: offline - state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh + state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh # min_save_interval: ${update_time} #kWh From CT 22 diff --git a/esphome/bed-presence-c175a4.yaml b/esphome/bed-presence-c175a4.yaml index 2ce261e..2b654e9 100644 --- a/esphome/bed-presence-c175a4.yaml +++ b/esphome/bed-presence-c175a4.yaml @@ -38,14 +38,15 @@ packages: - bed-presence-mk1/base.yaml - esphome-common/bluetooth-proxy.yaml + binary_sensor: - - id: !remove local_status_sensor + - id: !remove bed_presence_status button: - - id: !remove local_restart_button + - id: !remove btn_restart sensor: - - id: !remove local_uptime_sensor + - id: !remove bed_presence_uptime # See https://github.com/ElevatedSensors/sensor-configs/blob/main/bed-presence-mk1/sensor.yaml for a detailed # description of available substitutions. # diff --git a/esphome/circuit-setup/meter_sensors/6chan_addon1.yaml b/esphome/circuit-setup/meter_sensors/6chan_addon1.yaml index 6523e41..5db2418 100644 --- a/esphome/circuit-setup/meter_sensors/6chan_addon1.yaml +++ b/esphome/circuit-setup/meter_sensors/6chan_addon1.yaml @@ -6,33 +6,45 @@ sensor: ############ - platform: atm90e32 release_device: true - cs_pin: 0 + cs_pin: ${addon1_ic1} id: ${addon1_id1} phase_a: current: - name: ${ct7_name} Amps + name: ${ct7_name} ${amp_label} id: ct7Amps power: - name: ${ct7_name} Watts + name: ${ct7_name} ${watt_label} id: ct7Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct7} phase_b: current: - name: ${ct8_name} Amps + name: ${ct8_name} ${amp_label} id: ct8Amps power: - name: ${ct8_name} Watts + name: ${ct8_name} ${watt_label} id: ct8Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct8} phase_c: current: - name: ${ct9_name} Amps + name: ${ct9_name} ${amp_label} id: ct9Amps power: - name: ${ct9_name} Watts + name: ${ct9_name} ${watt_label} id: ct9Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct9} line_frequency: ${electric_freq} @@ -44,33 +56,45 @@ sensor: ############ - platform: atm90e32 release_device: true - cs_pin: 16 + cs_pin: ${addon1_ic2} id: ${addon1_id2} phase_a: current: - name: ${ct10_name} Amps + name: ${ct10_name} ${amp_label} id: ct10Amps power: - name: ${ct10_name} Watts + name: ${ct10_name} ${watt_label} id: ct10Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct10} phase_b: current: - name: ${ct11_name} Amps + name: ${ct11_name} ${amp_label} id: ct11Amps power: - name: ${ct11_name} Watts + name: ${ct11_name} ${watt_label} id: ct11Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct11} phase_c: current: - name: ${ct12_name} Amps + name: ${ct12_name} ${amp_label} id: ct12Amps power: - name: ${ct12_name} Watts + name: ${ct12_name} ${watt_label} id: ct12Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct12} line_frequency: ${electric_freq} @@ -79,9 +103,9 @@ sensor: enable_offset_calibration: ${offset_calibration} enable_gain_calibration: ${gain_calibration} -#Total Amps AddOn1 +#Total A AddOn1 - platform: template - name: ${friendly_name} Total Amps Add-on1 + name: Add-on 1 Total ${amp_label} id: totalAmpsAddOn1 lambda: return id(ct7Amps).state + id(ct8Amps).state + id(ct9Amps).state + id(ct10Amps).state + id(ct11Amps).state + id(ct12Amps).state ; accuracy_decimals: 2 @@ -89,12 +113,78 @@ sensor: device_class: current update_interval: ${update_time} -#Total Watts AddOn1 +#Total W AddOn1 - platform: template - name: ${friendly_name} Total Watts Add-on1 + name: Add-on 1 Total ${watt_label} id: totalWattsAddOn1 lambda: return id(ct7Watts).state + id(ct8Watts).state + id(ct9Watts).state + id(ct10Watts).state + id(ct11Watts).state + id(ct12Watts).state ; accuracy_decimals: 2 unit_of_measurement: W device_class: power update_interval: ${update_time} + + #kWh From CT 7 + - platform: total_daily_energy + name: ${ct7_name} ${kwh_label} + id: ct7Kwh + power_id: ct7Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + # kWh from CT 8 + - platform: total_daily_energy + name: ${ct8_name} ${kwh_label} + id: ct8Kwh + power_id: ct8Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 9 + - platform: total_daily_energy + name: ${ct9_name} ${kwh_label} + id: ct9Kwh + power_id: ct9Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 10 + - platform: total_daily_energy + name: ${ct10_name} ${kwh_label} + id: ct10Kwh + power_id: ct10Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 11 + - platform: total_daily_energy + name: ${ct11_name} ${kwh_label} + id: ct11Kwh + power_id: ct11Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 12 + - platform: total_daily_energy + name: ${ct12_name} ${kwh_label} + id: ct12Kwh + power_id: ct12Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing \ No newline at end of file diff --git a/esphome/circuit-setup/meter_sensors/6chan_addon2.yaml b/esphome/circuit-setup/meter_sensors/6chan_addon2.yaml index 6c50c4b..00466b7 100644 --- a/esphome/circuit-setup/meter_sensors/6chan_addon2.yaml +++ b/esphome/circuit-setup/meter_sensors/6chan_addon2.yaml @@ -5,34 +5,46 @@ sensor: #IC1 AddOn 2 ############ - platform: atm90e32 - cs_pin: 27 + cs_pin: ${addon2_ic1} release_device: true id: ${addon2_id1} phase_a: current: - name: ${ct13_name} Amps + name: ${ct13_name} ${amp_label} id: ct13Amps power: - name: ${ct13_name} Watts + name: ${ct13_name} ${watt_label} id: ct13Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct13} phase_b: current: - name: ${ct14_name} Amps + name: ${ct14_name} ${amp_label} id: ct14Amps power: - name: ${ct14_name} Watts + name: ${ct14_name} ${watt_label} id: ct14Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct14} phase_c: current: - name: ${ct15_name} Amps + name: ${ct15_name} ${amp_label} id: ct15Amps power: - name: ${ct15_name} Watts + name: ${ct15_name} ${watt_label} id: ct15Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct15} line_frequency: ${electric_freq} @@ -44,33 +56,45 @@ sensor: ############ - platform: atm90e32 release_device: true - cs_pin: 17 + cs_pin: ${addon2_ic2} id: ${addon2_id2} phase_a: current: - name: ${ct16_name} Amps + name: ${ct16_name} ${amp_label} id: ct16Amps power: - name: ${ct16_name} Watts + name: ${ct16_name} ${watt_label} id: ct16Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct16} phase_b: current: - name: ${ct17_name} Amps + name: ${ct17_name} ${amp_label} id: ct17Amps power: - name: ${ct17_name} Watts + name: ${ct17_name} ${watt_label} id: ct17Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct17} phase_c: current: - name: ${ct18_name} Amps + name: ${ct18_name} ${amp_label} id: ct18Amps power: - name: ${ct18_name} Watts + name: ${ct18_name} ${watt_label} id: ct18Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct18} line_frequency: ${electric_freq} @@ -79,9 +103,9 @@ sensor: enable_offset_calibration: ${offset_calibration} enable_gain_calibration: ${gain_calibration} -#Total Amps AddOn2 +#Total A AddOn2 - platform: template - name: ${friendly_name} Total Amps Add-on2 + name: Add-on 2 Total ${amp_label} id: totalAmpsAddOn2 lambda: return id(ct13Amps).state + id(ct14Amps).state + id(ct15Amps).state + id(ct16Amps).state + id(ct17Amps).state + id(ct18Amps).state ; accuracy_decimals: 2 @@ -89,12 +113,78 @@ sensor: device_class: current update_interval: ${update_time} -#Total Watts AddOn2 +#Total W AddOn2 - platform: template - name: ${friendly_name} Total Watts Add-on2 + name: Add-on 2 Total ${watt_label} id: totalWattsAddOn2 lambda: return id(ct13Watts).state + id(ct14Watts).state + id(ct15Watts).state + id(ct16Watts).state + id(ct17Watts).state + id(ct18Watts).state ; accuracy_decimals: 2 unit_of_measurement: W device_class: power update_interval: ${update_time} + + #kWh From CT 13 + - platform: total_daily_energy + name: ${ct13_name} ${kwh_label} + id: ct13Kwh + power_id: ct13Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + # kWh from CT 14 + - platform: total_daily_energy + name: ${ct14_name} ${kwh_label} + id: ct14Kwh + power_id: ct14Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 15 + - platform: total_daily_energy + name: ${ct15_name} ${kwh_label} + id: ct15Kwh + power_id: ct15Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 16 + - platform: total_daily_energy + name: ${ct16_name} ${kwh_label} + id: ct16Kwh + power_id: ct16Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 17 + - platform: total_daily_energy + name: ${ct17_name} ${kwh_label} + id: ct17Kwh + power_id: ct17Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 18 + - platform: total_daily_energy + name: ${ct18_name} ${kwh_label} + id: ct18Kwh + power_id: ct18Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing \ No newline at end of file diff --git a/esphome/circuit-setup/meter_sensors/6chan_addon3.yaml b/esphome/circuit-setup/meter_sensors/6chan_addon3.yaml index f69d18b..9fe91fe 100644 --- a/esphome/circuit-setup/meter_sensors/6chan_addon3.yaml +++ b/esphome/circuit-setup/meter_sensors/6chan_addon3.yaml @@ -7,33 +7,45 @@ sensor: - platform: atm90e32 release_device: true #if ESP32 has an LED for GPIO2, remove jumper or ESP32 from meter stack before programming via serial - cs_pin: 2 + cs_pin: ${addon3_ic1} id: ${addon3_id1} phase_a: current: - name: ${ct19_name} Amps + name: ${ct19_name} ${amp_label} id: ct19Amps power: - name: ${ct19_name} Watts + name: ${ct19_name} ${watt_label} id: ct19Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct19} phase_b: current: - name: ${ct20_name} Amps + name: ${ct20_name} ${amp_label} id: ct20Amps power: - name: ${ct20_name} Watts + name: ${ct20_name} ${watt_label} id: ct20Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct20} phase_c: current: - name: ${ct21_name} Amps + name: ${ct21_name} ${amp_label} id: ct21Amps power: - name: ${ct21_name} Watts + name: ${ct21_name} ${watt_label} id: ct21Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct21} line_frequency: ${electric_freq} @@ -45,33 +57,45 @@ sensor: ############ - platform: atm90e32 release_device: true - cs_pin: 21 + cs_pin: ${addon3_ic2} id: ${addon3_id2} phase_a: current: - name: ${ct22_name} Amps + name: ${ct22_name} ${amp_label} id: ct22Amps power: - name: ${ct22_name} Watts + name: ${ct22_name} ${watt_label} id: ct22Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct22} phase_b: current: - name: ${ct23_name} Amps + name: ${ct23_name} ${amp_label} id: ct23Amps power: - name: ${ct23_name} Watts + name: ${ct23_name} ${watt_label} id: ct23Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct23} phase_c: current: - name: ${ct24_name} Amps + name: ${ct24_name} ${amp_label} id: ct24Amps power: - name: ${ct24_name} Watts + name: ${ct24_name} ${watt_label} id: ct24Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct24} line_frequency: ${electric_freq} @@ -80,9 +104,9 @@ sensor: enable_offset_calibration: ${offset_calibration} enable_gain_calibration: ${gain_calibration} -#Total Amps AddOn3 +#Total A AddOn3 - platform: template - name: ${friendly_name} Total Amps Add-on3 + name: Add-on 3 Total ${amp_label} id: totalAmpsAddOn3 lambda: return id(ct19Amps).state + id(ct20Amps).state + id(ct21Amps).state + id(ct22Amps).state + id(ct23Amps).state + id(ct24Amps).state ; accuracy_decimals: 2 @@ -90,12 +114,78 @@ sensor: device_class: current update_interval: ${update_time} -#Total Watts AddOn3 +#Total W AddOn3 - platform: template - name: ${friendly_name} Total Watts Add-on3 + name: Add-on 3 Total ${watt_label} id: totalWattsAddOn3 lambda: return id(ct19Watts).state + id(ct20Watts).state + id(ct21Watts).state + id(ct22Watts).state + id(ct23Watts).state + id(ct24Watts).state ; accuracy_decimals: 2 unit_of_measurement: W device_class: power update_interval: ${update_time} + + #kWh From CT 19 + - platform: total_daily_energy + name: ${ct19_name} ${kwh_label} + id: ct19Kwh + power_id: ct19Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + # kWh from CT 20 + - platform: total_daily_energy + name: ${ct20_name} ${kwh_label} + id: ct20Kwh + power_id: ct20Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 21 + - platform: total_daily_energy + name: ${ct21_name} ${kwh_label} + id: ct21Kwh + power_id: ct21Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 22 + - platform: total_daily_energy + name: ${ct22_name} ${kwh_label} + id: ct22Kwh + power_id: ct22Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 23 + - platform: total_daily_energy + name: ${ct23_name} ${kwh_label} + id: ct23Kwh + power_id: ct23Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 24 + - platform: total_daily_energy + name: ${ct24_name} ${kwh_label} + id: ct24Kwh + power_id: ct24Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing \ No newline at end of file diff --git a/esphome/circuit-setup/meter_sensors/6chan_main_sensor.yaml b/esphome/circuit-setup/meter_sensors/6chan_main_sensor.yaml index 258660d..9ddc01e 100644 --- a/esphome/circuit-setup/meter_sensors/6chan_main_sensor.yaml +++ b/esphome/circuit-setup/meter_sensors/6chan_main_sensor.yaml @@ -3,7 +3,7 @@ sensor: ######### - platform: atm90e32 release_device: true - cs_pin: 5 + cs_pin: ${main_ic1} id: ${main_meter_id1} phase_a: voltage: @@ -11,35 +11,45 @@ sensor: id: ic1Volts accuracy_decimals: 1 current: - name: ${ct1_name} Amps + name: ${ct1_name} ${amp_label} id: ct1Amps # The max value for current that the meter can output is 65.535. If you expect to measure current over 65A, # divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4 by uncommenting the filter below # filters: # - multiply: 2 power: - name: ${ct1_name} Watts + name: ${ct1_name} ${watt_label} id: ct1Watts -# filters: -# - multiply: 2 + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct1} phase_b: current: - name: ${ct2_name} Amps + name: ${ct2_name} ${amp_label} id: ct2Amps power: - name: ${ct2_name} Watts + name: ${ct2_name} ${watt_label} id: ct2Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct2} phase_c: current: - name: ${ct3_name} Amps + name: ${ct3_name} ${amp_label} id: ct3Amps power: - name: ${ct3_name} Watts + name: ${ct3_name} ${watt_label} id: ct3Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal1} gain_ct: ${current_cal_ct3} frequency: @@ -55,7 +65,7 @@ sensor: ########## - platform: atm90e32 release_device: true - cs_pin: 4 + cs_pin: ${main_ic2} id: ${main_meter_id2} phase_a: #this voltage is only needed if monitoring 2 voltages @@ -64,29 +74,41 @@ sensor: # id: ic2Volts # accuracy_decimals: 1 current: - name: ${ct4_name} Amps + name: ${ct4_name} ${amp_label} id: ct4Amps power: - name: ${ct4_name} Watts + name: ${ct4_name} ${watt_label} id: ct4Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct4} phase_b: current: - name: ${ct5_name} Amps + name: ${ct5_name} ${amp_label} id: ct5Amps power: - name: ${ct5_name} Watts + name: ${ct5_name} ${watt_label} id: ct5Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct5} phase_c: current: - name: ${ct6_name} Amps + name: ${ct6_name} ${amp_label} id: ct6Amps power: - name: ${ct6_name} Watts + name: ${ct6_name} ${watt_label} id: ct6Watts + filters: + - lambda: |- + if (x < 0) return x * -1; + return x; gain_voltage: ${voltage_cal2} gain_ct: ${current_cal_ct6} #this is only needed if monitoring 2 voltages @@ -100,24 +122,90 @@ sensor: enable_offset_calibration: ${offset_calibration} enable_gain_calibration: ${gain_calibration} -#Total Amps Main +#Total A Main ################ - platform: template - name: ${friendly_name} Total Amps Main + name: Mainboard Total ${amp_label} id: totalAmpsMain lambda: return id(ct1Amps).state + id(ct2Amps).state + id(ct3Amps).state + id(ct4Amps).state + id(ct5Amps).state + id(ct6Amps).state ; accuracy_decimals: 2 unit_of_measurement: A device_class: current update_interval: ${update_time} - -#Total Watts Main + +#Total W Main ################# - platform: template - name: ${friendly_name} Total Watts Main + name: Mainboard Total ${watt_label} id: totalWattsMain lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ; accuracy_decimals: 1 unit_of_measurement: W device_class: power update_interval: ${update_time} + + #kWh From CT 1 + - platform: total_daily_energy + name: ${ct1_name} ${kwh_label} + id: ct1Kwh + power_id: ct1Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + # kWh from CT 2 + - platform: total_daily_energy + name: ${ct2_name} ${kwh_label} + id: ct2Kwh + power_id: ct2Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 3 + - platform: total_daily_energy + name: ${ct3_name} ${kwh_label} + id: ct3Kwh + power_id: ct3Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 4 + - platform: total_daily_energy + name: ${ct4_name} ${kwh_label} + id: ct4Kwh + power_id: ct4Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 5 + - platform: total_daily_energy + name: ${ct5_name} ${kwh_label} + id: ct5Kwh + power_id: ct5Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing + + #kWh From CT 6 + - platform: total_daily_energy + name: ${ct6_name} ${kwh_label} + id: ct6Kwh + power_id: ct6Watts + filters: + - multiply: 0.001 + unit_of_measurement: kWh + device_class: energy + state_class: total_increasing \ No newline at end of file diff --git a/esphome/common/device_base.yaml b/esphome/common/device_base.yaml index 7b7b92f..cdb860e 100644 --- a/esphome/common/device_base.yaml +++ b/esphome/common/device_base.yaml @@ -11,7 +11,7 @@ logger: # Sync time with Home Assistant. time: - platform: homeassistant - id: homeassistant_time + id: local_homeassistant_time # Enable Home Assistant API api: @@ -23,8 +23,12 @@ ota: - platform: esphome password: !secret ota-password +debug: + update_interval: 10s + packages: binary_sensor: !include binary_sensor/status_sensor.config.yaml button: !include button/restart_button.config.yaml sensor: !include sensor/uptime_sensor.config.yaml + debug: !include sensor/debug_sensor.config.yaml text_sensor: !include text_sensor/version_sensor.config.yaml diff --git a/esphome/common/sensor/debug_sensor.config.yaml b/esphome/common/sensor/debug_sensor.config.yaml new file mode 100644 index 0000000..e41f790 --- /dev/null +++ b/esphome/common/sensor/debug_sensor.config.yaml @@ -0,0 +1,10 @@ +sensor: + - platform: debug + free: + name: "Heap Free" + id: heap_free_sensor + entity_category: diagnostic + loop_time: + name: "Loop Time" + id: loop_time_sensor + entity_category: diagnostic \ No newline at end of file diff --git a/esphome/common/sensor/rssi_sensor.config.yaml b/esphome/common/sensor/rssi_sensor.config.yaml index a6208f4..80e6567 100644 --- a/esphome/common/sensor/rssi_sensor.config.yaml +++ b/esphome/common/sensor/rssi_sensor.config.yaml @@ -8,6 +8,7 @@ sensor: - platform: copy # Reports the WiFi signal strength in % source_id: local_wifi_signal_db + id: local_wifi_signal_percent name: "WiFi Signal Strength" filters: - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0); diff --git a/esphome/common/text_sensor/wifi_sensor.config.yaml b/esphome/common/text_sensor/wifi_sensor.config.yaml index a3022bb..7bef96f 100644 --- a/esphome/common/text_sensor/wifi_sensor.config.yaml +++ b/esphome/common/text_sensor/wifi_sensor.config.yaml @@ -3,17 +3,17 @@ text_sensor: ip_address: name: IP icon: mdi:ip - update_interval: 60s + # update_interval: 60s disabled_by_default: true ssid: name: SSID icon: mdi:lan - update_interval: 60s + # update_interval: 60s disabled_by_default: true bssid: name: BSSID disabled_by_default: true - update_interval: 60s + # update_interval: 60s icon: mdi:router-network mac_address: name: Wifi MAC Address diff --git a/esphome/common/waveshare_esp32_s3_wifi.yaml b/esphome/common/waveshare_esp32_s3_wifi.yaml index a795329..6994b8c 100644 --- a/esphome/common/waveshare_esp32_s3_wifi.yaml +++ b/esphome/common/waveshare_esp32_s3_wifi.yaml @@ -21,8 +21,6 @@ psram: packages: network: !include ../common/wifi.yaml -# captive_portal: - # wifi: # # Enable fast connect # fast_connect: true diff --git a/esphome/common/wifi.yaml b/esphome/common/wifi.yaml index bc9c5b1..5753088 100644 --- a/esphome/common/wifi.yaml +++ b/esphome/common/wifi.yaml @@ -1,11 +1,11 @@ esphome: -captive_portal: wifi: # Enable fast connect fast_connect: true min_auth_mode: WPA2 use_address: ${devicename}.local + #use_address: ${static_ip} networks: - ssid: !secret wifi_ssid diff --git a/esphome/common/wifi_dhcp.yaml b/esphome/common/wifi_dhcp.yaml index ed424ba..f0c1a94 100644 --- a/esphome/common/wifi_dhcp.yaml +++ b/esphome/common/wifi_dhcp.yaml @@ -1,5 +1,4 @@ esphome: -captive_portal: wifi: # Enable fast connect diff --git a/esphome/power-monitor.yaml b/esphome/power-monitor.yaml index e3d8c16..24dec72 100644 --- a/esphome/power-monitor.yaml +++ b/esphome/power-monitor.yaml @@ -13,9 +13,11 @@ substitutions: devicename: power-monitor - friendly_name: 'PM:' + #disp_name: power-monitor + disp_name: power-monitor + friendly_name: 'Power Monitor' entity_name: power_monitor - comment: Clever Power Monitor + comment: Circuit Setup Power Monitor static_ip: !secret power-monitor-ip platform: ESP32 board: nodemcu-32s @@ -30,34 +32,57 @@ substitutions: #fast_update_time: 10s #medium_update_time: 30s #slow_update_time: 60s + watt_label: W + amp_label: A + kwh_label: kWh - ct01Name: 'Grid Phase A' - ct04Name: 'Grid Phase B' + main_meter_name1: Meter 1-3 + main_meter_name2: Meter 4-6 + main_meter_id1: meter_main1 + main_meter_id2: meter_main2 +## Addon1 + addon1_name1: Addon1 7-9 + addon1_name2: Addon1 10-12 + addon1_id1: addon1_1 + addon1_id2: addon1_2 +## Addon2 + addon2_name1: Addon2 13-15 + addon2_name2: Addon2 16-18 + addon2_id1: addon2_1 + addon2_id2: addon2_2 +## Addon3 + addon3_name1: Addon3 19-21 + addon3_name2: Addon3 22-24 + addon3_id1: addon3_1 + addon3_id2: addon3_2 - 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 + ct1_name: 'Grid Phase A' + ct4_name: 'Grid Phase B' - 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 + ct22_name: 'Well' # 1, 3 # sct010 - O + ct12_name: 'Kitchen 1' # 5 # sct006 - L + ct16_name: 'Kitchen 2' # 7 # sct006 - S + ct18_name: 'Laundry Plug' # 9 # sct006 - N + ct8_name: 'Microwave Plug' # 11 # sct006 - H + ct17_name: 'Bathroom Plug' # 13 # sct006 - R + ct11_name: 'Heat Pump' # 15, 17 - M + ct24_name: 'Basement Bedroom and Furnace Room Lights' # 19 # sct006 - K + ct5_name: 'Basement Plugs' # 21a # sct006 - E + ct23_name: 'Basement and Laundry Lights and Plugs' # 21b # sct006 - W + ct7_name: 'Sump Pump Plug' # 23 # sct006 - C - ct19Name: 'Unused' + ct6_name: 'Nursery, Dining, Kitchen Lights' # 2 # sct006 - F + ct20_name: 'Master Suite' # 4 # sct006 - T + ct3_name: 'Furnace' # 6 # sct006 - D + ct15_name: 'Basement Stairs and Lights' # 8 # sct006 - P + ct21_name: 'Dishwasher' # 10 # sct006 - V + ct13_name: 'Garage Outside and Front Garage Lights' # 12 # sct006 - U + ct10_name: 'Front Room Plugs' # 14 # sct006 - J + ct14_name: 'Garage and Outside Plugs' # 16 # sct006 - Q + ct9_name: 'Stove' # 18, 20 # sct016 - I + ct2_name: 'Dryer' # 22, 24 # sct010 - G + + ct19_name: 'Unused' # Current Transformers: @@ -76,458 +101,253 @@ substitutions: # Jameco 9VAC Transformer: # For meter versions: # >= v1.3: 7305 - voltage_cal: '7305' + #voltage_cal: '7305' +## Main Board + current_cal_ct1: '41787' + current_cal_ct2: '41660' + current_cal_ct3: '11143' + current_cal_ct4: '41787' + current_cal_ct5: '11143' + current_cal_ct6: '11143' +## Addon1 + current_cal_ct7: '11143' + current_cal_ct8: '11143' + current_cal_ct9: '27518' + current_cal_ct10: '11143' + current_cal_ct11: '41660' + current_cal_ct12: '11143' +## Addon2 + current_cal_ct13: '11143' + current_cal_ct14: '11143' + current_cal_ct15: '11143' + current_cal_ct16: '11143' + current_cal_ct17: '11143' + current_cal_ct18: '11143' +## Addon3 + current_cal_ct19: '11143' + current_cal_ct20: '11143' + current_cal_ct21: '11143' + current_cal_ct22: '41660' + current_cal_ct23: '11143' + current_cal_ct24: '11143' +# This only needs to be changed if you're using something other than the +# Jameco 9VAC Transformer: + voltage_cal1: '7305' + voltage_cal2: '7305' + + electric_freq: "60Hz" + + offset_calibration: "true" + gain_calibration: "true" 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 + main_ic1: 5 + addon1_ic1: 0 + addon2_ic1: 27 + addon3_ic1: 2 + main_ic2: 4 + addon1_ic2: 16 + addon2_ic2: 17 + addon3_ic2: 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: - wifi: !include common/wifi.yaml - # device_base: !include common/complex_esp32_base.yaml - device_base: !include common/device_base.yaml - mqtt: !include common/mqtt_null.yaml +esphome: + name: ${disp_name} + friendly_name: "${friendly_name}" + name_add_mac_suffix: false + min_version: '2025.7.0' + project: + name: clever.6c-energy-meter-3-addons + version: "1.7" esp32: board: nodemcu-32s - -# web_server: -# port: 80 - -time: - - platform: sntp - id: sntp_time - timezone: America/Detroit - -logger: - # level: DEBUG - # logs: - # sensor: DEBUG + cpu_frequency: 240MHz + framework: + # ESPHome v2025.7.0 update to allow more than 6 SPI hardware devices on ESP-IDF + type: esp-idf spi: clk_pin: ${spi_clk} miso_pin: ${spi_miso} mosi_pin: ${spi_mosi} -sensor: -#IC1 Main - - platform: atm90e32 - cs_pin: ${ic1_main} - phase_a: - voltage: - name: ${friendly_name} [V] - id: ic1Volts - filters: - - throttle_average: 60s - accuracy_decimals: 1 - current: - name: ${friendly_name} ${ct01Name} [A] - id: ct1Amps - filters: - - or: - - delta: 2 - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} - power: - name: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} Freq A - filters: - - or: - - delta: 0.05 - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} - line_frequency: 60Hz - gain_pga: 1X - update_interval: ${update_time} +packages: + wifi: !include common/wifi.yaml + device_base: !include common/device_base.yaml + mqtt: !include common/mqtt_null.yaml + #mqtt: !include common/mqtt_all.yaml + # device_base: !include common/complex_esp32_base.yaml + #common: !include circuit-setup/6chan_common.yaml -#IC2 Main - - platform: atm90e32 - cs_pin: ${ic2_main} - phase_a: - current: - name: ${friendly_name} ${ct04Name} [A] - id: ct4Amps - filters: - - or: - - delta: ${grid_watt_delta} - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} - accuracy_decimals: 1 - power: - name: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} Freq B - filters: - - or: - - delta: 0.05 - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} - line_frequency: 60Hz - gain_pga: 1X - update_interval: ${update_time} + main: !include circuit-setup/meter_sensors/6chan_main_sensor.yaml + main_status: !include circuit-setup/status_fields/6chan_main_status.yaml + #main_cal: !include circuit-setup/calibration/6chan_main_calibration.yaml + #main_offset: !include circuit-setup/calibration/6chan_main_offset_calibrations.yaml + addon1: !include circuit-setup/meter_sensors/6chan_addon1.yaml + addon1_status: !include circuit-setup/status_fields/6chan_addon1_status.yaml + # addon1_cal: !include circuit-setup/calibration/6chan_addon1_calibration.yaml + # addon1_offset: !include circuit-setup/calibration/6chan_addon1_offset_calibrations.yaml -#IC1 AddOn 1 - - platform: atm90e32 - cs_pin: ${ic1_addon1} - phase_a: - power: - name: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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} + addon2: !include circuit-setup/meter_sensors/6chan_addon2.yaml + addon2_status: !include circuit-setup/status_fields/6chan_addon2_status.yaml + # addon2_cal: !include circuit-setup/calibration/6chan_addon2_calibration.yaml + # addon2_offset: !include circuit-setup/calibration/6chan_addon2_offset_calibrations.yaml -#IC1 AddOn 2 - - platform: atm90e32 - cs_pin: ${ic1_addon2} - phase_a: - power: - name: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${ct21Name} [W] - id: ct21Watts - filters: - - or: - - delta: ${watt_delta} - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} - accuracy_decimals: 1 - qos: 1 - retain: true - availability: - topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w/status - payload_available: online - payload_not_available: offline - state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w - 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: ${friendly_name} ${ct22Name} [W] + addon3: !include circuit-setup/meter_sensors/6chan_addon3.yaml + addon3_status: !include circuit-setup/status_fields/6chan_addon3_status.yaml + # addon3_cal: !include circuit-setup/calibration/6chan_addon3_calibration.yaml + # addon3_offset: !include circuit-setup/calibration/6chan_addon3_offset_calibrations.yaml + +# web_server: +# port: 80 + +text_sensor: + - id: !extend ${addon3_id1} + phase_status: + phase_a: 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: + +sensor: + ## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A, + ## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values + ## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly + #- id: !extend ${main_meter_id1} # CTs 1-3 + # phase_a: # CT1 + # current: + # filters: + # - multiply: 2 + # power: + # filters: + # - multiply: 2 + # + ## uncomment if monitoring 2 voltages + #- id: !extend ${main_meter_id2} + # phase_a: + # voltage: + # name: Voltage 2 + # id: ic2Volts + # accuracy_decimals: 1 + # frequency: + # name: Frequency 2 + + ## Comment out to show amps and watts per meter board in Home Assistant + - id: !extend totalAmpsMain + internal: true + - id: !extend totalWattsMain + internal: true + - id: !extend totalAmpsAddOn1 + internal: true + - id: !extend totalWattsAddOn1 + internal: true + - id: !extend totalAmpsAddOn2 + internal: true + - id: !extend totalWattsAddOn2 + internal: true + - id: !extend totalAmpsAddOn3 + internal: true + - id: !extend totalWattsAddOn3 + internal: true + + - id: !extend ${addon3_id1} + phase_a: power: - name: ${friendly_name} ${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} + internal: true + current: + internal: true + + - id: !remove ct19Kwh + + # Dishwasher on ct21 + - id: !extend ${addon3_id1} phase_c: power: - name: ${friendly_name} ${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} + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct21_name}/Watts + current: + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct21_name}/Amps -#Total Amps From Grid + - id: !extend ct21Kwh + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct21_name}/kWh + + # Dryer on ct2 + - id: !extend ${main_meter_id1} + phase_b: + power: + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct2_name}/Watts + current: + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct2_name}/Amps + + - id: !extend ct2Kwh + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct2_name}/kWh + + # Washing Machine on ct18 + - id: !extend ${addon2_id2} + phase_c: + power: + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct18_name}/Watts + current: + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct18_name}/Amps + + - id: !extend ct18Kwh + qos: 0 + retain: true + state_topic: ${mqtt_root_topic}/${devicename}/sensor/${ct18_name}/kWh + + #Total Amps + ########### + # - platform: template + # name: ${friendly_name} Total Amps + # id: totalAmps + # lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state ; + # accuracy_decimals: 2 + # unit_of_measurement: A + # device_class: current + # update_interval: ${update_time} + + #Total Watts + ############ + # - platform: template + # name: ${friendly_name} Total Watts + # id: totalWatts + # lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state ; + # accuracy_decimals: 1 + # unit_of_measurement: W + # device_class: power + # update_interval: ${update_time} + + #kWh + #### + # - platform: total_daily_energy + # name: ${friendly_name} Total kWh + # power_id: totalWatts + # filters: + # - multiply: 0.001 + # unit_of_measurement: kWh + # device_class: energy + # state_class: total_increasing + + #Total A From Grid - platform: template - name: ${friendly_name} Grid Total [A] + name: Grid A id: totalAmpsFromGrid lambda: return id(ct1Amps).state + id(ct4Amps).state ; accuracy_decimals: 1 @@ -535,15 +355,15 @@ sensor: device_class: current state_class: measurement update_interval: ${update_time} - filters: - - or: - - delta: 2.0 - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} + # filters: + # - or: + # - delta: 2.0 + # - throttle_average: ${throttle_time} + # # - heartbeat: ${watt_heartbeat} -#Total Watts From Grid + #Total Watts From Grid - platform: template - name: ${friendly_name} Grid Total [W] + name: Grid W id: totalWattsFromGrid lambda: return id(ct1Watts).state + id(ct4Watts).state ; accuracy_decimals: 1 @@ -551,15 +371,15 @@ sensor: device_class: power state_class: measurement update_interval: ${update_time} - filters: - - or: - - delta: 5.0 - - throttle_average: ${throttle_time} - # - heartbeat: ${watt_heartbeat} + # filters: + # - or: + # - delta: 5.0 + # - throttle_average: ${throttle_time} + # # - heartbeat: ${watt_heartbeat} -#kWh From Grid + #kWh From Grid - platform: total_daily_energy - name: ${friendly_name} Grid [kWh] + name: Grid kWh power_id: totalWattsFromGrid filters: - multiply: 0.001 @@ -567,281 +387,3 @@ sensor: 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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${ct21Name} [kWh] - power_id: ct21Watts - filters: - - multiply: 0.001 - unit_of_measurement: kWh - device_class: energy - state_class: total_increasing - qos: 1 - retain: true - availability: - topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh/status - payload_available: online - payload_not_available: offline - state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh - # min_save_interval: ${update_time} - -#kWh From CT 22 - - platform: total_daily_energy - name: ${friendly_name} ${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: ${friendly_name} ${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: ${friendly_name} ${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} diff --git a/groups.yaml b/groups.yaml index b6a898a..b210a42 100644 --- a/groups.yaml +++ b/groups.yaml @@ -398,8 +398,8 @@ all_my_speakers: entities: - media_player.front_room_hub - media_player.kitchen - - media_player.girls_room_hub - - media_player.master_bedroom_clock + - media_player.bedroom_hub + - media_player.girls_room_clock - media_player.bathroom_mini - media_player.great_room - media_player.computer_area_hub diff --git a/lovelace/appliances/dishwasher.yaml b/lovelace/appliances/dishwasher.yaml index 59ccfbb..d9d0556 100644 --- a/lovelace/appliances/dishwasher.yaml +++ b/lovelace/appliances/dishwasher.yaml @@ -2,81 +2,91 @@ title: Dishwasher path: dishwasher icon: mdi:dishwasher subview: true -type: sidebar badges: [] -cards: - - type: vertical-stack +type: sections +max_columns: 4 +sections: + - type: grid cards: - type: history-graph entities: - entity: sensor.pm_dishwasher_w - hours_to_show: 2 - - - type: vertical-stack - view_layout: - position: sidebar + name: Dishwasher Watts + grid_options: + columns: full + hours_to_show: 3 + column_span: 4 + - type: grid cards: - - type: grid - cards: - - type: tile - entity: sensor.dishwasher - name: Dishwasher - icon_tap_action: - action: navigate - navigation_path: /phone-yaml/dishwasher - tap_action: - action: navigate - navigation_path: /phone-yaml/dishwasher - show_entity_picture: true - vertical: true - - type: tile - entity: input_select.washing_machine_fun_status - name: Washing Machine - icon_tap_action: - action: navigate - navigation_path: /phone-yaml/washing-machine - tap_action: - action: navigate - navigation_path: /phone-yaml/washing-machine - show_entity_picture: true - vertical: true - - type: tile - entity: input_select.dryer_fun_status - name: Dryer - icon_tap_action: - action: navigate - navigation_path: /phone-yaml/tumble-dryer - tap_action: - action: navigate - navigation_path: /phone-yaml/tumble-dryer - show_entity_picture: true - vertical: true - - type: tile - entity: binary_sensor.keurig - icon_tap_action: - action: navigate - navigation_path: /phone-yaml/keurig - tap_action: - action: navigate - navigation_path: /phone-yaml/keurig - show_entity_picture: true - vertical: true - - type: tile - entity: binary_sensor.stove - icon_tap_action: - action: navigate - navigation_path: /phone-yaml/stove - tap_action: - action: navigate - navigation_path: /phone-yaml/stove - show_entity_picture: true - vertical: true - - type: glance - entities: - - entity: sensor.pm_dishwasher_w - name: Watts - - entity: binary_sensor.dishwasher_door_contact - - entity: input_text.dishwasher_runtime - name: Runtime - - entity: counter.dishwasher - name: Cycles \ No newline at end of file + - type: tile + grid_options: + columns: 3 + rows: 2 + entity: sensor.dishwasher + hide_state: false + vertical: true + features_position: bottom + - type: tile + grid_options: + columns: 3 + rows: 2 + entity: sensor.washing_machine + vertical: true + features_position: bottom + - type: tile + entity: sensor.tumble_dryer + vertical: true + features_position: bottom + grid_options: + columns: 3 + rows: 2 + - type: tile + entity: sensor.pm_dishwasher_w + name: Watts + vertical: true + features_position: bottom + grid_options: + columns: 3 + rows: 2 + - type: tile + entity: sensor.dishwasher_door_device_temperature + name: Door Temp + vertical: true + features_position: bottom + grid_options: + columns: 3 + rows: 2 + - type: tile + grid_options: + columns: 3 + rows: 2 + entity: number.dishwasher_run_counter + name: Counter + vertical: true + features_position: bottom + - type: tile + grid_options: + columns: 3 + rows: 2 + entity: number.dishwasher_delay_on + name: Start + vertical: true + features_position: bottom + - type: tile + entity: timer.dishwasher_off + name: End + vertical: true + features_position: bottom + grid_options: + columns: 3 + rows: 2 + - type: tile + entity: timer.dishwasher_watchdog + name: Too Long + state_content: remaining_time + vertical: true + features_position: bottom + grid_options: + columns: 3 + rows: 2 + column_span: 4 diff --git a/lovelace/cameras/view-camera-14.yaml b/lovelace/cameras/view-camera-14.yaml index e99113c..d566b05 100644 --- a/lovelace/cameras/view-camera-14.yaml +++ b/lovelace/cameras/view-camera-14.yaml @@ -76,6 +76,13 @@ card: style: left: 8% top: 95% + - type: state-icon + entity: switch.tapo_c560ws_1f31_auto_track + tap_action: + action: toggle + style: + left: 30% + top: 95% - type: state-icon entity: input_boolean.front_room_occupied tap_action: diff --git a/lovelace/cameras/view-camera-15.yaml b/lovelace/cameras/view-camera-15.yaml index ca3246a..f0125bb 100644 --- a/lovelace/cameras/view-camera-15.yaml +++ b/lovelace/cameras/view-camera-15.yaml @@ -75,6 +75,13 @@ card: style: left: 8% top: 95% + - type: state-icon + entity: switch.tapo_c560ws_1f8d_auto_track + tap_action: + action: toggle + style: + left: 30% + top: 95% - type: state-icon entity: sensor.great_room_person_count style: diff --git a/lovelace/details/view-power-breaker.yaml b/lovelace/details/view-power-breaker.yaml index 4da21d1..0e5a8ff 100644 --- a/lovelace/details/view-power-breaker.yaml +++ b/lovelace/details/view-power-breaker.yaml @@ -20,11 +20,11 @@ cards: - type: custom:mushroom-title-card title: Current Live Totals - type: custom:mushroom-title-card - title: "{{states('sensor.pm_grid_total_a')}} A" + title: "{{states('sensor.pm_grid_a')|float(default=0)|round(2) }} A" - type: custom:mushroom-title-card - title: "{{states('sensor.pm_grid_total_w')}} W" + title: "{{states('sensor.pm_grid_w')|float(default=0)|round(2) }} W" - type: custom:mushroom-title-card - title: "{{states('sensor.pm_grid_kwh')}} kWh" + title: "{{states('sensor.pm_grid_kwh')|float(default=0)|round(2) }} kWh" - type: horizontal-stack cards: - type: vertical-stack diff --git a/lovelace/frigate/view-ai-cam15.yaml b/lovelace/frigate/view-ai-cam15.yaml index f59fc44..13fcee8 100644 --- a/lovelace/frigate/view-ai-cam15.yaml +++ b/lovelace/frigate/view-ai-cam15.yaml @@ -1,6 +1,6 @@ title: AI Cam15 path: ai-cam15 -icon: mdi:desktop-classic +icon: mdi:microsoft-xbox-controller type: sidebar visible: - user: 24a4bd075e7f41a497dd0390a1dd4a9f diff --git a/lovelace/phone/girls-room.yaml b/lovelace/phone/girls-room.yaml index 7532483..490ca7f 100644 --- a/lovelace/phone/girls-room.yaml +++ b/lovelace/phone/girls-room.yaml @@ -308,7 +308,7 @@ cards: - type: horizontal-stack cards: - type: custom:mini-media-player - entity: media_player.girls_room_hub + entity: media_player.girls_room_clock artwork: cover-fit - type: vertical-stack cards: diff --git a/lovelace/phone/master-bedroom.yaml b/lovelace/phone/master-bedroom.yaml index c482bad..29e731e 100644 --- a/lovelace/phone/master-bedroom.yaml +++ b/lovelace/phone/master-bedroom.yaml @@ -90,7 +90,7 @@ cards: - type: horizontal-stack cards: - type: custom:mini-media-player - entity: media_player.master_bedroom_clock + entity: media_player.bedroom_hub artwork: cover-fit - type: vertical-stack cards: diff --git a/lovelace/room_cards/girls_room.yaml b/lovelace/room_cards/girls_room.yaml index 07f0d00..6fd0866 100644 --- a/lovelace/room_cards/girls_room.yaml +++ b/lovelace/room_cards/girls_room.yaml @@ -164,7 +164,7 @@ elements: #button #5 - type: "custom:button-card" color: auto - entity: media_player.girls_room_hub + entity: media_player.girls_room_clock show_name: false show_entity_picture: true style: diff --git a/lovelace/room_cards/master_bedroom.yaml b/lovelace/room_cards/master_bedroom.yaml index a39003f..69c9ac7 100644 --- a/lovelace/room_cards/master_bedroom.yaml +++ b/lovelace/room_cards/master_bedroom.yaml @@ -163,7 +163,7 @@ elements: #button #5 - type: "custom:button-card" color: auto - entity: media_player.master_bedroom_clock + entity: media_player.bedroom_hub show_name: false show_entity_picture: true style: diff --git a/lovelace/templates/card-mini-media-player.yaml b/lovelace/templates/card-mini-media-player.yaml index 415ea3b..a551a39 100644 --- a/lovelace/templates/card-mini-media-player.yaml +++ b/lovelace/templates/card-mini-media-player.yaml @@ -33,7 +33,7 @@ shortcuts: icon: mdi:home-floor-b - name: Nursery type: source - id: girls_room_hub + id: girls_room_clock icon: mdi:teddy-bear - name: Timeless type: playlist diff --git a/lovelace/view-cameras.yaml b/lovelace/view-cameras.yaml index 6aa4686..33273b7 100644 --- a/lovelace/view-cameras.yaml +++ b/lovelace/view-cameras.yaml @@ -13,7 +13,7 @@ cards: - !include /config/lovelace/cameras/view-camera-12.yaml - !include /config/lovelace/cameras/view-camera-14.yaml - !include /config/lovelace/cameras/view-camera-03.yaml - - !include /config/lovelace/cameras/view-camera-04.yaml + - !include /config/lovelace/cameras/view-camera-15.yaml - !include /config/lovelace/cameras/view-camera-08.yaml - !include /config/lovelace/cameras/view-camera-01.yaml - !include /config/lovelace/cameras/view-camera-06.yaml diff --git a/lovelace/view-ha-floorplan.yaml b/lovelace/view-ha-floorplan.yaml index c863351..fc3391b 100644 --- a/lovelace/view-ha-floorplan.yaml +++ b/lovelace/view-ha-floorplan.yaml @@ -64,6 +64,7 @@ cards: - input_boolean.deck_occupied - input_boolean.front_porch_occupied - input_boolean.furnace_room_occupied + - input_boolean.deck_occupied states: - state: "on" @@ -133,6 +134,8 @@ cards: - binary_sensor.great_room_person_occupancy - binary_sensor.kitchen_person_occupancy - binary_sensor.master_bedroom_person_occupancy + - binary_sensor.downstairs_person_occupancy + - binary_sensor.upstairs_person_occupancy - binary_sensor.girls_room_person_occupancy - binary_sensor.utility_room_person_occupancy - binary_sensor.utility_room_person_occupancy @@ -287,9 +290,9 @@ cards: - media_player.garage - media_player.great_room - media_player.kitchen - - media_player.master_bedroom_clock + - media_player.girls_room_clock - media_player.front_room_hub - - media_player.girls_room_hub + - media_player.bedroom_hub - media_player.boys_room_clock - media_player.ma_home_assistant_voice_097b44_media_player states: @@ -816,6 +819,7 @@ cards: - camera.frigate_cam08 - camera.frigate_cam12 - camera.frigate_cam14 + - camera.frigate_cam15 - camera.frigate_cam18 - camera.frigate_cam19 states: diff --git a/lovelace/view-media.yaml b/lovelace/view-media.yaml index dd99ac3..b3f2578 100644 --- a/lovelace/view-media.yaml +++ b/lovelace/view-media.yaml @@ -55,16 +55,8 @@ cards: artwork: cover show_source: true - - entity: media_player.girls_room_hub - name: Nursery - #type: media-control - type: custom:mini-media-player - group: true - artwork: cover - show_source: true - - - entity: media_player.master_bedroom_clock - name: Master Bedroom + - entity: media_player.girls_room_clock + name: Girls Room #type: media-control type: custom:mini-media-player group: true @@ -79,6 +71,14 @@ cards: artwork: cover show_source: true + - entity: media_player.bedroom_hub + name: Bedroom + #type: media-control + type: custom:mini-media-player + group: true + artwork: cover + show_source: true + - entity: media_player.computer_area_hub name: Computer Area #type: media-control @@ -291,10 +291,10 @@ cards: # id: great_room # - name: Nursery # type: source - # id: girls_room_hub + # id: girls_room_clock # - name: Master Bedroom # type: source - # id: master_bedroom_clock + # id: bedroom_hub # - name: Front Room # type: source # id: front_room_hub diff --git a/lovelace/view-overview.yaml b/lovelace/view-overview.yaml index 1c97aaf..c8847fc 100644 --- a/lovelace/view-overview.yaml +++ b/lovelace/view-overview.yaml @@ -1255,8 +1255,8 @@ cards: - entity: media_player.garage - entity: media_player.great_room - entity: media_player.kitchen - - entity: media_player.master_bedroom_clock - - entity: media_player.girls_room_hub + - entity: media_player.bedroom_hub + - entity: media_player.girls_room_clock - entity: device_tracker.amcrest_technologies_24_1f_27 name: MBR Left icon: mdi:cctv diff --git a/lovelace/view-power-breaker copy.yaml b/lovelace/view-power-breaker copy.yaml index c1c9217..cd7ea6a 100644 --- a/lovelace/view-power-breaker copy.yaml +++ b/lovelace/view-power-breaker copy.yaml @@ -15,7 +15,7 @@ cards: image: /local/background100.png elements: - type: state-label - entity: sensor.pm_grid_total_w + entity: sensor.pm_grid_w style: font-size: 300% left: 50% @@ -40,7 +40,7 @@ cards: update_interval: 30 group: true entities: - - entity: sensor.pm_grid_total_w + - entity: sensor.pm_grid_w show: icon: false name: false @@ -88,7 +88,7 @@ cards: update_interval: 30 group: true entities: - - entity: sensor.pm_grid_total_w + - entity: sensor.pm_grid_w show: icon: false name: false diff --git a/lovelace/view-power.yaml b/lovelace/view-power.yaml index 306645b..7feecaa 100644 --- a/lovelace/view-power.yaml +++ b/lovelace/view-power.yaml @@ -12,7 +12,7 @@ cards: cards: - type: entities entities: - - entity: sensor.pm_grid_total_w + - entity: sensor.pm_grid_w name: Grid [W] - entity: sensor.pm_grid_kwh name: Grid [kWh] diff --git a/scripts/cameras/cam03_computer_area.yaml b/scripts/cameras/cam03_computer_area.yaml index a3758b9..a4b40ee 100644 --- a/scripts/cameras/cam03_computer_area.yaml +++ b/scripts/cameras/cam03_computer_area.yaml @@ -1,9 +1,9 @@ -alias: Cam03 on Computer Area Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.computer_area_hub - url: rtsp_cam03 - force: true - extra: - mode: webrtc +# alias: Cam03 on Computer Area Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.computer_area_hub +# url: rtsp_cam03 +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam03_sub_computer_area.yaml b/scripts/cameras/cam03_sub_computer_area.yaml index 9d9828e..9ff2416 100644 --- a/scripts/cameras/cam03_sub_computer_area.yaml +++ b/scripts/cameras/cam03_sub_computer_area.yaml @@ -1,9 +1,9 @@ -alias: Cam03_sub on Computer Area Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.computer_area_hub - url: cam03_sub - force: true - extra: - mode: webrtc +# alias: Cam03_sub on Computer Area Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.computer_area_hub +# url: cam03_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam08_computer_area.yaml b/scripts/cameras/cam08_computer_area.yaml index 4883aba..69a8adf 100644 --- a/scripts/cameras/cam08_computer_area.yaml +++ b/scripts/cameras/cam08_computer_area.yaml @@ -1,8 +1,8 @@ -alias: Cam08 on Computer Area Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.computer_area_hub - url: cam08_sub - extra: - mode: webrtc +# alias: Cam08 on Computer Area Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.computer_area_hub +# url: cam08_sub +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam08_front_room.yaml b/scripts/cameras/cam08_front_room.yaml index fc0112a..96b4e30 100644 --- a/scripts/cameras/cam08_front_room.yaml +++ b/scripts/cameras/cam08_front_room.yaml @@ -1,9 +1,9 @@ -alias: Cam08 on Front Room Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.front_room_hub - url: cam08_sub - force: true - extra: - mode: webrtc +# alias: Cam08 on Front Room Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.front_room_hub +# url: cam08_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam13_computer_area.yaml b/scripts/cameras/cam13_computer_area.yaml index 9913142..25cb328 100644 --- a/scripts/cameras/cam13_computer_area.yaml +++ b/scripts/cameras/cam13_computer_area.yaml @@ -1,9 +1,9 @@ -alias: Cam13 on Computer Area Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.computer_area_hub - url: cam13_sub - force: true - extra: - mode: webrtc +# alias: Cam13 on Computer Area Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.computer_area_hub +# url: cam13_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam13_front_room.yaml b/scripts/cameras/cam13_front_room.yaml index de102b8..082121f 100644 --- a/scripts/cameras/cam13_front_room.yaml +++ b/scripts/cameras/cam13_front_room.yaml @@ -1,9 +1,9 @@ -alias: Cam13 on Front Room Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.front_room_hub - url: cam13_sub - force: true - extra: - mode: webrtc +# alias: Cam13 on Front Room Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.front_room_hub +# url: cam13_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam19_computer_area.yaml b/scripts/cameras/cam19_computer_area.yaml index a65278f..6191013 100644 --- a/scripts/cameras/cam19_computer_area.yaml +++ b/scripts/cameras/cam19_computer_area.yaml @@ -1,9 +1,9 @@ -alias: Cam19 on Computer Area Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.computer_area_hub - url: rtsp://192.168.1.7:8554/cam19_sub - force: true - extra: - mode: webrtc +# alias: Cam19 on Computer Area Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.computer_area_hub +# url: rtsp://192.168.1.7:8554/cam19_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/cam19_front_room.yaml b/scripts/cameras/cam19_front_room.yaml index 82409ff..4b52b8c 100644 --- a/scripts/cameras/cam19_front_room.yaml +++ b/scripts/cameras/cam19_front_room.yaml @@ -1,9 +1,9 @@ -alias: Cam19 on Front Room Hub -sequence: - - action: webrtc.dash_cast - data: - entity_id: media_player.front_room_hub - url: cam19_sub - force: true - extra: - mode: webrtc +# alias: Cam19 on Front Room Hub +# sequence: +# - action: webrtc.dash_cast +# data: +# entity_id: media_player.front_room_hub +# url: cam19_sub +# force: true +# extra: +# mode: webrtc diff --git a/scripts/cameras/create_camera_link.yaml b/scripts/cameras/create_camera_link.yaml index 859de55..2a48364 100644 --- a/scripts/cameras/create_camera_link.yaml +++ b/scripts/cameras/create_camera_link.yaml @@ -1,17 +1,17 @@ -alias: Create temporary camera link -sequence: - - variables: - link_id: "{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}" +# alias: Create temporary camera link +# sequence: +# - variables: +# link_id: "{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}" - - action: webrtc.create_link - data: - link_id: "{{ link_id }}" # create a random or permanent link ID - # url: rtsp://rtsp:12345678@192.168.1.123:554/av_stream/ch0 - # entity: camera.sonoff # you can use camera entity_id or url - url: rtsp://192.168.1.7:8554/cam03_sub - open_limit: 1 # how many times a link can be opened (0 - unlimit, 1 - default) - time_to_live: 60 # how many seconds will the link live (0 - unlimit, 60 - default) +# - action: webrtc.create_link +# data: +# link_id: "{{ link_id }}" # create a random or permanent link ID +# # url: rtsp://rtsp:12345678@192.168.1.123:554/av_stream/ch0 +# # entity: camera.sonoff # you can use camera entity_id or url +# url: rtsp://192.168.1.7:8554/cam03_sub +# open_limit: 1 # how many times a link can be opened (0 - unlimit, 1 - default) +# time_to_live: 60 # how many seconds will the link live (0 - unlimit, 60 - default) - - action: persistent_notification.create - data: - message: 'Open Camera' +# - action: persistent_notification.create +# data: +# message: 'Open Camera' diff --git a/scripts/house_alert.yaml b/scripts/house_alert.yaml index c042106..b29ea91 100644 --- a/scripts/house_alert.yaml +++ b/scripts/house_alert.yaml @@ -2,19 +2,19 @@ alias: House alert sequence: - action: media_player.turn_on data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub - action: media_player.volume_set data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub volume_level: 0.5 - action: media_player.play_media data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub media_content_id: http://192.168.1.11:8123/local/audio/alarms/Alarm_Clock.mp3 media_content_type: music - delay: "00:00:10" # Wait for it to stop playing (5 second audio clip) - - wait_template: "{{ is_state('media_player.master_bedroom_clock','idle') }}" + - wait_template: "{{ is_state('media_player.bedroom_hub','idle') }}" timeout: "00:00:06" continue_on_timeout: "true" # Send an audio alert @@ -22,15 +22,15 @@ sequence: target: entity_id: tts.google_translate_en_com data: - media_player_entity_id: media_player.master_bedroom_clock + media_player_entity_id: media_player.bedroom_hub message: >- {{ (expand('binary_sensor.exterior_doors') | selectattr('state', 'eq', 'off')) | map(attribute='name') | list }} - delay: "00:00:02" # Wait for it to stop playing (2 minute timeout) - - wait_template: "{{ is_state('media_player.master_bedroom_clock','idle') }}" + - wait_template: "{{ is_state('media_player.bedroom_hub','idle') }}" timeout: "00:02:00" continue_on_timeout: "true" # Turn off the media players - action: media_player.turn_off data: - entity_id: media_player.master_bedroom_clock + entity_id: media_player.bedroom_hub diff --git a/scripts/master_bedroom/wake_up_the_master_bedroom.yaml b/scripts/master_bedroom/wake_up_the_master_bedroom.yaml index e2dc734..81fef3d 100644 --- a/scripts/master_bedroom/wake_up_the_master_bedroom.yaml +++ b/scripts/master_bedroom/wake_up_the_master_bedroom.yaml @@ -14,7 +14,7 @@ sequence: - action: media_player.volume_set target: # entity_id: media_player.ma_home_assistant_voice_097b44_media_player - entity_id: media_player.ma_master_bedroom_clock + entity_id: media_player.ma_bedroom_hub data: volume_level: "{{iif(volume>1,1,volume)}}" @@ -23,7 +23,7 @@ sequence: entity_id: tts.google_translate_en_com data: # media_player_entity_id: media_player.ma_home_assistant_voice_097b44_media_player - media_player_entity_id: media_player.ma_master_bedroom_clock + media_player_entity_id: media_player.ma_bedroom_hub #message: "Pick up the kids at 7 for Donuts with Dads! Its {{ now().strftime('%-I:%M %p') }} so you need to get out of bed and get ready for work and get the kids ready for school" message: "You have {{ states('todo.local_to_do') }} items on your daily task list: {{ local_todo['todo.local_to_do']['items'] | map(attribute='summary') | list | join(', ') }}" diff --git a/scripts/people/all_kids_youtube_music.yaml b/scripts/people/all_kids_youtube_music.yaml index 11466f1..a238c6d 100644 --- a/scripts/people/all_kids_youtube_music.yaml +++ b/scripts/people/all_kids_youtube_music.yaml @@ -4,7 +4,7 @@ icon: mdi:music sequence: - action: media_player.select_source data: - source: girls_room_hub + source: girls_room_clock entity_id: media_player.ytube_music_player - action: media_player.shuffle_set data: diff --git a/scripts/people/goodnight_kids_youtube_music.yaml b/scripts/people/goodnight_kids_youtube_music.yaml index d84ef61..4019244 100644 --- a/scripts/people/goodnight_kids_youtube_music.yaml +++ b/scripts/people/goodnight_kids_youtube_music.yaml @@ -4,7 +4,7 @@ icon: mdi:music sequence: - action: media_player.select_source data: - source: girls_room_hub + source: girls_room_clock entity_id: media_player.ytube_music_player - action: media_player.shuffle_set data: diff --git a/ui-cameras.yaml b/ui-cameras.yaml index e449de7..4358cdd 100644 --- a/ui-cameras.yaml +++ b/ui-cameras.yaml @@ -6,16 +6,13 @@ views: - !include lovelace/view-surveillance.yaml - !include lovelace/view-cameras.yaml - !include lovelace/frigate/view-ai-cam08.yaml + - !include lovelace/frigate/view-ai-cam01.yaml - !include lovelace/frigate/view-ai-cam12.yaml - !include lovelace/frigate/view-ai-cam14.yaml - - !include lovelace/frigate/view-ai-cam15.yaml - - !include lovelace/frigate/view-ai-cam03.yaml - + - !include lovelace/frigate/view-ai-cam15.yaml - !include lovelace/frigate/view-ai-cam06.yaml - !include lovelace/frigate/view-ai-cam07.yaml - - - !include lovelace/frigate/view-ai-cam01.yaml - !include lovelace/frigate/view-ai-cam04.yaml - !include lovelace/frigate/view-ai-cam18.yaml - !include lovelace/frigate/view-ai-cam19.yaml \ No newline at end of file diff --git a/www/floorplan/fullsized_floorplan.svg b/www/floorplan/fullsized_floorplan.svg index 8500bfb..952fb94 100644 --- a/www/floorplan/fullsized_floorplan.svg +++ b/www/floorplan/fullsized_floorplan.svg @@ -38,9 +38,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.01" - inkscape:cx="29850" - inkscape:cy="41850" + inkscape:zoom="0.014142136" + inkscape:cx="52149.125" + inkscape:cy="22874.904" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -3526,6 +3526,38 @@ inkscape:label="binary_sensor.frigate_cam03_person_occupancy" transform="rotate(20.586101)" sodipodi:arc-type="slice" /> + + + + + + - inkscape:label="light.front_porch_overhead" /> + inkscape:label="media_player.bedroom_hub"> + inkscape:label="media_player.girls_room_clock"> + + LJfXCFt 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 J4F-4P{s)xbyIlYP literal 0 HcmV?d00001 diff --git a/www/mail_and_packages/amazon/b7353e92-f701-4f3d-a3d9-0673f7d8d05f.jpg b/www/mail_and_packages/amazon/d449ea58-02b6-4211-882b-2ccf5e4663dd.jpg similarity index 100% rename from www/mail_and_packages/amazon/b7353e92-f701-4f3d-a3d9-0673f7d8d05f.jpg rename to www/mail_and_packages/amazon/d449ea58-02b6-4211-882b-2ccf5e4663dd.jpg diff --git a/www/mail_and_packages/fedex/f0ed786f-014e-4d93-bb60-8e239e9d450e.jpg b/www/mail_and_packages/fedex/f0ed786f-014e-4d93-bb60-8e239e9d450e.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ce288e4ae9e5b5deb55233994dc41b84973acad GIT binary patch literal 41496 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 literal 0 HcmV?d00001 diff --git a/www/mail_and_packages/ups/db3fed34-18e8-4b38-9741-fa4b63010359.jpg b/www/mail_and_packages/ups/db3fed34-18e8-4b38-9741-fa4b63010359.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a37a3b6080136e1ce6c054e2706ba15405ae7c30 GIT binary patch literal 34834 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 DbRq9> literal 0 HcmV?d00001 diff --git a/www/mail_and_packages/walmart/51734701-963f-4def-a367-41be4404c1d2.jpg b/www/mail_and_packages/walmart/51734701-963f-4def-a367-41be4404c1d2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83228c93898d327d091cca4965c5b23ae554f46d GIT binary patch literal 47455 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 IFMrMbFKPxv-~a#s literal 0 HcmV?d00001