# SCRIPT B: DHT22 NODE
import network, time, machine, dht
from umqtt.simple import MQTTClient
# --- CONFIG ---
SSID, PASS = "Wokwi-GUEST", ""
BROKER = "broker.hivemq.com"
CLIENT_ID = "UiTM_Node_B_DHT"
TOPIC_PUB = b"uitm/class/dht"
TOPIC_SUB = b"uitm/class/control"
# --- HARDWARE ---
sensor = dht.DHT22(machine.Pin(15))
led_green = machine.Pin(18, machine.Pin.OUT)
led_red = machine.Pin(19, machine.Pin.OUT)
led_green.on()
# --- MQTT CALLBACK ---
def sub_cb(topic, msg):
print(f"Command received: {msg}")
if msg == b"HALT":
led_green.off()
led_red.on()
elif msg == b"GO":
led_green.on()
led_red.off()
# --- SETUP ---
print("Connecting Wi-Fi...")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASS)
while not wlan.isconnected(): time.sleep(0.5)
client = MQTTClient(CLIENT_ID, BROKER)
client.set_callback(sub_cb)
client.connect()
client.subscribe(TOPIC_SUB)
print("Node B Ready.")
# --- MAIN LOOP ---
while True:
client.check_msg()
try:
sensor.measure()
temp = sensor.temperature()
msg = str(temp)
client.publish(TOPIC_PUB, msg)
print(f"Sent Temp: {msg}")
except:
print("Sensor Error")
time.sleep(2)