Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Jumat, 15 Desember 2023

Membedah keruwetan Pub-Sub MQTT pada antares


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







Share:

2 komentar:

  1. bang subscribe di antares ga bisa ya, bang?

    BalasHapus
    Balasan
    1. Subscribe antares pake MQTT bisa, namun 1 akun 1 topik, jadi data masuk semua

      Hapus

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika