Thought through this some more today. I considered several approaches and settled on the approach of making local time a display artifact. All internal time will be in UTC (same as NTP servers) and adjusted for the user when viewing the time. This has a couple of implications for the pool fill controller:
- controller needs to be told the current local time shift (including DST)
- controller needs to shift all interactions with the user
- does the controller store set points in localtime or UTC?