sensor1 = dht.DHT22(Pin(15))
sensor2 = dht.DHT22(Pin(5))
led = Pin(2, Pin.OUT)
# MQTT Server
MQTT_CLIENT_ID = "malvin"
MQTT_BROKER = "broker.emqx.io"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "/Apa-ini-namanya?/Malvin-Bima-Santiko/data_sensor"
MQTT_TOPIC2 = "/Apa-ini-namanya?/Malvin-Bima-Santiko/aktuasi_led"
# buat connect mqtt
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")
message="off"
# Fungsi subscribe mqtt
def sub_cb(topic, msg):
try:
data = ujson.loads(msg)
if "led" in data:
global message
message=data["led"]
#print(message)
else:
print("Key 'led' not found in the JSON")
except ValueError as e:
print("Failed to parse JSON:", e)
client.set_callback(sub_cb)
client.subscribe(MQTT_TOPIC2)
prev_weather = ""
while True:
client.check_msg()
if message == "on":
led.on()
elif message == "off":
led.off()
else:
time.sleep(1)
sensor1.measure()
sensor2.measure()
message_sent = ujson.dumps({
"suhu1": sensor1.temperature(),
"kelembapan1": sensor1.humidity(),
"suhu2": sensor2.temperature(),
"kelembapan2": sensor2.humidity(),
})
if message_sent != prev_weather:
print("Data Sensor DHT22 ", end="")
print("Update Data")
print("Reporting to MQTT topic {}: {}".format(MQTT_TOPIC, message_sent))
client.publish(MQTT_TOPIC, message_sent)
prev_weather = message_sent