mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-11-30 18:11:45 +00:00
Compare commits
13 Commits
98bf394711
...
2b40fff745
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b40fff745 | ||
|
|
8bcde4e526 | ||
|
|
36dbd87626 | ||
|
|
6615179da5 | ||
|
|
bf972d7d73 | ||
|
|
830322c40f | ||
|
|
cf5af8efae | ||
|
|
f4e354bae0 | ||
|
|
cd4b8ab19f | ||
|
|
64d9e6c6ac | ||
|
|
aa18331b51 | ||
|
|
b1b24e8372 | ||
|
|
a374953dd5 |
@@ -49,6 +49,11 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this
|
||||
| [hass_agent_homepc.yaml](hass_agent_homepc.yaml) | Mirrors PC lock/unlock state from HASS.Agent to the office lamp for instant desk presence cues. | `sensor.carlo_homepc_carlo_homepc_sessionstate`, `switch.office_lamp_switch` |
|
||||
| [finance.yaml](finance.yaml) | Yahoo Finance sensor bundle for portfolio glances and Lovelace cards. | `sensor.tsla`, `sensor.aapl`, `sensor.amzn`, `sensor.msft` |
|
||||
|
||||
### Nest climate control
|
||||
- Logic lives in [climate.yaml](climate.yaml) and centralizes downstairs/upstairs Nest schedules, grid-aware guardrails, humidity pulses, and presence/weather-based targets.
|
||||
- Shared script keeps targets consistent: away → eco, home + >92°F → 78°F, home default → 80°F. Grid-down conditions pause non-essential cool-downs.
|
||||

