from machine import I2C, Pin
from i2c_lcd import I2cLcd
from time import sleep
import dht
import network
import urequests
import json
sensor = dht.DHT22(Pin(15))
AddressOfLcd = 0x27
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000) # connect scl to GPIO 22, sda to GPIO 21
lcd = I2cLcd(i2c, AddressOfLcd, 2, 16)
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while True:
try:
sleep(2)
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
lcd.move_to(0, 0)
lcd.putstr("Temp: %3.1f C " % temp)
lcd.move_to(0, 1)
lcd.putstr("Humedad: %3.1f %%" % hum)
# Formular la pregunta a OpenAI
user_question = "¿Cuál es la temperatura y humedad actual? Temp: %3.1f C, Humedad: %3.1f %%" % (temp, hum)
# Realizar la solicitud a OpenAI
headers = {'Authorization': 'Bearer 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','Content-Type': 'application/json',}
data = '{"model": "gpt-3.5-turbo","messages":[{"role": "user", "content": "' + user_question + '"}],"temperature": 0}'
URL = "https://api.openai.com/v1/chat/completions"
r = urequests.post(URL, headers=headers, data=data)
person_dict = json.loads(r.text)
response_content = person_dict['choices'][0]['message']['content']
# Imprimir la respuesta de OpenAI en la pantalla LCD
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr(response_content)
except OSError as e:
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Falla el sensor!")
lcd.move_to(0, 1)
lcd.putstr(" ")