“// only save if the value has changed
who cares if it has or has not changed – write it out. symptomatically this check would stop the change of the scale os.options. Is it possible you hit a value (response to a bad response or similar) that causes this to read as not changed and thus not written out.”
There is a particular reason why it only saves the value if it has changed: to reduce the write cycles of EEPROM. Because EEPROM has a limited number of write cycles (conservatively 100,000 but most likely around 1000,000), it needs to be factored in to avoid wearing out EEPROM too fast. So yes, it needs to be cared for.
I’ve started to debug the weather script today. There are a few things to keep in mind which may explain the discrepancy between the direct weather call result and what the firmware receives:
1) the location: because the UI/app converts location string to GPS coords, make sure that when you run the script directly, use the GPS coords (you can find this out by checking http://x.x.x.x/ja?pw=xxx where x.x.x.x is the IP address and xxx is the MD5 hash of the password). The “loc” field you see in the output is the GPS coords. I’ve done a few experiments in the past and saw that the weather output for using the GPS coords and city name (or zip code) are quite different, even though they are in roughly the same location. I will try to find out why, but it’s most likely due to the difference in the WUnderground weather data returned for GPS coords vs. location name.
2) Check the ‘last successful weather call’ time stamp and make sure it’s relatively recent. If the last successful weather call is not valid or very old, that means the controller is not receiving the weather call result correctly, and this can very well explain why the controller’s watering percentage is not changing.
3) I know this is trivial, but do make sure you’ve selected Zimmerman as the Weather Algorithm. Sometimes users may have temporarily changed it to ‘Manual’ and forgot to change it back. Then the watering percentage certainly won’t change.