Skip to main content
Logo Triophore
DashIOT DOCUMENTATION

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 is factory/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:

  1. Raw Numerical or Scalar String:

    • Payload: 23.8 or "ACTIVE"
    • Automatically parsed into display string or numeric chart point.
  2. 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).