# M2_IoT : [semana 3] - BaseDatos
# L I B R E R I A S #
# Librerias para LED
import machine
import time
# Librerias para LCD
from machine import I2C, Pin
from i2c_lcd import I2cLcd
# Librerias para Sensor
from machine import Pin
from time import sleep
import dht
# Librerias para FireBase
import network
import urequests
import json
# S E T U P #
# S e t u p L E D
led=Pin(2, Pin.OUT)
# S e t u p L C D
AdressOfLcd = 0x27
i2c = I2C(1,scl=Pin(22) , sda=Pin(21) , freq=400000)
lcd = I2cLcd(i2c , AdressOfLcd , 2 , 16)
# S e t u p Sensor
sensor = dht.DHT22(Pin(15))
# S e t u p FireBase
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST","")
# C O D I G O S P R U E B A #
# C o d i g o L E D
#for i in range(1):
#led.value(1)
#time.sleep(1)
#led.value(0)
#time.sleep(1)
# C o d i g o Sensor
#sensor.measure()
#temp = sensor.temperature()
#print("Temperature : %3.1f C" %temp)
# C o d i g o L C D
#lcd.move_to(0 , 0)
#lcd.putstr('Temp : %3.1f C' %temp)
#lcd.move_to(0 , 1)
#lcd.putstr('Status:')
# C O D I G O F I N A L #
while True :
tiempoLimite = time.ticks_add(time.ticks_ms(), 5000)
# Medir temperatura
sensor.measure()
temp = sensor.temperature()
# Condición de Análisis
if temp<20:
status = 'Cold'
if temp>=20 and temp<35:
status = 'Good'
if temp>=35:
status = 'Hot'
# Imprimir info en LCD
lcd.move_to(0 , 0)
lcd.putstr('Temp : %3.1f C' %temp)
lcd.move_to(0 , 1)
lcd.putstr('Status : %s' %status)
# Transmisión de Datos
while time.ticks_diff(tiempoLimite, time.ticks_ms()) > 0:
for i in range(5):
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
while not wlan.isconnected():
pass
URL = "https://mob-100-cc30d-default-rtdb.firebaseio.com/DATA/.json"
# Convertir valores "int" a "str"
status=str(status)
temp=str(temp)
# Update data
data="{\"code\":\"DHT22\",\"date\":\"11/Sep/2022\",\"status\":\""+status+"\",\"value\":\""+temp+"\"}"
#data="{\"status\":\""+status+"\"}"
r = urequests.patch(URL, data=data)
results = r.json()
print(results)