Satu kata yang dapat menjabarkan MQTT pada platform IOT milik telkom antares adalah keruwetannya, namun saya sudah terlebih dahulu mengalami pusing saat membedahnya 3 tahun yang lalu pada tulisan saya disini: https://www.aisi555.com/2020/06/solved-bug-fatal-pada-mqtt-subscription.html, dan saya sudah "khatam" dengan ini. Buat anda sepertinya harus paham prinsisp M2M IOT yg dipakai oleh antares yaitu :
- Proses PUB antares spesifik dikirimkan ke project/device namun berbeda dengan SUB pada Antares yang menggunakan 1 topik yg sama untuk kemudian lebih tepatnya dinamakan proses RESPONSE. Jadi ketika data MQTT realtime diterima antares (pada akun yang sama), maka semua data dari semua device yg PUB akan diberikan/relay kepada client yang SUB (secara realtime juga), jadi butuh parsing data payload dengan metode tertentu baru data yg di inginkan muncul. Bisa dibaca disini , disini , dan disini .
- Python Paho-mqtt sebagai library paling umum untuk menerima dan mengolah protokol mqtt sehingga dapat dilanjutkan ke proses advance seperti menyimpan database, membuat grafik atau mengirim ke bot telegram. Bisa dibaca dulu agar mengerti disini dan disini.
Untuk kali ini saya memanfaatkan google colab untuk melakukan PUBLISH data random ke antares melaui script python, dan dapat dicoba GRATIS dengan script dibawah ini : jangan lupa install paho-mqtt dulu di colab!
import paho.mqtt.client as mqtt
from time import sleep
from random import randrange
# Inisialisasi broker
broker_address="mqtt.antares.id"
broker_port=1883
antareskey= "aaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbb" #sesuaikan key antares anda
antaresdevice ="Project/DHT11" #sesuaikan project/device anda
topicpubantares = f'/oneM2M/req/{antareskey}/antares-cse/json'
def on_publish(client,userdata,result):
print("data terkirim ke broker")
pass
def antares_pub(datae):
print(datae)
data_raw = ("{"
"\"m2m:rqp\": {"
f'\"fr\": {{antareskey}},'
f'\"to\": \"/antares-cse/antares-id/{antaresdevice}\",'
"\"op\": 1,"
"\"rqi\": 123456,"
"\"pc\": {"
"\"m2m:cin\": {"
"\"cnf\": \"message\","
f'\"con\": \"{datae}\"'
"}"
"},"
"\"ty\": 4"
" }"
"}")
ret=client.publish(topicpubantares,data_raw)
client= mqtt.Client(f'unesa-client-{randrange(0,1000)}') #clientnya harus random
client.on_publish = on_publish #assign function to callback
client.connect(broker_address,broker_port) #establish connection
while 1: #loop terus sambil kirim data
suhu = float( randrange(250,350,2) / 10) #random suhu dan kelembaban
humi = randrange(80,95,2)
datanya = {"suhu": suhu, "humi": humi}
antares_pub(datanya)
sleep(5)
Jadi ubah dulu parameter akun dan device sesuai yang anda buat di antares. Selajutnya gunakan MQTT explorer untuk membuat demo proses SUB nya.
1. Masuk ke MQTT EXPLORER dengan parameter MQTT Servernya di : mqtt.antares.id port 1883. Username dan password jangan diisi, namun pada bagian advance anda perlu subscribe pada topik yang ada input User:Key antares anda.
TOPIK SUBSCRIBE :
/oneM2M/resp/antares-cse/access:key/json
2. Masuk/konek ke mqtt explorer lalu running script python pada google colab,
dan jika benar akan muncul hasil seperti ini
Videonya dapat di lihat disini |
bang subscribe di antares ga bisa ya, bang?
BalasHapusSubscribe antares pake MQTT bisa, namun 1 akun 1 topik, jadi data masuk semua
Hapus