Compare commits

..

3 Commits

Author SHA1 Message Date
github-actions[bot]
44d8ac0da5 Update HA version badge to 2025.12.0 2025-12-04 15:36:43 +00:00
Carlo Costanzo
5acf4bd760 Merge pull request #1545 from CCOSTAN:Template-Migrations
Fix Breaking Changes for Templates
2025-12-04 10:36:23 -05:00
Carlo Costanzo
14294b5b5f Update configuration files and enhance sensor definitions based on Future Breaking CHANGES for HA.
- Updated .gitignore to include new IP change configuration file.
- Bumped Home Assistant version to 2025.12.0.
- Modified logbook.yaml to exclude specific alarm panel entities for cleaner logs.
- Refactored alexa_media_player.yaml and climate.yaml to use template sensors for better organization and clarity.
- Added new template sensors in climate.yaml for tracking AC cooling status.
- Updated glances.yaml to define a template sensor for average temperature.
- Enhanced stats.yaml with new template sensors for various counts (sensors, automations, scripts, etc.).
- Removed outdated superbowl.yaml and weather_camera.yaml.disabled configurations.
- Updated README.md to reflect the new location of IP change monitoring.
2025-12-04 10:29:19 -05:00
12 changed files with 137 additions and 291 deletions

1
.gitignore vendored
View File

@@ -29,6 +29,7 @@ home-assistant_v2
home-assistant_v2.*
.homekit.state
ipchange.yaml
config/packages/ipchange.yaml
ip_bans.yaml
production_auth.json
OZW_Log.txt

View File

@@ -1 +1 @@
2025.11.3
2025.12.0

View File

@@ -32,6 +32,8 @@ exclude:
- sensor.*_activity
- sensor.*_bssid
- sensor.*_wifi_signal_strength
- "*alarm_panel_1*"
- "*alarm_panel_2*"
entities:
- automation.cuckoo_clock
- automation.detect_lights_and_adjust_the_brightness_when_turned_on_based_on_time

View File

@@ -1,16 +1,16 @@
#-------------------------------------------
# @CCOSTAN
######################################################################
# @CCOSTAN - Follow Me on X
# For more info visit https://www.vcloudinfo.com/click-here
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Alexa Media Player - Sensors and notifications via Alexa Media integration.
#-------------------------------------------
# Track Alexa media state and expose routine/command triggers.
# -------------------------------------------------------------------
######################################################################
## Track Alexa media state and expose routine/command triggers.
######################################################################
sensor:
- platform: template
sensors:
last_alexa:
value_template: >
{{ states.media_player | selectattr('attributes.last_called','eq',True) | map(attribute='entity_id') | first | default('none') }}
#-------------------------------------------
template:
- sensor:
- name: "Last Alexa"
unique_id: last_alexa
state: >
{{ states.media_player | selectattr('attributes.last_called','eq',True) | map(attribute='entity_id') | first | default('none') }}

View File

@@ -1,12 +1,13 @@
#-------------------------------------------
# @CCOSTAN
######################################################################
# @CCOSTAN - Follow Me on X
# For more info visit https://www.vcloudinfo.com/click-here
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Climate Control - Seasonal HVAC automations and sensors.
#-------------------------------------------
# Thermostat helpers for upstairs/downstairs comfort.
# -------------------------------------------------------------------
######################################################################
## Thermostat helpers for upstairs/downstairs comfort.
######################################################################
# For more info visit https://www.vcloudinfo.com/click-here | Contact: @CCOSTAN
# Contact: @CCOSTAN | Entity reference details below
# Entity reference and attribute summaries:
#
# Entity ID: climate.downstairs
@@ -40,6 +41,28 @@
######################################################################
# ---------------------------------------------------------------------------
# Template helpers compressor status flags and numeric runtime helpers
# ---------------------------------------------------------------------------
template:
- binary_sensor:
- name: "Downstairs AC is Cooling"
unique_id: downstairs_ac_cooling
state: >
{{ state_attr('climate.downstairs', 'hvac_action') == 'cooling' }}
- name: "Upstairs AC is Cooling"
unique_id: upstairs_ac_cooling
state: >
{{ state_attr('climate.upstairs', 'hvac_action') == 'cooling' }}
sensor:
- name: "Downstairs AC Cooling Numeric"
unique_id: downstairs_ac_cooling_numeric
state: "{{ 1 if is_state('binary_sensor.downstairs_ac_cooling', 'on') else 0 }}"
- name: "Upstairs AC Cooling Numeric"
unique_id: upstairs_ac_cooling_numeric
state: "{{ 1 if is_state('binary_sensor.upstairs_ac_cooling', 'on') else 0 }}"
input_datetime:
downstairs_last_filter_change:
name: Downstairs Last Filter Change
@@ -51,30 +74,9 @@ input_datetime:
has_time: true
# ---------------------------------------------------------------------------
# Binary sensors true when the thermostat reports the compressor is running
# Integration sensors tally runtime based on compressor state
# ---------------------------------------------------------------------------
binary_sensor:
- platform: template
sensors:
downstairs_ac_cooling:
friendly_name: "Downstairs AC is Cooling"
value_template: >
{{ state_attr('climate.downstairs', 'hvac_action') == 'cooling' }}
upstairs_ac_cooling:
friendly_name: "Upstairs AC is Cooling"
value_template: >
{{ state_attr('climate.upstairs', 'hvac_action') == 'cooling' }}
sensor:
- platform: template
sensors:
downstairs_ac_cooling_numeric:
friendly_name: "Downstairs AC Cooling Numeric"
value_template: "{{ 1 if is_state('binary_sensor.downstairs_ac_cooling', 'on') else 0 }}"
upstairs_ac_cooling_numeric:
friendly_name: "Upstairs AC Cooling Numeric "
value_template: "{{ 1 if is_state('binary_sensor.upstairs_ac_cooling', 'on') else 0 }}"
- platform: integration
name: Downstairs AC Runtime Raw
source: sensor.downstairs_ac_cooling_numeric

