from machine import Pin, ADC , PWM
import time
import network
import ujson
from umqtt.simple import MQTTClient
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('Wokwi-GUEST','')
led = PWM(Pin(14))
led2 = Pin(13, Pin.OUT)
while not wifi.isconnected():
print("connecting to wifi")
time.sleep(0.5)
print(wifi.ifconfig())
# MQTT & NETPIE Setup
client = "53dd19ca-7dcc-4196-b08f-549e6f60e5ee" # กรอก client ID
broker = "mqtt.netpie.io"
token = "r3qyspYw8igvsY8CgxEceaGu2UXEUuyi" # กรอก token
secret = "JBSacAZeh7NCoQrvYD1cMkPuncJ9Qijq" # กรอก secret
topic = "@msg/operator"
last_msg = ""
netpie = MQTTClient(client, broker, user=token, password=secret, port=1883)
# -------------------------
# ฟังก์ชัน callback สำหรับรับ MSG
# -------------------------
def on_message(topic, msg):
global last_msg
last_msg = msg.decode().upper()
print("MSG Received :", last_msg)
# ตรวจจับคำสั่ง ON/OFF
if last_msg == "ONLED":
led.value(1)
time.sleep(1)
elif last_msg == "OFFLED":
led.value(0)
time.sleep(1)
else:
# หากไม่ใช่คำสั่งตัวอักษร ให้ลองอ่านเป็นค่าจาก Slider (ตัวเลข)
print("Slider Value :", last_msg)
# เปิดระบบรับข้อความ
netpie.set_callback(on_message)
netpie.connect()
netpie.subscribe(topic)
print("Connect to Netpie & Subscribed")
# -------------------------
# Loop หลัก
# -------------------------
while True:
netpie.check_msg()
# netpie.publish("@shadow/data/update", ujson.dumps({"data":{"LED": led.value()}}))
print("LED level :", led.duty())
# แสดงค่าล่าสุดที่ได้รับจาก Slider หรือ Message
print("Last Message/Slider :", last_msg)
if isinstance(last_msg,int):
led.duty(last_msg)
time.sleep(5)