# Este proyecto es la base para la actividad Practica del modulo 2
# Importar librerias
import urequests
import network
import time
import ujson
# Conexion al servicio Wi-Fi Virtual de Wokwi para tener acceso a Internet
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
# Sincronizar hora Argentina
import ntptime
import time
import utime
ntptime.host = "2.ar.pool.ntp.org"
ntptime.settime()
# Clase para usar con Gateway SingleDevice.SingleSensor https://www.ubeac.io/docs/GatewayList.html#_2-software-gateways
class SensorUbeac:
BASE_HEADER = {
"Content-Type": "application/json"
}
def __init__(self, url, uid, tipo, prefijo, unidad):
self.url = url
self.uid = uid
self.tipo = tipo
self.prefijo = prefijo
self.unidad = unidad
def tiempo_actual(self):
local_time = time.localtime()
year, month, day, hour, minute, second = local_time[:6]
unix_timestamp = utime.mktime((year, month, day, hour, minute, second, 0, 0))
return unix_timestamp
def enviar_valor(self, valor, log=True):
header = self.BASE_HEADER.copy()
data = {
"mac": self.uid,
"type": self.tipo,
"ts": self.tiempo_actual(),
"unit": self.unidad,
"prefix": self.prefijo,
"data": valor
}
response = urequests.post(
self.url,
json=data,
headers=header
)
if log:
if response.status_code == 200:
print(f'{self.uid} subio {valor}')
else:
print(f'ERROR: {response.status_code}')
response.close()
# Variables para la conexion con Ubeac
# Completar con sus datos:
#Direccion HTTP del Gateway uBeac Single Sensor
URL_HTTP_GATEWAY = 'http://cursoiot.hub.ubeac.io/sensoresRene/'
#Van a ser los nombres con los que van a aparecer los dispositivos en Ubeac
NOMBRE_SENSOR_TEMPERATURA = 'Temperatura:Rene'
NOMBRE_SENSOR_HUMEDAD = 'Humedad:Rene'
# Ejemplo de como enviar datos a un gateway Ubeac con la url anterior
ubeac_temperatura = SensorUbeac(URL_HTTP_GATEWAY,
NOMBRE_SENSOR_TEMPERATURA,
4, # Tipo Temperature https://www.ubeac.io/docs/SensorTypes.html
0, # Sin prefijo de unidad https://www.ubeac.io/docs/UnitPrefixes.html
2) # Grados centigrados como unidad https://www.ubeac.io/docs/SensorUnits.html
ubeac_humedad = SensorUbeac(URL_HTTP_GATEWAY,
NOMBRE_SENSOR_HUMEDAD,
5, # Tipo Humidity https://www.ubeac.io/docs/SensorTypes.html
0, # Sin prefijo de unidad https://www.ubeac.io/docs/UnitPrefixes.html
20) # % Porcentaje como unidad https://www.ubeac.io/docs/SensorUnits.html
import dht
from machine import Pin
from time import sleep
led = Pin(26, Pin.OUT)
sensor = dht.DHT22(Pin(15))
while True:
sensor.measure()
ubeac_temperatura.enviar_valor(sensor.temperature())
ubeac_humedad.enviar_valor(sensor.humidity())
if sensor.temperature()>50:
print("PELIGRO alta temperatura")
led.value(1)
sleep(1)
led.value(0)
sleep(1)