various tidyups
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
##########################################################################################
|
||||
|
||||
##########################################################################################
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
###########################################################################
|
||||
|
||||
@@ -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) }}
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user