import network
import time
from umqtt.simple import MQTTClient
import ujson
import dht
from machine import Pin
# Components set-up
fan = Pin(4, Pin.OUT)
dht22 = dht.DHT22(Pin(15))
# Netpie Setup
SSID = "Wokwi-GUEST"
PASSWORD = ""
Netpie_ID = "c6daad8e-17c8-468e-8888-75be1179d04b"
Netpie_Token = "FXffFtYPXciGRvmhjgcSDBxVm7WXgDaH"
Netpie_Secret = "jyhAjg4gKSCH2g4uC5jZ8ApVW8NAXgNq"
MQTT_Broker = "broker.netpie.io"
topic = "@msg/operator"
last_msg = ""
# Wifi connnection
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(SSID, PASSWORD)
print("connecting", end="")
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.75)
print(f"\nConnected to network:", sta_if.ifconfig())
def mqtt_callback(topic, msg) -> None:
global last_msg
receieved_msg = msg
print(receieved_msg)
last_msg = int(receieved_msg.decode('utf-8'))
print(f"Stored message value: {last_msg}")
# Netpie connection
netpie = MQTTClient(
client_id= Netpie_ID,
server= MQTT_Broker,
user= Netpie_Token,
password= Netpie_Secret
)
netpie.set_callback(mqtt_callback)
print("connecting to Netpie", end="")
netpie.connect()
print("\nConnected to netpie!")
def publish(key:str, value) -> None:
return netpie.publish("@shadow/data/update",ujson.dumps({"data":{key:value}}))
netpie.subscribe(topic)
# Main loop
while True:
dht22.measure()
netpie.check_msg()
temperature = dht22.temperature()
humidity = dht22.humidity()
if last_msg == 1:
fan.on()
else:
fan.off()
publish("temperature", temperature)
publish("humidity", humidity)
time.sleep(0.25)