From 94bc52a2f3759e2d3bde6587678ca14efc0edd11 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Tue, 14 Apr 2026 12:26:49 -0400 Subject: [PATCH] Refine climate targets and docker outage monitoring --- config/packages/README.md | 4 ++-- config/packages/climate.yaml | 26 +++++++++++++++++----- config/packages/docker_infrastructure.yaml | 5 +++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/config/packages/README.md b/config/packages/README.md index e1ec73a3..836161ed 100755 --- a/config/packages/README.md +++ b/config/packages/README.md @@ -45,7 +45,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this | [lightning.yaml](lightning.yaml) | Blitzortung lightning counter monitoring with snoozeable push actions. | `sensor.blitzortung_lightning_counter`, `input_boolean.snooze_lightning`, notify engine actions | | [logbook_activity_feed.yaml](logbook_activity_feed.yaml) | Dummy `sensor.activity_feed` + helper to write clean Activity entries (Issue #1550). | `sensor.activity_feed`, `script.send_to_logbook` | | [mariadb_monitoring.yaml](mariadb_monitoring.yaml) | MariaDB health sensors and Lovelace dashboard snippet for recorder stats. | `sensor.mariadb_status`, `sensor.database_size` | -| [docker_infrastructure.yaml](docker_infrastructure.yaml) | Docker host patching telemetry + container/stack Repairs automation, 20-minute Joanna escalation for persistent container outages, and weekly scheduled prune actions across docker_10/14/17/69. | `sensor.docker_*_apt_status`, `binary_sensor.*_stack_status`, `sensor.docker_stacks_down_count`, `repairs.create`, `script.joanna_dispatch` | +| [docker_infrastructure.yaml](docker_infrastructure.yaml) | Docker host patching telemetry + container/stack Repairs automation, 20-minute Joanna escalation for persistent container outages using stable configured monitor membership, and weekly scheduled prune actions across docker_10/14/17/69. | `sensor.docker_*_apt_status`, `binary_sensor.*_stack_status`, `sensor.docker_stacks_down_count`, `repairs.create`, `script.joanna_dispatch` | | [github_watched_repo_scout.yaml](github_watched_repo_scout.yaml) | Nightly Joanna dispatch that reviews unread notifications from watched GitHub repos, recommends HA-config ideas, refreshes strong-candidate issues, and marks processed watched-repo notifications read. | `automation.github_watched_repo_scout_nightly`, `script.joanna_dispatch`, `script.send_to_logbook` | | [proxmox.yaml](proxmox.yaml) | Proxmox runtime and disk pressure monitoring with Repairs for node degradations plus nightly Frigate reboot. | `binary_sensor.proxmox*_runtime_healthy`, `sensor.proxmox*_disk_used_percentage`, `repairs.create`, `button.qemu_docker2_101_reboot` | | [infrastructure_observability.yaml](infrastructure_observability.yaml) | Normalized WAN/DNS/backup/domain/cert health + website uptime/latency SLO signals for Infrastructure dashboards. | `binary_sensor.infra_website_uptime_slo_breach`, `binary_sensor.infra_website_latency_degraded`, `binary_sensor.infra_*` | @@ -73,7 +73,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this ### Nest climate control - Logic lives in [climate.yaml](climate.yaml) and centralizes downstairs/upstairs Nest schedules, grid-aware guardrails, humidity pulses, and presence/weather-based targets. -- Shared script keeps targets consistent: away → eco, home + >92°F → 78°F, home default → 80°F. Grid-down conditions pause non-essential cool-downs. +- Shared script keeps daytime targets consistent: away → eco, home + >92°F → 78°F, home default → 80°F. Downstairs bedtime cooling now stays dynamic: outside >80°F → 77°F, 76-79°F → 79°F, below 76°F → leave the current target alone. Grid-down conditions pause non-essential cool-downs. ![Nest Climate Control](../www/custom_ui/floorplan/images/branding/Nest_Climate_Control.png) ### Dreame vacuum automations diff --git a/config/packages/climate.yaml b/config/packages/climate.yaml index ca370123..48a0d566 100644 --- a/config/packages/climate.yaml +++ b/config/packages/climate.yaml @@ -341,7 +341,7 @@ automation: topic: "CLIMATE" message: "Upstairs target temp corrected to 78F (guardrail)." - - alias: Set Downstairs to 77 When Both in Bed + - alias: Set Downstairs Bedtime Target When Both in Bed id: set_downstairs_nest_77_both_in_bed trigger: - platform: state @@ -363,10 +363,26 @@ automation: entity_id: sun.sun state: 'below_horizon' action: - - service: climate.set_temperature - data: - entity_id: climate.downstairs - temperature: 77 + - choose: + - conditions: + - condition: numeric_state + entity_id: sensor.pirateweather_temperature + above: 80 + sequence: + - service: climate.set_temperature + data: + entity_id: climate.downstairs + temperature: 77 + - conditions: + - condition: numeric_state + entity_id: sensor.pirateweather_temperature + above: 75 + below: 80 + sequence: + - service: climate.set_temperature + data: + entity_id: climate.downstairs + temperature: 79 - alias: 'Set Downstairs Thermostat Daytime Target' id: set_downstairs_thermostat_daytime_target diff --git a/config/packages/docker_infrastructure.yaml b/config/packages/docker_infrastructure.yaml index b86abd8a..2a2f44a4 100644 --- a/config/packages/docker_infrastructure.yaml +++ b/config/packages/docker_infrastructure.yaml @@ -13,6 +13,7 @@ # Notes: Container monitoring is dynamic with binary_sensor status preferred over switch state. # Notes: Weekly Joanna reconcile checks discovered container switches vs configured group members. # Notes: Includes Portainer stack status repairs, 20-minute Joanna dispatch for persistent container outages, and scheduled image prune. +# Notes: Outage escalation keys off the configured monitored group so host-wide telemetry drops do not fall out of scope before the delayed Joanna dispatch runs. ###################################################################### input_datetime: @@ -616,7 +617,7 @@ script: status_entity_alt: "binary_sensor.{{ container_key }}_status_2" state_entity: "sensor.{{ container_key }}_state" state_entity_alt: "sensor.{{ container_key }}_state_2" - monitored_switches: "{{ state_attr('sensor.docker_monitored_switch_inventory', 'entity_id') | default([], true) }}" + monitored_switches: "{{ state_attr('switch.docker_monitored_containers', 'entity_id') | default([], true) }}" tracked_container: "{{ switch_entity in monitored_switches or switch_entity_alt in monitored_switches }}" effective_entity: >- {% if expand(status_entity) | count > 0 %} @@ -983,7 +984,7 @@ automation: entity_id: "{{ trigger.event.data.entity_id | default('') }}" old_state: "{{ (trigger.event.data.old_state.state if trigger.event.data.old_state is not none else '') | lower }}" new_state: "{{ (trigger.event.data.new_state.state if trigger.event.data.new_state is not none else '') | lower }}" - monitored_switches: "{{ state_attr('sensor.docker_monitored_switch_inventory', 'entity_id') | default([], true) | list }}" + monitored_switches: "{{ state_attr('switch.docker_monitored_containers', 'entity_id') | default([], true) | list }}" is_monitored_container_event: >- {% set ent = entity_id %} {% if ent.startswith('switch.') and (ent.endswith('_container') or ent.endswith('_container_2')) %}