Integrate any Modbus device with SmartgridOne yourself. Let Niri, the AI assistant, write the driver from the manufacturer's register map, test it on the built-in Playground and install it within minutes.
A device that SmartgridOne does not support yet no longer has to wait for a software release. With Custom Modbus drivers, you build the integration yourself, directly in the commissioning interface of the controller: identification, measurements, alarms and control. Hand the manufacturer's register map to Niri, the built-in AI assistant, and Niri writes the driver, tests it on a simulated device and explains every step. You approve each change before it is made.
A finished driver is used like any built-in driver: add the device in the device wizard and SmartgridOne monitors and controls it in its energy management.
Custom Modbus drivers are available from software version 1.32, as a public beta. Check the behaviour of a driver well before you rely on it. They are not available on cloud controllers.
The video walks through the complete editor. Jump to a chapter:
| Chapter | Topic |
|---|---|
| 0:00 | Getting started and overview |
| 2:05 | Your first working driver |
| 4:38 | Driver settings and connection |
| 7:04 | Device structure and measurements |
| 9:53 | Control and watchdog |
| 12:41 | Command logic in practice |
| 17:23 | Testing and troubleshooting |
| 19:59 | Advanced registers and calculations |
| 22:39 | Helper functions and logic |
| 25:22 | Saving, reusing and installing |
Niri reads the register map, builds the device structure and the command logic, validates the result and tests it on the Playground: a simulated installation inside the controller with a hybrid inverter, PV, a battery, a grid meter and an EV charger. Nothing is written to real equipment without your approval.
Click Help me write a new driver with AI and select the brand of the device. The editor opens on an empty driver with Ask Niri open.
Attach the manual with the paper clip. Niri reads PDF, Word (.docx), Excel (.xlsx), CSV, YAML, TOML and plain text: up to five documents of 5 MB each per chat. Then say what the driver must do. Name the components and the control you need, for example:
Write the driver for this hybrid inverter from the attached register map: identification, the AC port, PV, battery, grid meter and backup output, the alarms, and control with a battery setpoint and a PV limit, including the watchdog.
Before Niri saves the driver, starts a test or writes to a device, it asks your approval and shows exactly what changes. Reading the driver and the test results never needs approval.
| Choice | Effect |
|---|---|
| Approve this action | Niri carries out this one action. |
| Approve all actions | After you confirm the risks, Niri continues without asking until you choose Ask me again or start a new chat. Every action still appears in the chat. |
| Deny | Niri does not carry out the action. Add a reason to steer its next attempt. |
Niri connects the driver to the matching Playground device, checks recognition and measurements, sends a control command and the release, and compares the register writes with the manual.
Niri ends with a summary: what the driver reads, how it controls the device, the test results and the points it could not settle from the manual. The problem counter in the header shows No problems when the driver can be used to add a device.
Niri is an AI and can be wrong. Before installing, verify addresses, scaling, signs and the control sequence against the manufacturer's documentation and your own test results, and test on the real device as described in Test the driver.
Ask Niri for help is available in every driver, also one you wrote by hand. Niri starts with three suggestions: Explain what this driver reads and controls, Find the problems of this driver and fix them and Test this driver on the playground. Other typical requests:
A chat belongs to you and to one driver. It ends with Start over, after 30 minutes without activity, or when the controller restarts; its documents are removed with it. Only one user at a time can work with Niri on a driver.
Power users can connect their own AI agent, such as Claude Code or Claude Desktop, to the driver over MCP. Click the computer icon in the header of Ask Niri, confirm the statement and copy the configuration it shows into the agent. The agent then reads, changes and tests this one driver without asking approval, for up to 12 hours or until you click Disconnect. Use it only where test commands have no consequences.
For an AI chatbot without a connection to the controller, the help topic Another AI chatbot gives a prompt, the format reference and the JSON schema. Import the resulting file with Import a driver.
Every driver, written by Niri or by hand, is edited in the same editor. Without Niri, start from New driver with an empty device type or one of the examples, such as the Playground hybrid inverter, the Playground EV charger or the Eastron SDM630 energy meter. Tutorial builds the Playground hybrid inverter driver step by step.
| Tab | Purpose |
|---|---|
| Driver | Name, supported models, protocol document, connection defaults, search range and installer questions. |
| Device structure | Components, identification, recognition, measurements, status, alarms, control option and watchdog. |
| Command logic | Control, release and manual commands as connected blocks, with reusable functions. |
| Test | Run the driver as shown in the editor, including unsaved changes, on the Playground or a real device. |
| Live | Devices that use the driver: their readings and latest commands. Shown once a device uses the driver. |
| History | Saved versions: compare, pin as a snapshot, restore, download. |
Build the tree of components that the device exposes, for example a hybrid inverter with a PV total, MPPT inputs, a battery total and batteries, a backup output and a grid meter. Drag components from the palette onto the tree. Per component, map:
Addresses are the zero-based addresses on the bus. Add computed measurement derives values from other readings, such as the sum of phase powers.
Choose the control option that matches the device's registers: for example Battery setpoint and PV limit, an inverter AC setpoint, an EV charging current or monitoring only. The option decides which setpoints and limits SmartgridOne passes to the command logic. A setpoint requests a value; a limit caps it.
Set up the watchdog as the protocol requires: a countdown, a heartbeat counter or a toggling bit. If commands stop arriving, the device falls back to its own operation. The command is repeated at the interval you set, well within the watchdog timeout.
Control logic runs with every command while SmartgridOne controls the device; Release logic returns the device to its own operation. Solid grey wires set the order of the actions; dotted wires carry the values. Blocks cover register reads and writes, bits, math, conditions, limits, timing, variables and status messages. Functions hold logic you reuse, Manual commands become actions for the installer on the devices page, and Physical settings expose device settings such as an export limit.
After a test command, the canvas outlines the blocks that ran and shows the values on the wires. In the example below, a PV limit of 4 kW becomes 50 % of the 8 kW PV capacity.
Handle failures explicitly: connect On exception where a failed write must stop or redirect the command, and end normal paths with Return from command. Variables keep values between commands, for example to ramp a battery setpoint, and start over after a controller restart.
The Test tab runs the driver exactly as shown in the editor, unsaved changes included.
On a real device, test commands, manual commands and register writes take effect immediately. Test only on equipment that may be controlled at that moment.
For diagnosis, use Registers by hand and Raw communication. Exception 1 (illegal function), 2 (illegal data address) and 3 (illegal data value) point to the function code, the address or the written value respectively.
Every field and block has a (?) help button, and Help in the editor header opens the full reference.