DashIOT UI & JSON Configuration
Complete reference for the DashIOT JSON configuration schema, metric cards, topic hierarchies, and time-series chart bindings.
DashIOT uses a declarative JSON schema to configure widget labels, base topics, telemetry cards, and chart subscriptions. When you update and apply your configuration, the dashboard dynamically rebuilds without refreshing the page.
JSON Schema Specification
The complete JSON structure with all optional and required keys is shown below:
{
"title": "Solar Inverter Array #4",
"topic": "triophore/energy/inverter04",
"set0": {
"label": "PV Array Voltage",
"default": "380.5",
"topic": "/pv_voltage"
},
"set1": {
"label": "Grid Frequency",
"default": "50.0",
"topic": "/frequency"
},
"set2": {
"label": "Active Power (kW)",
"default": "12.4",
"topic": "/active_power"
},
"set3": {
"label": "Internal Temp (°C)",
"default": "42.1",
"topic": "/temperature"
},
"chart0": {
"label": "PV Voltage Trend",
"topic": "/pv_voltage"
},
"chart1": {
"label": "Active Power Output",
"topic": "/active_power"
}
}
Key Definitions
1. title (String, Required)
The human-readable title displayed prominently at the top of the dashboard.
- Example:
"Industrial Boiler Monitoring"
2. topic (String, Required)
The root or parent topic namespace for this dashboard instance. Sub-topics defined in individual cards are automatically concatenated with this prefix.
- Example:
"factory/line1/sensor_hub" - If a sub-card specifies
topic: "/temp", the resulting subscribed MQTT topic isfactory/line1/sensor_hub/temp.
Widget Cards (set0 through set3)
DashIOT supports up to 4 digital metric cards simultaneously:
| Property | Type | Required | Description |
|---|---|---|---|
label |
String | Yes | Name displayed underneath the metric value. |
topic |
String | Yes | Sub-topic appended to root topic. |
default |
String | No | Initial value displayed prior to receiving MQTT packets. |
"set0": {
"label": "Engine Oil Pressure",
"default": "45.0 PSI",
"topic": "/oil_pressure"
}
Realtime Charts (chart0 and chart1)
The chart widget plots streaming numerical values over time. A maximum of two data series can be displayed in the same chart view.
| Property | Type | Required | Description |
|---|---|---|---|
label |
String | No | Legend name for the trace series. |
topic |
String | Yes | Topic sending numeric values (float/integer/stringified number). |
"chart0": {
"label": "Ambient Temperature",
"topic": "/temperature"
},
"chart1": {
"label": "Heatsink Temperature",
"topic": "/heatsink_temp"
}
Payload Formatting Best Practices
DashIOT accepts the following MQTT payload formats:
-
Raw Numerical or Scalar String:
- Payload:
23.8or"ACTIVE" - Automatically parsed into display string or numeric chart point.
- Payload:
-
JSON Object with Matching Key:
- If payload is
{"value": 23.8, "unit": "C"}, DashIOT extracts numerical values when possible. - For best performance, publish individual metric values directly to dedicated sub-topics (e.g.
gateway/temp->24.5).
- If payload is