import blynklib_mp as blynklib
import network
import utime as time
from machine import Pin
# DHT driver already included into Micropython software as core module
# so we just import it
import dht
WIFI_SSID = 'Wokwi-GUEST'
WIFI_PASS = ''
BLYNK_AUTH = 'V4-qCaMuOgKmvXth9TQ1mnJ_l0lNa73O'
GPIO_DHT22_PIN = 4
print("Connecting to WiFi network '{}'".format(WIFI_SSID))
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
time.sleep(1)
print('WiFi connect retry ...')
print('WiFi IP:', wifi.ifconfig()[0])
print("Connecting to Blynk server...")
blynk = blynklib.Blynk(BLYNK_AUTH)
T_COLOR = '#f5b041'
H_COLOR = '#85c1e9'
ERR_COLOR = '#444444'
T_VPIN = 0
H_VPIN = 3
dht22 = dht.DHT22(Pin(4, Pin.IN, Pin.PULL_UP))
@blynk.handle_event('read V{}'.format(T_VPIN))
def read_handler(vpin):
temperature = 0.0
humidity = 0.0
# read sensor data
try:
dht22.measure()
temperature = dht22.temperature()
humidity = dht22.humidity()
except OSError as o_err:
print("Unable to get DHT22 sensor data: '{}'".format(o_err))
# change widget values and colors according read results
if temperature != 0.0 and humidity != 0.0:
blynk.set_property(T_VPIN, 'color', T_COLOR)
blynk.set_property(H_VPIN, 'color', H_COLOR)
blynk.virtual_write(T_VPIN, temperature)
blynk.virtual_write(H_VPIN, humidity)
else:
# show widgets aka 'disabled' that mean we had errors during read sensor operation
blynk.set_property(0, 'color', ERR_COLOR)
blynk.set_property(3, 'color', ERR_COLOR)
while True:
blynk.run()