View File

@@ -1,18 +1,21 @@
#-------------------------------------------
# @CCOSTAN
######################################################################
# @CCOSTAN - Follow Me on X
# For more info visit https://www.vcloudinfo.com/click-here
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Glances - ProxMox/server stats via Glances integration.
#-------------------------------------------
# CPU, memory, and disk sensors from Glances API.
# -------------------------------------------------------------------
######################################################################
## CPU, memory, and disk sensors from Glances API.
######################################################################
sensor:
- platform: template
sensors:
proxmox_garage_avg_temp:
friendly_name: "Proxmox Garage Average Temperature"
unit_of_measurement: "°F"
value_template: >-
template:
- sensor:
- name: "Proxmox Garage Average Temperature"
unique_id: proxmox_garage_avg_temp
device_class: temperature
state_class: measurement
unit_of_measurement: "\u00B0F"
state: >-
{{ (
(states('sensor.proxmox1_package_id_0_temperature') | float(0) +
states('sensor.proxmox1_pch_skylake_1_temperature') | float(0) +
@@ -42,7 +45,7 @@ automation:
action:
- service: script.notify_engine
data:
title: "🔥 Proxmox Garage Alert!"
value1: "The average temperature of your Proxmox servers is above 145°F!"
title: "?? Proxmox Garage Alert!"
value1: "The average temperature of your Proxmox servers is above 145\u00B0F!"
who: 'carlo'
group: 'information'

View File

@@ -1,12 +1,13 @@
#-------------------------------------------
# @CCOSTAN
######################################################################
# @CCOSTAN - Follow Me on X
# For more info visit https://www.vcloudinfo.com/click-here
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Stats - Historical metrics and AI notifications.
#-------------------------------------------
# Build historical stats for AI/alerting.
# -------------------------------------------------------------------
# Contact: @CCOSTAN
######################################################################
## Build historical stats for AI/alerting.
######################################################################
# Find me on X @CCOSTAN
### Building out some Historical stats for AI. #####################
command_line:
@@ -71,51 +72,56 @@ sensor:
days: 7
### Building some interesting stats for tweeting. ###
- platform: template
sensors:
sensor_count:
friendly_name: 'Number of Sensors'
value_template: >-
template:
- sensor:
- name: "Number of Sensors"
unique_id: stats_number_of_sensors
unit_of_measurement: "count"
icon: mdi:counter
state: >-
{{ states.sensor | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:counter
automation_count:
friendly_name: 'Number of Automations'
value_template: >-
- name: "Number of Automations"
unique_id: stats_number_of_automations
unit_of_measurement: "count"
icon: mdi:robot
state: >-
{{ states.automation | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:robot
script_count:
friendly_name: 'Number of Scripts'
value_template: >-
- name: "Number of Scripts"
unique_id: stats_number_of_scripts
unit_of_measurement: "count"
icon: mdi:script-text
state: >-
{{ states.script | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:script-text
binary_sensor_count:
friendly_name: 'Number of Binary Sensors'
value_template: >-
- name: "Number of Binary Sensors"
unique_id: stats_number_of_binary_sensors
unit_of_measurement: "count"
icon: mdi:binary-sensor
state: >-
{{ states.binary_sensor | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:binary-sensor
tracker_count:
friendly_name: 'Number of Devices'
value_template: >-
{{ states.device_tracker| list | count }}
unit_of_measurement: 'count'
icon_template: mdi:account-group
lights_count:
friendly_name: 'Number of Lights'
value_template: >
- name: "Number of Devices"
unique_id: stats_number_of_devices
unit_of_measurement: "count"
icon: mdi:account-group
state: >-
{{ states.device_tracker | list | count }}
- name: "Number of Lights"
unique_id: stats_number_of_lights
unit_of_measurement: "count"
icon: mdi:lightbulb
state: >
{{ states.light | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:lightbulb
lights_on_count:
friendly_name: "Number of lights on"
value_template: >-
- name: "Number of lights on"
unique_id: stats_number_of_lights_on
unit_of_measurement: "count"
icon: mdi:binary-sensor
state: >-
{% set lights = states.light | selectattr('state', 'eq', 'on') | list %}
{% set qty = lights | count %}
{% set p1 = 'lights are' if qty > 1 else 'light is' %}
@@ -125,11 +131,11 @@ sensor:
{% else %}
{{ qty }} {{ p1 }} on.
{% endif %}
unit_of_measurement: 'count'
icon_template: mdi:binary-sensor
protect_count:
friendly_name: 'Number of Smoke Detectors'
value_template: >
- name: "Number of Smoke Detectors"
unit_of_measurement: "count"
icon: mdi:smoke-detector
state: >
{% if states('group.protects') == 'on' %}
{% for e in states.group.protects.attributes.entity_id if states(e) == 'on' %}
{% if loop.last %}
@@ -139,20 +145,19 @@ sensor:
{% else %}
0
{% endif %}
unit_of_measurement: 'count'
icon_template: mdi:smoke-detector
camera_count:
friendly_name: 'Number of online Cameras'
value_template: >
- name: "Number of online Cameras"
unique_id: stats_number_of_online_cameras
unit_of_measurement: "count"
icon: mdi:camera
state: >
{{ states.camera | list | count }}
unit_of_measurement: 'count'
icon_template: mdi:camera
total_wifi_clients:
friendly_name: "Total WiFi Clients"
- name: "Total WiFi Clients"
unique_id: total_wifi_clients
unit_of_measurement: "clients"
icon_template: mdi:wifi
value_template: >
icon: mdi:wifi
state: >
{% set g = states('sensor.unifi_ap_garage_clients') | int(0) %}
{% set o = states('sensor.unifi_ap_office_clients') | int(0) %}
{% set s = states('sensor.unifi_ap_study_clients') | int(0) %}

View File

@@ -1,109 +0,0 @@
#-------------------------------------------
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# Super Bowl Lights - Flash routines on scoring events.
#-------------------------------------------
######################################################################
## Game-day automations; update sensors yearly. Issue #1502.
######################################################################
automation:
- alias: 'Super Bowl Team Score Change'
id: 5b3a4c89-1234-4567-8901-23456789abcd
mode: single
trigger:
- platform: state
entity_id: sensor.team_tracker_kc
attribute: team_score
- platform: state
entity_id: sensor.team_tracker_phi
attribute: team_score
condition:
- condition: template
value_template: "{{ now().month == 2 }}"
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.flash
- service: light.turn_on
target:
entity_id:
- light.outdoor_front_lights
- light.living_room_accents
- light.m1_back_left
- light.m1_back_right
- light.m1_front_left
- light.m1_front_right
- light.main_slider
data:
rgb_color: >
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
[0, 255, 0]
{% else %}
[255, 0, 0]
{% endif %}
brightness: 255
- delay:
minutes: 5
- service: light.turn_on
target:
entity_id:
- light.m1_back_left
- light.m1_back_right
data:
brightness: 255
rgb_color: [255, 255, 255]
- alias: 'Super Bowl Winner Celebration'
id: 5b3a4c89-1234-4567-8901-23456789abce
mode: single
trigger:
- platform: state
entity_id:
- sensor.team_tracker_kc
- sensor.team_tracker_phi
attribute: team_winner
to: 'true'
condition:
- condition: template
value_template: "{{ now().month == 2 }}"
action:
- service: light.turn_on
target:
entity_id:
- light.outdoor_front_lights
- light.living_room_accents
- light.m1_back_left
- light.m1_back_right
- light.m1_front_left
- light.m1_front_right
- light.main_slider
data:
rgb_color: >
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
[0, 255, 0]
{% else %}
[255, 0, 0]
{% endif %}
brightness: 255
effect: 'colorloop'
- delay:
minutes: 3
- service: light.turn_on
target:
entity_id:
- light.outdoor_front_lights
- light.living_room_accents
- light.m1_back_left
- light.m1_back_right
- light.m1_front_left
- light.m1_front_right
- light.main_slider
data:
rgb_color: >
{% if trigger.entity_id == 'sensor.team_tracker_phi' %}
[0, 255, 0]
{% else %}
[255, 0, 0]
{% endif %}
brightness: 255
effect: 'none'

View File

@@ -1,48 +0,0 @@
#-------------------------------------------
# Pirate Weather Forecast Sensors
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
automation:
- alias: "Update Daily Weather Forecasts"
id: a8717b62-da37-4811-9f7c-96d178a7bfda_daily
trigger:
- platform: time_pattern
minutes: "/30"
action:
- service: weather.get_forecasts
data:
type: daily
target:
entity_id: weather.pirateweather
response_variable: daily
- alias: "Update Hourly Weather Forecasts"
id: a8717b62-da37-4811-9f7c-96d178a7bfda_hourly
trigger:
- platform: time_pattern
minutes: "/30"
action:
- service: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.pirateweather
response_variable: hourly
sensor:
- platform: template
sensors:
pirateweather_daily:
friendly_name: "Pirate Weather Daily"
unique_id: pirateweather_daily
value_template: "{{ daily['weather.pirateweather'].forecast[0].condition }}"
attribute_templates:
forecast: "{{ daily['weather.pirateweather'].forecast }}"
pirateweather_hourly:
friendly_name: "Pirate Weather Hourly"
unique_id: pirateweather_hourly
value_template: "{{ hourly['weather.pirateweather'].forecast[0].condition }}"
attribute_templates:
forecast: "{{ hourly['weather.pirateweather'].forecast[:24] }}"

View File

@@ -1,11 +0,0 @@
#-------------------------------------------
# Camera Related Packages
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
#---Sensor for Light-----------------------------
camera:
- platform: generic
still_image_url: 'https://icons.wxug.com/data/weather-maps/radar/united-states/saint-petersburg-florida-region-current-radar.gif'
# still_image_url: 'https://radblast.wunderground.com/cgi-bin/radar/WUNIDS_map?station=MCO&brand=wui&num=1&delay=15&type=TR0&frame=0&scale=1.000&noclutter=0&showstorms=0&mapx=400&mapy=240&centerx=400&centery=240&transx=0&transy=0&showlabels=1&severe=0&rainsnow=0&lightning=0&smooth=0&rand=25183060&lat=0&lon=0&label=you'
name: WU Doppler Weather

View File

@@ -17,7 +17,7 @@
</div>
Standalone sensors that aren<EFBFBD>t bundled in packages<EFBFBD>time/utility helpers, MQTT feeds, and IP change detectors.
Standalone sensors that aren't bundled in packages - time/utility helpers and MQTT feeds. (IP change monitoring now lives in `config/packages/ipchange.yaml`.)
### Quick navigation
- [Repo overview](../../README.md) | [Config index](../README.md) | [Packages](../packages)
@@ -29,7 +29,6 @@ Standalone sensors that aren
| --- | --- |
| [date_time.yaml](date_time.yaml) | Time/date sensors used across automations. |
| [MQTT.yaml](MQTT.yaml) | Generic MQTT sensor definitions. |
| [ipchange.yaml](ipchange.yaml) | IP change detector for presence/alerts. |
### Tips
- Great place for lightweight utility sensors you want everywhere.
@@ -50,3 +49,5 @@ Standalone sensors that aren
<a href="https://www.vCloudInfo.com/p/affiliate-disclosure.html">
Affiliate Disclosure
</a></p>

View File

@@ -1,16 +1,16 @@
<svg width="68.5" height="20" viewBox="0 0 685 200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="2025.11.3">
<title>2025.11.3</title>
<linearGradient id="eiJqK" x2="0" y2="100%">
<svg width="68.5" height="20" viewBox="0 0 685 200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="2025.12.0">
<title>2025.12.0</title>
<linearGradient id="DQrHH" x2="0" y2="100%">
<stop offset="0" stop-opacity=".1" stop-color="#EEE"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<mask id="egNEG"><rect width="685" height="200" rx="30" fill="#FFF"/></mask>
<g mask="url(#egNEG)">
<mask id="RulHM"><rect width="685" height="200" rx="30" fill="#FFF"/></mask>
<g mask="url(#RulHM)">
<rect width="685" height="200" fill="#08C" x="0"/>
<rect width="685" height="200" fill="url(#eiJqK)"/>
<rect width="685" height="200" fill="url(#DQrHH)"/>
</g>
<g aria-hidden="true" fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110">
<text x="65" y="148" textLength="570" fill="#000" opacity="0.25">2025.11.3</text>
<text x="55" y="138" textLength="570">2025.11.3</text>
<text x="65" y="148" textLength="570" fill="#000" opacity="0.25">2025.12.0</text>
<text x="55" y="138" textLength="570">2025.12.0</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 815 B

After

Width:  |  Height:  |  Size: 815 B