Weather based tracker device location

This is defo overkill as there is stuff not even needed in the template but it works and other automations can be made from it. it will also work for any device tracker.

rest:
  resource_template: your api url for pirate weather /{{ state_attr('device_tracker.your tracker', 'latitude') }},{{ state_attr('device_tracker.your tracker', 'longitude') }}?units=us&exclude=minutely&exclude=alerts&extend=hourly
  scan_interval: 300
  sensor:
    - name: "name_your_sensor"
      json_attributes_path: "$.currently"
      value_template: "OK"
      json_attributes:
        - summary
        - temperature
        - precipProbability
        - precipType
        - humidity
        - cloudCover
        - nearestStormDistance
        - precipIntensity
        - windSpeed
        - visibility
        - ozone
        - windBearing
        - pressure
        - icon
        - time
    - name: "Forecast Hourly"
      json_attributes_path: "$.hourly"
      value_template: "OK"
      json_attributes:
        - summary
        - icon
        - data
    - name: "Forecast Daily"
      json_attributes_path: "$.daily"
      value_template: "OK"
      json_attributes:
        - summary
        - icon
        - data

weather:
  - platform: template
    name: "name you want for this"
    unique_id: "put here"
    attribution_template: "Powered by Pirate Weather"
    temperature_template: "{{ state_attr(sensor.name_of_your_sensor', 'temperature') }}"
    temperature_unit: "°C"
    humidity_template: "{{ state_attr(sensor.name_of_your_sensor', 'humidity')*100 | int }}"
    pressure_template: "{{ state_attr('sensor.name_of_your_sensor', 'pressure') }}"
    pressure_unit: "hPa"
    wind_speed_template: "{{ state_attr(sensor.name_of_your_sensor', 'windSpeed') | int}}"
    wind_speed_unit: "mph"
    ozone_template: "{{ state_attr('sensor.name_of_your_sensor', 'ozone') }}"
    visibility_template: "{{ state_attr('sensor.name_of_your_sensor', 'visibility') }}"
    visibility_unit: "mi"
    precipitation_unit: "in"
    condition_template: >-
      {% if state_attr('sensor.name_of_your_sensor', 'icon') == "clear-night" %}
        clear-night
      {% elif state_attr('sensor.name_of_your_sensor', 'icon') == "clear-day" %}
        sunny
      {% elif state_attr('sensor.name_of_your_sensor', 'icon') == "cloudy" %}
        cloudy
      {% elif state_attr('sensor.name_of_your_sensor', 'icon') == "fog" %}
        fog
      {% elif state_attr('sensor.name_of_your_sensor', 'icon') == "partly-cloudy-day" %}
        partlycloudy
      {% elif state_attr('sensor.name_your_sensor', 'icon') == "partly-cloudy-night" %}
        partlycloudy
      {% elif state_attr('sensor.name_your_sensor', 'icon') == "rain" %}
        rainy
      {% elif state_attr('sensor.name_your_sensor', 'icon') == "snow" %}
        snowy
      {% elif state_attr('sensor.name_your_sensor', 'icon') == "sleet" %}
        snowy        
      {% elif state_attr('sensor.name_your_sensor', 'icon') == "wind" %}
        windy                                              
      {% endif %}
    forecast_daily_template: >-
      {%set return=namespace(data=[])%}
      {%for datapoint in state_attr('sensor.forecast_daily', 'data')%}
      {% set condition=datapoint.icon%}
      {% if datapoint.icon == "clear-day" %}
      {%set condition="sunny"%}
      {% elif datapoint.icon == "partly-cloudy-day" or datapoint.icon == "partly-cloudy-night"%}
      {%set condition="partlycloudy"%}
      {% elif datapoint.icon == "rain" %}
      {%set condition="rainy"%}
      {% elif datapoint.icon == "snow" or datapoint.icon=="sleet"%}
      {%set condition="snowy"%}
      {% elif datapoint.icon == "wind" %}
      {%set condition="windy"%}                                           
      {% endif %}
      {%set returnPoint=[{'datetime':as_local(as_datetime(datapoint.time)).strftime("%Y-%m-%dT%H:%M:%S")
      ,'temperature':datapoint.temperatureHigh, 'templow':datapoint.temperatureLow, 'condition':condition,'precipitation':datapoint.precipAccumulation
      , 'wind_bearing':datapoint.windBearing, 'wind_speed':datapoint.windSpeed}]%}
      {% set return.data=return.data+returnPoint%}
      {% endfor%}
      {{return.data}}
    forecast_hourly_template: >-
      {%set return=namespace(data=[])%}
      {%for datapoint in state_attr('sensor.forecast_hourly', 'data')%}
      {% set condition=datapoint.icon%}
      {% if datapoint.icon == "clear-day" %}
      {%set condition="sunny"%}
      {% elif datapoint.icon == "partly-cloudy-day" or datapoint.icon == "partly-cloudy-night"%}
      {%set condition="partlycloudy"%}
      {% elif datapoint.icon == "rain" %}
      {%set condition="rainy"%}
      {% elif datapoint.icon == "snow" or datapoint.icon=="sleet"%}
      {%set condition="snowy"%}
      {% elif datapoint.icon == "wind" %}
      {%set condition="windy"%}                                           
      {% endif %}
      {%set returnPoint=[{'datetime':as_local(as_datetime(datapoint.time)).strftime("%Y-%m-%dT%H:%M:%S")
      ,'temperature':datapoint.temperature,'condition':condition,'precipitation':datapoint.precipAccumulation
      , 'wind_bearing':datapoint.windBearing, 'wind_speed':datapoint.windSpeed}]%}
      {% set return.data=return.data+returnPoint%}
      {% endfor%}
      {{return.data}}