Compare commits

..

28 Commits

Author SHA1 Message Date
e222337fa1 Remove manual MQTT sensors, add templates, remove iotlink from filename 2025-12-28 03:24:16 -05:00
2721bd6659 Update idle sensor to utilize new macro and sensors 2025-12-28 01:14:14 -05:00
f264412639 Desktop notifications for Tony's meds 2025-12-28 01:12:59 -05:00
6cddca76f7 time_diff macro 2025-12-28 01:12:42 -05:00
f57c41868e Facilitate PC notifications via HASS.Agent 2025-12-28 01:12:00 -05:00
d091cadacf Adjustments for new Todoist API 2025-12-23 22:16:21 -05:00
92adc64d72 AdGuard sensors excluded from recorder and added to Influx/Prometheus 2025-12-23 22:16:02 -05:00
259757a537 Update .HA_VERSION 2025-12-23 22:12:54 -05:00
d0d8d0477f Migrate to new core integration for Uptime Kuma
#257
2025-12-23 22:11:38 -05:00
ac6f7978be Updated readme
#257
2025-12-16 21:28:29 -05:00
28e3b93441 Updated readme 2025-12-16 19:23:28 -05:00
bdca4c702a Remove battery notes from config as it's all UI-based now 2025-12-15 21:19:08 -05:00
4b57efcd74 Add extra_module_url for card-mod 2025-12-15 19:32:30 -05:00
7255422ca1 Fix E's white noise not turning on at bedtime
#256
2025-12-15 19:32:29 -05:00
5ae5e5021e Integrate E's bedroom heater with existing automations and scheduling
#256
2025-12-13 20:16:31 -05:00
bd9c7190ed Update weather templates to current syntax 2025-12-13 18:25:58 -05:00
f176e3b867 Update .HA_VERSION 2025-12-13 18:13:02 -05:00
1b52cc31a8 Update .HA_VERSION 2025-12-09 20:16:17 -05:00
8993196366 Add college hockey teams to sports tracking #255 2025-12-09 20:16:00 -05:00
210434e4ad Prevent trying to report team record when it is not provided 2025-12-09 20:15:39 -05:00
e37ac9d504 Re-enable K's night meds tracker 2025-12-09 20:13:57 -05:00
bf19984b47 Fix recliner mode not marking basement as occupied 2025-11-28 00:47:23 -05:00
4634b66866 Change deprecated Powercalc config 2025-11-26 20:27:16 -05:00
001dcbe625 Update .HA_VERSION 2025-11-26 20:26:34 -05:00
f70be6ceee Update .HA_VERSION 2025-11-10 22:38:58 -05:00
265e129c06 Try to fix weird changing of climate modes in E's bedroom 2025-10-30 18:14:02 -04:00
00bea40b6b Update .HA_VERSION 2025-10-30 18:13:22 -04:00
f94bce3381 Update .HA_VERSION 2025-10-18 00:21:58 -04:00
22 changed files with 1167 additions and 828 deletions

View File

@@ -1 +1 @@
2025.10.1
2025.12.4

View File

@@ -4659,7 +4659,7 @@
id: night-notify
alias: Night Notify
trigger: time
enabled: false
enabled: true
- entity_id:
- input_boolean.kallen_morning_meds_taken
to: 'on'
@@ -4674,7 +4674,7 @@
from: 'off'
to: 'on'
trigger: state
enabled: false
enabled: true
conditions:
- condition: state
entity_id: input_boolean.kallen_overnight
@@ -5354,72 +5354,96 @@
- id: '1722378602352'
alias: Tony Meds Cleanup
description: Handles the setting/clearing of medication configs for Tony
trigger:
- platform: state
entity_id:
triggers:
- entity_id:
- input_boolean.tony_morning_meds_reminder
from: 'on'
to: 'off'
id: morning-reminders-off
alias: Morning reminders off
trigger: state
- alias: Afternoon reminders off
platform: state
entity_id:
- input_boolean.tony_afternoon_meds_reminder
from: 'on'
to: 'off'
id: afternoon-reminders-off
trigger: state
- alias: Night reminders off
platform: state
entity_id:
- input_boolean.tony_night_meds_reminder
from: 'on'
to: 'off'
id: night-reminders-off
- platform: event
event_type: ios.notification_action_fired
trigger: state
- event_type: ios.notification_action_fired
event_data:
actionName: TONY_MORNING_MEDS_TAKEN
id: morning-taken
alias: Morning taken
- alias: Afternoon taken
platform: event
alias: Morning taken iOS
trigger: event
- alias: Morning taken PC
event_type: hass_agent_notifications
event_data:
action: TONY_MORNING_MEDS_TAKEN
id: morning-taken
trigger: event
- alias: Afternoon taken iOS
event_type: ios.notification_action_fired
event_data:
actionName: TONY_AFTERNOON_MEDS_TAKEN
id: afternoon-taken
- alias: Night taken
platform: event
trigger: event
- alias: Afternoon taken PC
event_type: hass_agent_notifications
event_data:
action: TONY_AFTERNOON_MEDS_TAKEN
id: afternoon-taken
trigger: event
- alias: Night taken iOS
event_type: ios.notification_action_fired
event_data:
actionName: TONY_NIGHT_MEDS_TAKEN
id: night-taken
- alias: Morning skipped
platform: event
trigger: event
- alias: Morning skipped iOS
event_type: ios.notification_action_fired
event_data:
actionName: TONY_MORNING_MEDS_SKIPPED
id: morning-skipped
- alias: Afternoon skipped
platform: event
trigger: event
- alias: Morning skipped PC
event_type: hass_agent_notifications
event_data:
action: TONY_MORNING_MEDS_SKIPPED
id: morning-skipped
trigger: event
- alias: Afternoon skipped iOS
event_type: ios.notification_action_fired
event_data:
actionName: TONY_AFTERNOON_MEDS_SKIPPED
id: afternoon-skipped
- alias: Night skipped
platform: event
trigger: event
- alias: Afternoon skipped PC
event_type: hass_agent_notifications
event_data:
action: TONY_AFTERNOON_MEDS_SKIPPED
id: afternoon-skipped
trigger: event
- alias: Night skipped iOS
event_type: ios.notification_action_fired
event_data:
actionName: TONY_NIGHT_MEDS_SKIPPED
id: night-skipped
- platform: state
entity_id:
trigger: event
- entity_id:
- person.tony_stork
from: home
id: left
alias: Left
condition: []
action:
trigger: state
conditions: []
actions:
- alias: Routing
choose:
- conditions:
@@ -5428,19 +5452,19 @@
- morning-reminders-off
alias: Morning Reminders Off
sequence:
- service: counter.reset
metadata: {}
- metadata: {}
data: {}
target:
entity_id: counter.tony_morning_meds_reminder_count
alias: Reset morning reminder count
- service: script.text_notify
data:
action: counter.reset
- data:
type: alert
who: tony
message: clear_notification
tag: tony-morning-meds
alias: Clear morning notification
action: script.text_notify
- conditions:
- condition: trigger
id:
@@ -5448,18 +5472,18 @@
alias: Afternoon reminders off
sequence:
- alias: Reset afternoon reminder count
service: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.tony_afternoon_meds_reminder_count
- service: script.text_notify
data:
action: counter.reset
- data:
type: alert
who: tony
message: clear_notification
tag: tony-afternoon-meds
alias: Clear afternoon notification
action: script.text_notify
- conditions:
- condition: trigger
id:
@@ -5467,90 +5491,90 @@
alias: Night reminders off
sequence:
- alias: Reset night reminder count
service: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.tony_night_meds_reminder_count
- service: script.text_notify
data:
action: counter.reset
- data:
type: alert
who: tony
message: clear_notification
tag: tony-night-meds
alias: Clear night notification
action: script.text_notify
- conditions:
- condition: trigger
- alias: Morning taken
condition: trigger
id:
- morning-taken
alias: Morning taken
sequence:
- service: input_boolean.turn_on
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_morning_meds_taken
alias: Turn on morning meds taken
action: input_boolean.turn_on
- conditions:
- condition: trigger
id:
- afternoon-taken
alias: Afternoon taken
sequence:
- service: input_boolean.turn_on
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_afternoon_meds_taken
alias: Turn on afternoon meds taken
action: input_boolean.turn_on
- conditions:
- condition: trigger
id:
- night-taken
alias: Night taken
sequence:
- service: input_boolean.turn_on
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_night_meds_taken
alias: Turn on night meds taken
action: input_boolean.turn_on
- conditions:
- condition: trigger
id:
- morning-skipped
alias: Morning skipped
sequence:
- service: input_boolean.turn_off
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_morning_meds_reminder
alias: Deactivate morning reminders
action: input_boolean.turn_off
- conditions:
- condition: trigger
id:
- afternoon-skipped
alias: Afternoon skipped
sequence:
- service: input_boolean.turn_off
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_afternoon_meds_reminder
alias: Deactivate afternoon reminders
action: input_boolean.turn_off
- conditions:
- condition: trigger
id:
- night-skipped
alias: Night skipped
sequence:
- service: input_boolean.turn_off
metadata: {}
- metadata: {}
data: {}
target:
entity_id: input_boolean.tony_night_meds_reminder
alias: Deactivate night reminders
action: input_boolean.turn_off
- conditions:
- condition: trigger
id:
@@ -5576,7 +5600,6 @@
alias: Night meds reminder active
then:
- alias: Send critical TTS notification
service: script.text_notify
metadata: {}
data:
type: critical
@@ -5584,6 +5607,7 @@
title: HEY DUMBASS
message: YOU FORGOT TO TAKE YOUR MEDS!!!!!
tag: tony-left-meds
action: script.text_notify
mode: queued
max: 10
- id: '1722386174249'
@@ -6309,3 +6333,27 @@
who: all
alias: Routing
mode: restart
- id: '1765674032722'
alias: Emma Bedroom Heater
description: Turns Emma's bedroom heater on at the scheduled time
triggers:
- trigger: time
at: input_datetime.emma_bedroom_climate
alias: Emma Bedroom Climate
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state:
- Heat
- condition: state
entity_id: input_boolean.emma_bedroom_heater_installed
state:
- 'on'
actions:
- action: climate.set_hvac_mode
metadata: {}
target:
entity_id: climate.emma_bedroom_vtherm
data:
hvac_mode: heat
mode: restart

