REST API
The bridge serves a JSON API on your network, with natural units: temperatures in °C, power in percent, readable mode names. No key, no account.
Endpoints
Click an endpoint or a method for its details in the API reference.
| Endpoint | Method | Purpose |
|---|---|---|
/api/state | GET | Everything at once: bridge, stove, sensors, controls, link diagnostics |
/api/controls | GET POST | Read or change the settings (partial updates accepted) |
/api/schedule | GET POST | Weekly heating schedule: 14 time slots and the setback temperature |
/api/version | GET | Firmware version and build date |
/api/mqtt | GET POST | MQTT settings and connection status, see MQTT |
/api/txgap | GET POST | Delay between messages sent to the stove (50 to 600 ms, default 150) |
/api/restart | POST | Restart the bridge |
/api/forget | POST | Erase the Wi-Fi settings and go back to setup mode |
/log | GET | Plain-text log of the dialogue with the stove |
Read the state
curl http://open-firenet.local/api/state
The answer is grouped by topic. The parts you will use most:
| Field | Meaning |
|---|---|
stove.state, stove.model_name, stove.mainboard_version | Operating state, model and firmware version of the stove |
stove.error_code, stove.warning_code | Current error and warning, 0 when there is none |
sensors.room_temperature | Room temperature, null when no RIKA room sensor is connected |
sensors.pellets_total_kg, sensors.service_countdown_kg | Pellets burned in total, and what is left before the next service |
controls.on, controls.mode, controls.target_temperature, controls.power_percent | The current settings |
version_ack, version_frame | Whether the stove accepted the bridge, and which protocol variant it answered: V3 (firmware 2.29), V28 (2.28), V1 (2.26 / 2.27) |
usb.host_connected, usb.rx_bytes | Whether the stove sees the bridge over USB, and how many bytes it has sent |
raw_sensors | Every value the stove reports, under its RIKA name |
Send controls
Post a JSON object with only the fields you want to change:
# 21 °C in comfort mode
curl -X POST http://open-firenet.local/api/controls \
-H "Content-Type: application/json" \
-d '{"target_temperature": 21, "mode": "comfort"}'
# switch on at 80 % power
curl -X POST http://open-firenet.local/api/controls \
-H "Content-Type: application/json" \
-d '{"on": true, "power_percent": 80}'
| Field | Values |
|---|---|
on | true / false |
mode | "manual", "auto", "comfort" |
power_percent | 30 to 100 |
target_temperature | 14 to 28 °C, in whole degrees (a half degree is rounded) |
frost_protection_active, frost_protection_temperature | true / false, 4 to 10 °C |
room_temperature_offset | -4.0 to +4.0 °C |
convectionFan1Active, convectionFan1Level, convectionFan1Area (and Fan2) | MultiAir: on/off, 0 = auto or 1 to 5, trim -30 to +30 % |
On stove firmware 2.28, only on, mode, power_percent and target_temperature are applied for now.
Full reference
Every endpoint and every field, with its type, unit and range, is in the API reference. It is generated from the OpenAPI description of the firmware, which you can load into your own tools (documentation viewers, client generators).
The schedule format and the protocol notes are also in the firmware repository: README, REST API and PROTOCOL.md.