MQTT Data Stream
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}
| Segment | Description | Example |
|---|---|---|
env | Environment prefix | pr (production) |
country | Country code | fi |
groupId | Deployment group | prfi00examplename |
tuid | Device unique ID | TSEN01ABC12345678 |
messageId | Message type ID | 12100 |
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
See Deployment Groups for group ID naming conventions.
Connection Details
Connection credentials are provided as part of your Thingsee Operations Cloud installation:
| Parameter | Description |
|---|---|
| Broker URL | *.amazonaws.com (provided by Haltian) |
| Port | 8883 (MQTT over TLS) |
| Protocol | MQTT with TLS encryption |
| Authentication | X.509 client certificates |
Use a unique Client ID for each MQTT connection. If multiple clients use the same Client ID, they will disconnect each other.
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.
Create new connection:
- Host:
*.amazonaws.com(your broker) - Port:
8883 - Protocol:
mqtt:// - Validate certificates: ✓
- Encryption (TLS): ✓
- Host:
Configure certificates:
- CA certificate:
AmazonRootCA1.pem - Client certificate:
device-certificate.pem.crt - Client key:
private.pem.key
- CA certificate:
Subscribe to topics:
- Add topic:
cloudext/json/pr/# - Remove default example topics
- Add topic:
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/#"
Use a random Client ID to avoid conflicts with other users. The demo stream shows data from real sensors in our office.