"""
MicroPython IoT Weather Station Example for Wokwi.com
To view the data:
1. Go to http://www.hivemq.com/demos/websocket-client/
2. Click "Connect"
"""
import network
import time
import machine
import ubinascii
from umqtt.simple import MQTTClient
import dht
# Mengatur konfigurasi WiFi
wifi_ssid = 'Wokwi-GUEST'
wifi_password = ''
# Konfigurasi MQTT
MQTT_CLIENT_ID = "demoErick"
MQTT_BROKER = "mqtt-dashboard.com"
mqtt_port = 1883
mqtt_topic_publish = "/NAMAGRUP/nama/data_sensor"
mqtt_topic_subscribe = "/NAMAGRUP/nama/aktuasi_led"
# Menghubungkan ke Wi-Fi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(wifi_ssid, wifi_password)
while not wlan.isconnected():
time.sleep(0.5)
print("Connected to WiFi:", wifi_ssid)
# Menghubungkan ke MQTT Broker
def connect_mqtt():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, mqtt_port)
client.connect()
print("Connected to MQTT broker")
return client
# Fungsi untuk membaca sensor DHT (misalnya DHT11 atau DHT22)
def read_sensor():
sensor = dht.DHT22(machine.Pin(15)) # Sesuaikan dengan pin yang digunakan
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
return temperature, humidity
# Fungsi untuk menyalakan atau mematikan LED
def actuate_led(state):
led = machine.Pin(2, machine.Pin.OUT) # LED pada GPIO 2
if state == "ON":
led.value(1)
else:
led.value(0)
# Callback untuk menerima pesan pada topik subscribe
def on_message(topic, msg):
print(f"Message received on topic {topic}: {msg}")
if msg == b"ON":
actuate_led("ON")
elif msg == b"OFF":
actuate_led("OFF")
# Program utama
def main():
connect_wifi()
mqtt_client = connect_mqtt()
# Mengatur callback untuk subscribe
mqtt_client.set_callback(on_message)
# Subscribe ke topik untuk aktuasi LED
mqtt_client.subscribe(mqtt_topic_subscribe)
print(f"Subscribed to {mqtt_topic_subscribe}")
while True:
# Publish sensor data setiap 5 detik
temperature, humidity = read_sensor()
sensor_data = f"Temperature: {temperature}C, Humidity: {humidity}%"
mqtt_client.publish(mqtt_topic_publish, sensor_data)
print(f"Published: {sensor_data}")
# Menunggu pesan di topik yang disubscribe
mqtt_client.check_msg()
time.sleep(5) # Tunggu 5 detik sebelum membaca data sensor lagi
if __name__ == "__main__":
main()