View File

@@ -33,6 +33,7 @@ frontend:
- /hacsfiles/hass-hue-icons/hass-hue-icons.js
- /hacsfiles/hass-bha-icons/hass-bha-icons.js
- /hacsfiles/material-you-utilities/material-you-utilities.min.js
- /hacsfiles/lovelace-card-mod/card-mod.js?v4.1.0
javascript_version: latest
panel_custom:
@@ -64,11 +65,11 @@ calendar:
rest_command:
todoist:
method: post
url: 'https://api.todoist.com/sync/v9/{{ url }}'
url: 'https://api.todoist.com/api/v1/{{ url }}'
payload: '{{ payload }}'
headers:
Authorization: !secret todoist_api_token
content_type: 'application/x-www-form-urlencoded'
content_type: 'application/x-www-form-urlencoded'
recorder:
db_url: !secret mariadb_url
@@ -118,6 +119,11 @@ recorder:
- sensor.*_rssi
- sensor.weatherflow_hub*
- sensor.internet_round_trip*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.adguard*
entities:
- sensor.avg_ping
- sensor.max_ping
@@ -279,6 +285,12 @@ influxdb:
- binary_sensor.asus_laptop*
- sensor.*ashland*
- sensor.*kasx*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
entities:
- media_player.living_room_tv
- media_player.basement_tv
@@ -451,6 +463,12 @@ prometheus:
- binary_sensor.asus_laptop*
- sensor.*ashland*
- sensor.*kasx*
- sensor.*_monitor_type
- sensor.*_certificate_expiry
- sensor.*_monitored_url
- sensor.*_response_time
- sensor.*_status
- sensor.adguard*
include_entities:
- media_player.living_room_tv
- media_player.basement_tv

View File

