It's $CURRENT_YEAR, is there a better way to have multiple weather locations yet?

I’m traveling a lot this year. Eight different cities. I have come to depend on my weather UI (see below) on a daily/weekly basis for planning what I’ll wear and what weather to prepare for. When traveling, this dashboard becomes useless because it’s only for a static location.

The old way to have multiple weather locations is very blunt: add a new integration for the lat/long of each location. Provided you only have one API key, if you do this you will hit API limits pretty quickly since a single integration is often set up to be just under the daily limit. So then you can set up multiple integrations and have all of them disabled except the one reflecting where you plan to be that day. That gets tedious fast, especially when you’re hopping around places many hours apart. It’s not like your weather integration pre-populations the API key either.

So, is there a better way? Is there any way to have my location tracked even as infrequent as once an hour, or day? Because here’s what I don’t want to do while on vacation: fiddle with HA, disabling and enabling different integrations, and switching to temporary dashboards set up for each of them. At that point I’ll just use weather.com and be upset I don’t have the nice visualizations that are so much better than any freely available commercial website’s ad-ridden site.

I know of and used below command_line approaches based on my zone.home sensor and instead you can use your device_tracker lat/lon of course. For owm you need to create an appid via your owm account (at no cost in the past, not sure anymore). You may need to alter the jq to get more/less data out, the below served me but may be incomplete for a card.

  - sensor:
        name: Weather Dynamic MetNo
        unique_id: weather_dynamic_metno
        scan_interval: 3600
        command: >
            curl "https://api.met.no/weatherapi/locationforecast/2.0?lat={{state_attr('zone.home','latitude')}}&lon={{state_attr('zone.home','longitude')}}" | jq '{ latitude: .geometry.coordinates[1], longitude: .geometry.coordinates[0], forecast: . | [ .properties.timeseries[] | {datetime: .time, temperature: .data.instant.details.air_temperature, wind_speed: .data.instant.details.wind_speed, wind_bearing: .data.instant.details.wind_from_direction , precipitation: .data.next_1_hours.details.precipitation_amount, precipitation_probability: .data.next_1_hours.details.probability_of_precipitation  }]}'
        value_template: "{{ value_json.properties.meta.updated_at }}"       
        json_attributes:
          - latitude
          - longitude
          - forecast          
          
  - sensor:
        name: Weather Dynamic OWM
        unique_id: weather_dynamic_owm
        scan_interval: 3600
        command: >
            curl                "https://api.openweathermap.org/data/3.0/weather?lat={{state_attr('zone.home','latitude')}}&lon={{state_attr('zone.home','longitude')}}&APPID=YOUR-APP-ID" | jq '{ latitude: .coord.lat, longitude: .coord.lon, temperature: .main.temp, wind_speed: .wind.speed, wind_bearing: .wind.deg, humidity: .main.humidity, datetime: .dt }'
        value_template: "{{ as_datetime(value_json.datetime) }}" 
        json_attributes:
          - latitude
          - longitude
          - humidity
          - wind_bearing
          - wind_speed
          - temperature