mirror of
https://github.com/RichieCahill/dotfiles.git
synced 2026-04-17 13:08:19 -04:00
140 lines
4.9 KiB
YAML
140 lines
4.9 KiB
YAML
automation:
|
|
- id: update_home_location_from_gps
|
|
alias: Update Home Location from GPS
|
|
description: Updates the Home zone location based on GPS coordinates from Modbus
|
|
trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- sensor.gps_latitude
|
|
- sensor.gps_longitude
|
|
condition:
|
|
- condition: template
|
|
value_template: >-
|
|
{% set lat = states('sensor.gps_latitude')|float(0) %}
|
|
{% set lon = states('sensor.gps_longitude')|float(0) %}
|
|
{% set fix = states('sensor.gps_fix')|int(0) %}
|
|
{{ lat != 0 and lon != 0 and fix > 0 }}
|
|
action:
|
|
- service: homeassistant.set_location
|
|
data:
|
|
latitude: "{{ states('sensor.gps_latitude') }}"
|
|
longitude: "{{ states('sensor.gps_longitude') }}"
|
|
|
|
- id: update_home_location_on_startup
|
|
alias: Update Home Location on Startup
|
|
description: Sets home location from last known GPS coordinates on HA restart
|
|
trigger:
|
|
- platform: homeassistant
|
|
event: start
|
|
condition:
|
|
- condition: template
|
|
value_template: >-
|
|
{% set lat = states('sensor.gps_latitude')|float(0) %}
|
|
{% set lon = states('sensor.gps_longitude')|float(0) %}
|
|
{{ lat != 0 and lon != 0 }}
|
|
action:
|
|
- delay:
|
|
seconds: 10
|
|
- service: homeassistant.set_location
|
|
data:
|
|
latitude: "{{ states('sensor.gps_latitude') }}"
|
|
longitude: "{{ states('sensor.gps_longitude') }}"
|
|
|
|
- id: refresh_weather_hourly
|
|
alias: Refresh Weather Hourly
|
|
description: Forces weather to refresh hourly with current GPS location
|
|
trigger:
|
|
- platform: time_pattern
|
|
hours: "/1"
|
|
condition:
|
|
- condition: state
|
|
entity_id: binary_sensor.gps_fix_available
|
|
state: "on"
|
|
action:
|
|
- service: homeassistant.update_entity
|
|
target:
|
|
entity_id: weather.home
|
|
|
|
template:
|
|
- sensor:
|
|
- name: Van Last Known Latitude
|
|
unique_id: van_last_known_latitude
|
|
unit_of_measurement: "°"
|
|
availability: >-
|
|
{{ this.state | float(none) is not none
|
|
or (states('sensor.gps_latitude') | float(none) is not none
|
|
and states('sensor.gps_fix') | int(0) > 0) }}
|
|
state: >-
|
|
{% set lat = states('sensor.gps_latitude') | float(none) %}
|
|
{% set fix = states('sensor.gps_fix') | int(0) %}
|
|
{% if lat is not none and fix > 0 %}
|
|
{{ lat }}
|
|
{% else %}
|
|
{{ this.state }}
|
|
{% endif %}
|
|
|
|
- name: Van Last Known Longitude
|
|
unique_id: van_last_known_longitude
|
|
unit_of_measurement: "°"
|
|
availability: >-
|
|
{{ this.state | float(none) is not none
|
|
or (states('sensor.gps_longitude') | float(none) is not none
|
|
and states('sensor.gps_fix') | int(0) > 0) }}
|
|
state: >-
|
|
{% set lon = states('sensor.gps_longitude') | float(none) %}
|
|
{% set fix = states('sensor.gps_fix') | int(0) %}
|
|
{% if lon is not none and fix > 0 %}
|
|
{{ lon }}
|
|
{% else %}
|
|
{{ this.state }}
|
|
{% endif %}
|
|
|
|
- name: GPS Location
|
|
unique_id: gps_location
|
|
state: >-
|
|
{% set lat = states('sensor.gps_latitude')|float(0) %}
|
|
{% set lon = states('sensor.gps_longitude')|float(0) %}
|
|
{% if lat != 0 and lon != 0 %}
|
|
{{ lat }}, {{ lon }}
|
|
{% else %}
|
|
unavailable
|
|
{% endif %}
|
|
attributes:
|
|
latitude: "{{ states('sensor.gps_latitude') }}"
|
|
longitude: "{{ states('sensor.gps_longitude') }}"
|
|
speed: "{{ states('sensor.gps_speed') }}"
|
|
course: "{{ states('sensor.gps_course') }}"
|
|
altitude: "{{ states('sensor.gps_altitude') }}"
|
|
satellites: "{{ states('sensor.gps_satellites') }}"
|
|
fix: "{{ states('sensor.gps_fix') }}"
|
|
last_updated: "{{ now().isoformat() }}"
|
|
|
|
# Weather sensors based on current GPS location
|
|
- name: Current Weather Temperature
|
|
unique_id: current_weather_temperature
|
|
unit_of_measurement: "°F"
|
|
device_class: temperature
|
|
state: "{{ state_attr('weather.home', 'temperature') }}"
|
|
|
|
- name: Current Weather Humidity
|
|
unique_id: current_weather_humidity
|
|
unit_of_measurement: "%"
|
|
device_class: humidity
|
|
state: "{{ state_attr('weather.home', 'humidity') }}"
|
|
|
|
- name: Current Weather Condition
|
|
unique_id: current_weather_condition
|
|
state: "{{ states('weather.home') }}"
|
|
|
|
- name: Current Weather Wind Speed
|
|
unique_id: current_weather_wind_speed
|
|
unit_of_measurement: "mph"
|
|
device_class: wind_speed
|
|
state: "{{ state_attr('weather.home', 'wind_speed') }}"
|
|
|
|
- binary_sensor:
|
|
- name: GPS Fix Available
|
|
unique_id: gps_fix_available
|
|
device_class: connectivity
|
|
state: "{{ states('sensor.gps_fix')|int(0) > 0 }}"
|