Announcing OpenSprinkler Firmware 2.2.1(5) and the Official Sensor Expander Release

Some projects take a weekend. Some take a summer. And some take… a little over five years. Today I’m thrilled to make two announcements at once: OpenSprinkler Firmware 2.2.1(5) is officially available, and the Sensor Expander — after a month of pre-orders — is officially shipping.

As detailed in our previous New Product Alert post, the Sensor Expander is an add-on for OpenSprinkler v3 that provides 16 channels of analog sensor input. You can plug in a variety of external sensors, such as soil-moisture, temperature, light, water-level — you name it. This allows OpenSprinkler to read, display, and log these sensors, and use them to automatically adjust programmed water times based on real-world conditions. This opens the door to more advanced irrigation applications in which watering decisions are guided by precise environmental measurements rather than simple on-or-off sensor signals.


The Backstory

What makes this release especially meaningful to me is the long journey it took to get here.

The idea for an analog sensor board based on ADS1115 goes back more than five years. You see, one long-standing limitation of OpenSprinkler has been its inability to read analog sensors. While its built-in digital sensor ports can detect binary signals (e.g. HIGH or LOW, open or closed), many environmental sensors produce a continuously varying voltage—those analog signals are essential for applications that need to measure how much moisture, light, temperature, or water is present, rather than simply whether a threshold has been crossed.

In late 2020, an idea occurred to me: OpenSprinkler’s expander port uses I²C, and many analog-to-digital converter (ADC) chips also communicate over I²C. One of the most popular choices in the maker community is the ADS1115. An expander built around that chip could give OpenSprinkler analog-input capability while still allowing Zone Expanders to share the same port.

In February 2021, I built an early prototype and demonstrated that the concept was feasible. That was in the early days of the pandemic, and I had to deal with the sudden onset of several personal issues, so unfortunately the progress on the project stalled.

Then something wonderful happened: our German distributor, Stefan Schmaltz, took my prototype and continued developing the idea. He designed his own version, implemented firmware support for it, and has sold it for the past several years as the Analog Sensor Board, or ASB. Stefan’s design repurposes the existing Zone Expander enclosure. That enclosure works nicely, but it has room for only 16 terminal ports. Including the required +5V, 3.3V, and ground terminals, the board is limited to 8 ADC input channels. Kudos to Stefan for keeping the project alive, turning the original concept into a real product, and demonstrating that there is genuine demand for analog sensor support.


From Prototype to Sensor Expander

Meanwhile, I continued sketching ideas, albeit slowly, for a more refined version. Instead of repurposing the existing Zone Expander enclosure, I envisioned a new board with its own dedicated 3D printed enclosure, and enough space for 16 ADC channels—the maximum supported by the available I²C address configurations of the ADS1115.

At the same time, I had been thinking about another recurring customer request: support for a 2-wire irrigation system in which multiple zones share the same pair of wires and are controlled through encoded signals. Such a system can greatly reduce the amount of copper wiring required for installations with many zones. With that future application in mind, I added a 1-Wire master chip to the board. It is intended to support future experimentation with 2-wire-style encoder and decoder systems, while also making it possible to interface with standard 1-Wire sensors such as the popular DS18B20 temperature sensor.

After several rounds of revisions, the hardware finally came together last year. Along the way it also went through several name changes. At first, I called it the Analog and 1-Wire Extension Board. I also considered the abbreviation OWA, for “1-Wire and Analog.” Neither name was particularly attractive or easy to understand.

Eventually—with a little help from generative AI—the obvious name emerged: Sensor Expander, a natural counterpart to the existing Zone Expander.


The Software Challenge

Finalizing the hardware was only half the story. Supporting an entirely new class of configurable, loggable, and watering-adjusting sensors required substantial changes to both the firmware and the user interface. It turned out to be a significant usability-design challenge: users needed a way to configure different sensor types, understand their readings, view historical logs, and define how each sensor should affect watering.

The software work began during the summer of last year, kick-started by my student, Andrew Friedman. Our original plan was to integrate Stefan’s OpenSprinkler ASB firmware and interface directly into the official OpenSprinkler repositories. After further consideration, we decided instead to draw on the concepts and lessons from his implementation while rewriting the firmware and user interface from scratch, to fit more naturally into the official OpenSprinkler framework.

As the summer ended, progress stalled once again while we turned our attention to several more urgent priorities: launching OpenSprinkler v3.4, in both AC and DC versions, releasing OpenGarage 2.3+, and navigating continuing supply-chain difficulties.

Then, earlier this year, we got our momentum going again—helped along in no small part by the recent leaps in generative AI and agentic coding tools, which turned many slow, repetitive firmware, interface, testing, and documentation tasks into something we could complete much more efficiently. And finish we did! During the past month, all of the final pieces came together: the Sensor Expander circuit, its dedicated 3D-printed enclosure and acrylic front cover, Firmware 2.2.1(5), the updated app/user interface, and a completely refreshed set of manuals.

From the first idea to the finished product, the journey took more than five years. It is both a genuine relief and a real thrill to finally see it cross the finish line.


What Else is New in Firmware 2.2.1(5)?

While support for the Sensor Expander is its primary addition, Firmware 2.2.1(5) also includes several other important features, performance improvements, and bug fixes.

  • Support for Up to Four Master Zones, with independent on/off timing and per-zone control over Master selection. One of OpenSprinkler’s distinguishing features has always been that Master zones are defined in software. Most sprinkler controllers provide a single dedicated Master Valve (MV) terminal. OpenSprinkler instead allows any zone to be designated as a Master. The benefit of that design is especially clear with this update: you are not restricted to one fixed Master terminal, and different zones can activate different Master valves or pumps as needed.
  • Two Additional Built-In Sensor Ports. OpenSprinkler v3.4 added the SN3 and SN4 ports, bringing the total number of built-in sensor ports to four. Firmware 2.2.1(5) enables these two additional ports, each of which can be configured independently as a rain sensor, soil-moisture sensor, or program switch.
  • Longer Watering Duration. While programmed water durations are still limited to 18 hours, after scaling by weather and sensor adjustments, the resulting runtime is allowed to exceed this limit, up to the firmware’s 7-day bound.
  • Updated Documentation: The documentation has been substantially refreshed and expanded. New and updated resources include the firmware User Manual, API doc, and dedicated user manuals for the Sensor Expander and Zone Expander respectively.
  • Performance, Reliability, and Bug Fixes. This firmware includes numerous performance and reliability improvements (e.g. more efficient memory allocation, reduced fragmentation, improved OTF library and streaming server output) as well as bug fixes (e.g. out-of-bound memory access involving parallel groups, repeated Run-Once program attribution, a potential station runtime overflow when adjustment exceeds 100%).

Firmware Update: Because this firmware is a build-number update, upgrading from any 2.2.1 (e.g. 2.2.1(4)) to 2.2.1(5) will preserve your existing settings, programs, and logs. No factory reset is needed. Regardless, we always recommend exporting a copy of your current configurations before updating, just in case a factory reset becomes necessary.

End of Support for OpenSprinkler v2.3: One important change is that Firmware 2.2.1(5) no longer supports OpenSprinkler v2.3 (the legacy AVR-based hardware model that was discontinued 10 years ago). Going forward, official firmware releases will continue to support OpenSprinkler v3 (v3.0-v3.4) as well as OSPI/Linux. For OpenSprinkler v2.3 users, Firmware 2.2.1(4) is the final supported firmware.


Where to Get Everything?

Finally, a big thank-you to Stefan Schmaltz and Andrew Friedman, whose work helped pioneer and advance this project.

Comments and feedback are always welcome.


Leave a Reply