If I may chime in here with an example of one possible use case for a contact instead of a switch.
To turn on a light at sunset, the Astro Binding sends a sunset_start update of ‘ON’ trigger to the bus, and then immediately switches it to off again. If I want to set a rule based on something to happen only when it is dark then I could create a virtual contact which is set to ‘open’ if it’s dark and ‘closed’ when sunrise receives the '‘on’ trigger. So I could test against that condition based on the state of the contact at any time.
A switch item here would not make sense because if it’s dark it’s dark, there should be no option to change it manually.
To clean it up you could use a mapping (open=‘dark’, closed=‘light’) or something like that.
Now I’m not sure if that is the best way to determine whether it is dark or light, but I hope helps