Mengirim data lewat MQTT
Satu koneksi yang tetap terbuka, untuk mengirim bacaan dan menerima perintah. Semua nilai di bawah ini juga tertulis di layar Koneksi & Integrasi perangkat Anda. Salin dari sana supaya tidak salah ketik.

Program lengkap dalam setiap bahasa ada di Contoh kode, untuk port 1883 dan 8883.
Koneksi
| Pengaturan | Nilai |
|---|---|
| Host | app.include.co.id |
| Port | 1883 (tanpa TLS, paling mudah) atau 8883 (dengan TLS) |
| Client ID | ID perangkat |
| Username | ID perangkat |
| Password | Device Token |
| Versi | MQTT 3.1.1 atau 5 |
Kedua port terbuka, dan keduanya menolak perangkat yang username atau password-nya salah. Pilih sesuai perangkat Anda:
- 1883: tanpa sertifikat, tanpa jam, ringan untuk papan kecil. Semua contoh di docs memakai port ini. Token terkirim tanpa enkripsi, jadi siapa pun yang bisa menyadap jaringan perangkat bisa membacanya.
- 8883: koneksi dan token dienkripsi dengan TLS 1.2. Sertifikat server dari Let's Encrypt. Papan yang memeriksa sertifikat sendiri (ESP32, ESP8266) butuh sertifikat akar ISRG Root X1 dan X2; keduanya sudah ada di contoh TLS. Pilih ini kalau perangkat memakai jaringan yang tidak Anda kendalikan.
Lainnya:
- Pakai ID perangkat sebagai Client ID. Dua koneksi dengan Client ID yang sama saling memutus: yang lama diputus saat yang baru masuk.
- Perangkat yang hanya tahu tokennya bisa mengambil ID, topik, host, dan port lewat
GET /api/v1/YOUR_DEVICE_TOKEN/mqtt-config. Lihat Mengirim data lewat HTTP.
Topik
| Arah | Topik |
|---|---|
| Kirim bacaan | includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/telemetry |
| Terima perintah | includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/command |
Topik lengkap perangkat Anda tertulis di layar Koneksi & Integrasi sebagai Topik telemetri (publish) dan Topik perintah/config (subscribe).
Perangkat hanya boleh memakai topik yang berisi ID-nya sendiri. Publish atau subscribe ke topik lain langsung memutus koneksinya.
Isi pesan
Sama dengan HTTP: objek JSON, satu kunci satu parameter.
{ "temperature": 25.4, "humidity": 61 }Dengan waktu sendiri (milidetik Unix, UTC):
{ "ts": 1761980400000, "values": { "temperature": 25.4 } }QoS 0 dan 1 diterima. Pakai QoS 1 kalau setiap bacaan harus sampai.
Menerima perintah
Subscribe ke topik perintah. Setiap perintah berbentuk:
{ "method": "setAttribute", "params": { "setpoint": "25" }, "ts": 1761980400000 }method | Dikirim saat |
|---|---|
setAttribute | Nilai di Config Server → Device diisi atau diubah. params berisi kunci dan nilainya. |
deviceUpdated | Nama atau label perangkat diubah. params berisi name dan label. |
| lainnya | Tombol kontrol di dashboard atau aturan otomatis. params berisi key dan value. |
Program Python lengkap yang menunggu perintah dan mencetaknya. Program ini ikut diuji: platform mengubah satu nilai di Config Server → Device, dan program harus mencetak command: setAttribute {'setpoint': '25'}.
import json
import paho.mqtt.client as mqtt
HOST = "app.include.co.id"
PORT = 1883
DEVICE_ID = "YOUR_DEVICE_ID"
DEVICE_TOKEN = "YOUR_DEVICE_TOKEN"
COMMAND_TOPIC = "includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/command"
def on_connect(client, userdata, flags, reason_code, properties):
print("connected:", reason_code)
client.subscribe(COMMAND_TOPIC, qos=1)
def on_message(client, userdata, msg):
command = json.loads(msg.payload)
print("command:", command["method"], command["params"])
# Act on it here, for example switch a relay when a parameter changes.
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=DEVICE_ID)
client.username_pw_set(DEVICE_ID, DEVICE_TOKEN)
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOST, PORT)
client.loop_forever()Satu perangkat boleh mengirim bacaan dan menerima perintah lewat koneksi yang sama: tambahkan subscribe dan on_message ke contoh MQTT Python.
Mencoba dari terminal
Dengan mosquitto_pub dari paket mosquitto-clients, lewat port 1883:
mosquitto_pub -h app.include.co.id -p 1883 \
-i YOUR_DEVICE_ID -u YOUR_DEVICE_ID -P YOUR_DEVICE_TOKEN \
-t includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/telemetry \
-m '{"temperature": 25.4, "humidity": 61}'Lewat port 8883 dengan TLS:
mosquitto_pub -h app.include.co.id -p 8883 --capath /etc/ssl/certs \
-i YOUR_DEVICE_ID -u YOUR_DEVICE_ID -P YOUR_DEVICE_TOKEN \
-t includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/telemetry \
-m '{"temperature": 25.4, "humidity": 61}'Di macOS, ganti --capath /etc/ssl/certs dengan --cafile /etc/ssl/cert.pem.
Jaringan
Port 1883 atau 8883 harus terbuka keluar dari jaringan perangkat. Beberapa jaringan kantor dan seluler hanya membuka 80 dan 443. Kalau perangkat tidak bisa tersambung tetapi HTTP berhasil dari jaringan yang sama, pakai HTTP.

