I have thought of another way of looking at it, and have come up with a much simpler solution.
As I mentioned, you won’t be able to find a real location with 18 hrs for summer and 12 for winter. But there is another way to use alternate locations.
Subtract your desired winter hrs from you summer hours. For the 18/12 summer/winter sample, you get 6.
Find a location that has that number of hours difference between the summer/winter times.
A location with 6 hrs will have around 15/9 summer/winter hours. (The times are always somewhat centered around 12 hours.)
Use the Node Red program or a weather forecast app to get times for that location.
Then use delays or offsets to get the times you want. To get 18/12 from a 15/9 location you would need to add 3 hours all year.
In your case, to get an 18/12 combination, you don’t even need a fake location.
According to that timeanddate site I mentioned before, Springfield Oregon’s longest day is 15 hrs 30 minutes, the shortest day is 8 hrs 53 minutes.
Add 3 hours to both of those and you get 18:30 for max summer daylength and 11:53 for minimum winter daylength. Very close to what you were looking for. And this will give a natural gradual change from winter to summer.
Here is a Rule Machine rule to do that:
Trigger:
When time is Sunrise - 180 minutes
Actions:
On: plantlights
Wait for events: When time is Sunset + 180 minutes
Off: plantlights
That’s all you need, using your own location.