import network
from machine import Pin, I2C
import blynklib
import dht
import time
from ssd1306 import SSD1306_I2C
import utime
#import openpyxl
# Connect to Wi-Fi network
wifi_ssid = "Wokwi-GUEST"
wifi_password = ""
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
try:
sta_if.connect(wifi_ssid, wifi_password)
except OSError as error:
print(f'error is {error}')
while not sta_if.isconnected():
pass
print("Wi-Fi connected:", sta_if.ifconfig())
auth_token = "458LqjWkPNHAZ6yPSav8KU5BxlRaccu9"
blynk = blynklib.Blynk(auth_token, server="blr1.blynk.cloud")
dht22 = dht.DHT22(Pin(27))
# Create a new Excel workbook and add a worksheet
'''wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Temperature_Humidity_Log"
ws.append(["Timestamp", "Temperature (C)", "Humidity"])'''
def init_i2c(scl_pin, sda_pin):
# Initialize I2C device
i2c_dev = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin), freq=200000)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()]
if not i2c_addr:
print('No I2C Display Found')
sys.exit()
else:
print("\nI2C Address : {}".format(i2c_addr[0]))
print("I2C Configuration: {}".format(i2c_dev))
return i2c_dev
def get_timestamp():
current_time = utime.localtime()
return "{:04d}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}".format(
current_time[0], current_time[1], current_time[2],
current_time[3], current_time[4], current_time[5]
)
def find():
dht22.measure()
temperature_C = dht22.temperature()
humidity = dht22.humidity()
timestamp = get_timestamp() #time.strftime("%Y-%m-%d %H:%M:%S")
# Log data to Excel
'''ws.append([timestamp, temperature_C, humidity])
wb.save("temperature_humidity_log.xlsx")'''
print(f"\n{timestamp}: Temperature: {temperature_C}°C, Humidity: {humidity}%")
blynk.virtual_write(6, temperature_C)
blynk.virtual_write(5, humidity)
blynk.virtual_write(0, temperature_C)
blynk.virtual_write(8, humidity)
oled.text('Temp in C ', 0, 10)
oled.text(str(temperature_C), 5, 20)
oled.text('Humidity ', 0, 30)
oled.text(str(humidity), 5, 40)
oled.show()
time.sleep(2)
while True:
pix_res_x = 128
pix_res_y = 64
i2c_dev = init_i2c(scl_pin=13, sda_pin=12)
oled = SSD1306_I2C(pix_res_x, pix_res_y, i2c_dev)
blynk.run()
find()