@@ -90,8 +90,8 @@
{% elif state_attr(team,'opponent_winner') == true %}
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
{% endif %}
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %}
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
{% if state_attr(team,'clock') not in ['postponed','Postponed'] and state_attr(team,'team_record') != None %}
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
{% endif %}
{% elif yday == date %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %}
@@ -171,6 +171,15 @@
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_pregame('sensor.minnesota_wild') }}
{% endif %}
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
{{ sports_pregame('sensor.michigan_wolverines_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
{{ sports_pregame('sensor.minnesota_golden_gophers_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
{{ sports_pregame('sensor.minnesota_state_mavericks_hockey') }}
{% endif %}
{% elif time == 'main' %}
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
{{ sports_main('sensor.michigan_wolverines') }}
@@ -199,6 +208,15 @@
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_main('sensor.minnesota_wild') }}
{% endif %}
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
{{ sports_main('sensor.michigan_wolverines_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
{{ sports_main('sensor.minnesota_golden_gophers_hockey') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
{{ sports_main('sensor.minnesota_state_mavericks_hockey') }}
{% endif %}
{% endif %}
{% endmacro %}
{{ cleanup(data()) }}

View File

@@ -109,4 +109,9 @@
{% macro next_twitch_stream() %}
{{ custom_time('calendar.tony_s_twitch_schedule','week,day,hour') }}
{% endmacro %}
{% macro time_diff(sensor) %}
{% set diff = (as_timestamp(now()) - as_timestamp(states(sensor))) | int %}
{{ diff }}
{% endmacro %}

View File

@@ -352,6 +352,20 @@ input_number:
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_heater_run_threshold:
name: Emma Bedroom Heater Run Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_heater_shutoff_threshold:
name: Emma Bedroom Heater Shutoff Threshold
min: 40
max: 80
step: 1
unit_of_measurement: °F
icon: mdi:thermometer
emma_bedroom_aircon_run_threshold:
name: Emma Bedroom Aircon Run Threshold
min: 40

View File

@@ -1,375 +1,304 @@
weather:
- platform: template
name: "Iron Nerd Weather Station"
condition_template: >
{% set stations = [
states.weather.home_tempest_forecast_home,
states.weather.home,
states.weather.kdfi_daynight,
states.weather.iron_nerd_studios,
states.weather.openweathermap
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.home_tempest_temperature,
states.sensor.home_temperature,
states.sensor.kdfi_temperature,
states.sensor.pirateweather_temperature,
states.sensor.openweathermap_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
dew_point_template: >
{% set dewpoints = [
states.sensor.home_tempest_dew_point,
states.sensor.home_dew_point,
states.sensor.kdfi_dew_point,
states.sensor.pirateweather_dew_point,
states.sensor.openweathermap_dew_point
] %}
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
humidity_template: >
{% set humidity = [
states.sensor.home_tempest_humidity,
states.sensor.home_relative_humidity,
states.sensor.kdfi_relative_humidity,
states.sensor.pirateweather_humidity,
states.sensor.openweathermap_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_daily_template: >
{% set forecasts = [
states.sensor.weather_com_daily_weather_forecast.attributes,
states.weather.kdfi_daynight.attributes,
states.sensor.pirateweather_daily_weather_forecast.attributes,
states.sensor.openweathermap_daily_weather_forecast.attributes,
states.weather.weatherapi_stratton_ave.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_hourly_weather_forecast.attributes,
states.sensor.pirateweather_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.home_tempest_local_slp,
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
states.sensor.home_pressure,
states.sensor.kdfi_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.home_wind_speed,
states.sensor.pirateweather_wind_speed,
states.sensor.kdfi_wind_speed,
states.sensor.openweathermap_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.home_wind_direction_degrees,
states.sensor.pirateweather_wind_bearing,
states.sensor.openweathermap_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kdfi_visibility,
states.sensor.pirateweather_visibility,
states.sensor.openweathermap_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
- platform: template
name: "Iron Nerd Weather Station - Hourly"
condition_template: >
{% set stations = [
states.weather.home_tempest_forecast_home,
states.weather.home,
states.weather.tomorrow_io_stratton_ave_hourly,
states.weather.iron_nerd_studios,
states.weather.kdfi_daynight,
states.weather.openweathermap
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.home_tempest_temperature,
states.sensor.home_temperature,
states.sensor.kdfi_temperature,
states.sensor.pirateweather_temperature,
states.sensor.openweathermap_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
dew_point_template: >
{% set dewpoints = [
states.sensor.home_tempest_dew_point,
states.sensor.home_dew_point,
states.sensor.kdfi_dew_point,
states.sensor.pirateweather_dew_point,
states.sensor.openweathermap_dew_point
] %}
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
humidity_template: >
{% set humidity = [
states.sensor.home_tempest_humidity,
states.sensor.home_relative_humidity,
states.sensor.kdfi_relative_humidity,
states.sensor.pirateweather_humidity,
states.sensor.openweathermap_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_hourly_weather_forecast.attributes,
states.weather.tomorrow_io_stratton_ave_hourly.attributes,
states.sensor.pirateweather_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.home_tempest_local_slp,
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
states.sensor.home_pressure,
states.sensor.kdfi_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.home_wind_speed,
states.sensor.pirateweather_wind_speed,
states.sensor.kdfi_wind_speed,
states.sensor.openweathermap_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.home_wind_direction_degrees,
states.sensor.pirateweather_wind_bearing,
states.sensor.openweathermap_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kdfi_visibility,
states.sensor.pirateweather_visibility,
states.sensor.openweathermap_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Hourly weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
- platform: template
name: "Ashland Weather Station"
condition_template: >
{% set stations = [
states.weather.ashland,
states.weather.kasx,
states.weather.pirateweather_ashland
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.ashland_temperature,
states.sensor.kasx_temperature,
states.sensor.pirateweather_ashland_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
humidity_template: >
{% set humidity = [
states.sensor.ashland_relative_humidity,
states.sensor.kasx_relative_humidity,
states.sensor.pirateweather_ashland_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_daily_template: >
{% set forecasts = [
states.sensor.weather_com_ashland_daily_weather_forecast.attributes,
states.weather.kasx.attributes,
states.sensor.pirateweather_ashland_daily_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_ashland_hourly_weather_forecast,
states.sensor.pirateweather_ashland_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.ashland_pressure,
states.sensor.kasx_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.ashland_wind_speed,
states.sensor.pirateweather_ashland_wind_speed,
states.sensor.kasx_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.ashland_wind_direction_degrees,
states.sensor.pirateweather_ashland_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kasx_visibility,
states.sensor.pirateweather_ashland_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ashland_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
# binary_sensor:
# - platform: bayesian
# unique_id: 3e9640d9-57a0-4495-8731-e64b34774065
# name: Raining Bayesian
# prior: 0.17
# probability_threshold: 0.6
# observations:
# - entity_id: "sensor.pirateweather_precip"
# prob_given_true: 0.13
# prob_given_false: 0.005
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.openweathermap_precipitation_kind"
# prob_given_true: 0.75
# prob_given_false: 0.005
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type"
# prob_given_true: 0.99
# prob_given_false: 0.2
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.stratton_ave_precipitation"
# prob_given_true: 0.99
# prob_given_false: 0.2
# platform: "numeric_state"
# above: 0
sensor:
- platform: weatheralerts
state: OH
zone: 4
county: 39
# - platform: statistics
# unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd
# name: Outside Temp Average
# entity_id: sensor.pirateweather_temperature
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b
# name: Apparent Temp Average
# entity_id: sensor.stratton_ave_apparent_temperature
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017
# name: Wind Speed Average
# entity_id: sensor.pirateweather_wind_speed
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: b43d053f-aafb-4237-a742-a2ca841498fa
# name: Visibility Stats Average
# entity_id: sensor.kdfi_visibility
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24
# name: Humidity Stats Average
# entity_id: sensor.pirateweather_humidity
# state_characteristic: average_linear
# max_age:
# days: 7
template:
- weather:
- name: "Iron Nerd Weather Station"
condition_template: >
{% set stations = [
states.weather.home_tempest_forecast_home,
states.weather.home,
states.weather.kdfi_daynight,
states.weather.iron_nerd_studios,
states.weather.openweathermap
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.home_tempest_temperature,
states.sensor.home_temperature,
states.sensor.kdfi_temperature,
states.sensor.pirateweather_temperature,
states.sensor.openweathermap_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
dew_point_template: >
{% set dewpoints = [
states.sensor.home_tempest_dew_point,
states.sensor.home_dew_point,
states.sensor.kdfi_dew_point,
states.sensor.pirateweather_dew_point,
states.sensor.openweathermap_dew_point
] %}
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
humidity_template: >
{% set humidity = [
states.sensor.home_tempest_humidity,
states.sensor.home_relative_humidity,
states.sensor.kdfi_relative_humidity,
states.sensor.pirateweather_humidity,
states.sensor.openweathermap_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_daily_template: >
{% set forecasts = [
states.sensor.weather_com_daily_weather_forecast.attributes,
states.weather.kdfi_daynight.attributes,
states.sensor.pirateweather_daily_weather_forecast.attributes,
states.sensor.openweathermap_daily_weather_forecast.attributes,
states.weather.weatherapi_stratton_ave.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_hourly_weather_forecast.attributes,
states.sensor.pirateweather_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.home_tempest_local_slp,
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
states.sensor.home_pressure,
states.sensor.kdfi_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.home_wind_speed,
states.sensor.pirateweather_wind_speed,
states.sensor.kdfi_wind_speed,
states.sensor.openweathermap_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.home_wind_direction_degrees,
states.sensor.pirateweather_wind_bearing,
states.sensor.openweathermap_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kdfi_visibility,
states.sensor.pirateweather_visibility,
states.sensor.openweathermap_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
- weather:
- name: "Iron Nerd Weather Station - Hourly"
condition_template: >
{% set stations = [
states.weather.home_tempest_forecast_home,
states.weather.home,
states.weather.tomorrow_io_stratton_ave_hourly,
states.weather.iron_nerd_studios,
states.weather.kdfi_daynight,
states.weather.openweathermap
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.home_tempest_temperature,
states.sensor.home_temperature,
states.sensor.kdfi_temperature,
states.sensor.pirateweather_temperature,
states.sensor.openweathermap_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
dew_point_template: >
{% set dewpoints = [
states.sensor.home_tempest_dew_point,
states.sensor.home_dew_point,
states.sensor.kdfi_dew_point,
states.sensor.pirateweather_dew_point,
states.sensor.openweathermap_dew_point
] %}
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
apparent_temperature_template: >
{% set apparent_temps = [
states.sensor.home_tempest_feels_like,
states.sensor.home_temperature_feels_like,
states.sensor.pirateweather_apparent_temperature,
states.sensor.stratton_ave_apparent_temperature
] %}
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
humidity_template: >
{% set humidity = [
states.sensor.home_tempest_humidity,
states.sensor.home_relative_humidity,
states.sensor.kdfi_relative_humidity,
states.sensor.pirateweather_humidity,
states.sensor.openweathermap_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_hourly_weather_forecast.attributes,
states.weather.tomorrow_io_stratton_ave_hourly.attributes,
states.sensor.pirateweather_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.home_tempest_local_slp,
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
states.sensor.home_pressure,
states.sensor.kdfi_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.home_wind_speed,
states.sensor.pirateweather_wind_speed,
states.sensor.kdfi_wind_speed,
states.sensor.openweathermap_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.home_wind_direction_degrees,
states.sensor.pirateweather_wind_bearing,
states.sensor.openweathermap_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kdfi_visibility,
states.sensor.pirateweather_visibility,
states.sensor.openweathermap_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Hourly weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
- weather:
- name: "Ashland Weather Station"
condition_template: >
{% set stations = [
states.weather.ashland,
states.weather.kasx,
states.weather.pirateweather_ashland
] %}
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) }}
temperature_template: >
{% set temps = [
states.sensor.ashland_temperature,
states.sensor.kasx_temperature,
states.sensor.pirateweather_ashland_temperature
] %}
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(sensor) | float }}
temperature_unit: °F
humidity_template: >
{% set humidity = [
states.sensor.ashland_relative_humidity,
states.sensor.kasx_relative_humidity,
states.sensor.pirateweather_ashland_humidity
] %}
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
forecast_daily_template: >
{% set forecasts = [
states.sensor.weather_com_ashland_daily_weather_forecast.attributes,
states.weather.kasx.attributes,
states.sensor.pirateweather_ashland_daily_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
forecast_hourly_template: >
{% set forecasts = [
states.sensor.weather_com_ashland_hourly_weather_forecast,
states.sensor.pirateweather_ashland_hourly_weather_forecast.attributes
] %}
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
pressure_template: >
{% set pressures = [
states.sensor.ashland_pressure,
states.sensor.kasx_barometric_pressure
] %}
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
pressure_unit: inHg
wind_speed_template: >
{% set windspeeds = [
states.sensor.ashland_wind_speed,
states.sensor.pirateweather_ashland_wind_speed,
states.sensor.kasx_wind_speed
] %}
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
wind_speed_unit: mph
wind_bearing_template: >
{% set windbearings = [
states.sensor.ashland_wind_direction_degrees,
states.sensor.pirateweather_ashland_wind_bearing
] %}
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_template: >
{% set vis = [
states.sensor.kasx_visibility,
states.sensor.pirateweather_ashland_visibility
] %}
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
visibility_unit: mi
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
ozone_template: >
{% set ozones = [
states.sensor.pirateweather_ashland_ozone
] %}
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
{{ states(result) | float }}
precipitation_unit: in
- trigger:
- platform: time_pattern
minutes: /15
@@ -1613,6 +1542,76 @@ template:
hail_stroke: "{{ state_attr('sensor.spc_outlook_day_1','hail_stroke') }}"
icon: mdi:weather-hail
sensor:
- platform: weatheralerts
state: OH
zone: 4
county: 39
# - platform: statistics
# unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd
# name: Outside Temp Average
# entity_id: sensor.pirateweather_temperature
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b
# name: Apparent Temp Average
# entity_id: sensor.stratton_ave_apparent_temperature
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017
# name: Wind Speed Average
# entity_id: sensor.pirateweather_wind_speed
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: b43d053f-aafb-4237-a742-a2ca841498fa
# name: Visibility Stats Average
# entity_id: sensor.kdfi_visibility
# state_characteristic: average_linear
# max_age:
# days: 7
# - platform: statistics
# unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24
# name: Humidity Stats Average
# entity_id: sensor.pirateweather_humidity
# state_characteristic: average_linear
# max_age:
# days: 7
# binary_sensor:
# - platform: bayesian
# unique_id: 3e9640d9-57a0-4495-8731-e64b34774065
# name: Raining Bayesian
# prior: 0.17
# probability_threshold: 0.6
# observations:
# - entity_id: "sensor.pirateweather_precip"
# prob_given_true: 0.13
# prob_given_false: 0.005
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.openweathermap_precipitation_kind"
# prob_given_true: 0.75
# prob_given_false: 0.005
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type"
# prob_given_true: 0.99
# prob_given_false: 0.2
# platform: "state"
# to_state: "rain"
# - entity_id: "sensor.stratton_ave_precipitation"
# prob_given_true: 0.99
# prob_given_false: 0.2
# platform: "numeric_state"
# above: 0
input_boolean:
freeze_warning:
name: Freeze Warning

View File

@@ -48,8 +48,8 @@ input_datetime:
has_date: false
has_time: true
icon: mdi:fan-auto
emma_bedroom_cooling:
name: Emma Bedroom Cooling
emma_bedroom_climate:
name: Emma Bedroom Climate
has_date: false
has_time: true
icon: mdi:fan-auto
@@ -899,3 +899,6 @@ script:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.white_noise_emma_bedroom
- service: climate.turn_off
target:
entity_id: climate.emma_bedroom_vtherm

View File

@@ -38,12 +38,13 @@ conversation:
alexa:
powercalc:
force_update_frequency: 00:01:00
discovery:
enabled: true
energy_update_interval: 60
power_sensor_naming: "{} Power Sensor"
power_sensor_friendly_naming: "{} Power Sensor"
energy_sensor_naming: "{} Energy Sensor"
energy_sensor_friendly_naming: "{} Energy Sensor"
enable_autodiscovery: true
create_energy_sensors: true
create_utility_meters: true
create_domain_groups:
@@ -58,6 +59,4 @@ pyscript:
animated_scenes:
grad_vol:
battery_notes:
grad_vol:

View File

@@ -1,328 +0,0 @@
mqtt:
sensor:
- name: "Tony Desktop - GPU Temperature"
unique_id: 8c91e08e-2b30-4700-b012-54722b931c8c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/temperatures/gpu_core"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - CPU Temperature"
unique_id: 8d27e4d8-1986-4ed5-af48-6f88a8740c3c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/cpu/temperatures/core_(tctl/tdie)"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage C Temperature"
unique_id: 26822d74-0fa9-46b7-865c-74a29baf8735
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/wd_black_sn770_2tb/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage S Temperature"
unique_id: cbaca0c0-6dcd-4e4c-b5ae-90b0a8d7a25b
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/san-disk_sd8sb8u512g1002/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage V Temperature"
unique_id: 6b425eb2-25f3-486c-818a-eb92c3e8fadf
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/wdc__wdbnce0010pnc/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Storage E Temperature"
unique_id: 723c308f-535f-4624-8e46-d7e4f344079c
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/storages/ct1000p1ssd8/temperatue"
unit_of_measurement: 'C'
icon: mdi:thermometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Usage"
unique_id: f380ab55-7cde-4b8c-922f-ff113cdbff77
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/load/memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Usage"
unique_id: b2ddd600-7963-4f47-9d1d-7f74a7cdc6fa
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/load/virtual_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Core Load"
unique_id: 6ead9e42-2ef0-440f-8e36-cc5f5f5c3776
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_core"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU VRAM Usage"
unique_id: 7fa952df-8a8d-44de-9393-d01ae648625e
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_memory"
unit_of_measurement: '%'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Video Engine Load"
unique_id: 01de9b74-f28d-4443-893c-6d0179fa831f
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_video_engine"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Controller Load"
unique_id: 96b6511b-95bf-4baf-a305-9b6f14dadde7
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/load/gpu_memory_controller"
unit_of_measurement: '%'
icon: mdi:speedometer
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Total"
unique_id: 8ec11ad0-e184-4f0d-886f-62e9eaf57bd4
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_total"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Free"
unique_id: 3854f3e3-ec12-4226-b768-4fe25b41dda9
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_free"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - GPU Memory Used"
unique_id: 4c75e640-76ee-41f3-91ee-1406f275b7ac
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/gpu_nvidia/data/gpu_memory_used"
unit_of_measurement: 'MB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Used (GB)"
unique_id: 90123c89-2edc-4adc-840b-3704e7bd8b56
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Memory Available (GB)"
unique_id: ef727165-0da8-47f5-a51e-dcdd2cabda60
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Used (GB)"
unique_id: 0e7dfe10-fe77-430b-8bc1-022e663b83d3
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/virtual_memory_used"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
- name: "Tony Desktop - Virtual Memory Available (GB)"
unique_id: 3b812f43-7c03-4898-b407-b9edd558aec1
state_topic: "iotlink/workgroup/tony-asus/monitor/stats/memory/data/virtual_memory_available"
unit_of_measurement: 'GB'
icon: mdi:memory
value_template: "{{ value }}"
availability_topic: "iotlink/workgroup/tony-asus/lwt"
payload_available: "ON"
payload_not_available: "OFF"
qos: 1
script:
tony_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tony Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "18:C0:4D:82:00:95"
tony_desktop_shutdown:
alias: "Tony Desktop - Shutdown"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/shutdown"
payload: ""
tony_desktop_suspend:
alias: "Tony Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/suspend"
payload: ""
tony_desktop_hibernate:
alias: "Tony Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/hibernate"
payload: ""
tony_desktop_reboot:
alias: "Tony Desktop - Reboot"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/reboot"
payload: ""
tony_desktop_lock:
alias: "Tony Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/lock"
payload: ""
tony_desktop_logoff:
alias: "Tony Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/logoff"
payload: ""
tony_desktop_vol_mute:
alias: "Tony Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/mute"
payload: ""
tony_desktop_vol_max:
alias: "Tony Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/set"
payload: "100"
tony_desktop_displays_on:
alias: "Tony Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/on"
payload: ""
tony_desktop_displays_off:
alias: "Tony Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/off"
payload: ""
tony_desktop_refresh:
alias: "Tony Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.tony_asus_hassagent_user_refresh
- button.tony_asus_hassagent_satellite_refresh
tony_desktop_notify:
alias: "Tony Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tony_desktop_run_chrome:
alias: "Tony Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/run"
payload: '{ "command": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'

View File

@@ -90,17 +90,33 @@ input_datetime:
sensor:
- platform: rest
name: Kallen Tasks
unique_id: 77045665-9222-4a6b-851f-6d9b50110107
method: GET
resource: 'https://api.todoist.com/sync/v9/projects/get_data'
resource: 'https://api.todoist.com/api/v1/projects/2285969005/full'
headers:
Authorization: !secret todoist_api_token
Accept: application/json
value_template: '{{ value_json.project.id }}'
json_attributes:
- project
- tasks
- sections
scan_interval: 60
- platform: rest
name: Kallen Tasks Comments
unique_id: ae3178ad-439a-49f7-8c56-2fa866afaba5
method: GET
resource: 'https://api.todoist.com/api/v1/comments'
params:
project_id: 2285969005
headers:
Authorization: !secret todoist_api_token
value_template: '{{value_json[''project''][''id'']}}'
Accept: application/json
value_template: '{{ value_json.results | length }}'
json_attributes:
- project
- items
scan_interval: 30
- results
scan_interval: 60
automation:
- id: 94b57d79-efe0-4f34-b5e3-baeaa5eea9f4

View File

@@ -79,6 +79,9 @@ input_boolean:
tv_notifications:
name: TV Notifications
icon: mdi:message
pc_notifications:
name: PC Notifications
icon: mdi:desktop-classic
input_select:
select_phones:
@@ -103,6 +106,19 @@ input_select:
- All
initial: None
icon: mdi:television-play
select_pcs:
name: Select PCs
options:
- None
- Tony
- Tina
- Kallen
- Parents
- Nerds
- Not Tony
- All
initial: None
icon: mdi:desktop-classic
text_notification_priority_level:
name: Notification Priority Level
options:
@@ -352,6 +368,27 @@ notify:
services:
- service: alexa_media_living_room_echo_dot
- service: alexa_media_basement_echo_dot
- name: pc_parents
platform: group
services:
- service: notify.tony_asus
- service: notify.xia_desktop
- name: pc_nerds
platform: group
services:
- service: notify.tony_asus
- service: notify.kallen_desktop
- name: pc_all
platform: group
services:
- service: notify.tony_asus
- service: notify.xia_desktop
- service: notify.kallen_desktop
- name: pc_not_tony
platform: group
services:
- service: notify.xia_desktop
- service: notify.kallen_desktop
script:
volume_reset:
@@ -805,6 +842,131 @@ script:
message: '{{ message }}'
data: '{{ data|default("{}") }}'
pc_notify:
alias: 'PC Notify'
description: 'Use this to send popup text notifications to PCs in the house via HASS.Agent'
mode: queued
max: 20
fields:
who:
name: 'Who'
description: 'Which PC to send the notification to'
example: 'tony_pc, tina_pc, kallen_pc, all_pcs'
required: true
selector:
select:
options:
- tony
- tina
- kallen
- parents
- nerds
- not_tony
- all
title:
name: 'Title'
description: 'The title of the notification'
example: 'Greetings'
required: true
selector:
text:
message:
name: 'Message'
description: 'The body of the notification'
example: 'I am notifying you that this is a notification'
required: true
selector:
text:
multiline: true
actions:
name: 'Actions'
description: 'A list of actions for the notification'
required: false
selector:
object:
sequence:
- variables:
mod_who: >
{% set tony_notify = is_state('sensor.tony_asus_usernotification','AcceptsNotifications') %}
{% set tina_notify = is_state('sensor.xia_desktop_usernotification','AcceptsNotifications') %}
{% set kallen_notify = is_state('sensor.kallen_desktop_usernotification','AcceptsNotifications') %}
{% if who == 'tony' and not tony_notify %}
none
{% elif who == 'tina' and not tina_notify %}
none
{% elif who == 'kallen' and not kallen_notify %}
none
{% elif who == 'parents' %}
{% if tony_notify and not tina_notify %}
tony
{% elif not tony_notify and tina_notify %}
tina
{% elif not tony_notify and not tina_notify %}
none
{% else %}
parents
{% endif %}
{% elif who == 'nerds' %}
{% if tony_notify and not kallen_notify %}
tony
{% elif not tony_notify and kallen_notify %}
kallen
{% elif not tony_notify and not kallen_notify %}
none
{% else %}
nerds
{% endif %}
{% elif who == 'all' %}
{% if tony_notify %}
{% if tina_notify and not kallen_notify %}
parents
{% elif kallen_notify and not tina_notify %}
nerds
{% elif not tina_notify and not kallen_notify %}
tony
{% else %}
all
{% endif %}
{% elif tina_notify %}
{% if kallen_notify %}
not_tony
{% else %}
tina
{% endif %}
{% elif kallen_notify %}
kallen
{% else %}
none
{% endif %}
{% else %}
{{ who }}
{% endif %}
- if:
- condition: template
value_template: "{{ mod_who != 'none' and is_state('input_boolean.pc_notifications','on') }}"
then:
- service: >
{% if mod_who == 'tony' %}
notify.tony_asus
{% elif mod_who == 'tina' %}
notify.xia_desktop
{% elif mod_who == 'kallen' %}
notify.kallen_desktop
{% elif mod_who == 'parents' %}
notify.pc_parents
{% elif mod_who == 'nerds' %}
notify.pc_nerds
{% elif mod_who == 'not_tony' %}
notify.pc_not_tony
{% elif mod_who == 'all' %}
notify.pc_all
{% endif %}
data:
title: '{{ title }}'
message: '{{ message }}'
data:
actions: '{{ actions|default("{}") }}'
text_alert_image:
alias: 'Text Alert Image'
sequence:

View File

@@ -124,6 +124,8 @@ template:
state: >
{% if is_state('binary_sensor.basement_studio_motion','on') %}
true
{% elif is_state('input_boolean.recliner_mode','on') %}
true
{% elif is_state('sensor.xia_desktop_current_username','tm24f') %}
false
{% elif is_state('binary_sensor.tony_desktop_on','off') and

View File

@@ -710,33 +710,51 @@ script:
data:
option: >
{% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
{% set mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') %}
{% set aircon_run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
{% set aircon_mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
{% set heater_run_threshold = states('input_number.emma_bedroom_heater_run_threshold') | int %}
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') and is_state('input_boolean.emma_bedroom_heater_installed','off') %}
White Noise
{% elif low >= run_threshold %}
{% if low >= mode_threshold %}
{% elif low >= aircon_run_threshold and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
{% if low >= aircon_mode_threshold %}
AC
{% else %}
Fan
{% endif %}
{% elif low < heater_run_threshold and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
Heat
{% else %}
White Noise
{% endif %}
- delay:
milliseconds: 500
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.emma_bedroom_cooling
entity_id: input_datetime.emma_bedroom_climate
data:
time: >
{% set high = states('sensor.todays_high_temp') | int %}
{% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
{% if is_state('input_boolean.hot_day','on') %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% set schedmode = states('input_select.scheduled_climate_mode_emma_bedroom') %}
{% if schedmode in ['AC','Fan'] and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
{% if is_state('input_boolean.hot_day','on') %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif high >= 80 or low >= 60 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% endif %}
{% elif schedmode == 'Heat' and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
{% if low <= 20 %}
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
{% elif low <= 32 %}
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% endif %}
{% else %}
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{{ bedtime | timestamp_custom('%H:%M',false) }}
{% endif %}
- service: input_boolean.turn_on
target:

View File

@@ -142,6 +142,36 @@ template:
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_wild') }}
- name: Michigan Wolverines Hockey Inhibit
unique_id: 8ecd46d5-64c2-49f5-bc8d-d88593273d92
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.michigan_wolverines_hockey') }}
- name: Michigan Wolverines Hockey Event Today
unique_id: 551fdae5-e18c-4117-b3ba-df864068b13d
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.michigan_wolverines_hockey') }}
- name: Minnesota Golden Gophers Hockey Inhibit
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
- name: Minnesota Golden Gophers Hockey Event Today
unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_golden_gophers_hockey') }}
- name: Minnesota State Mavericks Hockey Inhibit
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
state: >
{% from 'sports.jinja' import sports_inhibit %}
{{ sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
- name: Minnesota State Mavericks Hockey Event Today
unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026
state: >
{% from 'sports.jinja' import sports_today %}
{{ sports_today('sensor.minnesota_state_mavericks_hockey') }}
intent_script:
SportsScore:

View File

@@ -92,7 +92,9 @@ template:
power_usage: "{{ states('sensor.basement_server_power') | int }}W"
- name: Tony Desktop Idle
unique_id: f0ace986-a874-4fb0-ad29-8f3ebf95d8cc
state: "{{ (states('sensor.tony_asus_system_idle_time') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}"
state: >
{% from 'time.jinja' import time_diff %}
{{ (time_diff('sensor.tony_asus_last_active') | int) > (states('input_number.basement_computers_idle_time') | int * 60) }}
- name: Tina Desktop Idle
unique_id: 1933c638-c94b-468e-bb7a-c1c5b36c3651
state: "{{ (states('sensor.xia_desktop_system_idle_time') | int) > (states('input_number.first_floor_computers_idle_time') | int * 60) }}"

View File

@@ -189,17 +189,32 @@ input_select:
sensor:
- platform: rest
name: Home Tech
unique_id: 83f76f0c-d49c-407f-ad99-57d5896dac93
method: GET
resource: 'https://api.todoist.com/sync/v9/projects/get_data'
resource: 'https://api.todoist.com/api/v1/projects/2285967948/full'
headers:
Authorization: !secret todoist_api_token
value_template: '{{ value_json.project.id }}'
json_attributes:
- project
- tasks
- sections
scan_interval: 60
- platform: rest
name: Home Tech Comments
unique_id: 93e6b1c1-8e92-423f-ad56-369e9bb86820
method: GET
resource: 'https://api.todoist.com/api/v1/comments'
params:
project_id: 2285967948
headers:
Authorization: !secret todoist_api_token
value_template: '{{value_json[''project''][''id'']}}'
Accept: application/json
value_template: '{{ value_json.results | length }}'
json_attributes:
- project
- items
scan_interval: 30
- results
scan_interval: 60
# template:
# - binary_sensor:

228
packages/tony_desktop.yaml Normal file
View File

@@ -0,0 +1,228 @@
template:
sensor:
- name: Tony Asus - Memory Used
unique_id: 5264e038-c3c2-4638-9b4e-6c4e8ba0501d
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Memory Available
unique_id: 46577cdb-5f23-413d-8b2c-8f0bc0be71d1
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Virtual Memory Used
unique_id: 1499ad78-5f13-43e5-a1e0-c321cf35c059
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_virtual_memory_used_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_virtual_memory_used_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Virtual Memory Available
unique_id: e7646bce-56fb-426f-afce-3671c1624169
unit_of_measurement: 'MB'
icon: mdi:memory
state: >
{% set sensor_gb = states('sensor.tony_asus_virtual_memory_available_gb') | float %}
{{ (sensor_gb * 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_virtual_memory_available_gb') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage C Available Free Space
unique_id: 873f0624-705d-455e-ac5c-63320b42d90d
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_c','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_c') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage C Used Space
unique_id: 772cf000-1be5-403c-aa69-c6c4250094e2
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_c','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_c') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage E Available Free Space
unique_id: 106839c5-9913-4f47-860d-fdef7e4cdd9c
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_e','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_e') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage E Used Space
unique_id: e3e2fe47-809c-4763-afa8-7664515da051
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_e','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_e') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage S Available Free Space
unique_id: 5e16e11e-c4c8-4267-8ae8-58e67e95ac77
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_s','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_s') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage S Used Space
unique_id: 01a4d7f2-ef09-4a20-a4d5-594546651e7d
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_s','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_s') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage V Available Free Space
unique_id: e5868a4e-628b-44fe-a35e-3ff4a7eceef8
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_v','AvailableSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_v') not in ['unknown', 'unavailable'] }}
- name: Tony Asus - Storage V Used Space
unique_id: 1ee34dac-0ff3-4920-b1db-79830595096b
unit_of_measurement: 'GB'
icon: mdi:harddisk
state: >
{% set sensor_mb = state_attr('sensor.tony_asus_storage_v','UsedSpaceMB') | int %}
{{ (sensor_mb / 1024) | round(0) | int }}
availability: >
{{ states('sensor.tony_asus_storage_v') not in ['unknown', 'unavailable'] }}
script:
tony_desktop_wake:
# To enable see https://www.home-assistant.io/components/wake_on_lan/
alias: "Tony Desktop - Wake"
sequence:
- service: wake_on_lan.send_magic_packet
data:
mac: "18:C0:4D:82:00:95"
tony_desktop_shutdown:
alias: "Tony Desktop - Shutdown"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/shutdown"
payload: ""
tony_desktop_suspend:
alias: "Tony Desktop - Suspend"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/suspend"
payload: ""
tony_desktop_hibernate:
alias: "Tony Desktop - Hibernate"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/hibernate"
payload: ""
tony_desktop_reboot:
alias: "Tony Desktop - Reboot"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/reboot"
payload: ""
tony_desktop_lock:
alias: "Tony Desktop - Lock"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/lock"
payload: ""
tony_desktop_logoff:
alias: "Tony Desktop - Logoff"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/logoff"
payload: ""
tony_desktop_vol_mute:
alias: "Tony Desktop - Toggle Mute"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/mute"
payload: ""
tony_desktop_vol_max:
alias: "Tony Desktop - Vol Max"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/volume/set"
payload: "100"
tony_desktop_displays_on:
alias: "Tony Desktop - Displays ON"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/on"
payload: ""
tony_desktop_displays_off:
alias: "Tony Desktop - Displays OFF"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/displays/off"
payload: ""
tony_desktop_refresh:
alias: "Tony Desktop - Refresh"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/refresh"
payload: ""
- service: button.press
target:
entity_id:
- button.tony_asus_hassagent_user_refresh
- button.tony_asus_hassagent_satellite_refresh
tony_desktop_notify:
alias: "Tony Desktop - Notify"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/notify"
payload: '{ "title": "My Notification Title", "message": "This is an example of notification using IOT Link", "launchParams": "toast://open/https://iotlink.gitlab.io" }'
tony_desktop_run_chrome:
alias: "Tony Desktop - Run Chrome"
sequence:
- service: mqtt.publish
data:
topic: "iotlink/workgroup/tony-asus/commands/run"
payload: '{ "command": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "args": "https://iotlink.gitlab.io", "path": "C:\\Program Files\\Google\\Chrome\\Application", "user": "", "visible": true, "fallback": true }'

View File

@@ -47,7 +47,6 @@ ## HACS Components
- [PyScript](https://github.com/custom-components/pyscript)
- [Hass Animated Scenes](https://github.com/chazzu/hass-animated-scenes)
- [Jokes](https://github.com/LaggAt/ha-jokes)
- [Uptime Kuma](https://github.com/meichthys/uptime_kuma)
- [Jellyfin](https://github.com/koying/jellyfin_ha)
- [Sonoff LAN](https://github.com/AlexxIT/SonoffLAN)
- [Powercalc](https://github.com/bramstroker/homeassistant-powercalc)
@@ -113,6 +112,7 @@ ## HACS Lovelace Cards
- [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card)
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
- [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro)
- [AdGuard Card](https://github.com/homeassistant-extras/adguard-card)
</details>

View File

@@ -1785,6 +1785,18 @@ tony_morning_meds:
- action: TONY_MORNING_MEDS_SKIPPED
title: Skip
action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Morning Meds
message: '{{ response.data.notification_text }}'
actions:
- action: TONY_MORNING_MEDS_TAKEN
title: Taken
- action: TONY_MORNING_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home
if:
- alias: When reminders > 2 and Tony is home
@@ -1826,6 +1838,18 @@ tony_morning_meds:
title: Skip
message: You need to take your morning meds
action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Morning Meds
message: You need to take your morning meds
actions:
- action: TONY_MORNING_MEDS_TAKEN
title: Taken
- action: TONY_MORNING_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home
if:
- alias: When reminders > 2 and Tony is home
@@ -2113,6 +2137,18 @@ tony_afternoon_meds:
- action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip
action: script.text_notify
- action: script.pc_notify
metadata: {}
data:
who: tony
title: Afternoon Meds
message: '{{ response.data.notification_text }}'
actions:
- action: TONY_AFTERNOON_MEDS_TAKEN
title: Taken
- action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip
alias: Send PC notification
- alias: Send TTS if reminders > 2 and Tony is home
if:
- alias: When reminders > 2 and Tony is home
@@ -2154,6 +2190,18 @@ tony_afternoon_meds:
title: Skip
message: You need to take your afternoon meds
action: script.text_notify
- alias: Send PC notification
action: script.pc_notify
metadata: {}
data:
who: tony
title: Afternoon Meds
message: You need to take your afternoon meds
actions:
- action: TONY_AFTERNOON_MEDS_TAKEN
title: Taken
- action: TONY_AFTERNOON_MEDS_SKIPPED
title: Skip
- alias: Send TTS if reminders > 2 and Tony is home
if:
- alias: When reminders > 2 and Tony is home
@@ -2591,27 +2639,28 @@ kallen_night_meds:
minutes: 0
seconds: 5
milliseconds: 0
- parallel:
- data:
- alias: Send text notifications
parallel:
- alias: Send to parents
data:
who: "{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}\n
\ tony\n{% else %}\n parents\n{% endif %}\n"
type: alert
title: Night Meds
message: Kallen needs to take his night meds (melatonin)
message: Kallen needs to take his night meds
tag: kallen-night-meds
actions:
- action: KALLEN_NIGHT_MEDS_TAKEN
title: Taken
- action: KALLEN_NIGHT_MEDS_SKIPPED
title: Skip
alias: Send to parents
action: script.text_notify
- alias: Send to Kallen
data:
who: kallen
type: alert
title: Night Meds
message: You need to take your night meds (melatonin)
message: You need to take your night meds
tag: kallen-night-meds
actions:
- action: KALLEN_NIGHT_MEDS_TAKEN
@@ -2619,7 +2668,6 @@ kallen_night_meds:
- action: KALLEN_NIGHT_MEDS_SKIPPED
title: Skip
action: script.text_notify
alias: Send text notifications
icon: mdi:medication
mode: restart
reset_annc_switches:
@@ -3040,14 +3088,14 @@ rabbit_hutch_cleaning:
emma_sleep:
alias: Emma Sleep
sequence:
- if:
- alias: Run scheduling if it hasn't already been run
if:
- condition: time
after: 04:00:00
after: 09:00:00
before: '17:00:00'
then:
- data: {}
action: script.emma_bedroom_scheduling_evening
alias: Run scheduling if it hasn't already been run
- target:
entity_id:
- script.emma_ibuprofen
@@ -3071,33 +3119,74 @@ emma_sleep:
option: Adaptive
alias: Set lights to adaptive
action: input_select.select_option
- if:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: White Noise
alias: Scheduled mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
then:
- target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
action: input_boolean.turn_on
- data:
who: parents
title: Emma Climate Schedule
message: White noise has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
alias: Send white noise notification
action: script.text_notify
alias: Select climate mode
- alias: Set climate mode if not already set
choose:
- conditions:
- alias: White Noise
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state: White Noise
alias: Scheduled mode is White Noise
- condition: state
entity_id: input_boolean.white_noise_emma_bedroom
state: 'off'
alias: White Noise is not already on
sequence:
- target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
action: input_boolean.turn_on
- data:
who: parents
title: Emma Climate Schedule
message: White noise has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
alias: Send white noise notification
action: script.text_notify
- conditions:
- alias: Heat
condition: and
conditions:
- condition: state
entity_id: input_select.scheduled_climate_mode_emma_bedroom
state:
- Heat
alias: Heat
sequence:
- if:
- alias: Heat is not already on
condition: state
entity_id: climate.emma_bedroom_vtherm
state:
- 'off'
then:
- alias: Send heater notification
data:
who: parents
title: Emma Climate Schedule
message: The space heater has been activated in Emma's Bedroom.
type: normal
tag: emma-climate
action: script.text_notify
alias: If heat was not already on, send notification that it has been turned
on
- action: climate.set_hvac_mode
metadata: {}
target:
entity_id: climate.emma_bedroom_vtherm
data:
hvac_mode: heat
alias: Turn on heater
- action: input_boolean.turn_on
metadata: {}
target:
entity_id: input_boolean.white_noise_emma_bedroom
data: {}
alias: Turn on white noise
icon: mdi:lightbulb-night
mode: restart
tina_morning_meds:

View File

@@ -450,18 +450,19 @@
unit_of_measurement: ''
icon: mdi:close-network-outline
state: >
{% set uptimekuma = states.binary_sensor |
selectattr('entity_id','in',integration_entities('uptime_kuma')) |
selectattr('state','eq','off') |
{% set uptimekuma = states.sensor |
selectattr('entity_id','in',integration_entities('192.168.1.111')) |
selectattr('state','eq','down') |
map(attribute='attributes.friendly_name') |
list %}
{{ uptimekuma | count | int }}
attributes:
services: >
{% set uptimekuma = states.binary_sensor |
selectattr('entity_id','in',integration_entities('uptime_kuma')) |
selectattr('state','eq','off') |
{% set uptimekuma = states.sensor |
selectattr('entity_id','in',integration_entities('192.168.1.111')) |
selectattr('state','eq','down') |
map(attribute='attributes.friendly_name') |
map('regex_replace', ' Status$', '') |
list %}
{{ uptimekuma | join(', ') }}
- name: Media Server Viewer Health

View File

@@ -73,11 +73,11 @@
{% endif %}
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %}
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %}
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
{% endif %}