import random
from umqtt.simple import MQTTClient
from machine import Timer

# Timer Object
tim = Timer(-1)

# MQTT Server Parameters
MQTT_CLIENT_ID = "micropython-Esp32-PK"
MQTT_BROKER    = "broker.hivemq.com"
MQTT_USER      = "babu"
MQTT_PASSWORD  = "12345678"
MQTT_TOPIC     = "/Gass/bayu"  

# Connection to MQTT Server
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")

# Callback function for Topic Subscription
def sub_cb(topic, msg):
  print(f"Topic: {str(topic, 'UTF-8')}")
  print(f"Message: {str(msg, 'UTF-8')}")

# Callback function for Publish Data
def pub_topic(tim, topic: str, msg=""):
  msg = "bayu"  
  client.publish(topic, msg)
  print(f"Published: {msg} to {topic}")

# Timer for Periodic Data Publish (Publish setiap 5 detik)
tim.init(period=5000, mode=Timer.PERIODIC, callback=lambda tim: pub_topic(tim, MQTT_TOPIC))

# MQTT Subscription details
client.set_callback(sub_cb)
client.subscribe(MQTT_TOPIC)  

while True:
  # Mengecek pesan masuk dari topic yang disubscribe
  client.check_msg()