import network
import time
import urequests
from machine import Pin, SoftI2C
import ssd1306
def curdata(data):
current_data = data["current"]
oled.fill(0)
oled.text("CURRENT READINGS",0,0)
oled.text("Temperature:",0,10)
oled.text(str(current_data["temperature_2m"]),36,20)
oled.text("C",68,20)
oled.text("Wind speed :",0,30)
oled.text(str(current_data["wind_speed_10m"]),36,40)
oled.text("m/s",68,40)
oled.show()
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text("Connecting to ",17,21)
oled.text("wifi",45,31)
oled.show()
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('Wokwi-GUEST', '')
i=0
while not wifi.isconnected():
oled.text(".", 73+i,31)
oled.show()
i+=4
time.sleep(0.1)
oled.fill(0)
oled.text("Connected!",19,25)
oled.show()
time.sleep(1)
oled.fill(0)
oled.text("Enter latitude",8,10)
oled.text("and",52,20)
oled.text("longitude detail",0,30)
oled.text("in terminal",20,40)
oled.show()
time.sleep(1)
lat=float(input("Enter the latitude of location.(+ve for N and -ve for S):"))
log=float(input("Enter the logitude of location.(+ve for E and -ve for W):"))
print("Current readings will be printed in oled and updated for every 15 minutes")
print("hourly forecast will be printed in termimal")
time.sleep(3)
url = "https://api.open-meteo.com/v1/forecast?latitude="+str(lat)+"&longitude="+str(log)+"¤t=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m"
response = urequests.get(url)
if response.status_code == 200:
data = response.json()
curdata(data)
hourly_data = data["hourly"]
print("\nHourly Forecast:")
for i in range(len(hourly_data["time"])):
print(f"Time: {hourly_data['time'][i]} \nTemperature at 2m: {hourly_data['temperature_2m'][i]} \nRelative Humidity at 2m: {hourly_data['relative_humidity_2m'][i]} \nWind Speed at 10m: {hourly_data['wind_speed_10m'][i]}")
print()
while True:
time.sleep(900)
response = urequests.get(url)
curdata(response.json())
else:
print("Error:", response.status_code)