# ----- Import Library-----
import time
from umqtt.simple import MQTTClient
import machine
import micropython
import network
import esp
from machine import Pin, ADC
esp.osdebug(None)
import gc
gc.collect()
import ujson
import dht
#pwm0 = machine.PWM(Pin(32))
sensor_data = {'temperature': 0, 'humidity': 0}
d = dht.DHT22(machine.Pin(13))
relay = Pin(14, Pin.OUT) # Relay Pin Setup
# ----- Connect WiFi -----
# WiFi Credential
WiFi_ssid = 'Wokwi-GUEST'
WiFi_pwd = ''
# Set ESP32 WiFi Mode to Station
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True) # Activate Station Mode
sta_if.connect(WiFi_ssid,WiFi_pwd) # Start Connect to WiFi
print('WiFi Connecting....')
while not sta_if.isconnected():
pass # Loop wait until connection is successfully
print('WiFi Connected!') # Display IP
print('Get IP : {}'.format(sta_if.ifconfig()[0]))
# ----- MQTT Connection -----
# Setup MQTT Credential
MQTT_Client_ID = 'thanchanok' #Your Name################################################### EDIT
MQTT_Broker = 'broker.hivemq.com'
MQTT_Token = ''
MQTT_Secret = ''
# Setup Topic
MQTT_Topic2 = 'thanchanok/input'#Your topic mqtt out########################################### EDIT
# Variable
last_message = ''
# Callback function for listen incoming message
def on_message(topic,msg):
global last_message
incoming_message = msg.decode('utf8')
if incoming_message == last_message:
pass
else :
print('Message from {} : {}'.format(topic,incoming_message))
if incoming_message == 'ON':
relay.on()
print('ON')
elif incoming_message == 'OFF':
relay.off()
print('OFF')
# Set Credential
client = MQTTClient(MQTT_Client_ID, MQTT_Broker, user=MQTT_Token, password=MQTT_Secret)
client.set_callback(on_message)
# MQTT Connection Start
client.connect()
print('Connected to {} MQTT broker'.format(MQTT_Broker))
client.subscribe(MQTT_Topic2)
print('Subcribe Topic {}'.format(MQTT_Topic2))
# ----- Read Sensor Values-----
while True:
client.check_msg()
try:
d.measure()
sensor_data['temperature'] = d.temperature()
sensor_data['humidity'] = d.humidity()
sensor_data['Name'] = "Node_1"
publish_str = ujson.dumps({"data": sensor_data})
print(publish_str)
client.publish("thanchanok/output", publish_str)#Your Topic mqtt in############################# EDIT
except OSError as e:
pass
time.sleep(3)