Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cula.tech/llms.txt

Use this file to discover all available pages before exploring further.

Use MQTT for continuous machine data ingestion from PLCs, SCADA systems, and IoT gateways.

Connection

Connect to the Cula MQTT ingestion cluster over TLS (port 8883). Credentials are issued by the Cula team alongside your API key.
ParameterValue
ProtocolMQTT over TLS
Port8883
AuthenticationUsername + password (issued by Cula)

Topic format

{payloadFormat}/{customerName}/{siteName}/{measurementName}
SegmentDescription
payloadFormatData format identifier (e.g. ixon, sparkplug)
customerNameYour organisation identifier
siteNameThe site the data originates from
measurementNameThe measurement group name

Payload

The payload is a JSON object with a metrics array. Each metric references a machine data point config by name, using the config ID.
{
  "metrics": [
    {
      "datatype": 9,
      "timestamp": 1761390172932,
      "name": "mdp_01kqzcjrpyf27tge9dnvsqv8t2",
      "value": 33.3
    },
    {
      "datatype": 9,
      "timestamp": 1761390172932,
      "name": "mdp_01kqzcjrpyf27tge9mg18vyhr2",
      "value": 66.7
    },
    {
      "datatype": 9,
      "timestamp": 1761390172712,
      "name": "mdp_01kqzcjrpyf27tge9yx2x8y28z",
      "value": 66.7
    }
  ]
}
FieldTypeDescription
datatypeintegerData type identifier from the source system
timestampintegerUnix timestamp in milliseconds
namestringMachine data point config ID
valuenumberMeasured value

Example: IXON gateway

Topic: ixon/greencarbon/gc-refinery/rawgas-upgrade-1
{
  "metrics": [
    {
      "datatype": 9,
      "timestamp": 1761390172932,
      "name": "mdp_01kqzcjrpyf27tge9dnvsqv8t2",
      "value": 33.3
    },
    {
      "datatype": 9,
      "timestamp": 1761390172932,
      "name": "mdp_01kqzcjrpyf27tge9mg18vyhr2",
      "value": 66.7
    }
  ]
}
MQTT is for continuous, high-frequency data streams. For one-off imports or backfills, use the HTTP batch ingest or import jobs endpoints instead.