import network
import time
from machine import Pin,ADC
import dht
import ujson
from umqtt.simple import MQTTClient
# Pin intialisatiion
dht_sensor = dht.DHT22(Pin(9))
ldr_pin = 10
ldr_adc = ADC(Pin(ldr_pin))
ldr_adc.atten(ADC.ATTN_11DB)
# connect to wifi in wokwi
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
def checkwifi():
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
# acces to cloud broker
ubidotsToken = "BBUS-RG0EVCsHaZu3W4anyGx24pY4M2ToY8"
clientID = "eswar_232"
client = MQTTClient("clientID", "industrial.api.ubidots.com", 1883, user = ubidotsToken, password = ubidotsToken)
#main code
predata=None
while True:
checkwifi()
client.connect()
# get temperature and humidity data form sensor
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# get data from ldr
intensity = ldr_adc.read()
# convert it into dictinoary
data = {"temperature": temperature, "humidity": humidity,"intensity":intensity}
print(data)
#publish data to mqtt broker if previuous data is not equal to updatesd
if predata != data:
client.publish(b"/v1.6/devices/ESP_32", ujson.dumps(data))
print('data updated and published')
predata=data
time.sleep(1)