MQTT Data Stream

Connect to the Thingsee MQTT broker for real-time device data.

Thingsee Operations Cloud includes an MQTT broker for real-time data streaming. This is the preferred integration method unless you have specific requirements for cloud-native integrations like Azure IoT Hub.

Topic Structure

cloudext/json/{env}/{country}/{groupId}/{tuid}/{messageId}
SegmentDescriptionExample
envEnvironment prefixpr (production)
countryCountry codefi
groupIdDeployment groupprfi00examplename
tuidDevice unique IDTSEN01ABC12345678
messageIdMessage type ID12100

Subscription Examples

All data from a group:

cloudext/json/pr/fi/prfi00samplegroup/#

All data from a specific device:

cloudext/json/pr/fi/prfi00samplegroup/TSEN01ABC12345678/#

Specific message type from a device:

cloudext/json/pr/fi/prfi00samplegroup/TSEN01ABC12345678/12100

Connection Details

Connection credentials are provided as part of your Thingsee Operations Cloud installation:

ParameterDescription
Broker URL*.amazonaws.com (provided by Haltian)
Port8883 (MQTT over TLS)
ProtocolMQTT with TLS encryption
AuthenticationX.509 client certificates

Sample Messages

Environment Data

Topic: cloudext/json/pr/fi/prfi00samplegroup/TSEN01ABC12345678/12100

{
    "tsmId": 12100,
    "tsmEv": 10,
    "airp": 101364.599,
    "lght": 6,
    "temp": 21.3,
    "humd": 21.7,
    "tsmTs": 1520416221,
    "tsmTuid": "TSEN01ABC12345678",
    "tsmGw": "TSGW06ABC12345678",
    "deploymentGroupId": "prfi00samplegroup"
}

Presence Data

Topic: cloudext/json/pr/fi/prfi00samplegroup/TSPR04ABC12345678/13100

{
    "tsmId": 13100,
    "tsmEv": 10,
    "moveCount": 12,
    "tsmTs": 1520416221,
    "tsmTuid": "TSPR04ABC12345678",
    "tsmGw": "TSGW06ABC12345678",
    "deploymentGroupId": "prfi00samplegroup"
}

Client Examples

Command Line (mosquitto)

mosquitto_sub \
  --cafile AmazonRootCA1.pem \
  --cert device-certificate.pem.crt \
  --key private.pem.key \
  -h your-broker.amazonaws.com \
  -p 8883 \
  -t "cloudext/json/pr/fi/prfi00samplegroup/#" \
  -i "my-unique-client-id"

Python (paho-mqtt)

import json
import ssl
import paho.mqtt.client as mqtt

BROKER = "your-broker.amazonaws.com"
PORT = 8883
TOPIC = "cloudext/json/pr/fi/prfi00samplegroup/#"

def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    client.subscribe(TOPIC)

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)
    print(f"Topic: {msg.topic}")
    print(f"Message ID: {data.get('tsmId')}")
    print(f"Device: {data.get('tsmTuid')}")
    print(f"Data: {json.dumps(data, indent=2)}")
    print("---")

client = mqtt.Client(client_id="my-unique-client-id")
client.on_connect = on_connect
client.on_message = on_message

# Configure TLS with certificates
client.tls_set(
    ca_certs="AmazonRootCA1.pem",
    certfile="device-certificate.pem.crt",
    keyfile="private.pem.key",
    tls_version=ssl.PROTOCOL_TLSv1_2
)

client.connect(BROKER, PORT, 60)
client.loop_forever()

Node.js (mqtt.js)

const mqtt = require('mqtt');
const fs = require('fs');

const options = {
  host: 'your-broker.amazonaws.com',
  port: 8883,
  protocol: 'mqtts',
  clientId: 'my-unique-client-id',
  ca: fs.readFileSync('AmazonRootCA1.pem'),
  cert: fs.readFileSync('device-certificate.pem.crt'),
  key: fs.readFileSync('private.pem.key'),
};

const client = mqtt.connect(options);

client.on('connect', () => {
  console.log('Connected to Thingsee MQTT broker');
  client.subscribe('cloudext/json/pr/fi/prfi00samplegroup/#');
});

client.on('message', (topic, message) => {
  const data = JSON.parse(message.toString());
  console.log(`Device: ${data.tsmTuid}, Message: ${data.tsmId}`);
  console.log(JSON.stringify(data, null, 2));
});

Testing with MQTT Explorer

MQTT Explorer is a graphical tool for testing MQTT connections.

  1. Create new connection:

    • Host: *.amazonaws.com (your broker)
    • Port: 8883
    • Protocol: mqtt://
    • Validate certificates: ✓
    • Encryption (TLS): ✓
  2. Configure certificates:

    • CA certificate: AmazonRootCA1.pem
    • Client certificate: device-certificate.pem.crt
    • Client key: private.pem.key
  3. Subscribe to topics:

    • Add topic: cloudext/json/pr/#
    • Remove default example topics
  4. Connect and verify data from your devices


Try the Demo Stream

Connect to our public demo stream to see real Thingsee data from Haltian’s office:

Host:     live-data.haltian.com
Port:     1883
Topic:    cloudext/json/pr/fi/office/#
Auth:     None (public demo)
mosquitto_sub -h live-data.haltian.com -p 1883 -t "cloudext/json/pr/fi/office/#"