Kadang kalanya para penggiat IOT adalah mereka yang tidak berhubungan langsung dengan benda yg bernama mikrokontroler maupun sensor. Ya benar saja kenyataan ini terjadi akibat semakin melebarnya topik sensor 8 bit ke dunia koding yg semakin menjangkau mereka yg biasanya hanya terkoneksi dengan komputer PC saja. Akibatnya para "koder" yg jago ini menjadi kewalahan dalam memperoleh data pembacaan sensor kecuali bekerjasama dengan mereka yg sering bekerja dengan sensor dan mikrokontroler. Padahal kalau dilihat kemampuan orang yg mempunyai latar belakang koding informatika akan menghasilkan program yg lebih rapi pada umumnya.
Lalu bagaimana menghasilkan data pembacaan sensor tanpa menggunakan mikrokontroller? Mudah saja sebenarnya karena kita dapat memanfaatkan bahasa pemrograman apapun untuk menciptakan data numerik random yang menyerupai data pembacaan sensor. Namun kendalanya adalah bahasa pemrograman paling mudah dan ready untuk komunikasi sensor secara IOT apa ya ? Jawabannya adalah python yg sering saya gunakan untuk mengolah data IOT menggunakan protokol MQTT, seperti pada pembahasan sebelumnya disini : https://www.aisi555.com/2020/07/tutorial-menggambar-grafik-data-arduino.html
Jadi untuk komunikasi berbasis MQTT sudah tersedia library /package siap pakai bernama paho MQTT.
pip install paho-mqtt
Diatas merupakan cara untuk menginstall packagenya pada console python anda. Sedangkan untuk membuat angka pembacaan sensor secara random bisa menggunakan script berikut:
from random import randrange
suhu = float( randrange(250,350,2) / 10)
humi = randrange(50,95,2)
Jadi dengan menggabungkan pahomqtt dan randrange kita bisa memperoleh simulasi pembacaan sensor yg datanya dapat dicoba pada MQTT explorer atau IOT MQTT PANEL pada smartphone anda.
import paho.mqtt.client as mqtt
from time import sleep
from random import randrange
# Inisialisasi broker
broker_address="broker.hivemq.com"
broker_port=1883
def on_publish(client,userdata,result): #create function for callback
print("data terkirim ke broker")
pass
client1= mqtt.Client(f'unesa-client-{randrange(0,100)}') #clientnya harus random
client1.on_publish = on_publish #assign function to callback
client1.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(50,95,2)
ret= client1.publish("/testyuk/suhu",suhu) #PUB suhu ke topik /testyuk/suhu
sleep(3)
ret= client1.publish("/testyuk/humi",humi) #PUB Kelembaban ke topik /testyuk/humi
sleep(3)