from machine import Pin
import time
import network
import ujson
import dht
from umqtt.simple import MQTTClient
# Value setup
led = Pin(4, Pin.OUT)
dht = dht.DHT22(Pin(15))
# WiFi Setup
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('Wokwi-GUEST','')
while not wifi.isconnected():
print("connecting to wifi")
print(wifi.ifconfig())
# MQTT & NETPIE Setup
client = "f4ba6f17-76a7-4f8a-81e3-730768f817d9"
broker = "mqtt.netpie.io"
token = "fSGLkKEkksmwZQPn3SRXY8rzcB1DL6Kr"
secret = "rgBP47pH2rKX6eBEfWt64eyJz2fWhTW4"
topic = "@msg/operator"
last_msg = ""
netpie = MQTTClient(client,broker,user=token,password=secret,port=1883)
def on_message(topic, msg):
global last_msg
last_msg = msg.decode().upper()
print("MSG Received :", last_msg)
# ตรวจจับคำสั่ง
if last_msg == "ONLED":
led.value(1)
time.sleep(1)
elif last_msg == "OFFLED":
led.value(0)
time.sleep(1)
netpie.connect()
netpie.set_callback(on_message)
netpie.subscribe(topic)
print("Connect to Netpie & Subscribed")
# Data Publishing Loop
while True:
dht.measure()
payload = {
"data":{
"tem": dht.temperature(),
"hum": dht.humidity(),
"led": led.value()
}
}
netpie.check_msg()
dht.measure()
tem=dht.temperature()
hum=dht.humidity()
'''
netpie.publish("@shadow/data/update",ujson.dumps({"data":{"led":led.value()}}))
netpie.publish("@shadow/data/update",ujson.dumps({"data":{"temperature":tem}}))
netpie.publish("@shadow/data/update",ujson.dumps({"data":{"humidity":hum}}))
'''
netpie.publish("@shadow/data/update",ujson.dumps(payload))
print(payload)
time.sleep(0.5)