Let me correct Samer’s reply: the firmware technically can update weather data while running a program — this actually has nothing to do with the controller running single-task at a time, because it can alternate between tasks giving the illusion it’s doing multiple tasks at the same time.
I made the conscious decision to not update while a programming is running for two reasons: for one, currently the weather call returns time zone data and weather data in one packet, if the time zone changes (though this is a very small probability event), it can mess up the total run-time (imagine a program is running while the clock suddenly changes); for the other, if the watering percentage changes while a program is running, it can cause confusion (for example, if the percentage changes to 0, should the currently running program be terminated or not?) Also, most controller that use weather data do not update more than once every day. The fact that we are updating every hour is already much more frequent than usually done.
It’s very easy to change this. In the firmware code, the following line:
just remove the “|| os.status.program_busy” part. If you don’t want to compile the firmware yourself, we can send you a compiled firmware and you can upload it to your controller.
To answer your other question: the weather call is by default updated once every hour
If you have a long running non-sequential station (i.e. lighting), one work-around is to break it up into multiple shorter runs. For example, you can utilize the program’s ‘repeating start time’ feature to break a long session, say 18 hours, into 6 sessions of 3 hours each. This way, at the end of each session it gives the firmware a chance to perform weather call.