github altmenorg/HAsmartirrigation v2026.9.3-beta7

pre-release2 hours ago

This is a pre-release. It comes from a review of the whole calculation and execution path: every fix below is a fault in how water is counted, when a run starts, or what a reading says, each with a test that fails without it. Two of them are serious. If you use recurring schedules, OpenWeatherMap or Pirate Weather, update.

The two serious ones

  • Recurring schedules never ran their action. Home Assistant ran the schedule's timer in a worker thread, and the action could only be started from the event loop, so it failed. The "triggered" event went out; the calculate, update or irrigate action never did, on every schedule type. The irrigate action for all zones now also goes through the same path as a start trigger, so the skip conditions, the hold-backs and direct valve control apply to it. It used to bypass all of them.
  • With OpenWeatherMap or Pirate Weather, sensor groups could swap values. Both services hand back the same cached reading to every sensor group in one update, and each group edited it before storing it. A group fed only by the service could record another group's greenhouse temperature, or lose its own temperature when that sensor was unavailable. Each group now gets its own copy. Open-Meteo was not affected.

Water counted wrong

  • The lead time was credited as water. It fills the pipe and delivers nothing, yet a whole run was credited, so every run left a small phantom surplus: 300 s of lead time at 30 mm/h is 2.5 mm the zone never received. Only the water is credited now, for direct runs, runs observed from outside, and runs resumed after a restart. With cycle and soak, each pass now gets its own lead time, since each one has to fill the pipe again.
  • A watering could be lost to a calculation running at the same moment. The calculation reads the bucket, waits for the weather service, then writes its result. A valve closing in between had its credit overwritten, and the zone watered the same deficit again. The zone is now calculated again from the new bucket when that happens.
  • Readings that arrived during a calculation were lost. The calculation marked "read up to now" after its network calls, so a reading recorded meanwhile fell between two windows, and a rain gauge's increment disappeared. The mark is now where the window actually ended.
  • A restart credited the whole downtime. A run found overdue after a restart was credited up to the maximum duration, even when a safety timer or a power cut had closed the valve. It is credited its planned pass now, unless the valve is still open.
  • A metered run on a zone set by precipitation rate was divided by an area the panel had hidden, so a drip zone was credited about ten times too little and kept being watered.
  • The observer could count a pass twice. The window that hides Smart Irrigation's own runs from the observer could expire before the last pass of a slow valve. Each pass now renews it.

Evapotranspiration

  • Forecast days used the wind at 10 m as if it were at 2 m (hourly calculation, zones looking ahead). Forecast days came out about 8% too high on a dry day.
  • The daily equation's cloudiness term was unbounded. A window with no sun gave a night with positive evapotranspiration, and polar night raised an error. It is bounded as FAO-56 and ASCE describe, as the hourly equation already was.
  • A zone looking ahead on the daily equation never had a live estimate. The estimate runs without a forecast on purpose, and the engine failed on that.

Decisions

  • A start with nothing to water reset "days since the last irrigation". With days between irrigation set, the first day with a real deficit was then vetoed, and watering slipped by several days each time. Only a start that waters something resets it now.
  • The season is the month the water was used in. A calculation just after midnight on the 1st used to apply the new month's seasonal factor to the previous day.
  • Seasonal adjustments for one zone typed as text in the action form (zones: "0") were ignored without a word. Released in beta 6, listed here for completeness.

Robustness

  • A sensor change now updates only the sensor groups that read that sensor. Every group used to be updated, and its zones recalculated, on every change of any sensor.
  • One weather-service error no longer leaves every following sensor group without its hourly reading.
  • Open-Meteo retries only when retrying can help (a timeout, a server error, a rate limit), and waits a little longer each time.

Panel and card

  • The panel really opens on Home > Info now (#871). The beta 6 change never ran: the address without a page was read as the settings page. Thanks @smoki3 for checking.
  • The dashboard card can be translated (#873). Its words were in its own code, in English and French only, and the skip reason showed as an internal id. They are in the language files now, so they appear in the existing Panel component on Hosted Weblate. The new strings are machine translations in every language: corrections from people who speak them are very welcome. Reported by @Thorsten1982.

Trying it

Enable beta versions for Smart Irrigation in HACS, update, restart. 1757 backend tests and 84 frontend tests.

Don't miss a new HAsmartirrigation release

NewReleases is sending notifications on new releases.