|
||||
|
||||
### Blog & video deep dives
|
||||
When a package has a dedicated blog post or video, I link it right inside the YAML comments. Here are the same references for quick browsing:
|
||||
|
||||
@@ -75,6 +80,7 @@ These are the devices that power the packages above. Affiliate links never chang
|
||||
| Phyn Plus water shutoff | [phynplus.yaml](phynplus.yaml) | Leak events trigger valve closes + critical push notifications. | [](https://amzn.to/2Zy3sbJ) |
|
||||
| Rachio sprinkler controller | [rachio.yaml](rachio.yaml) | Rain skips and seasonal watering adjustments happen automatically. | [](https://amzn.to/2eoPKBW) |
|
||||
| Tesla Powerwall 2 | [powerwall.yaml](powerwall.yaml) | Grid outages kick off load-shed scripts and status pings. | [](https://amzn.to/3UM4BZ5) |
|
||||
| Google Nest thermostat | [climate.yaml](climate.yaml) | Presence/weather/grid-aware cooling targets, humidity pulses, and eco recovery. | [](https://amzn.to/4olpINw) |
|
||||
| Dreame/Neato vacuum | [vacuum.yaml](vacuum.yaml) | Scheduled cleaning, maintenance reminders, and voice callouts. | [](https://amzn.to/4f7NpFP) |
|
||||
| NodeMCU motion/contact sensor | [alarm.yaml](alarm.yaml), [office_motion.yaml](office_motion.yaml) | ESP8266 nodes feed the alarm matrix and room-aware lighting. | [](https://amzn.to/2oUgj5i) |
|
||||
| Roku streaming device | [roku.yaml](roku.yaml) | Media presence drives lighting, announcements, and scenes. | [](https://amzn.to/2Ctp8cr) |
|
||||
|
||||
@@ -2,6 +2,38 @@
|
||||
## AC related automations
|
||||
## For more info visit https://www.vcloudinfo.com/click-here
|
||||
## Contact: @CCOSTAN
|
||||
# --------------------------------------------------------------
|
||||
# Entity reference and attribute summaries:
|
||||
#
|
||||
# Entity ID: climate.downstairs
|
||||
# Supported hvac_modes: heat, cool, heat_cool, off
|
||||
# Supported fan_modes: on, off
|
||||
# Supported preset_modes: none, eco
|
||||
# Supported temperature range: 50°F (min_temp) – 90°F (max_temp)
|
||||
#
|
||||
# Current state (example):
|
||||
# current_temperature: 77
|
||||
# temperature: 83
|
||||
# target_temp_high: null
|
||||
# target_temp_low: null
|
||||
# current_humidity: 58
|
||||
# fan_mode: off
|
||||
# hvac_action: idle
|
||||
# preset_mode: none
|
||||
# Supported features: 411
|
||||
# --------------------------------------------------------------
|
||||
# Entity ID: climate.upstairs
|
||||
# Supported hvac_modes: off, heat, cool, heat_cool
|
||||
# Supported temperature range: 50°F (min_temp) – 90°F (max_temp)
|
||||
#
|
||||
# Current state (example):
|
||||
# current_temperature: 76
|
||||
# temperature: 78
|
||||
# target_temp_high: null
|
||||
# target_temp_low: null
|
||||
# friendly_name: Upstairs
|
||||
# Supported features: 387
|
||||
|
||||
######################################################################
|
||||
|
||||
input_datetime:
|
||||
@@ -86,6 +118,57 @@ script:
|
||||
target:
|
||||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||||
|
||||
set_downstairs_target_temp_based_on_conditions:
|
||||
alias: Set Downstairs Target Temperature Based on Conditions
|
||||
mode: single
|
||||
sequence:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'not_home'
|
||||
sequence:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'eco'
|
||||
- conditions:
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.pirateweather_temperature
|
||||
above: 92
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
hvac_mode: cool
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 78
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
hvac_mode: cool
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 80
|
||||
|
||||
##############################################################################
|
||||
### AUTOMATIONS - Thermostat schedules, guardrails, and presence/weather logic
|
||||
### Some shutoff automations are also in the ALARM.yaml package when windows/doors are left open.
|
||||
### There are also some automations in the POWERWALL.yaml package when the grid is down.
|
||||
##############################################################################
|
||||
automation:
|
||||
- alias: Notify Downstairs Filter Change Due
|
||||
description: Notify when downstairs runtime exceeds threshold since last filter change
|
||||
@@ -146,20 +229,20 @@ automation:
|
||||
entity_id: climate.upstairs
|
||||
attribute: temperature
|
||||
below: 76
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
action:
|
||||
- delay: "00:03:00"
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 77
|
||||
temperature: 78
|
||||
|
||||
- alias: Set Downstairs Nest to 76 When both in bed
|
||||
id: set_downstairs_nest_76_both_in_bed
|
||||
- alias: Set Downstairs to 77 When Both in Bed
|
||||
id: set_downstairs_nest_77_both_in_bed
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
above: 76
|
||||
- platform: state
|
||||
entity_id: group.bed
|
||||
to: 'on'
|
||||
@@ -172,13 +255,9 @@ automation:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
state: 'on'
|
||||
- condition: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
above: 76
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.pirateweather_temperature
|
||||
above: 88
|
||||
- condition: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'below_horizon'
|
||||
@@ -186,35 +265,41 @@ automation:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 76
|
||||
- alias: 'Set Downstairs Thermostat to 80 During Daylight'
|
||||
id: set_downstairs_thermostat_80_daylight
|
||||
temperature: 77
|
||||
|
||||
- alias: 'Set Downstairs Thermostat Daytime Target'
|
||||
id: set_downstairs_thermostat_daytime_target
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sun.sun
|
||||
to: 'above_horizon'
|
||||
- platform: time
|
||||
at: "08:00:00"
|
||||
- platform: numeric_state
|
||||
entity_id: climate.downstairs
|
||||
attribute: temperature
|
||||
below: 79
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'above_horizon'
|
||||
- condition: template
|
||||
value_template: "{{ state_attr('climate.downstairs', 'temperature') < 79 }}"
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.pirateweather_temperature
|
||||
above: 80
|
||||
above: 92
|
||||
- platform: state
|
||||
entity_id: group.family
|
||||
to: 'home'
|
||||
condition:
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'above_horizon'
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
action:
|
||||
- service: climate.set_temperature
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 80
|
||||
hvac_mode: cool
|
||||
- service: script.set_downstairs_target_temp_based_on_conditions
|
||||
|
||||
# Set thermostats to eco mode when everyone is away
|
||||
- alias: 'Set Thermostats to Eco When Away'
|
||||
@@ -236,10 +321,14 @@ automation:
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'eco'
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
hvac_mode: cool
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 84
|
||||
temperature: 83
|
||||
|
||||
# Automation: Set Thermostats Back to Cool Mode
|
||||
- alias: 'Set Thermostats to Cool When Home'
|
||||
@@ -249,38 +338,92 @@ automation:
|
||||
- platform: state
|
||||
entity_id: group.family
|
||||
to: 'home'
|
||||
- platform: state
|
||||
entity_id: person.justin
|
||||
to: 'home'
|
||||
condition:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
- condition: state
|
||||
entity_id: person.justin
|
||||
state: 'home'
|
||||
- condition: state
|
||||
entity_id: input_boolean.guest_mode
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'home'
|
||||
sequence:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'none'
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: person.justin
|
||||
state: 'home'
|
||||
sequence:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 80
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'none'
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
hvac_mode: cool
|
||||
- service: script.set_downstairs_target_temp_based_on_conditions
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 82
|
||||
|
||||
- alias: 'Reset Upstairs to 82 Each Night'
|
||||
id: reset_upstairs_thermostat_nightly_82
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: time
|
||||
at: "03:00:00"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
action:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
hvac_mode: cool
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.upstairs
|
||||
temperature: 82
|
||||
|
||||
- alias: 'Humidity Control'
|
||||
id: AC_Humidity_Control
|
||||
mode: single
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.downstairs_humidity
|
||||
above: 60
|
||||
- platform: time
|
||||
at: "02:00:00"
|
||||
condition:
|
||||
- condition: time
|
||||
after: "01:00:00"
|
||||
before: "08:00:00"
|
||||
- condition: numeric_state
|
||||
entity_id: sensor.downstairs_humidity
|
||||
above: 60
|
||||
- condition: template #Only needed in the winter months
|
||||
value_template: "{{ now().month in [10, 11, 12, 1, 2, 3] }}"
|
||||
- condition: template # Only run if AC is idle (prevents fighting other automations)
|
||||
value_template: "{{ state_attr('climate.downstairs', 'hvac_action') == 'idle' }}"
|
||||
- condition: state # Never run if the grid is down and running on powerwall.
|
||||
entity_id: binary_sensor.powerwall_grid_status
|
||||
state: 'on'
|
||||
action:
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
preset_mode: 'none'
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
hvac_mode: cool
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
entity_id: climate.downstairs
|
||||
temperature: 77
|
||||
- delay: "00:20:00"
|
||||
- service: script.set_downstairs_target_temp_based_on_conditions
|
||||
- delay: "02:00:00" # stops it from being triggered again too soon.
|
||||
|
||||
|
||||
@@ -5,8 +5,36 @@
|
||||
# Read more about this on https://www.vcloudinfo.com
|
||||
# Tesla Powerwall added via UI Integration
|
||||
# Tesla Powerwall Monitoring #272
|
||||
######################################################################################################
|
||||
|
||||
######################################################################
|
||||
# --------------------------------------------------------------
|
||||
# Binary Sensors:
|
||||
# - binary_sensor.powerwall_charging ............. battery_charging (on=charging)
|
||||
# - binary_sensor.powerwall_connected_to_tesla ... connectivity (on=connected)
|
||||
# - binary_sensor.powerwall_grid_services_active .. power (on=active)
|
||||
# - binary_sensor.powerwall_grid_status .......... power (on=grid up)
|
||||
# - binary_sensor.powerwall_status ............... power (on=system ok)
|
||||
#
|
||||
# Power & Energy Sensors:
|
||||
# - sensor.powerwall_charge ...................... battery %, 0–100
|
||||
# - sensor.powerwall_backup_reserve .............. reserve %, 0–100
|
||||
# - sensor.powerwall_battery_power ............... kW (+discharge / -charge)
|
||||
# - sensor.powerwall_load_power .................. kW house load
|
||||
# - sensor.powerwall_site_power .................. kW (+export / -import)
|
||||
# - sensor.powerwall_solar_power ................. kW solar production
|
||||
#
|
||||
# Lifetime kWh Meters:
|
||||
# - sensor.powerwall_battery_export .............. kWh → grid/load
|
||||
# - sensor.powerwall_battery_import .............. kWh ← battery charged
|
||||
# - sensor.powerwall_load_export ................. kWh exported from loads
|
||||
# - sensor.powerwall_load_import ................. kWh imported to loads
|
||||
# - sensor.powerwall_site_export ................. kWh site → grid
|
||||
# - sensor.powerwall_site_import ................. kWh site ← grid
|
||||
# - sensor.powerwall_solar_export ................ kWh solar → site/battery/grid
|
||||
# - sensor.powerwall_solar_import ................ kWh solar ← grid (rare)
|
||||
#
|
||||
# Switches:
|
||||
# - switch.powerwall_off_grid_operation .......... island mode toggle
|
||||
######################################################################
|
||||
|
||||
#-------------------------------------------
|
||||
automation:
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.5 MiB |
@@ -1,13 +1,13 @@
|
||||
<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="iRWLA" x2="0" y2="100%">
|
||||
<linearGradient id="wBAbg" x2="0" y2="100%">
|
||||
<stop offset="0" stop-opacity=".1" stop-color="#EEE"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="xpqTI"><rect width="685" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#xpqTI)">
|
||||
<mask id="NwYIs"><rect width="685" height="200" rx="30" fill="#FFF"/></mask>
|
||||
<g mask="url(#NwYIs)">
|
||||
<rect width="685" height="200" fill="#08C" x="0"/>
|
||||
<rect width="685" height="200" fill="url(#iRWLA)"/>
|
||||
<rect width="685" height="200" fill="url(#wBAbg)"/>
|
||||
</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>
|
||||
|
||||
|
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 815 B |
Reference in New Issue
Block a user