What you can do is to mis-use a device tracker created for a device that doesn’t move, and update it via automation. I used a device_tracker for the dishwasher that the router created to track the location of the dog …
Actually, this doesn’t seem to work anymore, because a device_tracker cannot be updated via automation as far as I can see.
The method I have been using for years is to create mqtt device trackers and mqtt switches that use the same topic. The switches are passed to Homekit to turn on and off with automations when you leave or arrive. This removes the automations in homeassistant and if you turn on the retain it is always correct when homeassistant is rebooted. Like so: