Как насчет этого?Мы можем использовать time.time (), чтобы получить текущее время (в формате UNIX).Если текущее время больше, чем last_time на 10 минут (60 секунд x 10), мы проверили погоду, мы вызываем функцию, чтобы получить погоду из API.
(непроверенный код, так как у меня нетlcddriver или ключ API)
import lcddriver
import time
import datetime
import requests, json
display = lcddriver.lcd()
def get_weather():
complete_url = "http://api.openweathermap.org/data/2.5/weather?q=CITY&APPID=****HIDE_API*****"
response = requests.get(complete_url)
x = response.json()
if x["cod"] != "404":
return x
else:
return None
weather = None
try:
last_update_time = 0
while True:
if last_update_time + (60*10) > time.time():
weather = get_weather()
last_update_time = time.time()
if weather:
print("Writing to display")
display.lcd_display_string("Temperatura zew:",1)
display.lcd_display_string(str(weather['temp']-273.15) + " C", 2)
time.sleep(10)
display.lcd_clear()
display.lcd_display_string("Cisnienie ", 1)
display.lcd_display_string(str(weather['pressure']) + " hPa",2)
time.sleep(10)
display.lcd_clear()
display.lcd_display_string("Wilgotnosc ", 1)
display.lcd_display_string(str(weather['humidity']) + " %",2)
time.sleep(10)
display.lcd_clear()
time.sleep(1)
except KeyboardInterrupt: # If there is a KeyboardInterrupt (when you press ctrl+c), exit the program and cleanup
print("Cleaning up!")
display.lcd_clear()