Having recently gone through setting up my first Rachio two days ago and seeing how it reacted on its first watering event I thought I'd toss this out there. I apologize in advance for making assumptions which are wildly inaccurate or just plain false. Irrigation is not my day job nor did I stay at a Holiday Inn Express last night.
Visually it would appear to suggest a new Rachio unit assumes 0% moisture levels out of the box. My unit shows no moisture/precipitation data before the day Rachio was setup, which could at least partially be pulled in from my chosen weather station's observation history. This seems to result in potentially heavy initial watering unless the user is educated enough to go to their zones and fill/drain the water level to where they think it is at the moment Rachio is taking over management responsibility. A guy like me won't know what to set those to, so I leave the defaults and we go into saturation mode upon first watering event. If my yard was already soggy from heavy rains or adequately filled from a previous irrigation controller, wouldn't that set the standard water level too high and then never recover to true 0 as our 0 mark is skewed to begin with? I'm totally theorizing here and have zero to back it up with.
If an accurate (huge IF) assessment then we have...
Problem Statement: Initial moisture level calculations may be inaccurate due to lack of previous data accountability. Thus the value of 0% may be improperly standardized for all future watering events.
Goal: Derive a slightly more accurate initial moisture level to prevent our 0% mark from being inaccurate.
A possible OOBE routine, way over-simplified, and could be skipped if the user wishes to.
During setup ask the user if they are replacing an existing irrigation controller.
If yes, go to $ReplacingController
If no, go to $FirstWater.
$ReplacingController: Ask user if their existing controller was already watering this season.
If yes, go to $NotFirstWater
If no, go to $FirstWater
$FirstWater: Ask the user to choose a weather station, and pull X days/weeks of observed weather data. Then, ask user if the weather data pulled in looks about right to what they observed on their own. If Yes, attempt to set moisture level based on historical precipitation and current zone definitions. If No, maybe try another station or skip allow user to skip this routine entirely and set moisture level to 0%.
$NotFirstWater: Ask use if previous controller was a "smart" controller with accessible watering history.
If yes, go to $OnboardingFromSmart
If no, go to $OnboardingFromStandard
$OnboardingFromSmart: First confirm zone config is the same as previous controller. If no, provide the customer a chance to map zones to zones in case they changed their zone numbers when moving to Rachio. Then, if possible provide a way for to log into that provider's history similar to how Rachio has API token access. Suck in their previous watering history, combine it with X days/weeks of historical weather history from chosen weather station. Attempt to set moisture % based on that data. Go to $Profit.
$OnboardingFromStandard: First confirm if zone config is the same as previous controller. If no, provide the customer a chance to map zones to zones in case they changed their zone numbers when moving to Rachio. Then, ask user to enter their previous watering schedule if known from the previous X days/weeks. Use this information and combine it with X days/weeks of historical weather history from chosen weather station. Attempt to set moisture % based on that data. Go to $Profit.
$Profit: Awwwww yeah, no soggy yard and a possibly more accurately standardized 0% mark!!