Releases: OpenSprinkler/OpenSprinkler-Firmware
2.2.1(0)
IMPORTANT REMINDER: this is a major firmware revision. Update firmware across major revisions will trigger a factory reset, including resetting WiFi configurations. Before proceeding, please export a copy of your current configurations, so you can recover them later after the firmware update.
Major Changes
This firmware focuses on cloud connection support and integration features. Specifically:
OpenThings Cloud (OTC) is now supported for all of OpenSprinkler 3.x and Linux-based systems such as OpenSprinkler Pi (OSPi). Previously it was only available for 3.x. OTC allows remote access via the OpenThings cloud server. It eliminates the need for port forwarding. The OTC library and server proxy have been updated substantially to handle fragmentation, which in turn lowers the memory footprint and allows for larger data transfer.
HTTPs station and Remote station (OTC). Two special station types leveraging SSL connection have been added. The first is HTTPs station: it's similar to the previous HTTP station but is can connect to secure servers. The second is remote station (OTC): it's is similar to the previous remote station specified by IP address, but allows remote controllers specified by OTC tokens. This makes it easy for the master controller to manage remote controllers on different WiFi / LAN networks, without needing port forwarding.
Email notification support. This firmware can send email notifications on selected events, by using a user-specified SMTP server and authentication data. It's implemented to address the issue that IFTTT now requires a paid subscription plan to use the Webhooks feature. In contrast, the Email notification is free and does not require a paid plan.
MQTT has been extended to support subscribing, as well as customizing publishing and subscribing topics. Subscribing allows the firmware to receive command from a MQTT client to trigger certain actions such as starting a zone, starting a program, rebooting the controller.
Detailed instructions on how to use these new features can be found at the support articles on https://support.opensprinkler.com
Other Changes / Bug Fixes
- #280 -- support for new GPIO controls on Raspbian Bookworm and RPi 5.
- #287 -- fix use-after-free issue when using custom NTP server.
- #237 -- program interval division by zero issue.
- For OS 3.x: a new option to keep the controller in wired Ethernet mode and not revert back to WiFi.
- The character limits on MQTT settings, such as the user name and password, have been increased.
- The event when a master zone is turned on has been added to MQTT, IFTTT, and Email notifications.
- Added /db endpoint for Linux
- Reduced etherport poll timeout to improve flow sensor accuracy (issue #261).
- Firmware builds are available on github upon release.
- OpenSprinkler for docker is automatically built in the github container repository (#262).
- Fixed port not being set correctly (#281)
New Contributors
- @developer79433 made their first contribution in #262
- @arfrie22 made their first contribution in #277
- @os04 made their first contribution in #287
- @ppetru made their first contribution in #237
Full Changelog: 220(3)...221(0)
2.2.0(3)
This is a minor revision. It adds support for OpenSprinkler hardware revision 3.3 that uses W5500 wired Ethernet module. The firmware supports both ENC28J60 and W5500 modules. It fixed a rain delay display issue on arm64, and it also adds the std=c++14 flag for the firmware to build correctly on most recent Raspbian.
2.2.0(2)
2.2.0(1)
IMPORTANT REMINDER: this is a major firmware revision. Update firmware from any previous version to this version will trigger a factory reset, including resetting Wifi settings. Before proceeding to update firmware, it's always a good idea to export your current configurations to a file so you can recover your programs and settings later. Also, for this firmware (2.2.0) we've made a new video tutorial (the third video on the page).
For OpenSprinkler 3.x only
Support for OpenThings Cloud (OTC) connection: this allows remote access without the need of setting up port forwarding.
Updated ESP8266 core library to version 3.0.2: the adoption of ESP8266 WiFi Core 3.0.2 and lwip as wired Ethernet library. This unified the handling of WiFi and wired Ethernet. Over the air (OTA) firmware update is now supported under either WiFi or wired Ethernet (previously it's only supported under WiFi).
For All of OpenSprinkler 2.3, 3.x and OpenSprinkler Pi (and Linux-based systems)
Support for Sequential Groups: this generalizes and replaces the previous per-zone sequential attribute. Zones in the same sequential group are automatically serialized, while zones in different groups can run simultaneously. Any zone in the parallel group can run simultaneously with any other zones.
Support for setting a date range for each program: each program can specify start and end dates. For example, you can set a program to run from May 15 to Sep 15 only, or from Nov 10 to Feb 20 the following year.
Support for pausing stations: you can pause station runs for a specified amount of time. During pausing, zones and programs will stop until the pause timer counts down to 0. The pause can be canceled (i.e. stations resumed) at any time.
Shift zones forward: when a zone is manually turned off, you can choose to shift the start times of all remaining zones in the same sequential group forward. This way, the next zone waiting to run can start immediately instead of waiting for its originally scheduled start time.
Negative master on adjustment and positive master off adjustment: this firmware also supports a negative master on adjustment time, as well as a positive master off adjustment time. Previously the master on adjustment must be positive, and off adjustment must be negative. The new feature allows a master zone to turn on before an associate zone turns on, or turn off after an associated zone has turned off.
Support for device name: a custom device name can be configured and included in all IFTTT notifications, to help distinguish between multiple OpenSprinkler devices.
Support for Monthly water adjustment: this firmware also added a new water adjustment method -- Monthly adjustment, which is similar to manual adjustment but allows you to set a different watering percentage value per month.
2.1.9(11)
This minor revision fixes the following issues:
- Improve send_http_request function to accommodate larger incoming packet. Previously incoming packet larger than 512 bytes is not handled correctly, which may affect weather query result.
- For OS 3.x using wired Ethernet and OS 2.3, replace EthernetENC library by UIPEthernet, which has more recent updates and fixes.
- For OSPi, replace wiringPi (now deprecated) by raspi-gpio (available on the latest Raspbian). This is used to enable internal pull-ups on sensor pins.
2.1.9(9)
IMPORTANT REMINDER: firmware update across major revisions (e.g. from 2.1.8(x) to 2.1.9(x)) will trigger a factory reset, including resetting Wifi settings. However, firmware update across minor revisions (e.g. from 2.1.9(x) to 2.1.9(x)) does not trigger a factory reset. Before proceeding to update firmware, it's always a good idea to export your configurations to a file so you can recover your programs and settings later.
Main changes:
-
Support for OpenSprinkler Latch 3.2
-
Changed wired Ethernet to use the new EthernetENC library (https://github.com/jandrassy/EthernetENC), replacing the previous UIPEthernet library. EthernetENC library has a few major bug fixes, which hopefully improves the wired Ethernet functions.
-
Improves NTC sync by using multiple NTP servers and cycle through them if one is not available. Also improves handling of RTC in case RTC doesn't exist or doesn't work.
-
Improves factory reset function for OS 3.0, forcing flash reformat in the case of flash corruption.
-
Allows program's interval day to be as small as 1 (previously the minimum is 2).
-
Support for using a program to trigger controller reboot on a regular basis. A program with name :>reboot will trigger a reboot when the controller is idle (i.e. no program is running). A program with name :>reboot_now will trigger a reboot regardless of its running status. Both reboot will be delayed by 1 minute or so from the start time to avoid the action triggered again right after rebooting. As an example: create a program that starts every day at 2:00am with name :>reboot will trigger a reboot every day at 2am. When creating the program, at least one zone must be selected to run but it will be ignored because the firmware recognizes the special program name and does not actually run any zone included in this program.
2.1.8
IMPORTANT REMINDER: firmware update will trigger a factory reset. Before proceeding to update firmware, please export your configurations to a file so you can recover your programs and settings later. In addition, for OS 3.0, the WiFi settings will be erased too, so after firmware update, please follow the OS 3.0 Getting Started Guide to repeat the WiFi settings steps.
NOTE: This firmware only affects OS 3.0 (and OSPi whereas specified below). It does NOT affect OS 2.x controllers. OSPi users should ONLY update if you need larger number of expanded zones or programs; otherwise we recommend you NOT to upgrade.
Main changes:
-
Compiled OS 3.0 firmware with ESP8266 Arduino Core 2.4.1, 4M3M flash profile (increasing capacity for logging file to 3M from the original 1M), 160MHz CPU frequency and 80MHz flash frequency (both doubling the previous firmware).
-
Added support for OS 3.0 hardware revision 1 and expander revision 1. Hardware revision 1 uses white injection molded enclosure, and circuit-wise primarily involves changing IO expander chip to PCA9555 (from PCF8575 previously), as PCA9555 has higher current sourcing ability, eliminating the need of PNP transistor per zone. Revision 1 expander requires firmware support, which is addressed by this firmware.
-
Added support for OS 3.0 AP mode operations -- all firmware features are now supported under AP mode, without requiring external WiFi router.
-
For OS 3.0 and OSPi, increased maximum number of zones to 72 (from 56 previously), and maximum number of programs to 35 (from 17 previously).
Minor changes and bug fixes:
-
Improved WiFi setup process: once it's connected to WiFi router, it automatically saves the configurations and reboots (previously it had to wait to report to UI).
-
Added suport to reset OS 3.0 to AP mode while preserving programs and settings: either by using buttons (B3+B2), or through HTTP API.
-
Bug fix: buffer overflow issue in view logs.
2.1.7
Main changes:
- Program water time now supports full precision down to seconds, from 0 to 64800 (18 hours). Previous firmware uses a compression method to nonlinearly scale the water time, that limitation has been removed in this version.
- To make space for the increased program data, the maximum number of programs has been reduced to 17 for OS 2.3 and all Linux-based OpenSprinkler (e.g. OSPi), and to 8 for OS 2.0, 2.1 and 2.2. Users with a large number of programs should take this into account when deciding to upgrade firmware.
- Added push notification support using IFTTT. Please check firmware 2.1.7 user manual and support articles at www.opensprinkler.com for details. This feature is only available for OS 2.3 and Linux-based OpenSprinkler.
- Added support for GPIO station and HTTP station for OS 2.3 (this has been previously available only for OSPi).
- Added an additional type of sensor: Program Switch. This allows connecting a switch / button to the sensor port and use it to trigger Program 1.
- Added HTTP GET API to start a specific program (see 2.1.7 API document for details).
Minor changes and bug fixes:
- Integrated Robert Hillman's implementation of flow sensor to log flow rate after each station run.
- Added support for custom DNS (available when DHCP is turned off).
- Added new option to enable/disable special station auto-refresh.
- The range of station delay time is now -600 to 600 seconds (in steps of 5 seconds).
- The range of master-on adjusted time is now 0 to 600 seconds (in steps of 5 seconds).
- The range of master-off adjusted time is now -600 to 0 seconds (in steps of 5 seconds). Because the scheduler does not allow a positive master-off adjustment, this parameter can only be negative or 0.
- Enables LCD backlight to stay on (by setting a non-zero idle brightness).
- Allows weather checking when program is running.
- Made the firmware code compilable with Arduino 1.6.9.
2.1.6
Major changes:
- Improved run-time scheduling algorithm.
- Added support to allow program's repeating start times to go over to the next day.
- Added flow sensor support. NOTE: only dry contact flow sensors (two wires) are supported.
- Details: to use a flow sensor, wire it up to the rain sensor port, and in Edit Options -> Weather and Sensors, select the sensor type to 'Flow'. Then specify the flow pulse rate (i.e. volume per click). Once flow sensor is enabled, the UI/app will display real-time flow rate, and the flow count will be logged at the end of each program run. The LCD will display a FL icon.
- Added support for 'remote stations'.
- Details: this allows a master controller to send commands to remote controllers to turn on their valves. Each remote station is specified by the IP, port number, and station index on the remote controller. The master controller and remote controllers must have the same password. Remote controller should be set in 'remote extension' mode (the UI/app will automatically prompt you to enable this mode when adding a remote station).
- Fine tuned RF station signal timing, and improved its support on OSPi/OSBo.
- Remote and RF stations are now part of 'Special Station Data' attributes, which are stored onto the microSD card.
- Support for longer names, more stations and programs on OpenSprinkler 2.3, OSPi and OSBo.
- Maximum number of stations: 56 (previously 48)
- Maximum station name length: 24 (previously 16)
- Maximum program name length: 20 (previously 12)
- Maximum number of programs: 28 (previously 14)
- For OpenSprinkler 2.0/2.1/2.2, these numbers remain the same as previously.
- Added support to change weather script url in /su page.
- Added support for /ja, which outputs the combined JSON data of /jc, /jn, /jp, /js, /jo.
- Fixed negative duration time in some log records.
OSPi/OSBo/Linux:
- Added support for auto-update, which allows updating the firmware through the UI/app.
- Added support to store all data files in the executable program's path
Special Notes for OpenSprinkler 2.1:
- For OpenSprinkler 2.1, this firmware can no longer be uploaded through the USB port, due to the size of the bootloader. To upload this firmware to OpenSprinkler 2.1, you will have to use an external programmer (e.g. USBasp, USBtiny).
2.1.5
Bug fixing:
- Fixed a major DHCP bug that causes repeated dhcp requests when leaseTime is infinity.
- Fixed a bug that causes the controller to get stuck in 'Connecting...' when the last successful weather call expires.
- Fixed a bug that causes master station to not run when rain sensing or rain delay is in effect.
New features:
- Added support for changing parameter weights in the Zimmerman algorithm (requires microSD card and app 1.4.4)
- Added support for DC powered OpenSprinkler (with built-in boost converter)
- Added support for I2C LCD (to be used with future OpenSprinkler hardware)
- Added firmware minor version number
- Added support to display hardware version and type on start-up