Lua Device Configuration
Introduction
After years of writing Enapter Blueprints, we decided to stop forcing users to write the boilerplate code for the configuration interface in Lua scripts and added a new feature to the manifest. All you have to do is declare configuration parameters in dedicated group(s).
Best Practices for Configuration
-
Set
access_levelthoughtfully:- Choose the appropriate access level to control who can modify which settings. This helps prevent accidental or unauthorized changes.
-
Use
defaultvalues sparingly:- Defaults can be helpful, but avoid setting them unless the value makes sense for most users or devices.
-
Group related settings:
- You can define multiple configuration groups within a single manifest to organize settings logically and improve usability.
Configuration Use Cases
Connection Parameters
Connection URI, device Modbus address, or unit ID — any parameters required to connect to your device should be included in the configuration section.
- Use descriptive values for each
display_name. - Set suitable types for parameters.
- Use
format: connection_urifor the Connection URI parameter. - Mark
requiredparameters.
configuration:
connection:
display_name: Connection
description: Device connection parameters
access_level: owner
parameters:
address:
display_name: Modbus Address
description: Device address in range 1-247
type: integer
required: true
conn_str:
display_name: Connection String
description: Connection URI to the runtime device
type: string
format: connection_uri
required: true
Device-Specific Information
Some device characteristics should be explicitly set by the user. For this purpose, the configuration section is also well-suited.
Write clear descriptions to explain the parameters.
Functional Settings
configuration:
device_info:
display_name: Pressure Sensor Properties
description: To be set by the user
access_level: user
parameters:
calib_slope:
display_name: Calibration Slope
description: "`k` in the calibration line equation `Pressure = k * Current + b`"
type: float
required: true
calib_intercept:
display_name: Calibration Intercept
description: "`b` in the calibration line equation `Pressure = k * Current + b`"
type: float
required: true
Hardware Settings
configuration:
relay:
display_name: Relay Settings
description: Relay channels for power and start
access_level: owner
parameters:
power_relay:
display_name: Power Contact Channel
description: The number of a relay channel to which an FC power contact is connected.
type: integer
required: true
start_relay:
display_name: Start Contact Channel
description: The number of a relay channel to which an FC start contact is connected.
type: integer
required: true
Third-Party API Credentials
When setting any credentials, consider using the sensitive option to protect confidential data.
configuration:
tasmota:
display_name: Tasmota Account Settings
description: Account credentials required to connect to the Tasmota device
access_level: owner
parameters:
username:
display_name: Tasmota Username
type: string
required: true
password:
display_name: Tasmota Password
type: string
required: true
sensitive: true