various tidyups
This commit is contained in:
@@ -1,3 +1,27 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Central Stairway Two-Way Synchronization
|
||||
# File: Lighting_2Way_Sync/central_stairway_2way_sync.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-07-22
|
||||
#
|
||||
# Purpose:
|
||||
# Keeps the upper and lower controls for the main stair lights and stair footer
|
||||
# lights synchronized through Home Assistant.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Synchronizes each two-member relay pair in both directions.
|
||||
# - Synchronizes state after Home Assistant starts, following a five-second delay.
|
||||
# - Leaves direct device-level MQTT synchronization to the ESPHome devices.
|
||||
#
|
||||
# Dependency:
|
||||
# - Blueprint: zorruno/two_three_way_sync.yaml
|
||||
#
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-07-22): Removed the superseded lounge-middle relay and retained
|
||||
# two active relays in each synchronization pair.
|
||||
# - v1.0.0 (2026-06-22): Initial central stairway synchronization package.
|
||||
#:########################################################################################:#
|
||||
|
||||
automation:
|
||||
# Stair Lights Top
|
||||
- id: stair_lights_top_2way_sync
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Garage Lighting Two-Way Synchronization
|
||||
# File: Lighting_2Way_Sync/garage_lights_2way_sync.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2026-06-22
|
||||
#
|
||||
# Purpose:
|
||||
# Keeps the paired controls for the garage-entry corridor/outside lighting and
|
||||
# the internal garage lighting synchronized through Home Assistant.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Synchronizes each two-member relay pair in both directions.
|
||||
# - Synchronizes state after Home Assistant starts, following a five-second delay.
|
||||
#
|
||||
# Dependency:
|
||||
# - Blueprint: zorruno/two_three_way_sync.yaml
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2026-06-22): Initial garage lighting synchronization package.
|
||||
#:########################################################################################:#
|
||||
|
||||
automation:
|
||||
# Two lights and two switches for these corridor lights
|
||||
- id: garage_entry_outside_2way_sync
|
||||
|
||||
@@ -183,7 +183,3 @@ automation:
|
||||
- service: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.poollights_mode_switch
|
||||
|
||||
- service: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.timer_light_midnight_pending
|
||||
|
||||
@@ -152,6 +152,3 @@ automation:
|
||||
- service: input_boolean.turn_off
|
||||
data:
|
||||
entity_id: input_boolean.poolpump_mode_switch
|
||||
- service: input_boolean.turn_on
|
||||
data:
|
||||
entity_id: input_boolean.timer_midnight_pending
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Anniversary Events
|
||||
# File: anniversaries.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2024-09-04
|
||||
#
|
||||
# Purpose:
|
||||
# Provides an anniversary sensor that reports the number of days until the
|
||||
# next configured event and exposes event details as attributes.
|
||||
#
|
||||
# Dependency:
|
||||
# - Anniversary custom integration (platform: anniversary).
|
||||
#
|
||||
# Output:
|
||||
# - sensor.events: Days until the configured holiday event.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2024-09-04): Initial anniversary event sensor package.
|
||||
#:########################################################################################:#
|
||||
|
||||
sensor:
|
||||
- platform: anniversary
|
||||
name: events
|
||||
|
||||
@@ -1,3 +1,29 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Appliance Activity Feed Sensors
|
||||
# File: appliance_status_mqttfeed.yaml
|
||||
# Version: v1.2.0
|
||||
# Date: 2026-07-20
|
||||
#
|
||||
# Purpose:
|
||||
# Provides MQTT sensors for appliance, vehicle-charger, and tool-charger
|
||||
# completion messages published to the household activity feed.
|
||||
#
|
||||
# Dependencies:
|
||||
# - Home Assistant MQTT integration and broker connectivity.
|
||||
# - External publishers or the announcement router must publish completion
|
||||
# payloads to the configured activity-feed topics.
|
||||
#
|
||||
# Known Limitation:
|
||||
# - sensor.washer_finished has device_class timestamp and therefore requires
|
||||
# an ISO 8601 timestamp. P013-F018 records that the current router may publish
|
||||
# a time-only payload, which is not valid for this device class.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.2.0 (2026-07-20): Added the downstairs dishwasher completion sensor.
|
||||
# - v1.1.0 (2025-05-18): Set the washer completion sensor as a timestamp.
|
||||
# - v1.0.0 (2023-10-20): Added the initial MQTT activity-feed sensors.
|
||||
#:########################################################################################:#
|
||||
|
||||
mqtt:
|
||||
sensor:
|
||||
- unique_id: washing_machine_finished
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
################################################################################
|
||||
# PACKAGE: Underhouse Entrance Auto Lights
|
||||
################################################################################
|
||||
#:########################################################################################:#
|
||||
# Package: Underhouse Entrance Auto Lights
|
||||
# File: auto_lights_underhouse_entrance.yaml
|
||||
# Version: v1.2.0
|
||||
# Date: 2026-05-12
|
||||
#
|
||||
# Version:
|
||||
# 1.2 - 2026-05-12
|
||||
# - Added fast Zigbee2MQTT FP1-style event triggers:
|
||||
# sensor.underhouse_mmwave_sensor_x23ms_presence_event = enter
|
||||
# sensor.underhouse_mmwave_sensor_x23ms_presence_event = approach
|
||||
# - Keeps binary presence as a backup trigger and as the clear/off condition.
|
||||
# - This should behave closer to the previous Node-RED automation.
|
||||
# Purpose:
|
||||
# Replaces the Node-RED automation for the underhouse entrance lights. Uses
|
||||
# Zigbee2MQTT mmWave event triggers (enter/approach/presence) to turn lights
|
||||
# on instantly, then off after 400 seconds of sustained clear presence.
|
||||
#
|
||||
# Notes:
|
||||
# - The UI may show the binary sensor as "Detected", but the YAML state is
|
||||
# normally "on".
|
||||
# - The presence_event sensor can react earlier than the binary presence sensor.
|
||||
# - The event sensor is used to turn lights on quickly, but not to decide when
|
||||
# the area is clear, because it may remain on its last event value.
|
||||
# Behaviour:
|
||||
# - Fast Zigbee2MQTT FP1-style event triggers (enter, approach) turn lights on.
|
||||
# - Binary presence sensor serves as a backup trigger and clearance condition.
|
||||
# - Lights turn off 400 seconds after presence clears.
|
||||
#
|
||||
################################################################################
|
||||
# Version History:
|
||||
# - v1.2.0 (2026-05-12): Added fast Zigbee2MQTT FP1-style event triggers and
|
||||
# converted header to standard package format.
|
||||
#
|
||||
#:########################################################################################:#
|
||||
|
||||
automation:
|
||||
- id: underhouse_entrance_auto_lights
|
||||
|
||||
@@ -1,28 +1,24 @@
|
||||
#:########################################################################################:#
|
||||
# TITLE: UNDERHOUSE STORAGE LIGHTS AUTO LIGHTS PACKAGE
|
||||
#:########################################################################################:#
|
||||
# DESCRIPTION:
|
||||
# Package: Underhouse Storage Lights
|
||||
# File: auto_lights_underhouse_storage.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-06-14
|
||||
#
|
||||
# Purpose:
|
||||
# Replaces the Node-RED automation for the underhouse storage lights.
|
||||
# Doors, PIR sensors, a remote switch, and local relay changes can start or
|
||||
# extend the storage lighting timer.
|
||||
#
|
||||
# VERSION:
|
||||
# V1.1 2026-06-14
|
||||
# - Door-open trigger now watches each real door contact individually.
|
||||
# - This means any door changing from closed to open turns the lights on
|
||||
# immediately, even if another door is already open.
|
||||
# - All doors closed now turns the lights off immediately.
|
||||
# - PIR occupancy can still start/restart the motion timer after that.
|
||||
# Behaviour:
|
||||
# - Individual door-open triggers turn lights on immediately.
|
||||
# - All doors closed turns lights off immediately.
|
||||
# - PIR occupancy can start/restart the motion timer.
|
||||
# - Remote switch press starts or extends the light timer.
|
||||
#
|
||||
# V1.0 2026-05-12
|
||||
# - Initial Home Assistant package version.
|
||||
#
|
||||
# EDIT NOTES:
|
||||
# - Add future door contacts in all places marked FUTURE DOOR.
|
||||
# - Add future PIR sensors in the PIR group marked FUTURE PIR.
|
||||
# - The generated group entities used below should be:
|
||||
# binary_sensor.underhouse_storage_door_contacts
|
||||
# binary_sensor.underhouse_storage_pir_presence
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-06-14): Door-open trigger now watches each real door contact
|
||||
# individually; all doors closed turns lights off immediately.
|
||||
# - v1.0.0 (2026-05-12): Initial Home Assistant package version.
|
||||
#:########################################################################################:#
|
||||
|
||||
binary_sensor:
|
||||
@@ -112,8 +108,7 @@ automation:
|
||||
entity_id:
|
||||
- binary_sensor.underhouse_stealth_door_x07rs_contact
|
||||
- binary_sensor.underhouse_north_door_door
|
||||
# FUTURE DOOR: replace this with the actual third underhouse storage door contact.
|
||||
#- binary_sensor.underhouse_future_door_contact
|
||||
- binary_sensor.under_house_underhouse_east_stealth_door_door
|
||||
from: "off"
|
||||
to: "on"
|
||||
|
||||
@@ -213,8 +208,7 @@ automation:
|
||||
entity_id:
|
||||
- binary_sensor.underhouse_stealth_door_x07rs_contact
|
||||
- binary_sensor.underhouse_north_door_door
|
||||
# FUTURE DOOR: replace this with the actual third underhouse storage door contact.
|
||||
#- binary_sensor.underhouse_future_door_contact
|
||||
- binary_sensor.under_house_underhouse_east_stealth_door_door
|
||||
from: "on"
|
||||
to: "off"
|
||||
action:
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Basement Lights
|
||||
# File: basement_lights.yaml
|
||||
# Version: v1.0.1
|
||||
# Date: 2026-07-24
|
||||
#
|
||||
# Purpose:
|
||||
# Consolidated basement lighting configuration for two-way switching synchronization
|
||||
# between the basement hallway and front door area lights.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2024-12-20): Created basement lighting package with two-way sync.
|
||||
# - v1.0.1 (2026-07-24): Standardized header format with additional metadata.
|
||||
#:########################################################################################:#
|
||||
|
||||
group:
|
||||
basement_lights:
|
||||
name: "Basement Lights"
|
||||
entities:
|
||||
- switch.esp_officelights_relay_1_nighttime_lights
|
||||
- switch.esp_officelights_relay_2_daytime_lights
|
||||
- switch.esp_underhouselights_underhouse_entrance_lights
|
||||
- switch.esp_underhouselights_underhouse_storage_lights
|
||||
- switch.esp_laundrylights_relay_1_laundry_lights
|
||||
@@ -1,3 +1,26 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Bedroom 3 Window LED Actions
|
||||
# File: bedroom_3_led_actions.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2023-10-20
|
||||
#
|
||||
# Purpose:
|
||||
# Provides a selectable control for publishing Bedroom 3 window LED commands
|
||||
# to the household MQTT command topic.
|
||||
#
|
||||
# Behaviour:
|
||||
# - The Off option publishes the off command.
|
||||
# - The 1 Hour Fade option publishes the fade_1 command.
|
||||
# - The placeholder option preserves the neutral selector state.
|
||||
#
|
||||
# Dependencies:
|
||||
# - Home Assistant MQTT integration and broker connectivity.
|
||||
# - An external MQTT consumer for the Bedroom 3 window LED action topic.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2023-10-20): Initial Bedroom 3 window LED action package.
|
||||
#:########################################################################################:#
|
||||
|
||||
input_select:
|
||||
bedroom_3_led_actions:
|
||||
icon: mdi:led-strip
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#:########################################################################################:#
|
||||
# Package: BYD Charging Schedule At Home
|
||||
# File: byd_charging_schedule_athome.yaml
|
||||
# Version: v1.0.1
|
||||
# Date: 2026-06-19
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-07-23
|
||||
#
|
||||
# Purpose:
|
||||
# Enables the BYD Atto 3 charging schedule when the car arrives home.
|
||||
@@ -11,11 +11,12 @@
|
||||
#
|
||||
# Behaviour:
|
||||
# - Confirmed arrival home:
|
||||
# Turns ON switch.atto_3_schedule_enabled,
|
||||
# but only if the car had previously been confirmed away.
|
||||
# Sets the schedule to 9:00 PM through midnight with charge-to-full disabled,
|
||||
# enables it, and retries cloud reconciliation once per minute.
|
||||
#
|
||||
# - Confirmed away:
|
||||
# After away_confirm_minutes, turns OFF switch.atto_3_schedule_enabled.
|
||||
# After away_confirm_minutes, disables the schedule and retries cloud
|
||||
# reconciliation once per minute.
|
||||
#
|
||||
# - Manual control:
|
||||
# If the car is already home and the user or another HA automation turns
|
||||
@@ -35,24 +36,35 @@ input_boolean:
|
||||
|
||||
automation:
|
||||
#:######################################################################################:#
|
||||
# ARRIVAL - Turn schedule ON only after a confirmed away period
|
||||
# ARRIVAL - Reconcile and enable schedule after a confirmed away period
|
||||
#:######################################################################################:#
|
||||
- id: byd_atto3_charging_schedule_arrival_enable
|
||||
alias: "BYD Atto 3 Charging Schedule - Arrival Enable"
|
||||
description: >
|
||||
Turns the BYD charging schedule ON when the car arrives home, but only if
|
||||
it was previously confirmed away. This prevents brief away/home glitches
|
||||
from undoing a manual OFF while the car is actually still at home.
|
||||
Reconciles the BYD charging schedule to 9:00 PM through midnight and turns
|
||||
it ON when the car arrives home after a confirmed away period. Rechecks the
|
||||
cloud-confirmed state once per minute and retries failed updates.
|
||||
mode: single
|
||||
variables: &byd_charging_schedule_vars
|
||||
tracker_entity: device_tracker.byd_atto3_ibeacon_bur4c2a_bermuda_tracker
|
||||
schedule_switch_entity: switch.atto_3_schedule_enabled
|
||||
schedule_start_time_entity: time.atto_3_start_time
|
||||
schedule_end_time_entity: time.atto_3_end_time
|
||||
schedule_charge_to_full_entity: switch.atto_3_charge_to_full
|
||||
|
||||
# HA normally stores "At Home" as "home".
|
||||
home_state: "home"
|
||||
|
||||
# Required charging schedule settings.
|
||||
expected_start_time: "21:00:00"
|
||||
expected_end_time: "00:00:00"
|
||||
|
||||
# Adjustable YAML-only delay before the car is treated as truly away.
|
||||
away_confirm_minutes: 15
|
||||
away_confirm_minutes: 10
|
||||
|
||||
# Verify cloud-confirmed schedule state at one-minute intervals.
|
||||
schedule_verify_attempts: 6
|
||||
schedule_verify_interval: "00:01:00"
|
||||
|
||||
# These states will not be treated as confirmed away.
|
||||
ignored_tracker_states:
|
||||
@@ -69,7 +81,7 @@ automation:
|
||||
{{ trigger.to_state is not none
|
||||
and trigger.from_state is not none
|
||||
and trigger.to_state.state == home_state
|
||||
and trigger.from_state.state != home_state }}
|
||||
and trigger.from_state.state == 'not_home' }}
|
||||
|
||||
actions:
|
||||
- choose:
|
||||
@@ -78,23 +90,72 @@ automation:
|
||||
entity_id: input_boolean.byd_atto3_charging_schedule_confirmed_away
|
||||
state: "on"
|
||||
sequence:
|
||||
- action: switch.turn_on
|
||||
- action: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
entity_id: input_boolean.byd_atto3_charging_schedule_confirmed_away
|
||||
|
||||
- action: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.byd_atto3_charging_schedule_confirmed_away
|
||||
- repeat:
|
||||
count: "{{ schedule_verify_attempts | int(6) }}"
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ is_state(tracker_entity, home_state) }}"
|
||||
then:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ states(schedule_start_time_entity) != expected_start_time }}
|
||||
then:
|
||||
- action: time.set_value
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_start_time_entity }}"
|
||||
data:
|
||||
time: "{{ expected_start_time }}"
|
||||
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ states(schedule_end_time_entity) != expected_end_time }}
|
||||
then:
|
||||
- action: time.set_value
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_end_time_entity }}"
|
||||
data:
|
||||
time: "{{ expected_end_time }}"
|
||||
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ not is_state(schedule_charge_to_full_entity, 'off') }}
|
||||
then:
|
||||
- action: switch.turn_off
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_charge_to_full_entity }}"
|
||||
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ not is_state(schedule_switch_entity, 'on') }}
|
||||
then:
|
||||
- action: switch.turn_on
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
|
||||
- delay: "{{ schedule_verify_interval }}"
|
||||
|
||||
#:######################################################################################:#
|
||||
# DEPARTURE - Turn schedule OFF only after confirmed away timeout
|
||||
# DEPARTURE - Disable schedule after confirmed away timeout
|
||||
#:######################################################################################:#
|
||||
- id: byd_atto3_charging_schedule_departure_disable_after_timeout
|
||||
alias: "BYD Atto 3 Charging Schedule - Departure Disable After Timeout"
|
||||
description: >
|
||||
When the car leaves home, waits for the configured away timeout. If the car
|
||||
is still away after that delay, turns the BYD charging schedule OFF and
|
||||
marks the car as confirmed away.
|
||||
is still away, marks it confirmed away, turns the BYD charging schedule OFF,
|
||||
and retries failed cloud updates once per minute.
|
||||
mode: restart
|
||||
variables: *byd_charging_schedule_vars
|
||||
|
||||
@@ -111,7 +172,7 @@ automation:
|
||||
|
||||
actions:
|
||||
- delay:
|
||||
minutes: "{{ away_confirm_minutes | int(15) }}"
|
||||
minutes: "{{ away_confirm_minutes | int(10) }}"
|
||||
|
||||
- condition: template
|
||||
value_template: >-
|
||||
@@ -119,14 +180,28 @@ automation:
|
||||
{{ current_state != home_state
|
||||
and current_state not in ignored_tracker_states }}
|
||||
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
|
||||
- action: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.byd_atto3_charging_schedule_confirmed_away
|
||||
|
||||
- repeat:
|
||||
count: "{{ schedule_verify_attempts | int(6) }}"
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{% set current_state = states(tracker_entity) %}
|
||||
{{ current_state != home_state
|
||||
and current_state not in ignored_tracker_states
|
||||
and not is_state(schedule_switch_entity, 'off') }}
|
||||
then:
|
||||
- action: switch.turn_off
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
|
||||
- delay: "{{ schedule_verify_interval }}"
|
||||
|
||||
#:######################################################################################:#
|
||||
# STARTUP SAFETY - If HA restarts while the car is away, re-arm arrival logic
|
||||
#:######################################################################################:#
|
||||
@@ -134,8 +209,8 @@ automation:
|
||||
alias: "BYD Atto 3 Charging Schedule - Startup Away Check"
|
||||
description: >
|
||||
On Home Assistant startup, if the car is already away and remains away
|
||||
beyond the configured timeout, turn the schedule OFF and mark the car as
|
||||
confirmed away so that the next confirmed arrival can enable the schedule.
|
||||
beyond the configured timeout, mark it confirmed away and reconcile the
|
||||
charging schedule OFF so the next confirmed arrival can enable it.
|
||||
mode: single
|
||||
variables: *byd_charging_schedule_vars
|
||||
|
||||
@@ -153,7 +228,7 @@ automation:
|
||||
and current_state not in ignored_tracker_states }}
|
||||
|
||||
- delay:
|
||||
minutes: "{{ away_confirm_minutes | int(15) }}"
|
||||
minutes: "{{ away_confirm_minutes | int(10) }}"
|
||||
|
||||
- condition: template
|
||||
value_template: >-
|
||||
@@ -161,10 +236,24 @@ automation:
|
||||
{{ current_state != home_state
|
||||
and current_state not in ignored_tracker_states }}
|
||||
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
|
||||
- action: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.byd_atto3_charging_schedule_confirmed_away
|
||||
|
||||
- repeat:
|
||||
count: "{{ schedule_verify_attempts | int(6) }}"
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{% set current_state = states(tracker_entity) %}
|
||||
{{ current_state != home_state
|
||||
and current_state not in ignored_tracker_states
|
||||
and not is_state(schedule_switch_entity, 'off') }}
|
||||
then:
|
||||
- action: switch.turn_off
|
||||
continue_on_error: true
|
||||
target:
|
||||
entity_id: "{{ schedule_switch_entity }}"
|
||||
|
||||
- delay: "{{ schedule_verify_interval }}"
|
||||
|
||||
@@ -1,6 +1,28 @@
|
||||
#:########################################################################################:#
|
||||
# Package: CCTV Motion Feed
|
||||
# File: cctv_controls.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-07-24
|
||||
#
|
||||
# Purpose:
|
||||
# Provides a Home Assistant binary sensor for front-door motion messages
|
||||
# published by the external CCTV system over MQTT.
|
||||
#
|
||||
# Dependencies:
|
||||
# - Home Assistant MQTT integration and broker connectivity.
|
||||
# - An external CCTV publisher for the configured motion topic.
|
||||
#
|
||||
#
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-07-24): Added explicit numeric ON/OFF payloads (P013-F039).
|
||||
# - v1.0.0 (2022-10-11): Initial CCTV front-door motion sensor package.
|
||||
#:########################################################################################:#
|
||||
|
||||
mqtt:
|
||||
binary_sensor:
|
||||
- unique_id: front_door_movement_camera_corner
|
||||
name: "Front Door Movement"
|
||||
state_topic: "viewroad-status/cctv/front_door_motion"
|
||||
payload_on: "1"
|
||||
payload_off: "0"
|
||||
icon: mdi:exit-run
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Dashboard Helpers
|
||||
# File: dashboard_helpers.yaml
|
||||
# Version: v1.0.1
|
||||
# Date: 2026-07-24
|
||||
#
|
||||
# Purpose:
|
||||
# Provides helper entities used by stored Home Assistant dashboards for
|
||||
# temporary display behavior that does not belong to a device integration.
|
||||
#
|
||||
# Behaviour:
|
||||
# - The moon-phase overlay helper controls whether the percentage is displayed.
|
||||
# - The companion script enables the overlay for ten seconds and then disables it.
|
||||
# - Restart mode restarts the ten-second display period when called repeatedly.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2026-02-16): Added the temporary moon-phase percentage overlay helper.
|
||||
# - v1.0.1 (2026-07-24): Standardized header format with additional metadata.
|
||||
#:########################################################################################:#
|
||||
|
||||
input_boolean:
|
||||
moon_phase_percent_overlay:
|
||||
name: Moon phase percent overlay
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
# - Calculates memory usage from total, free, buffer, and cache values.
|
||||
#
|
||||
# Polling:
|
||||
# - Traffic counters: Every 10 seconds.
|
||||
# - Traffic counters: Every 60 seconds.
|
||||
# - Uptime, CPU, load, and memory: Every 60 seconds.
|
||||
# - Firmware description: Every 300 seconds.
|
||||
#
|
||||
@@ -58,7 +58,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# ifHCOutOctets counts bytes transmitted from the router to the Internet.
|
||||
- platform: snmp
|
||||
@@ -72,7 +72,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Convert the cumulative received-byte counter into the WAN download rate.
|
||||
- platform: derivative
|
||||
@@ -109,7 +109,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Bytes transmitted by the router to Home LAN clients become the LAN download rate.
|
||||
- platform: snmp
|
||||
@@ -123,7 +123,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Derive the client-to-router upload rate from the received-byte counter.
|
||||
- platform: derivative
|
||||
@@ -160,7 +160,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Bytes transmitted by the router to the wireless network become its download rate.
|
||||
- platform: snmp
|
||||
@@ -174,7 +174,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Derive the wireless-to-router upload rate from the received-byte counter.
|
||||
- platform: derivative
|
||||
@@ -211,7 +211,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Bytes transmitted by the router to Home Automation become its download rate.
|
||||
- platform: snmp
|
||||
@@ -225,7 +225,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Derive the Home Automation upload rate from the received-byte counter.
|
||||
- platform: derivative
|
||||
@@ -262,7 +262,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Bytes transmitted by the router to this network become its download rate.
|
||||
- platform: snmp
|
||||
@@ -276,7 +276,7 @@ sensor:
|
||||
device_class: data_size
|
||||
state_class: total_increasing
|
||||
unit_of_measurement: "B"
|
||||
scan_interval: 10
|
||||
scan_interval: 60
|
||||
|
||||
# Derive the secondary Home Automation upload rate from received bytes.
|
||||
- platform: derivative
|
||||
|
||||
@@ -1,3 +1,26 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Refrigerator Temperature MQTT Publishing
|
||||
# File: fridge_temperatures.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2024-09-04
|
||||
#
|
||||
# Purpose:
|
||||
# Publishes refrigerator and freezer temperature changes to household MQTT
|
||||
# status topics for use by external displays and consumers.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Publishes the source sensor state whenever a valid temperature changes.
|
||||
# - Suppresses unknown and unavailable source states.
|
||||
# - Covers the drinks fridge, drinks freezer, and main kitchen fridge.
|
||||
#
|
||||
# Dependencies:
|
||||
# - The three configured Home Assistant temperature sensors.
|
||||
# - Home Assistant MQTT integration and broker connectivity.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2024-09-04): Initial refrigerator temperature publishing package.
|
||||
#:########################################################################################:#
|
||||
|
||||
automation:
|
||||
- id: publish_fridge_temps_drinks_fridge
|
||||
alias: publish_fridge_temps_drinks_fridge
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
rest_command:
|
||||
chores1_request:
|
||||
url: !secret grocy_api_uri_chore6
|
||||
method: PUT
|
||||
headers:
|
||||
accept: "*/*"
|
||||
GROCY-API-KEY: !secret grocy_api_key
|
||||
content_type: "application/json"
|
||||
payload: '{
|
||||
"name" : "{{ name }}" ,
|
||||
"next_execution_assigned_to_user_id" : "{{ assigned_to }}"
|
||||
}'
|
||||
# payload: '{"name" : "{{ name }}" , "next_estimated_execution_time" : "{{ next_time }}", "next_execution_assigned_to_user_id" : "{{ assigned_to }}" }'
|
||||
verify_ssl: false
|
||||
|
||||
sensor:
|
||||
- platform: rest
|
||||
name: Dog Motel Cleaning
|
||||
resource: !secret grocy_api_uri_chore3
|
||||
method: GET
|
||||
value_template: "{{ (((as_timestamp(value_json.next_estimated_execution_time))-as_timestamp(now())) | int /60/1440) | round(0) }}"
|
||||
json_attributes:
|
||||
- last_tracked
|
||||
- estimated_execution_time
|
||||
headers:
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
GROCY-API-KEY: !secret grocy_api_key
|
||||
unit_of_measurement: "Days"
|
||||
- platform: rest
|
||||
name: Red Bin Out
|
||||
resource: !secret grocy_api_uri_chore2
|
||||
method: GET
|
||||
value_template: "{{ (((as_timestamp(value_json.next_estimated_execution_time))-as_timestamp(now())) | int /60/1440) | round(0) }}"
|
||||
json_attributes:
|
||||
- last_tracked
|
||||
- estimated_execution_time
|
||||
headers:
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
GROCY-API-KEY: !secret grocy_api_key
|
||||
unit_of_measurement: "Days"
|
||||
@@ -1,3 +1,30 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Node-RED Health Checks
|
||||
# File: health_checks.yaml
|
||||
# Version: v1.2.0
|
||||
# Date: 2025-08-25
|
||||
#
|
||||
# Purpose:
|
||||
# Monitors the Node-RED Panda instance through independent HTTP and MQTT health
|
||||
# signals and combines them into one connectivity status.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Polls the HTTP health endpoint every 30 seconds with a three-second timeout.
|
||||
# - Tracks the MQTT birth/will topic with QoS 1 and a 180-second expiry.
|
||||
# - Reports the combined check as available when either source is available.
|
||||
# - Reports the combined check as connected when either source is connected.
|
||||
#
|
||||
# Dependencies:
|
||||
# - Reachability of the configured Node-RED HTTP health endpoint.
|
||||
# - Home Assistant MQTT integration and the Node-RED birth/will publisher.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.2.0 (2025-08-25): Reduced MQTT expiry to 180 seconds and clarified the
|
||||
# combined HTTP/MQTT sensor name.
|
||||
# - v1.1.0 (2025-08-22): Split HTTP and MQTT probes and added a combined sensor.
|
||||
# - v1.0.0 (2025-08-21): Initial Node-RED health-check package.
|
||||
#:########################################################################################:#
|
||||
|
||||
# ---- HTTP health probe ----
|
||||
binary_sensor:
|
||||
- platform: rest
|
||||
|
||||
@@ -1,3 +1,28 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Internet Traffic Summary
|
||||
# File: internet_traffic.yaml
|
||||
# Version: v1.2.0
|
||||
# Date: 2026-07-22
|
||||
#
|
||||
# Purpose:
|
||||
# Preserves the household Internet download, upload, and total traffic sensors
|
||||
# while sourcing current WAN rates from the EdgeRouter SNMP package.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Mirrors the EdgeRouter WAN download and upload rates in kB/s.
|
||||
# - Calculates total traffic as the sum of download and upload rates.
|
||||
# - Marks each sensor unavailable when its required source is unavailable.
|
||||
#
|
||||
# Dependency:
|
||||
# - packages/edgerouter_snmp.yaml
|
||||
#
|
||||
# Version History:
|
||||
# - v1.2.0 (2026-07-22): Migrated source data from EdgeOS attributes to the
|
||||
# EdgeRouter SNMP WAN rate sensors and added availability handling.
|
||||
# - v1.1.0 (2025-12-21): Migrated the three sensors to modern template syntax.
|
||||
# - v1.0.0 (2022-10-12): Added the initial EdgeOS-based traffic sensors.
|
||||
#:########################################################################################:#
|
||||
|
||||
template:
|
||||
- sensor:
|
||||
- name: "Internet Download Traffic"
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
template:
|
||||
- sensor:
|
||||
- name: "Internet Download Traffic"
|
||||
unique_id: internet_downtraffic
|
||||
unit_of_measurement: "kB/s"
|
||||
state_class: measurement
|
||||
state: >
|
||||
{{ state_attr('binary_sensor.edgeos_interface_pppoe0', 'KBytes/ps (Received)') | float(0) }}
|
||||
|
||||
- name: "Internet Upload Traffic"
|
||||
unique_id: internet_uptraffic
|
||||
unit_of_measurement: "kB/s"
|
||||
state_class: measurement
|
||||
state: >
|
||||
{{ state_attr('binary_sensor.edgeos_interface_pppoe0', 'KBytes/ps (Sent)') | float(0) }}
|
||||
|
||||
- name: "Internet Total Traffic"
|
||||
unique_id: internet_totaltraffic
|
||||
unit_of_measurement: "kB/s"
|
||||
state_class: measurement
|
||||
state: >
|
||||
{{
|
||||
(state_attr('binary_sensor.edgeos_interface_pppoe0', 'KBytes/ps (Received)') | float(0))
|
||||
+ (state_attr('binary_sensor.edgeos_interface_pppoe0', 'KBytes/ps (Sent)') | float(0))
|
||||
}}
|
||||
@@ -1,3 +1,30 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Kogan Kettle MQTT Control
|
||||
# File: kogan_kettle.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2022-10-11
|
||||
#
|
||||
# Purpose:
|
||||
# Provides kettle temperature monitoring, power control, and selectable
|
||||
# keep-warm temperatures through a Tasmota/TuyaMCU MQTT interface.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Reads temperature data from the kettle's TuyaReceived MQTT payload.
|
||||
# - Controls kettle power through its MQTT power command topic.
|
||||
# - Maps the keep-warm selector to the kettle's TuyaSend4 commands.
|
||||
#
|
||||
# Dependencies:
|
||||
# - Home Assistant MQTT integration and broker connectivity.
|
||||
# - The configured Tasmota/TuyaMCU kettle MQTT topics and payload structure.
|
||||
#
|
||||
# Known Limitation:
|
||||
# - P013-F026 records that temperature parsing assumes a fixed nested JSON
|
||||
# payload. Malformed or unrelated messages may cause template errors.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2022-10-11): Initial kettle monitoring and control package.
|
||||
#:########################################################################################:#
|
||||
|
||||
mqtt:
|
||||
sensor:
|
||||
- unique_id: kettle.temp
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
#:########################################################################################:#
|
||||
# Low Battery Device Summary Package #
|
||||
# Low Battery Monitoring Package #
|
||||
#:########################################################################################:#
|
||||
#
|
||||
# TITLE:
|
||||
# Low Battery Device Summary
|
||||
# Low Battery Monitoring
|
||||
#
|
||||
# FILE:
|
||||
# packages/low_battery_device_quantity.yaml
|
||||
#
|
||||
# VERSION:
|
||||
# V1.1 2026-07-20
|
||||
# V1.2 2026-07-23
|
||||
#
|
||||
# VERSION HISTORY:
|
||||
# V1.3 2026-07-24
|
||||
# - Truncated list sensor state to count-only summary; full list stays in attributes.
|
||||
#
|
||||
# V1.2 2026-07-23
|
||||
# - Moved the weekly low-battery blueprint automation into this package.
|
||||
# - Preserved the Monday 21:00 schedule and Zorruno Pushover notification.
|
||||
#
|
||||
# V1.1 2026-07-20
|
||||
# - Changed the low-battery threshold from 97% to 20%.
|
||||
# - Added structured documentation for scope, exclusions, and outputs.
|
||||
@@ -21,17 +28,19 @@
|
||||
#
|
||||
# PURPOSE:
|
||||
# Finds numeric sensor entities with device_class battery whose value is 20%
|
||||
# or lower, then exposes a count and a human-readable device list.
|
||||
# or lower, exposes count and list sensors, and runs a weekly notification.
|
||||
#
|
||||
# SCOPE AND EXCLUSIONS:
|
||||
# - Only entities in the sensor domain with device_class battery are checked.
|
||||
# - Unknown, unavailable, non-numeric, and "Ok" states are excluded.
|
||||
# - Battery entities in other domains are not included.
|
||||
# - Battery entities in other domains are not included in the summaries.
|
||||
# - The notification blueprint also checks battery binary sensors.
|
||||
#
|
||||
# OUTPUTS:
|
||||
# - sensor.devices_with_low_battery reports the number of matching sensors.
|
||||
# - sensor.devices_with_low_battery_list reports names and percentages.
|
||||
# - The list sensor also exposes count, entities, and names attributes.
|
||||
# - A Pushover notification runs each Monday at 21:00 when batteries are low.
|
||||
#
|
||||
#:########################################################################################:#
|
||||
|
||||
@@ -69,21 +78,11 @@ template:
|
||||
mdi:battery-alert
|
||||
{% endif %}
|
||||
state: >
|
||||
{% set ns = namespace(names=[]) %}
|
||||
{% for s in states.sensor %}
|
||||
{% if s.attributes.device_class == 'battery' %}
|
||||
{% set st = s.state %}
|
||||
{% if st not in ['unknown', 'unavailable', 'Ok'] %}
|
||||
{% if st | int(-1) != -1 and (st | int(0)) <= 20 %}
|
||||
{% set ns.names = ns.names + [s.name ~ ' (' ~ (st | int(0)) ~ '%)'] %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if ns.names | length == 0 %}
|
||||
{% set count = states('sensor.devices_with_low_battery') | int(0) %}
|
||||
{% if count == 0 %}
|
||||
None
|
||||
{% else %}
|
||||
{{ ns.names | join(', ') }}
|
||||
{{ count }} devices
|
||||
{% endif %}
|
||||
attributes:
|
||||
count: "{{ states('sensor.devices_with_low_battery') | int(0) }}"
|
||||
@@ -113,3 +112,22 @@ template:
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ ns.n }}
|
||||
|
||||
automation:
|
||||
- id: "1635929281159"
|
||||
alias: "Weekly Low battery level detection"
|
||||
description: >
|
||||
Checks battery-class entities each Monday and notifies Zorruno when any
|
||||
are below the blueprint threshold.
|
||||
use_blueprint:
|
||||
path: sbyx/low-battery-level-detection-notification-for-all-battery-sensors.yaml
|
||||
input:
|
||||
day: 1
|
||||
time: "21:00:00"
|
||||
actions:
|
||||
- action: notify.pushover_zorruno
|
||||
data:
|
||||
title: "View Road Sensors"
|
||||
message: >
|
||||
Weekly Battery Check. Low Devices:
|
||||
{{ sensors }}
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
template:
|
||||
- sensor:
|
||||
- name: "Devices with low battery"
|
||||
unique_id: devices_with_low_battery_count
|
||||
unit_of_measurement: "devices"
|
||||
state: >
|
||||
{% set ns = namespace(c=0) %}
|
||||
{% for s in states.sensor %}
|
||||
{% if s.attributes.device_class == 'battery' %}
|
||||
{% set st = s.state %}
|
||||
{% if st not in ['unknown', 'unavailable', 'Ok'] %}
|
||||
{% if st | int(-1) != -1 and (st | int(0)) <= 97 %}
|
||||
{% set ns.c = ns.c + 1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ ns.c }}
|
||||
icon: >
|
||||
{% if this.state | int(0) == 0 %}
|
||||
mdi:check-circle
|
||||
{% else %}
|
||||
mdi:battery-alert
|
||||
{% endif %}
|
||||
|
||||
- name: "Devices with low battery list"
|
||||
unique_id: devices_with_low_battery_list
|
||||
icon: >
|
||||
{% if states('sensor.devices_with_low_battery') | int(0) == 0 %}
|
||||
mdi:check-circle
|
||||
{% else %}
|
||||
mdi:battery-alert
|
||||
{% endif %}
|
||||
state: >
|
||||
{% set ns = namespace(names=[]) %}
|
||||
{% for s in states.sensor %}
|
||||
{% if s.attributes.device_class == 'battery' %}
|
||||
{% set st = s.state %}
|
||||
{% if st not in ['unknown', 'unavailable', 'Ok'] %}
|
||||
{% if st | int(-1) != -1 and (st | int(0)) <= 97 %}
|
||||
{% set ns.names = ns.names + [s.name ~ ' (' ~ (st | int(0)) ~ '%)'] %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if ns.names | length == 0 %}
|
||||
None
|
||||
{% else %}
|
||||
{{ ns.names | join(', ') }}
|
||||
{% endif %}
|
||||
attributes:
|
||||
count: "{{ states('sensor.devices_with_low_battery') | int(0) }}"
|
||||
entities: >
|
||||
{% set ns = namespace(e=[]) %}
|
||||
{% for s in states.sensor %}
|
||||
{% if s.attributes.device_class == 'battery' %}
|
||||
{% set st = s.state %}
|
||||
{% if st not in ['unknown', 'unavailable', 'Ok'] %}
|
||||
{% if st | int(-1) != -1 and (st | int(0)) <= 97 %}
|
||||
{% set ns.e = ns.e + [s.entity_id] %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ ns.e }}
|
||||
names: >
|
||||
{% set ns = namespace(n=[]) %}
|
||||
{% for s in states.sensor %}
|
||||
{% if s.attributes.device_class == 'battery' %}
|
||||
{% set st = s.state %}
|
||||
{% if st not in ['unknown', 'unavailable', 'Ok'] %}
|
||||
{% if st | int(-1) != -1 and (st | int(0)) <= 97 %}
|
||||
{% set ns.n = ns.n + [s.name] %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ ns.n }}
|
||||
@@ -1,5 +0,0 @@
|
||||
#media_player:
|
||||
# MPD Media Player on Lounge Touchscreen
|
||||
# - platform: mpd
|
||||
# host: !secret lounge_mpd_player
|
||||
# scan_interval: 1
|
||||
@@ -1,265 +0,0 @@
|
||||
#:########################################################################################:#
|
||||
# Moonraker 3D Printer Package #
|
||||
#:########################################################################################:#
|
||||
#
|
||||
# TITLE:
|
||||
# Moonraker 3D Printer
|
||||
#
|
||||
# FILE:
|
||||
# packages/moonraker_3dprinter.yaml
|
||||
#
|
||||
# VERSION:
|
||||
# V1.1 2026-07-20
|
||||
#
|
||||
# VERSION HISTORY:
|
||||
# V1.1 2026-07-20
|
||||
# - Added structured documentation for setup, polling, outputs, and safety.
|
||||
# - Recorded that the Creality printer is not currently connected.
|
||||
#
|
||||
# V1.0
|
||||
# - Initial Moonraker REST sensors, commands, and customizations.
|
||||
#
|
||||
# PURPOSE:
|
||||
# Reads Klipper and Moonraker printer data and provides Home Assistant REST
|
||||
# commands for controlling a Creality K1C 3D printer.
|
||||
#
|
||||
# CURRENT STATUS:
|
||||
# - As of 2026-07-20, this configuration no longer connects to the printer.
|
||||
# - It is retained as a reference for future reconnection work.
|
||||
# - Before reconnecting, verify the printer address, Moonraker availability,
|
||||
# queried Klipper object names, and companion template entities.
|
||||
#
|
||||
# DEPENDENCIES:
|
||||
# - A reachable Moonraker server for the Klipper printer.
|
||||
# - Current configured endpoint: http://192.168.2.31:7125
|
||||
# - Companion templates: templates/moonraker_3dprinter.yaml
|
||||
# - The queried sensors and object names must match the Klipper configuration.
|
||||
#
|
||||
# POLLING:
|
||||
# - Full printer status, printer info, and server data poll every second.
|
||||
# - Current print file metadata polls every five seconds.
|
||||
#
|
||||
# RAW REST OUTPUTS:
|
||||
# - sensor.printer_3d_sensor provides printer object status attributes.
|
||||
# - sensor.printer_3d_info provides printer state and state message.
|
||||
# - sensor.printer_3d_server provides Mainsail server configuration data.
|
||||
# - sensor.printer_3d_file_metadata provides current-file metadata.
|
||||
# - Companion templates derive user-facing sensors from these raw entities.
|
||||
#
|
||||
# CONTROLS:
|
||||
# - Emergency stop immediately halts the printer.
|
||||
# - Firmware restart restarts the Klipper firmware process.
|
||||
# - Cancel stops the current print; pause and resume control print progress.
|
||||
#
|
||||
# SAFETY AND NETWORK:
|
||||
# - Emergency stop, firmware restart, and cancel are disruptive actions and
|
||||
# should only be exposed through dashboard controls with confirmation.
|
||||
# - The configured endpoint uses unencrypted HTTP without authentication and
|
||||
# assumes Moonraker is available only on a trusted local network.
|
||||
#
|
||||
# USER CONFIGURATION:
|
||||
# - If the printer address changes, update every Moonraker URL in this file.
|
||||
# - Confirm the filament and chamber sensor object names before reconnecting.
|
||||
#
|
||||
#:########################################################################################:#
|
||||
|
||||
#:########################################################################################:#
|
||||
# Home Assistant Customizations #
|
||||
#:########################################################################################:#
|
||||
|
||||
homeassistant:
|
||||
customize:
|
||||
rest_command.3d_printer_emergency_stop:
|
||||
friendly_name: "Emergency Stop (K1C)"
|
||||
area_id: Laundry
|
||||
icon: mdi:alert-octagon
|
||||
|
||||
rest_command.3d_printer_firmware_restart:
|
||||
friendly_name: "Firmware Restart (K1C)"
|
||||
area_id: Laundry
|
||||
icon: mdi:restart
|
||||
|
||||
rest_command.3d_printer_cancel:
|
||||
friendly_name: "Cancel Print (K1C)"
|
||||
area_id: Laundry
|
||||
icon: mdi:cancel
|
||||
|
||||
rest_command.3d_printer_pause:
|
||||
friendly_name: "Pause Print (K1C)"
|
||||
area_id: Laundry
|
||||
icon: mdi:pause-circle
|
||||
|
||||
rest_command.3d_printer_resume:
|
||||
friendly_name: "Resume Print (K1C)"
|
||||
area_id: Laundry
|
||||
icon: mdi:play-circle
|
||||
|
||||
sensor.printer_3d_file_metadata:
|
||||
area_id: Laundry
|
||||
friendly_name: "3D Printer (K1C) Print file data"
|
||||
|
||||
sensor.printer_3d_sensor:
|
||||
area_id: Laundry
|
||||
friendly_name: "3D Printer (K1C) Sensors"
|
||||
|
||||
sensor.printer_3d_info:
|
||||
area_id: Laundry
|
||||
friendly_name: "3D Printer (K1C) State"
|
||||
|
||||
sensor.printer_3d_server:
|
||||
area_id: Laundry
|
||||
friendly_name: "3D Printer (K1C) Print Server"
|
||||
|
||||
sensor.3d_printer_chamber_temp:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_hotend_target:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_hotend_actual:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_hotend_power:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_bed_target:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_bed_actual:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_bed_power:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_state:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_current_print:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_current_progress:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_print_time:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_time_remaining:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_eta:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_message:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_layer_height:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_object_height:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_current_height:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_current_layer:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_total_layers:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_actual_layer:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_object_thumbnails:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_state_message:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_heaters_power:
|
||||
area_id: Laundry
|
||||
|
||||
sensor.3d_printer_printername:
|
||||
area_id: Laundry
|
||||
|
||||
binary_sensor.3d_printer_filament:
|
||||
area_id: Laundry
|
||||
|
||||
# === REST sensor: File metadata for current 3D print ===
|
||||
rest:
|
||||
scan_interval: 5
|
||||
resource_template: "http://192.168.2.31:7125/server/files/metadata?filename={{ states('sensor.3d_printer_current_print') | urlencode }}"
|
||||
sensor:
|
||||
- name: printer_3d_file_metadata
|
||||
unique_id: "192.168.2.315ec44d90-419c-419c-802d-d34071639c08"
|
||||
icon: mdi:file-document-outline
|
||||
json_attributes_path: "$.result"
|
||||
json_attributes:
|
||||
- layer_height
|
||||
- object_height
|
||||
- thumbnails
|
||||
value_template: "OK"
|
||||
|
||||
rest_command:
|
||||
3d_printer_emergency_stop:
|
||||
url: "http://192.168.2.31:7125/printer/emergency_stop"
|
||||
method: post
|
||||
3d_printer_firmware_restart:
|
||||
url: "http://192.168.2.31:7125/printer/firmware_restart"
|
||||
method: post
|
||||
3d_printer_cancel:
|
||||
url: "http://192.168.2.31:7125/printer/print/cancel"
|
||||
method: post
|
||||
3d_printer_pause:
|
||||
url: "http://192.168.2.31:7125/printer/print/pause"
|
||||
method: post
|
||||
3d_printer_resume:
|
||||
url: "http://192.168.2.31:7125/printer/print/resume"
|
||||
method: post
|
||||
|
||||
sensor:
|
||||
# === REST sensor: Full 3D printer status (Klipper printer/objects/query) ===
|
||||
- platform: rest
|
||||
name: printer_3d_sensor
|
||||
unique_id: "192.168.2.313a0c25fa-297d-4c19-b03c-ddf04840682b"
|
||||
icon: mdi:printer-3d-nozzle
|
||||
resource: "http://192.168.2.31:7125/printer/objects/query?heater_bed&extruder&print_stats&toolhead&display_status&virtual_sdcard&gcode_move&filament_motion_sensor%20btt_smart_filament&temperature_sensor%20Chamber_Temp"
|
||||
json_attributes_path: "$.result.status"
|
||||
json_attributes:
|
||||
- heater_bed
|
||||
- extruder
|
||||
- print_stats
|
||||
- toolhead
|
||||
- display_status
|
||||
- virtual_sdcard
|
||||
- gcode_move
|
||||
- "filament_motion_sensor btt_smart_filament_sensor"
|
||||
- "temperature_sensor Chamber_Temp"
|
||||
value_template: "OK"
|
||||
force_update: true
|
||||
scan_interval: 1
|
||||
|
||||
# === REST sensor: Basic printer state and message ===
|
||||
- platform: rest
|
||||
name: printer_3d_info
|
||||
unique_id: "192.168.2.311cba6677-02bd-4273-9083-b8301bf6943b"
|
||||
icon: mdi:information-outline
|
||||
scan_interval: 1
|
||||
resource_template: "http://192.168.2.31:7125/printer/info"
|
||||
json_attributes_path: "$.result"
|
||||
json_attributes:
|
||||
- state_message
|
||||
- state
|
||||
value_template: "OK"
|
||||
|
||||
# === REST sensor: Server configuration details (e.g., printer name) ===
|
||||
- platform: rest
|
||||
name: printer_3d_server
|
||||
unique_id: "192.168.2.311cba6677-02bd-4273-9083-b8301bf6949"
|
||||
icon: mdi:server
|
||||
scan_interval: 1
|
||||
resource_template: "http://192.168.2.31:7125/server/database/item?namespace=mainsail&key=general"
|
||||
json_attributes_path: "$.result.value"
|
||||
json_attributes:
|
||||
- printername
|
||||
value_template: "OK"
|
||||
@@ -1,3 +1,25 @@
|
||||
#:########################################################################################:#
|
||||
# Package: NIWA Local Tides
|
||||
# File: niwa_tides.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2022-10-12
|
||||
#
|
||||
# Purpose:
|
||||
# Provides local tide level and forecast information from NIWA for use in Home
|
||||
# Assistant dashboards, automations, and templates.
|
||||
#
|
||||
# Output:
|
||||
# - sensor.local_tides reports the current tide level and exposes upcoming high
|
||||
# and low tide times, levels, phase, and percentage as attributes.
|
||||
#
|
||||
# Dependencies:
|
||||
# - NIWA Tides custom integration (platform: niwa_tides).
|
||||
# - NIWA API key and location coordinates stored in secrets.yaml.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2022-10-12): Initial local NIWA tide sensor package.
|
||||
#:########################################################################################:#
|
||||
|
||||
sensor:
|
||||
- platform: niwa_tides
|
||||
api_key: !secret niwa_tides_api_key
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
automation:
|
||||
- id: nspanel_lounge_controller
|
||||
alias: "NSPanel Master Bedroom Controller"
|
||||
description: ""
|
||||
use_blueprint:
|
||||
path: edwardtfn/nspanel_easy_blueprint.yaml
|
||||
input:
|
||||
nspanel_name: 084fb5b4a94e636d01244b1838156446
|
||||
|
||||
button_page01_label: Lounge Lighting Scenes
|
||||
button_pages_icon_size: "10"
|
||||
|
||||
entity01: script.nspanel_lounge_scene_bright
|
||||
entity01_name: "Bright"
|
||||
entity01_icon: mdi:brightness-7
|
||||
entity01_confirm: false
|
||||
|
||||
entity02: script.nspanel_lounge_scene_tv_general
|
||||
entity02_name: "TV General"
|
||||
entity02_icon: mdi:television
|
||||
entity02_confirm: false
|
||||
|
||||
entity03: script.nspanel_lounge_scene_movie
|
||||
entity03_name: "Movie"
|
||||
entity03_icon: mdi:movie-open
|
||||
entity03_confirm: false
|
||||
|
||||
entity04: script.nspanel_lounge_scene_balanced
|
||||
entity04_name: "Balance"
|
||||
entity04_icon: mdi:scale-balance
|
||||
entity04_confirm: false
|
||||
|
||||
entity05: script.nspanel_lounge_scene_warm_cozy
|
||||
entity05_name: "Warm Cozy"
|
||||
entity05_icon: mdi:fireplace
|
||||
entity05_confirm: false
|
||||
|
||||
entity06: script.nspanel_lounge_scene_reading
|
||||
entity06_name: "Reading On/Off"
|
||||
entity06_icon: mdi:book-open-page-variant
|
||||
entity06_confirm: false
|
||||
|
||||
entity07: script.nspanel_lounge_scene_dining
|
||||
entity07_name: "Dining On/Off"
|
||||
entity07_icon: mdi:silverware-fork-knife
|
||||
entity07_confirm: false
|
||||
|
||||
entity08: script.nspanel_lounge_scene_all_off
|
||||
entity08_name: "All Off"
|
||||
entity08_icon: mdi:power
|
||||
entity08_confirm: false
|
||||
mode: single
|
||||
@@ -1,26 +0,0 @@
|
||||
mqtt:
|
||||
sensor:
|
||||
- unique_id: dog_fed_activity
|
||||
name: "Dog Fed"
|
||||
state_topic: "viewroad-status/activityfeed/dogfed"
|
||||
icon: mdi:dog
|
||||
- unique_id: depooped_activity
|
||||
name: "DePooped"
|
||||
state_topic: "viewroad-status/activityfeed/depooped"
|
||||
icon: mdi:emoticon-poop
|
||||
- unique_id: jobs_done_activity
|
||||
name: "Jobs Done"
|
||||
state_topic: "viewroad-status/activityfeed/jobsdone"
|
||||
icon: mdi:notebook
|
||||
- unique_id: hours_since_jobs_done
|
||||
name: "Hours Since Jobs Done"
|
||||
state_topic: "viewroad-tele/petfeeding/hoursSinceJobsDone"
|
||||
unit_of_measurement: "Hours"
|
||||
- unique_id: hours_since_zorro_fed
|
||||
name: "Hours Since Zorro Fed"
|
||||
state_topic: "viewroad-tele/petfeeding/hoursSinceDogFed"
|
||||
unit_of_measurement: "Hours"
|
||||
- unique_id: hours_since_depooped
|
||||
name: "Hours Since DePooped"
|
||||
state_topic: "viewroad-tele/petfeeding/hoursSinceDePooped"
|
||||
unit_of_measurement: "Hours"
|
||||
@@ -1,45 +0,0 @@
|
||||
mqtt:
|
||||
sensor:
|
||||
- unique_id: piano.lastfinish
|
||||
name: "Last Piano Practice Complete"
|
||||
state_topic: "viewroad-status/activityfeed/pianopractice"
|
||||
- unique_id: piano.lastpracticeduration
|
||||
state_topic: "viewroad-status/piano/lastPracticeDuration"
|
||||
name: "Last Piano Practice Time"
|
||||
unit_of_measurement: "mins"
|
||||
- unique_id: piano.todayspracticeduration
|
||||
state_topic: "viewroad-status/piano/todayPracticeDuration"
|
||||
name: "Today's Piano Practice Time"
|
||||
unit_of_measurement: "mins"
|
||||
- unique_id: piano.thisweekspracticeduration
|
||||
state_topic: "viewroad-status/piano/thisWeekPracticeDuration"
|
||||
name: "This Week's Piano Practice Time"
|
||||
unit_of_measurement: "mins"
|
||||
|
||||
automation:
|
||||
- id: "1648705777863"
|
||||
alias: Tag Started Piano Practice is Scanned
|
||||
description: ""
|
||||
trigger:
|
||||
- platform: tag
|
||||
tag_id: af3f595c-5d41-4bb6-8985-27c70b0e6217
|
||||
condition: []
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: viewroad-commands/chores/piano_practice
|
||||
payload: start
|
||||
mode: single
|
||||
- id: "Tag Finished Piano Practice is Scanned"
|
||||
alias: Tag Finished Piano Practice is Scanned
|
||||
description: ""
|
||||
trigger:
|
||||
- platform: tag
|
||||
tag_id: 6e7a6ab5-c7e4-47f3-be8f-830241175d69
|
||||
condition: []
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: viewroad-commands/chores/piano_practice
|
||||
payload: end
|
||||
mode: single
|
||||
+31
-1
@@ -1,2 +1,32 @@
|
||||
# enable the recorder integration (optional)
|
||||
#:########################################################################################:#
|
||||
# Package: Recorder Configuration
|
||||
# File: recorder.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-07-23
|
||||
#
|
||||
# Purpose:
|
||||
# Enables Home Assistant Recorder with targeted exclusions for high-frequency
|
||||
# diagnostic and summary entities that do not require historical storage.
|
||||
#
|
||||
# Exclusions:
|
||||
# - ESPHome uptime sensors.
|
||||
# - Home Assistant summary v2 sensors.
|
||||
# - Jobs Tracker summary sensor.
|
||||
#
|
||||
# Notes:
|
||||
# - Excluded entities remain available for current-state use.
|
||||
# - Recorder retention and database settings continue to use Home Assistant
|
||||
# defaults unless configured elsewhere.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-07-23): Added targeted exclusions during P013-F010 cleanup.
|
||||
# - v1.0.0 (2022-10-11): Initial Recorder package.
|
||||
#:########################################################################################:#
|
||||
|
||||
recorder:
|
||||
exclude:
|
||||
entity_globs:
|
||||
- sensor.esp_*_uptime*
|
||||
- sensor.ha_summary_v2_*
|
||||
entities:
|
||||
- sensor.jobs_tracker_summary
|
||||
|
||||
@@ -1,3 +1,33 @@
|
||||
#:########################################################################################:#
|
||||
# Package: RobotDyn MQTT Dimmer
|
||||
# File: robotdyn_dimmers.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-02-05
|
||||
#
|
||||
# Purpose:
|
||||
# Provides a brightness-only Home Assistant light entity for the lounge
|
||||
# RobotDyn dimmer through its JSON MQTT interface.
|
||||
#
|
||||
# Behaviour:
|
||||
# - Reads JSON state updates from the dimmer state topic.
|
||||
# - Publishes power and brightness commands to the dimmer command topic.
|
||||
# - Uses a separate MQTT availability topic for online/offline status.
|
||||
#
|
||||
# Dependency:
|
||||
# - Home Assistant MQTT integration and the external RobotDyn MQTT publisher.
|
||||
#
|
||||
# Known Limitations:
|
||||
# - P013-F027 records that command messages are retained and may replay after
|
||||
# reconnecting.
|
||||
# - The configured availability topic contains "availablity"; confirm whether
|
||||
# that spelling matches the publisher before correcting it.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-02-05): Added the current name, default entity ID, explicit
|
||||
# availability payloads, and block-style color modes.
|
||||
# - v1.0.0 (2025-09-10): Initial lounge MQTT dimmer package.
|
||||
#:########################################################################################:#
|
||||
|
||||
mqtt:
|
||||
- light:
|
||||
schema: json
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Security and Notification Helpers
|
||||
# File: security_and_notifications.yaml
|
||||
# Version: v1.1.0
|
||||
# Date: 2026-07-21
|
||||
#
|
||||
# Purpose:
|
||||
# Provides the user-controlled helper that enables away-occupancy security
|
||||
# behavior such as the household lighting simulation.
|
||||
#
|
||||
# Behaviour:
|
||||
# - input_boolean.away_occupied_routine enables eligible away-mode automations.
|
||||
# - The current consumer is the away-light simulation package.
|
||||
#
|
||||
# Dependencies:
|
||||
# - packages/simulation_lights.yaml
|
||||
# - packages/quiet_time.yaml owns the canonical quiet-time helper.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.1.0 (2026-07-21): Disabled the duplicate quiet-time helper after moving
|
||||
# canonical ownership to the dedicated quiet-time package.
|
||||
# - v1.0.0 (2024-05-27): Added quiet-time and away-security helpers.
|
||||
#:########################################################################################:#
|
||||
|
||||
input_boolean:
|
||||
# Legacy duplicate retained temporarily for verification.
|
||||
# quiet_time:
|
||||
|
||||
@@ -1,8 +1,39 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Away-Light Security Simulation
|
||||
# File: simulation_lights.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2026-07-24
|
||||
#
|
||||
# Purpose:
|
||||
# Simulates household activity while the away routine is active and all
|
||||
# configured family members are away. Every five minutes after sunset, the
|
||||
# automation selects a configured entity and operates it for a random period.
|
||||
#
|
||||
# Version History:
|
||||
# - v1.0.0 (2026-07-24): Consolidated the simulation groups, away automation, and timed helper
|
||||
# script into one feature package.
|
||||
# - Preserved the existing automation ID, group keys, and script key.
|
||||
# - Aligned the automation with the existing simulation_lights_all group.
|
||||
#:########################################################################################:#
|
||||
|
||||
group:
|
||||
simulation_lights_all:
|
||||
name: Simulation Lights (All)
|
||||
#:######################################################################################:#
|
||||
# FAMILY PRESENCE
|
||||
#:######################################################################################:#
|
||||
family_away:
|
||||
name: "All Family Members Away"
|
||||
entities:
|
||||
- group.downstairs_flat_lights # ← now valid here
|
||||
- !secret person_1
|
||||
- !secret person_2
|
||||
- !secret person_3
|
||||
|
||||
#:######################################################################################:#
|
||||
# SIMULATION ENTITIES
|
||||
#:######################################################################################:#
|
||||
simulation_lights_all:
|
||||
name: "Simulation Lights (All)"
|
||||
entities:
|
||||
- group.downstairs_flat_lights
|
||||
- switch.esp_centralstairs_top_relay_2_stair_footer_lights
|
||||
- switch.esp_centralstairs_bottom_relay_1_main_stair_lights_lower
|
||||
- switch.esp_entrancebathrmlights_relay_1_main_lights
|
||||
@@ -16,3 +47,62 @@ group:
|
||||
- light.esp_loungepelmetleds2_lounge_pelmet_leds_a
|
||||
- light.esp_lounge6chdimmer_couch_spots_left
|
||||
- light.esp_lounge6chdimmer_couch_spots_right
|
||||
|
||||
script:
|
||||
#:######################################################################################:#
|
||||
# RANDOM-DURATION ENTITY CONTROL
|
||||
#:######################################################################################:#
|
||||
light_duration:
|
||||
description: "Turns an entity on for a supplied duration and then turns it off."
|
||||
mode: parallel
|
||||
fields:
|
||||
light:
|
||||
description: "Entity to operate."
|
||||
example: light.bedroom
|
||||
duration:
|
||||
description: "How long the entity should remain on."
|
||||
example: "00:25:00"
|
||||
sequence:
|
||||
- action: logbook.log
|
||||
data:
|
||||
name: "Script Notice"
|
||||
message: "Light {{ light }} will be turned on for {{ duration }}"
|
||||
|
||||
- action: homeassistant.turn_on
|
||||
target:
|
||||
entity_id: "{{ light }}"
|
||||
|
||||
- delay: "{{ duration }}"
|
||||
|
||||
- action: homeassistant.turn_off
|
||||
target:
|
||||
entity_id: "{{ light }}"
|
||||
|
||||
automation:
|
||||
#:######################################################################################:#
|
||||
# AWAY-LIGHT SIMULATION
|
||||
#:######################################################################################:#
|
||||
- id: do_random_actions_when_away
|
||||
alias: "Activate Random Actions for Security"
|
||||
description: >
|
||||
Periodically runs the timed simulation script after sunset when the away
|
||||
routine is active and all configured family members are away.
|
||||
mode: parallel
|
||||
triggers:
|
||||
- trigger: time_pattern
|
||||
minutes: "/5"
|
||||
conditions:
|
||||
- condition: sun
|
||||
after: sunset
|
||||
after_offset: "-00:30:00"
|
||||
- condition: state
|
||||
entity_id: input_boolean.away_occupied_routine
|
||||
state: "on"
|
||||
- condition: state
|
||||
entity_id: group.family_away
|
||||
state: "not_home"
|
||||
actions:
|
||||
- action: script.light_duration
|
||||
data:
|
||||
light: "{{ state_attr('group.simulation_lights_all', 'entity_id') | random }}"
|
||||
duration: "00:{{ '{:02}'.format(range(5, 29) | random | int) }}:00"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#:########################################################################################:#
|
||||
# Package: Vehicle Announcements
|
||||
# File: vehicle_announcements.yaml
|
||||
# Version: v1.0.0
|
||||
# Date: 2026-07-23
|
||||
#
|
||||
# Purpose:
|
||||
# Sends vehicle arrival announcements through the View Road announcement router.
|
||||
#:########################################################################################:#
|
||||
|
||||
automation:
|
||||
- id: byd_atto3_arrival_announcement
|
||||
alias: "BYD Atto 3 - Arrival Announcement"
|
||||
description: >
|
||||
Sends a Pushover notification to the Zorruno phone when the BYD Atto 3
|
||||
Bermuda tracker arrives home.
|
||||
mode: single
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id: device_tracker.byd_atto3_ibeacon_bur4c2a_bermuda_tracker
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
actions:
|
||||
- action: script.view_road_announcement
|
||||
data:
|
||||
channels: "pushover_zorruno"
|
||||
title: "Vehicle Notification"
|
||||
long_announcement: "The BYD Atto 3 has arrived home."
|
||||
@@ -1,40 +1,52 @@
|
||||
#:########################################################################################:#
|
||||
# Auckland Council Waste Collection Package #
|
||||
# Council Waste Collection Package #
|
||||
#:########################################################################################:#
|
||||
#
|
||||
# TITLE:
|
||||
# Auckland Council Waste Collection
|
||||
# Council Waste Collection
|
||||
#
|
||||
# FILE:
|
||||
# packages/waste_collection.yaml
|
||||
#
|
||||
# VERSION:
|
||||
# V1.1 2026-07-20
|
||||
# V1.4 2026-07-22
|
||||
#
|
||||
# VERSION HISTORY:
|
||||
# V1.4 2026-07-22
|
||||
# - Fixed waste type names to match Auckland Council source output (recycling, food scraps)
|
||||
# - Resolved P013-F019: Recycling and food-waste sensors were unknown due to type mismatch
|
||||
#
|
||||
# V1.3 2026-07-22
|
||||
# - Moved the source identifier to !secret council_name.
|
||||
# - Changed source documentation and MQTT unique IDs to generic wording.
|
||||
#
|
||||
# V1.2 2026-07-22
|
||||
# - Moved the source area number to !secret council_area.
|
||||
# - Changed package and schedule display names to generic council wording.
|
||||
#
|
||||
# V1.1 2026-07-20
|
||||
# - Added source setup, schedule, MQTT, and maintenance documentation.
|
||||
#
|
||||
# V1.0
|
||||
# - Initial Auckland Council schedules and MQTT bin-status sensors.
|
||||
# - Initial council schedules and MQTT bin-status sensors.
|
||||
#
|
||||
# PURPOSE:
|
||||
# Provides Auckland Council rubbish, recycling, and food-waste collection
|
||||
# schedules, plus independent MQTT sensors indicating whether bins are out.
|
||||
# Provides council rubbish, recycling, and food-waste collection schedules,
|
||||
# plus independent MQTT sensors indicating whether bins are out.
|
||||
#
|
||||
# DEPENDENCY:
|
||||
# Requires the Waste Collection Schedule custom integration and its
|
||||
# aucklandcouncil_govt_nz source.
|
||||
# Requires the Waste Collection Schedule custom integration and its configured
|
||||
# council source.
|
||||
#
|
||||
# AREA NUMBER SETUP:
|
||||
# - Open the Auckland Council rubbish and recycling collection-day finder.
|
||||
# - Open the council rubbish and recycling collection-day finder.
|
||||
# - Select the property address.
|
||||
# - Use the displayed assessment number as area_number below.
|
||||
# - Store the displayed assessment number as council_area in secrets.yaml.
|
||||
# - Source documentation:
|
||||
# https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aucklandcouncil_govt_nz.md
|
||||
# https://github.com/mampfes/hacs_waste_collection_schedule
|
||||
#
|
||||
# SCHEDULE SENSORS:
|
||||
# - Types are rubbish, recycle, and food-waste.
|
||||
# - Types are rubbish, recycling, and food scraps (matching Auckland source output).
|
||||
# - Each sensor returns one upcoming collection with a one-day lead time.
|
||||
# - details_format is upcoming and add_days_to adds relative-day text.
|
||||
#
|
||||
@@ -48,19 +60,20 @@
|
||||
# - As of 2026-07-20, the rubbish schedule resolves correctly.
|
||||
# - Recycling and food-waste report unknown; review the source type names when
|
||||
# investigating those schedules.
|
||||
# - As of 2026-07-22, fixed type names to match Auckland Council source output.
|
||||
#
|
||||
#:########################################################################################:#
|
||||
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: aucklandcouncil_govt_nz
|
||||
- name: !secret council_name
|
||||
args:
|
||||
area_number: 12344403722 # Auckland Council assessment number.
|
||||
area_number: !secret council_area
|
||||
|
||||
sensor:
|
||||
- platform: waste_collection_schedule
|
||||
#source_index: 0
|
||||
name: Auckland Council Waste
|
||||
name: "Council Waste"
|
||||
details_format: upcoming
|
||||
count: 1
|
||||
leadtime: 1
|
||||
@@ -72,7 +85,7 @@ sensor:
|
||||
- rubbish
|
||||
- platform: waste_collection_schedule
|
||||
#source_index: 0
|
||||
name: Auckland Council Recycling
|
||||
name: "Council Recycling"
|
||||
details_format: upcoming
|
||||
count: 1
|
||||
leadtime: 1
|
||||
@@ -81,10 +94,10 @@ sensor:
|
||||
add_days_to: true
|
||||
#event_index: EVENT_INDEX
|
||||
types:
|
||||
- recycle
|
||||
- recycling
|
||||
- platform: waste_collection_schedule
|
||||
#source_index: 0
|
||||
name: Auckland Council Food-Waste
|
||||
name: "Council Food-Waste"
|
||||
details_format: upcoming
|
||||
count: 1
|
||||
leadtime: 1
|
||||
@@ -93,16 +106,16 @@ sensor:
|
||||
add_days_to: true
|
||||
#event_index: EVENT_INDEX
|
||||
types:
|
||||
- food-waste
|
||||
- food scraps
|
||||
|
||||
mqtt:
|
||||
sensor:
|
||||
- unique_id: auckland_council_red_waste_bin_out
|
||||
- unique_id: council_red_waste_bin_out
|
||||
name: "Red Waste Bin Out"
|
||||
state_topic: "viewroad-status/rubbishbinstatus/redbin-out"
|
||||
- unique_id: auckland_council_green_recycling_bin_out
|
||||
- unique_id: council_green_recycling_bin_out
|
||||
name: "Green Recycling Bin Out"
|
||||
state_topic: "viewroad-status/rubbishbinstatus/greenbin-out"
|
||||
- unique_id: auckland_council_food_waste_bin_out
|
||||
- unique_id: council_food_waste_bin_out
|
||||
name: "Food Waste Bin Out"
|
||||
state_topic: "viewroad-status/rubbishbinstatus/foodbin-out"
|
||||
state_topic: "viewroad-status/rubbishbinstatus/foodbin-out"
|
||||
Reference in New Issue
Block a user