various tidyups

This commit is contained in:
zorruno
2026-07-21 13:40:06 +12:00
parent 66bee0ccf7
commit 4e2107f7f7
31 changed files with 3120 additions and 502 deletions
+44 -1
View File
@@ -4,17 +4,60 @@
# PACKAGE: 16A EV Charger Control
###############################################################################
#
# FILE:
# packages/16a_ev_charging_controls.yaml
#
# VERSION:
# V1.2 2026-07-20
# - Added structured mode, timing, and restart behavior documentation.
#
# V1.1 2026-05-15
# - Reworked 1hr topup logic to use a hard deadline and watchdog.
# - Removed dependency on timer.finished event for relay shutoff.
# - Offpeak until charged now continues past offpeak end until charging stops.
# - 1hr topup now now rolls into Normal Offpeak if the hour ends during
# - 1hr topup now rolls into Normal Offpeak if the hour ends during
# the offpeak window, without switching the relay off and back on.
#
# V1.0 2026-05-11
# - Initial package for 16A EV charger offpeak and charge-until-full control.
#
# PURPOSE:
# Controls the Leaf 16A charger relay using scheduled offpeak operation and
# user-selectable immediate or charge-until-full modes.
#
# DEPENDENCIES:
# - switch.garage_db_control_16a_wallcharger_operation controls charger power.
# - binary_sensor.garage_db_control_16a_wallcharger_charging reports whether
# the vehicle is actively charging.
#
# CHARGE MODES:
# - Normal (Offpeak) turns the relay on and off at the configured offpeak
# start and end times. Selecting this mode takes no immediate action.
# - Offpeak until charged starts at the offpeak time, or immediately if
# selected during offpeak, and may continue beyond offpeak end until the
# vehicle stops charging.
# - 1hr topup now turns the relay on immediately and records a hard deadline
# one hour ahead.
# - Charge now until full turns the relay on immediately and keeps it on until
# the vehicle stops charging.
# - Stop charging now turns the relay off immediately and returns the selector
# to Normal (Offpeak).
#
# TIMING AND COMPLETION:
# - Charge-until-full modes allow five minutes for charging to start. This
# also handles a vehicle that is already full.
# - Charging is considered complete after the charging sensor remains off for
# five minutes.
# - The one-hour topup deadline is stored in input_datetime and checked every
# minute and when Home Assistant starts.
# - If a topup ends during offpeak, the relay remains on and the mode returns
# to Normal (Offpeak), avoiding an off/on relay cycle.
# - Equal offpeak start and end times are interpreted as an all-day window.
#
# OPERATION NOTES:
# - Normal offpeak start and end use exact-time triggers.
# - There is no startup catch-up if Home Assistant is offline at either time.
#
# PACKAGE SETTINGS:
# Car display name:
# - Leaf
@@ -6,12 +6,16 @@
# Pool Light Operation
#
# FILE:
# packages/pool_light_boost_switch.yaml
# packages/Pool_Controls/pool_light_operation.yaml
#
# VERSION:
# V1.1 2026-06-29
# V1.2 2026-07-20
#
# VERSION HISTORY:
# V1.2 2026-07-20
# - Corrected the documented package filename.
# - Documented the relationship with the native ESPHome controls.
#
# V1.1 2026-06-29
# - Tidied layout, comments, naming and automation IDs.
# - Added structured package header and section comments.
@@ -38,8 +42,15 @@
# Operation topic:
# viewroad-commands/poollight-timer/operation
#
# DEPENDENCIES:
# - switch.esp_poollightpower2_switch provides the real output state.
# - The ESPHome pool light device subscribes to the MQTT operation topic.
# - Native ESPHome mode, boost, and pool-light-mode entities coexist with
# this one-tap control.
#
# NOTES:
# The input_boolean.timer_light_midnight_pending helper is internal to this package.
# Dashboard cards currently use input_boolean.poollights_mode_switch.
#
#:########################################################################################:#
@@ -1,10 +1,68 @@
# packages/poolpump_operation.yaml
#:########################################################################################:#
# Pool Pump Operation Package #
#:########################################################################################:#
#
# TITLE:
# Pool Pump Operation
#
# FILE:
# packages/Pool_Controls/pool_pump_operation.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured package documentation and section comments.
# - Documented the relationship with the native ESPHome controls.
#
# V1.0
# - Initial package.
# - Provides a Home Assistant UI switch for pool pump BOOST / OFF behaviour.
# - Sends TIMER mode again at midnight when required.
#
# PURPOSE:
# Provides a one-tap Home Assistant UI switch for controlling the pool pump.
#
# Behaviour:
# - Turning the UI switch ON sends BOOST if the real pump output is OFF.
# - Turning the UI switch OFF sends OFF if the real pump output is ON.
# - After OFF is requested, TIMER mode is restored at midnight.
# - The UI switch follows the real ESPHome output without publishing MQTT.
#
# MQTT:
# Operation topic:
# viewroad-commands/poolpump-timer/operation
#
# Payloads used by this package:
# BOOST
# OFF
# TIMER
#
# DEPENDENCIES:
# - switch.esp_poolpumppower_power_output provides the real output state.
# - The ESPHome pool pump device subscribes to the MQTT operation topic.
# - Native ESPHome mode and boost entities coexist with this one-tap control.
#
# NOTES:
# - input_boolean.timer_midnight_pending is internal to this package.
# - Dashboard cards currently use input_boolean.poolpump_mode_switch.
#
#:########################################################################################:#
#:########################################################################################:#
# Home Assistant Customisation #
#:########################################################################################:#
homeassistant:
customize:
input_boolean.poolpump_mode_switch:
icon: mdi:pump
#:########################################################################################:#
# Input Booleans #
#:########################################################################################:#
input_boolean:
poolpump_mode_switch:
name: "Pool Pump Operation"
@@ -14,6 +72,10 @@ input_boolean:
name: "Send TIMER at Midnight"
initial: false
#:########################################################################################:#
# Automations #
#:########################################################################################:#
automation:
- alias: "Pool Pump → send BOOST when user turns UI switch ON"
trigger:
@@ -6,12 +6,16 @@
# Pool Timer Selection
#
# FILE:
# pool_timer_selection.yaml
# packages/Pool_Controls/pool_timers_selections.yaml
#
# VERSION:
# V1.0 2026-06-29
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Corrected the documented package filename.
# - Documented command selectors versus ESPHome timer feedback.
#
# V1.0 2026-06-29
# - Initial package.
# - Adds Home Assistant input_select helpers for Pool Pump and Pool Light timer times.
@@ -36,6 +40,16 @@
#
# Payload format is HH:MM.
#
# STATUS AND FEEDBACK:
# - These input_select helpers send retained MQTT commands to ESPHome.
# - They do not synchronize their displayed options from the ESPHome devices.
# - The ESPHome Timeclock sensors are authoritative for the currently applied
# timer values.
# - A selector displaying "Default" does not prove that the device currently
# uses its default time.
# - Native ESPHome mode controls coexist with this package, while timer
# schedule changes continue to use the MQTT topics above.
#
# IMPORTANT:
# The current ESPHome timer logic only handles same-day timer windows:
# current_mins >= on_time AND current_mins < off_time
+49
View File
@@ -1,5 +1,52 @@
#:########################################################################################:#
# Alexa TP-Link Guest Wi-Fi Package #
#:########################################################################################:#
#
# TITLE:
# Alexa TP-Link Guest Wi-Fi
#
# FILE:
# packages/alexa_tplink_actions.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation and automation descriptions.
#
# V1.0
# - Initial Alexa-mediated TP-Link guest-network controls.
#
# PURPOSE:
# Enables or disables the TP-Link guest Wi-Fi network by sending custom Alexa
# requests through the kitchen Echo Show.
#
# DEPENDENCIES:
# - input_boolean.wifi_guest_network is a UI-managed helper that represents
# the requested guest-network state.
# - media_player.view_rd_kitchen_echo_show must be available through the Alexa
# Media Player integration.
# - The Alexa account must have a working, linked TP-Link skill.
#
# ALEXA REQUESTS:
# - On: ask t.p.link to enable guest network
# - Off: ask t.p.link to disable guest network
#
# OPERATION NOTES:
# - The helper records requested state; it does not confirm router state.
# - If Alexa or the TP-Link skill fails, the helper can disagree with the
# actual guest-network state.
# - After the helper remains on for two hours, it is turned off. That state
# change then sends the Alexa disable request.
# - The two-hour state-trigger period does not persist through a Home Assistant
# restart or automation reload.
#
#:########################################################################################:#
automation:
- alias: "Turn on the Wifi Guest Network"
description: "Asks the linked TP-Link Alexa skill to enable the guest Wi-Fi network."
mode: single
triggers:
- trigger: state
@@ -14,6 +61,7 @@ automation:
media_content_id: ask t.p.link to enable guest network
- alias: "Turn off the Wifi Guest Network"
description: "Asks the linked TP-Link Alexa skill to disable the guest Wi-Fi network."
mode: single
triggers:
- trigger: state
@@ -28,6 +76,7 @@ automation:
media_content_id: ask t.p.link to disable guest network
- alias: "Switch guest network off after time"
description: "Turns off the guest-network helper after it remains on for two hours."
mode: single
triggers:
- trigger: state
+11 -6
View File
@@ -1,8 +1,8 @@
###############################################################################
# Bedroom 1 Ikea Air Filter Package
# File: /config/packages/bedroom_1_ikea_air_filter.yaml
# Version: 1.1
# Date: 2026-05-08
# Version: 1.2
# Date: 2026-07-20
#
# Purpose:
# - Creates a dropdown helper called "Bedroom 1 Ikea Fan".
@@ -11,7 +11,7 @@
#
# Behaviour notes:
# - Quiet time turning on sets fan speed to 2.
# - Bedside lamp turning on sets fan speed to 2.
# - Bedside lamp or Jump Fade control turning on sets fan speed to 2.
# - Bedside lamp turning off does not change the fan speed.
# - There is no 10-minute re-check, so the fan will not ramp back up just
# because the bedside lamp was switched off.
@@ -80,12 +80,16 @@ automation:
entity_id: input_boolean.quiet_time
to: "on"
# Bedside lamp only forces low when it turns on.
# Turning the lamp off does not change the fan speed.
# The lamp state catches direct light control.
- trigger: state
entity_id: light.master_bedroom_bedside_lamp_arlec_bulb_master_bedroom_bedside_lamp_arlec_bulb
to: "on"
# The Jump Fade switch catches a bedside press while the lamp is already on.
- trigger: state
entity_id: switch.master_bedroom_bedside_lamp_arlec_bulb_master_bedroom_bedside_lamp_arlec_bulb_jump_fade_up_down
to: "on"
# Main timing boundaries.
- trigger: time
at:
@@ -104,9 +108,10 @@ automation:
- variables:
trigger_entity: "{{ trigger.entity_id | default('') }}"
bedside_lamp_entity: light.master_bedroom_bedside_lamp_arlec_bulb_master_bedroom_bedside_lamp_arlec_bulb
bedside_lamp_switch_entity: switch.master_bedroom_bedside_lamp_arlec_bulb_master_bedroom_bedside_lamp_arlec_bulb_jump_fade_up_down
bedside_lamp_on_trigger: >-
{{
trigger_entity == bedside_lamp_entity
trigger_entity in [bedside_lamp_entity, bedside_lamp_switch_entity]
and trigger.to_state is defined
and trigger.to_state.state == 'on'
}}
@@ -1,9 +1,9 @@
################################################################################
# PACKAGE: Downstairs Lights Bulk Activation
# FILE: packages/downstairs_lights_bulk_activation.yaml
# FILE: packages/downstairs_bulk_lights_on_from_stairs.yaml
#
# Version: 1.0
# Date: 2026-04-26
# Version: 1.1
# Date: 2026-07-20
#
# Notes:
# - Uses the virtual switch:
@@ -16,16 +16,16 @@
# Turns OFF the listed downstairs lights, but only if each light is currently ON.
#
# - No action is taken unless:
# input_boolean.downstairs_flat_occupied is ON.
# input_boolean.downstairs_flat_occupied is OFF.
################################################################################
automation:
- id: downstairs_lights_bulk_activation
alias: "Downstairs Lights Bulk Activation"
description: >
V1.0 - 2026-04-26: Bulk ON/OFF control for downstairs lights from the
V1.1 - 2026-07-20: Bulk ON/OFF control for downstairs lights from the
central stair lightswitch virtual switch. Only operates when the downstairs
flat occupied input_boolean is ON.
flat is not occupied.
mode: single
+47
View File
@@ -1,3 +1,50 @@
#:########################################################################################:#
# Firewall Internet Control Package #
#:########################################################################################:#
#
# TITLE:
# Firewall Internet Control
#
# FILE:
# packages/firewall_control.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured MQTT and external-firewall documentation.
#
# V1.0
# - Initial persistent and temporary internet-blocking controls.
#
# PURPOSE:
# Provides Home Assistant controls for persistent and temporary internet
# blocking of Mollie's devices through an external MQTT firewall service.
#
# PERSISTENT CONTROL:
# - Blocked enables persistent internet blocking.
# - Unblocked disables persistent internet blocking.
# - The switch state is reported by the external firewall service.
#
# TEMPORARY CONTROLS:
# - One-hour block publishes Blocked to the temporary-block topic.
# - 15-minute unblock publishes Unblocked to the temporary-unblock topic.
# - One-hour unblock publishes Unblocked to its one-hour topic.
#
# EXTERNAL DEPENDENCY:
# - Home Assistant only publishes command requests.
# - The external firewall service implements temporary durations, restores the
# appropriate state afterward, and publishes persistent switch feedback.
#
# MQTT NOTES:
# - All commands are non-retained.
# - No availability topic is configured for these entities.
# - The persistent status topic retains the legacy device label
# block-unblock-mollie-iphone8.
#
#:########################################################################################:#
mqtt:
switch:
- unique_id: mollies.internet
+47 -4
View File
@@ -1,11 +1,54 @@
#:########################################################################################:#
# Home Assistant Summary Package - V2 #
# Home Assistant Summary Package - V2 #
#:########################################################################################:#
#
# Uses V2 entity IDs to avoid stale/ghost entities from earlier versions.
# TITLE:
# Home Assistant Summary V2
#
# Dashboard entity prefix:
# sensor.ha_summary_v2_...
# FILE:
# packages/ha_summary.yaml
#
# VERSION:
# V2.1 2026-07-20
#
# VERSION HISTORY:
# V2.1 2026-07-20
# - Added structured documentation for refresh behavior and counting rules.
# - Documented heuristic classifications and their limitations.
#
# V2.0
# - Introduced V2 entity IDs to avoid stale entities from earlier versions.
#
# PURPOSE:
# Provides dashboard summary sensors for Home Assistant entities, devices,
# areas, cameras, scenes, scripts, automations, add-ons, and updates.
#
# It also provides device and entity counts for ESPHome, Tasmota, ZHA,
# Zigbee2MQTT, Matter, and selected cloud integrations.
#
# OUTPUTS:
# Dashboard entity prefix:
# sensor.ha_summary_v2_...
#
# REFRESH:
# Sensors refresh when Home Assistant starts, when the entity, device, or area
# registries change, when core configuration changes, and every five minutes.
#
# COUNTING NOTES:
# - Total devices counts distinct device IDs associated with current entities.
# Devices without entities are not included.
# - Broken entities are entities whose state is unknown or unavailable.
# - Add-ons are inferred from Supervisor update entities, excluding the Core,
# Supervisor, and Operating System update entities.
# - Zigbee2MQTT devices and entities are identified by searching MQTT device
# metadata for "zigbee2mqtt".
# - Matter Wi-Fi and Thread classifications search device metadata for known
# transport terms. These are heuristics rather than authoritative transport
# data, and a device can match both categories.
# - Matter unclassified counts subtract Wi-Fi and Thread counts from totals, so
# overlapping classifications can affect the result.
# - Cloud counts use the explicit integration list in the final two sensors.
# Add or remove integration domains there when maintaining cloud coverage.
#
template:
@@ -1,5 +1,57 @@
##########################################################################################
# heat_pump_master_bedroom_schedules.yaml
# Master Bedroom Heat Pump Schedules
##########################################################################################
#
# TITLE:
# Master Bedroom Heat Pump Schedules
#
# FILE:
# packages/heat_pump_master_bedroom_schedules.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation for schedules, boost, and helper behavior.
#
# V1.0
# - Initial master bedroom heat pump schedules and boost controls.
#
# PURPOSE:
# Provides optional 21:00 start and midnight stop schedules, a combined Night
# Power mode, and a manual one-hour boost for the master bedroom heat pump.
#
# DEPENDENCIES:
# - climate.master_bedroom provides the Panasonic Comfort Cloud heat pump.
# - The climate entity must support the "boost" and "none" preset modes.
# - packages/heat_pump_master_bedroom_helpers.yaml provides companion
# dashboard, setpoint, HVAC mode, profile, and sleep-timer controls.
#
# SCHEDULE MODES:
# - Night Power Mode turns the heat pump on at 21:00, applies boost for 30
# minutes, returns it to the normal preset, and turns it off at midnight.
# - 9pm On turns the heat pump on at 21:00 without changing its preset.
# - Midnight Off turns the heat pump off at midnight.
# - Enabling Night Power disables the separate 9pm On and Midnight Off modes.
# - Enabling either separate mode disables Night Power. The separate 9pm On
# and Midnight Off modes may be enabled together.
#
# MANUAL BOOST:
# - script.master_bedroom_boost_1hr applies boost for one hour.
# - If the heat pump was off when boost started, it is turned off afterward.
# - If it was already running, boost ends by restoring the normal preset and
# leaving the heat pump running.
#
# INTERNAL STATE:
# - input_boolean.master_bedroom_boost_restore_off records whether manual
# boost should restore the heat pump to off.
# - timer.master_bedroom_boost_timer controls manual and scheduled boost time.
#
# OPERATION NOTES:
# - The 21:00 and midnight schedules use exact-time triggers.
# - There is no startup catch-up if Home Assistant is offline at either time.
#
##########################################################################################
##########################################################################################
+7 -7
View File
@@ -126,7 +126,7 @@ script:
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "on"
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "on" # non dimmable pair
light.esp_breakfastbarleds_breakfast_bar_leds: 90
light.esp_loungecabinetleds2_lounge_cabinet_leds: 90
light.esp_loungecabinetleds_lounge_cabinet_leds: 90
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 90
switch.lounge_cupboard_dual_usb_xus09_l2: "on"
switch.esp_loungesouthleftswitch_relay_1_wall_washer_left: "on"
@@ -146,7 +146,7 @@ script:
light.esp_lounge6chdimmer_lounge_downlights_south: 60
light.esp_lounge6chdimmer_lounge_rafter_buttons: 40
light.esp_breakfastbarleds_breakfast_bar_leds: 60
light.esp_loungecabinetleds2_lounge_cabinet_leds: 60
light.esp_loungecabinetleds_lounge_cabinet_leds: 60
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 60
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "off" # non-dimmable pair
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "off" # non dimmable pair
@@ -167,7 +167,7 @@ script:
light.esp_lounge6chdimmer_lounge_downlights_south: 40
light.esp_lounge6chdimmer_lounge_rafter_buttons: 30
light.esp_breakfastbarleds_breakfast_bar_leds: 50
light.esp_loungecabinetleds2_lounge_cabinet_leds: 50
light.esp_loungecabinetleds_lounge_cabinet_leds: 50
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 50
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "off" # non-dimmable pair
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "off" # non dimmable pair
@@ -188,7 +188,7 @@ script:
light.esp_lounge6chdimmer_lounge_downlights_south: 30
light.esp_lounge6chdimmer_lounge_rafter_buttons: 0
light.esp_breakfastbarleds_breakfast_bar_leds: 40
light.esp_loungecabinetleds2_lounge_cabinet_leds: 40
light.esp_loungecabinetleds_lounge_cabinet_leds: 40
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 40
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "off"
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "off" # non dimmable pair
@@ -228,7 +228,7 @@ script:
light.esp_lounge6chdimmer_lounge_downlights_south: 0
light.esp_lounge6chdimmer_lounge_rafter_buttons: 0
light.esp_breakfastbarleds_breakfast_bar_leds: 5
light.esp_loungecabinetleds2_lounge_cabinet_leds: 5
light.esp_loungecabinetleds_lounge_cabinet_leds: 5
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 5
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "off"
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "off" # non dimmable pair
@@ -246,7 +246,7 @@ script:
light.esp_lounge6chdimmer_couch_spots_right: 20
light.esp_lounge6chdimmer_lounge_rafter_buttons: 15
light.esp_breakfastbarleds_breakfast_bar_leds: 25
light.esp_loungecabinetleds2_lounge_cabinet_leds: 30
light.esp_loungecabinetleds_lounge_cabinet_leds: 30
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 30
#light.tasmo_h801_loungeled1_6180_a: 25
#light.tasmo_h801_loungeled1_6180_b: 25
@@ -270,7 +270,7 @@ script:
#switch.esp_loungemiddleswitch_relay_3_downlights_north: "off"
switch.lounge_nspanel_touchscreen_lounge_stair_downlights: "off" # non dimmable pair
light.esp_breakfastbarleds_breakfast_bar_leds: 0
light.esp_loungecabinetleds2_lounge_cabinet_leds: 0
light.esp_loungecabinetleds_lounge_cabinet_leds: 0
light.esp_loungebookshelfleds_lounge_bookshelf_leds: 0
switch.lounge_cupboard_dual_usb_xus09_l2: "off"
switch.esp_loungesouthleftswitch_relay_1_wall_washer_left: "off"
+41 -4
View File
@@ -1,3 +1,40 @@
#:########################################################################################:#
# Low Battery Device Summary Package #
#:########################################################################################:#
#
# TITLE:
# Low Battery Device Summary
#
# FILE:
# packages/low_battery_device_quantity.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Changed the low-battery threshold from 97% to 20%.
# - Added structured documentation for scope, exclusions, and outputs.
#
# V1.0
# - Initial low-battery count and list sensors.
#
# 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.
#
# 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.
#
# 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.
#
#:########################################################################################:#
template:
- sensor:
- name: "Devices with low battery"
@@ -9,7 +46,7 @@ template:
{% 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 %}
{% if st | int(-1) != -1 and (st | int(0)) <= 20 %}
{% set ns.c = ns.c + 1 %}
{% endif %}
{% endif %}
@@ -37,7 +74,7 @@ template:
{% 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 %}
{% if st | int(-1) != -1 and (st | int(0)) <= 20 %}
{% set ns.names = ns.names + [s.name ~ ' (' ~ (st | int(0)) ~ '%)'] %}
{% endif %}
{% endif %}
@@ -56,7 +93,7 @@ template:
{% 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 %}
{% if st | int(-1) != -1 and (st | int(0)) <= 20 %}
{% set ns.e = ns.e + [s.entity_id] %}
{% endif %}
{% endif %}
@@ -69,7 +106,7 @@ template:
{% 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 %}
{% if st | int(-1) != -1 and (st | int(0)) <= 20 %}
{% set ns.n = ns.n + [s.name] %}
{% endif %}
{% endif %}
@@ -0,0 +1,78 @@
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 }}
+47 -1
View File
@@ -1,7 +1,52 @@
#:########################################################################################:#
# Main Sony TV Automations Package #
#:########################################################################################:#
#
# TITLE:
# Main Sony TV Automations
#
# FILE:
# packages/main_sony_tv_automations.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation and automation descriptions.
#
# V1.0
# - Initial MQTT TV-off and surround-amplifier following automations.
#
# PURPOSE:
# Accepts an MQTT command to turn off the lounge TV and keeps the loft
# surround-amplifier power synchronized with the TV remote state.
#
# MQTT COMMAND:
# Topic:
# viewroad-commands/maintv/action
#
# Payload:
# OFF
#
# The payload is uppercase and this package does not provide an MQTT ON action.
#
# AMPLIFIER FOLLOWING:
# - remote.lounge_tv is the source-of-truth state for the amplifier.
# - The remote state must remain on or off for five seconds before action.
# - Restart mode cancels the previous wait when another state change occurs,
# preventing brief transitions from toggling amplifier power.
#
# DEPENDENCIES:
# - remote.lounge_tv controls and reports the Sony lounge TV state.
# - switch.tv_surround_amp_power_in_loft_x27pp controls amplifier power.
#
#:########################################################################################:#
automation:
- id: "1669966515993"
alias: Turn off Lounge TV
description: ""
description: "Turns off the lounge TV when the MQTT OFF command is received."
trigger:
- platform: mqtt
topic: viewroad-commands/maintv/action
@@ -16,6 +61,7 @@ automation:
- id: tv_amp_follow_remote_state
alias: Lounge surround amp follows TV remote (5s debounce)
description: "Follows the stable lounge TV remote state after a five-second debounce."
mode: restart
trigger:
- platform: state
+69 -1
View File
@@ -1,4 +1,72 @@
# === Add friendly names, icons, and area for printer controls ===
#:########################################################################################:#
# 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:
+56 -3
View File
@@ -1,3 +1,49 @@
#:########################################################################################:#
# Office Media Buttons Package #
#:########################################################################################:#
#
# TITLE:
# Office Media Buttons
#
# FILE:
# packages/office_media_buttons.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation and automation descriptions.
# - Identified the active ZHA implementation and disabled alternatives.
#
# V1.0
# - Initial office media-button automations.
#
# PURPOSE:
# Controls office TV playback from a Zigbee media button using direct ZHA
# click events.
#
# ACTIVE BUTTON MAPPING:
# - Single press pauses playback.
# - Double press starts or resumes playback.
# - Triple press seeks backward by 30 seconds.
#
# DEPENDENCIES:
# - ZHA event source: device IEEE 00:15:8d:00:06:79:46:c8.
# - media_player.office_tv provides the current playback position.
# - The media actions target the office TV device registered in Home Assistant.
#
# NOTES:
# - seek_amount is not normally provided by the event and defaults to -30.
# - Commented MQTT and entity-state implementations below are disabled
# historical alternatives retained for reference.
#
#:########################################################################################:#
#:########################################################################################:#
# Historical Disabled MQTT Sensor #
#:########################################################################################:#
#mqtt:
# sensor:
# - unique_id: office_media_button_1
@@ -6,10 +52,14 @@
# unit_of_measurement: "Press"
# value_template: "{{ value_json.ZbReceived.Office_Media_Button.Power }}"
#:########################################################################################:#
# Active ZHA Automations #
#:########################################################################################:#
automation:
- id: pause_office_tv_on_media_button
alias: Pause Office TV on Media Button
description: ""
description: "Pauses the office TV when the media button is pressed once."
trigger:
- platform: event
event_type: zha_event
@@ -26,7 +76,7 @@ automation:
mode: single
- id: play_office_tv_on_media_button
alias: Play Office TV on Media Button
description: ""
description: "Starts or resumes office TV playback when the media button is pressed twice."
trigger:
- platform: event
event_type: zha_event
@@ -43,7 +93,7 @@ automation:
mode: single
- id: seek_office_tv_on_media_button
alias: Seek Office TV on Media Button
description: ""
description: "Seeks office TV playback backward 30 seconds when the media button is pressed three times."
trigger:
- platform: event
event_type: zha_event
@@ -62,6 +112,8 @@ automation:
target:
device_id: abb6b5a6b4e4925dcb3a77ea2c293eaa
mode: single
# Historical disabled MQTT and entity-state alternatives.
# - id: "1629271273958"
# alias: Pause office TV on MQTT
# description: ""
@@ -90,6 +142,7 @@ automation:
# seek_position: 30
# mode: single
# Historical disabled entity-state automation block.
#automation:
# - id: "1629271273952"
# unique_id: pause_office_tv_on_media_button
+5 -2
View File
@@ -3,6 +3,9 @@
###############################################################################
#
# Version:
# 2026-07-20 v0.3
# - Synchronized the documented Number 16 schedule with the implementation.
#
# 2026-05-09 v0.2
# - Refactored scheduled control to use editable schedule lists.
# - Switched lights now use explicit ON/OFF schedule entries instead of
@@ -527,8 +530,8 @@ script:
# EDIT SCHEDULE HERE
# Format: trigger, offset_minutes/at, target_brightness, ramp_minutes
# Current schedule:
# - sunset -30, 80, 30
# - 20:00, 50, 30
# - sunset -30, 60, 30
# - 20:00, 50, 120
# - 01:00, 20, 120
# - 06:00, 0, 120
###########################################################################
+34
View File
@@ -24,3 +24,37 @@ mqtt:
name: "Hours Since DePooped"
state_topic: "viewroad-tele/petfeeding/hoursSinceDePooped"
unit_of_measurement: "Hours"
template:
- sensor:
- name: "Jobs Tracker Hours Since Dog Fed"
unique_id: "jobs_tracker_hours_since_dog_fed"
device_class: duration
state_class: measurement
unit_of_measurement: "h"
icon: "mdi:dog-side"
availability: >-
{{
state_attr('sensor.jobs_tracker_dog_feeding_morning', 'hours_since_completed') is not none
or state_attr('sensor.jobs_tracker_dog_feeding_evening', 'hours_since_completed') is not none
}}
state: >-
{{
[
state_attr('sensor.jobs_tracker_dog_feeding_morning', 'hours_since_completed') | float(999999),
state_attr('sensor.jobs_tracker_dog_feeding_evening', 'hours_since_completed') | float(999999)
]
| min
| round(0)
}}
- name: "Jobs Tracker Hours Since Dog Depooped"
unique_id: "jobs_tracker_hours_since_dog_depooped"
device_class: duration
state_class: measurement
unit_of_measurement: "h"
icon: "mdi:emoticon-poop"
availability: >-
{{ state_attr('sensor.jobs_tracker_dog_depooping', 'hours_since_completed') is not none }}
state: >-
{{ state_attr('sensor.jobs_tracker_dog_depooping', 'hours_since_completed') | float(none) }}
+26
View File
@@ -0,0 +1,26 @@
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"
+19 -15
View File
@@ -5,7 +5,17 @@
# TITLE:
# Quiet Time
#
# VERSIONS:
# FILE:
# quiet_time.yaml
#
# VERSION:
# V1.4 2026-07-20
#
# VERSION HISTORY:
# V1.4 2026-07-20
# - Updated documentation for the standalone Quiet Time actions package.
# - Documented the current flattened MQTT status topic.
#
# V1.3 2026-06-07
# - Added quiet time start and stop entity action lists.
# - Turns the LED matrix display OFF when quiet time starts.
@@ -13,7 +23,8 @@
#
# V1.2 2026-05-21
# - Added MQTT publishing when input_boolean.quiet_time changes.
# - Publishes quiet_time state to viewroad-status/homeassistant/quiet-time.
# - Published quiet_time state to viewroad-status/homeassistant/quiet-time.
# This was the historical topic; the current topic is documented below.
#
# V1.1 2026-05-21
# - Reduced daily reset check frequency from every minute to every 30 minutes.
@@ -33,20 +44,13 @@
# will automatically be turned OFF.
# - Default reset time is 07:00.
# - The quiet_time state is published to MQTT whenever it changes.
# - When quiet_time changes, editable entity lists can turn things on or off.
# - The companion package handles local actions when quiet_time changes.
#
# QUIET TIME ACTION LISTS:
# - quiet_time_start_turn_off_entities:
# Entities to turn OFF when quiet time starts.
#
# - quiet_time_start_turn_on_entities:
# Entities to turn ON when quiet time starts.
#
# - quiet_time_stop_turn_off_entities:
# Entities to turn OFF when quiet time ends.
#
# - quiet_time_stop_turn_on_entities:
# Entities to turn ON when quiet time ends.
# COMPANION PACKAGE:
# - quiet_time_on_off_actions.yaml owns the editable entity action lists and
# other local actions that run when Quiet Time starts or ends.
# - This package owns input_boolean.quiet_time, the daily reset behaviour,
# and MQTT status publishing.
#
# MQTT STATUS:
# - Topic:
+64
View File
@@ -1,3 +1,67 @@
#:########################################################################################:#
# Raspberry Pi CCTV Monitor Package #
#:########################################################################################:#
#
# TITLE:
# Raspberry Pi CCTV Monitor
#
# FILE:
# packages/raspberry_pi_monitor.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation for MQTT, availability, and controls.
#
# V1.0
# - Initial monitoring and remote-control configuration.
#
# PURPOSE:
# Monitors the cctvquad1 and cctvquad2 Raspberry Pi hosts and provides remote
# reboot and shutdown controls through MQTT.
#
# EXTERNAL DEPENDENCY:
# - Each Raspberry Pi requires an external process that publishes telemetry
# and state, consumes command topics, and performs the requested actions.
# - This package does not install or manage that external process.
#
# MQTT STATUS:
# Topic pattern:
# viewroad-status/rpis/<host>/<field>
#
# Fields:
# cpu-temp, cpu-use, ram-use, disk-use, uptime, last-seen, ipv4-address,
# reboot, and shutdown.
#
# The last-seen payload must be a timestamp that Home Assistant can parse with
# as_timestamp().
#
# MQTT COMMANDS:
# Topic pattern:
# viewroad-commands/rpis/<host>/reboot/set
# viewroad-commands/rpis/<host>/shutdown/set
#
# Commands use the default MQTT switch ON/OFF payloads, QoS 1, and are not
# retained. The external process must publish matching switch state feedback.
#
# AVAILABILITY:
# - A host is considered available when its last-seen timestamp is valid and
# no more than 180 seconds old.
# - The template uses now(), so Home Assistant periodically re-evaluates age.
#
# GROUPS:
# - group.pi_cctvquad1_on collects Quad1 telemetry and controls.
# - group.pi_cctvquad2_on collects Quad2 telemetry and controls.
#
# SAFETY:
# - Reboot and shutdown interrupt CCTV services and host availability.
# - Shutdown may require physical access to power the host back on.
# - Dashboard controls should require confirmation before sending commands.
#
#:########################################################################################:#
mqtt:
sensor:
- unique_id: cctvquad1_cpu_temp
+58 -7
View File
@@ -1,9 +1,55 @@
##########################################################################################
# MASTER BEDROOM FAN (Tasmota / Sonoff iFan02)
# Improvements:
# - Numeric speed entity (0-3) reflecting actual device state via MQTT
# - Button to cycle speed 1,2,3,0
# - Keep input_select in sync with actual FanSpeed (incl after reboots)
# Room Fan Control
##########################################################################################
#
# TITLE:
# Room Fan Control
#
# FILE:
# packages/room_fan_control.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation for all three bedroom fans.
# - Documented the master-bedroom feedback loop and command-only controls.
#
# V1.0
# - Initial Tasmota and Sonoff iFan02 fan controls.
#
# PURPOSE:
# Controls the master-bedroom, Bedroom 2, and Bedroom 3 ceiling-fan speeds
# through Tasmota MQTT commands and Home Assistant dropdown helpers.
#
# SPEED MAPPING:
# - 0 = Off
# - 1 = Low
# - 2 = Medium
# - 3 = High
#
# MASTER BEDROOM:
# - Queries FanSpeed when Home Assistant starts.
# - Listens to Tasmota RESULT and STATE topics for device feedback.
# - Synchronizes the numeric and dropdown helpers with actual device state.
# - Uses optimistic local updates until MQTT feedback corrects the helpers.
# - Provides a button that cycles through speeds 1, 2, 3, and 0.
#
# BEDROOMS 2 AND 3:
# - Dropdown changes publish FanSpeed commands to each Tasmota device.
# - These controls are command-only and do not synchronize from feedback.
# - Their displayed dropdown state may not reflect physical or external changes.
#
# MQTT COMMAND TOPICS:
# - Master bedroom: cmnd/tasmo-ifan02-3793-bedrm1-1/FanSpeed
# - Bedroom 2: cmnd/tasmo-ifan02-7042-bedrm2/FanSpeed
# - Bedroom 3: cmnd/tasmo-ifan02-3497-bedrm3/FanSpeed
#
# DEPENDENCIES:
# - The three Tasmota devices must accept FanSpeed values from 0 through 3.
# - Master-bedroom feedback uses its RESULT and STATE MQTT topics.
#
##########################################################################################
input_select:
@@ -75,6 +121,7 @@ automation:
- id: master_bedroom_fan_query_on_ha_start
initial_state: true
alias: Master Bedroom Fan - Query FanSpeed on HA Start
description: "Requests the current master-bedroom FanSpeed when Home Assistant starts."
trigger:
- platform: homeassistant
event: start
@@ -90,6 +137,7 @@ automation:
- id: master_bedroom_fan_sync_from_mqtt
initial_state: true
alias: Master Bedroom Fan - Sync Helpers From MQTT FanSpeed
description: "Synchronizes the master-bedroom fan helpers from Tasmota MQTT feedback."
trigger:
- platform: mqtt
topic: stat/tasmo-ifan02-3793-bedrm1-1/RESULT
@@ -122,6 +170,7 @@ automation:
- id: set_the_master_bedroom_fan
initial_state: true
alias: Set the Master Bedroom Fan
description: "Publishes master-bedroom fan speed changes and updates the numeric helper optimistically."
trigger:
- platform: state
entity_id: input_select.master_bedroom_fan_set
@@ -145,11 +194,12 @@ automation:
value: "{{ desired }}"
########################################################################################
# BEDROOM 2 FAN - Unchanged
# BEDROOM 2 FAN - Command Only
########################################################################################
- id: set_bedroom_2_fan
initial_state: true
alias: Set Bedroom 2 Fan Speed
description: "Publishes Bedroom 2 fan speed dropdown changes to Tasmota."
trigger:
entity_id: input_select.bedroom_2_fan_set
platform: state
@@ -163,11 +213,12 @@ automation:
'
########################################################################################
# BEDROOM 3 FAN - Unchanged
# BEDROOM 3 FAN - Command Only
########################################################################################
- id: set_bedroom_3_fan
initial_state: true
alias: Set Bedroom 3 Fan Speed
description: "Publishes Bedroom 3 fan speed dropdown changes to Tasmota."
trigger:
entity_id: input_select.bedroom_3_fan_set
platform: state
+4 -3
View File
@@ -1,7 +1,8 @@
input_boolean:
quiet_time:
name: Quiet time for no notifications
icon: mdi:shield-moon
# Legacy duplicate retained temporarily for verification.
# quiet_time:
# name: Quiet time for no notifications
# icon: mdi:shield-moon
away_occupied_routine:
name: Automation for Lights etc when away
icon: mdi:shield-lock
+51
View File
@@ -1,3 +1,52 @@
#:########################################################################################:#
# Main Bathroom Shower Detection Package #
#:########################################################################################:#
#
# TITLE:
# Main Bathroom Shower Detection
#
# FILE:
# packages/shower_controls.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added structured documentation and automation descriptions.
# - Documented current indicator-only usage.
#
# V1.0
# - Initial humidity-rate shower detection.
#
# PURPOSE:
# Detects shower use from the main-bathroom humidity level and its rate of
# change, then maintains input_boolean.main_bathroom_shower as an indicator.
#
# DEPENDENCY:
# sensor.main_bathroom_environment_zth10_humidity_2 provides humidity in %.
#
# DERIVATIVE SENSOR:
# - Calculates humidity change in % per minute over a 15-minute time window.
# - Rounds the result to 0.1.
#
# DETECTION:
# - Humidity change must remain above 0.6 %/min for five minutes.
# - Current humidity must also be above 63%.
#
# CLEARING:
# - Humidity change must remain below 0.2 %/min for 15 minutes.
# - No absolute-humidity condition is required to clear the indicator.
# - The gap between activation and clearing thresholds provides hysteresis
# and prevents rapid toggling near one threshold.
#
# CURRENT USE:
# - The package only maintains input_boolean.main_bathroom_shower.
# - No other user-YAML automation, script, or package currently consumes it.
# - This package does not directly control a bathroom fan or other device.
#
#:########################################################################################:#
input_boolean:
main_bathroom_shower:
name: Main Bathroom Shower
@@ -14,6 +63,7 @@ sensor:
automation:
- id: main_bathroom_shower_detected
alias: Main Bathroom - Shower detected (humidity rate + min humidity)
description: "Turns on the shower indicator after a sustained humidity rise above the minimum humidity."
mode: single
trigger:
- platform: numeric_state
@@ -31,6 +81,7 @@ automation:
- id: main_bathroom_shower_cleared
alias: Main Bathroom - Shower cleared (humidity rate)
description: "Turns off the shower indicator after the humidity change rate remains low for 15 minutes."
mode: single
trigger:
- platform: numeric_state
+54 -1
View File
@@ -1,8 +1,61 @@
#:########################################################################################:#
# Auckland Council Waste Collection Package #
#:########################################################################################:#
#
# TITLE:
# Auckland Council Waste Collection
#
# FILE:
# packages/waste_collection.yaml
#
# VERSION:
# V1.1 2026-07-20
#
# VERSION HISTORY:
# V1.1 2026-07-20
# - Added source setup, schedule, MQTT, and maintenance documentation.
#
# V1.0
# - Initial Auckland 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.
#
# DEPENDENCY:
# Requires the Waste Collection Schedule custom integration and its
# aucklandcouncil_govt_nz source.
#
# AREA NUMBER SETUP:
# - Open the Auckland Council rubbish and recycling collection-day finder.
# - Select the property address.
# - Use the displayed assessment number as area_number below.
# - Source documentation:
# https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aucklandcouncil_govt_nz.md
#
# SCHEDULE SENSORS:
# - Types are rubbish, recycle, and food-waste.
# - Each sensor returns one upcoming collection with a one-day lead time.
# - details_format is upcoming and add_days_to adds relative-day text.
#
# MQTT BIN-OUT SENSORS:
# - These sensors are independent of the council collection schedules.
# - An external publisher must send status to the configured MQTT topics.
# - Payloads remain raw sensor strings such as "true"; these are not binary
# sensor entities and no boolean conversion is performed here.
#
# CURRENT STATUS:
# - 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.
#
#:########################################################################################:#
waste_collection_schedule:
sources:
- name: aucklandcouncil_govt_nz
args:
area_number: 12344403722 # see 'How to get the source argument below'
area_number: 12344403722 # Auckland Council assessment number.
sensor:
- platform: waste_collection_schedule