--- title: "Action definitons" slug: "action-definitons" updated: 2026-06-12T15:45:22Z published: 2026-06-12T15:45:22Z canonical: "docs.calculus.group/action-definitons" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.calculus.group/llms.txt > Use this file to discover all available pages before exploring further. # Action definitons Action definitions determine the value and parameters to be sent to a device, and on which path, when an Action button is pressed. ## Adding action definitions to an asset type Click **Assets** in the navigation menu and open the **Types** tab. ![List of assets including boilers, chillers, and generators in a management interface.](https://cdn.document360.io/94d0a983-5058-4b02-8d06-1228a999a7a1/Images/Documentation/2026-06-04_13-14-20.png?sv=2026-02-06&spr=https&st=2026-11-11T13%3A48%3A37Z&se=2026-11-11T14%3A48%3A37Z&sr=c&sp=r&sig=x540%2FZWrhv%2B38ZpEwhsOg508SflQ4pPmwU3eMomOkV0%3D) Select the asset type you want to create an action definition for and go to the **Action Definitions** tab. Click the **Add Action Definition** button. ![Editing asset type settings for generators with no data available yet.](https://cdn.document360.io/94d0a983-5058-4b02-8d06-1228a999a7a1/Images/Documentation/2026-06-04_13-15-01.png?sv=2026-02-06&spr=https&st=2026-11-11T13%3A48%3A37Z&se=2026-11-11T14%3A48%3A37Z&sr=c&sp=r&sig=x540%2FZWrhv%2B38ZpEwhsOg508SflQ4pPmwU3eMomOkV0%3D) A panel appears, where you can set a name for the action definition. ![Form for adding action definitions with fields for name, value, and parameters.](https://cdn.document360.io/94d0a983-5058-4b02-8d06-1228a999a7a1/Images/Documentation/2026-06-04_13-16-34.png?sv=2026-02-06&spr=https&st=2026-11-11T13%3A48%3A37Z&se=2026-11-11T14%3A48%3A37Z&sr=c&sp=r&sig=x540%2FZWrhv%2B38ZpEwhsOg508SflQ4pPmwU3eMomOkV0%3D) In addition to the name, there are additional fields to fill in: - **Default Value** The value to send, in case the user does not specify one when the action button is pressed. - **Maximum Queue Time (Minutes)** The allotted time in minutes for the action to remain queued, after which it is removed from the queue. - **Path** The gateway (or gateway|slave) path, the action is sent to. - **Measurement Path** The sensor path the action is sent to (optional). - **Value Label** A short descriptive text for the value (optional). - **Value Suffix** A suffix for the value (optional). - **Value Editable** If enabled, lets the user specify the value for this action. When disabled, the default value is used. - **Parameters** Optional parameters in JSON format. If no parameters are required, leave this at the default “{}” (an empty JSON object). Click **Save** to add the action definition. ### Parameters explained Generic write actions are available for Modbus TCP and Modbus RTU. Each write action uses a specific set of parameters (see the tables below): | **Parameter Key** | **Parameter Value** | | --- | --- | | “StartRegister” | The starting address for the write operation. | | “Registers” | An array of comma-separated values to be written. | | “StartBit” | The first bit to write to (starting with 0). | | “BitLength” | The number of bits that get overwritten. | | “StartCoil” | The address for the write operation. | #### Modbus TCP | **Path** | **Description** | **Parameters** | **Result** | | --- | --- | --- | --- | | write | Writes 1 or more holding registers. | { "StartRegister": 100, "Registers": [10, 20, 30] } | Register 100 = 10 Register 101 = 20 Register 102 = 30 | | { "StartRegister": 100, "Registers": [10] } | Register 100 = 10 | | writesimple | Writes the Value to exactly 1 holding register. | { "StartRegister": 100 } | Register 100 = Value (or Default Value) | | writebits | Writes the Value to a given bit range of a single register, without changing the remaining bits. | { "Register": 100, "StartBit": 0, "BitLength": 3 } | Register 100 = First three bits of Value (or Default Value) | | writecoil | Writes the Value as a boolean to a single coil. A Value of 0 translates to False, any other Value to True. | { "StartCoil": 10 } | Coil 10 = Value (or Default Value) as a Boolean | #### Modbus RTU | **Path** | **Description** | **Parameters** | **Result** | | --- | --- | --- | --- | | write | Writes 1 or more holding registers. | { "StartRegister": 100, "Registers": [10, 20, 30] } | Register 100 = 10 Register 101 = 20 Register 102 = 30 | | { "StartRegister": 100, "Registers": [10] } | Register 100 = 10 | | writesimple | Writes the Value to exactly 1 holding register. | { "StartRegister": 100 } | Register 100 = Value (or Default Value) | | writesingleregister | Writes the Value to exactly 1 holding register using Modbus FunctionCode 06. | { "StartRegister": 100 } | Register 100 = Value (or Default Value) | | writecoil | Writes the Value as a boolean to a single coil. A Value of 0 translates to False, any other Value to True. | { "StartCoil": 10 } | Coil 10 = Value (or Default Value) as a Boolean |