OpenSprinklerPro API and platform addendum
This addendum documents firmware endpoints and platform details that were added after the original 2.2.1 manual pages.
The OpenSprinklerShop firmware, including OpenSprinklerPro, uses its own firmware version numbering independent of upstream OpenSprinkler releases. Current OpenSprinklerShop firmware version: 2.4.0(228).
Platform corrections
| Endpoint | Supported platforms | Notes |
|---|---|---|
/uc, /uu, /us, /ub |
ESP32, ESP8266 | Firmware online update and full backup endpoints. Not available on OSPi/Linux builds. |
/sx |
ESP32, ESP8266, OSPi | Sensor-only configuration backup/import. Distinct from /ub. |
/jw |
ESP32, ESP8266, OSPi | Monthly water-usage data. |
/tg, /tl, /ta, /tc, /tx |
ESP32 | HTTPS certificate and ACME/Let's Encrypt management. |
/rk, /rp, /ru |
ESP32 with ENABLE_RAINMAKER |
ESP RainMaker status, provisioning and unlink/reset flows. |
/jm, /mm |
ESP32 with ENABLE_MATTER |
Matter pairing information and commissioning window. |
/bd, /bs, /bc |
ESP32 with OS_ENABLE_BLE |
BLE scan and discovered-device management. |
/ir, /iw, /zj, /zs, /zg, /zd, /zo, /zc |
ESP32-C5 with Zigbee/IEEE 802.15.4 support | Radio mode and Zigbee gateway/client endpoints. |
Online update and backup
| Endpoint | Purpose |
|---|---|
GET /uc?pw=... |
Check update manifest and report whether a newer firmware is available. |
GET /uu?pw=... |
Start firmware update. Advanced parameters can override URLs and hashes: zu, mu, fu, zs, ms; vt selects zigbee or matter. |
GET /us?pw=... |
Read update status and progress. |
GET /ub?pw=... |
Export full controller configuration for app-side backup before update. |
HTTPS certificates and ACME
| Endpoint | Purpose |
|---|---|
GET /tg?pw=... |
Read active certificate type, subject, issuer and validity. |
POST /tl?pw=... |
Upload custom PEM certificate and key. Reboot afterwards. |
GET /ta?pw=... |
Read ACME configuration and status. |
POST /tc?pw=... |
Save ACME settings and optionally request a certificate. |
GET /tx?pw=... |
Delete ACME data and return to the internal certificate. |
RainMaker and Matter
| Endpoint | Purpose |
|---|---|
GET /rk?pw=... |
Read RainMaker status. Optional reset_mapping=1 or factory_reset=1 perform maintenance actions. |
GET /rp?pw=...&uid=...&key=... |
Start RainMaker provisioning. |
GET /ru?pw=... |
Unlink RainMaker account and trigger reset/reboot behavior. |
GET /jm?pw=... |
Read Matter commissioning state, QR-code URL and manual pairing code. |
GET /mm?pw=...&t=300 |
Open Matter commissioning window; t is optional timeout in seconds, max 900. |
Water usage and sensors
| Endpoint | Purpose |
|---|---|
GET /jw?pw=... |
Read monthly water usage: pulse rate, current month and stored records. |
GET /sf?pw=... |
List supported sensor types for the current build. |
GET /sx?pw=... |
Export/import sensor configuration only. |
GET /mc, /ml, /mt |
Configure, list and discover monitor types. |
Expanded Sensor API (compatible with official firmware 2.2.1(5))
The official OpenSprinkler firmware 2.2.1(5) introduced an "Expanded Sensor" API. OpenSprinklerShop firmware 2.4.0(228) and later implements the same endpoints as a facade over its own sensor system: there is one sensor store, the upstream uuid is the OpenSprinklerShop sensor nr, and the official OpenSprinkler App as well as third-party clients written against the official API work unchanged. The OpenSprinklerShop endpoints (/sl, /sc, /so, /se, ...) continue to work on the same data.
Available on ESP32, ESP8266 and OSPi. Endpoint keys have three letters.
| Endpoint | Purpose |
|---|---|
GET /jsn?pw=... |
List sensors with the latest reading (sn[], count). Keys: uuid, name, type, unit, flag, status, interval (minutes), min, max, value, extra. |
GET /csn?pw=...&uuid=-1&type=... |
Add (uuid=-1 or sid=-1) or modify a sensor. Common parameters: name, min, max, interval, unit, flag. Type parameters: children/action (Aggregate), pin/subtype/scale/offset/points (ADS1115), action (Weather), metric (System Internal), input (Onboard Digital), ntype (type 5, see below). |
GET /dsn?pw=...&uuid=... |
Delete one sensor; uuid=-1 deletes all sensors. |
GET /jsd?pw=... |
Sensor descriptions for schema-driven editors: sensors[] (index = type), units[], enums, as, flags. |
GET /jsl?pw=... |
Sensor log: [[uuid,ts,value],...]; fmt=csv or fmt=binary; filters uuid/sid, before, after, count, cursor; page=1 enables slot pagination with the X-OS-* response headers. |
GET /dsl?pw=...&uuid=... |
Delete log records of one sensor (uuid=-1: whole log). page=1 returns the JSON progress object; the delete completes in one request (done=1). |
GET /jpa?pw=... |
Per-program weather (wa), sensor (sa) and total (ta) adjustment factors plus maxrt. |
GET /jp |
Each program entry carries the sensor adjustment object {flag,uuid,splits[]} as 8th element ({} when none). |
GET /cp?...&snadj=flag,uuid,x0,y0,... |
Set the program sensor adjustment; snadj=0,0 removes it. v is still required. |
GET /mp?...&usa=0|1 |
Manual program start with (1) or without (0) the sensor adjustment. Without usa the OpenSprinklerShop behaviour is kept and the adjustment is applied. |
Type mapping (/jsn.type, index of /jsd.sensors):
| type | Official name | OpenSprinklerShop sensors |
|---|---|---|
| 0 | Aggregate | Sensor groups MIN/MAX/AVG/SUM and the new MEDIAN (1004) / RANGE (1005). children are the group members; child scale/offset must be 1/0. |
| 1 | ADS1115 | Analog Sensor Board types (10, 11, 12 piecewise, 15-18, 30-32, 49) and OSPi ADC types (50-53). pin 1-16 = board address 0x48-0x4B x channel 0-3. Subtypes: 0 Linear, 1 Piecewise (new type 12), 10/11 SMT50, 12/13 SMT100 analog, 15 VH400, 16 THERM200, 17 AquaPlumb. scale/offset are applied after the conversion. |
| 2 | Weather | Weather service sensors (101-110); action indexes enums.WeatherAction. |
| 3 | System Internal | Free memory (metric 0), free storage (1), CPU temperature (3). |
| 4 | Onboard Digital | New type 56: debounced state of SN1 (input 0) or SN2 (input 1). |
| 5 | OpenSprinklerShop sensor | Every other type (RS485, MQTT, Zigbee, BLE, FYTA, Gardena, remote, flow meter, ...). extra.ntype is the OpenSprinklerShop type; type-specific settings are edited with /sc. |
Behavioural notes:
min/maxclamp the sensor output when they are sent with/csn(stored ascmin/cmax/clampinsensors.json);statusreports bit 3/4 when a value was clamped. Sensors created with/scare not clamped and report their natural range.intervalis in minutes; OpenSprinklerShopriis in seconds and is rounded to full minutes in/jsn.- Baked subtypes report their native unit; a different unit of the same group (e.g. Fahrenheit) is rejected because the firmware does not convert units.
- Program adjustments: a
snadjcurve with two points becomes aPROG_LINEARadjustment, a two-point step becomesPROG_DIGITAL_MIN, other curves use the new adjustment typePROG_PIECEWISE(5)./jpreports the first adjustment of a program; additional adjustments defined with/sbare still applied by the scheduler.
For the complete legacy API reference, see Firmware 2.2.1 API Reference.