from machine import Pin, PWM
from umqtt.simple import MQTTClient
import time
import json
import network
import dht
# **************************************#
# Objects:
led = Pin(4, Pin.OUT) # GPIO 04: led interno NodeMCU
d = dht.DHT22(Pin(2))
pir_sensor = Pin(25, Pin.IN)
led_ama = Pin(27, Pin.OUT)
# **************************************#
# Configure the ESP32 wifi as STAtion.
sta = network.WLAN(network.STA_IF)
if not sta.isconnected():
print('Conectándose a la red...')
sta.active(True)
sta.connect('Wokwi-GUEST', '')
while not sta.isconnected():
pass
print ('Conectado a la red.')
print('Configuración de la red:', sta.ifconfig())
# **************************************#
print("Pasando a THINGSBOARD")
# Global variables and constants:
username = "anoe4ceoww1djnr34qck"
broker = "thingsboard.cloud"
topic = "v1/devices/me/telemetry"
Mqtt_CLIENT_ID = "v598qgf7bqwl26zpwztk" # Max. Number is 23 due to MQTT specs
PASSWORD = "qd43qpcqrsoqyr67cek3"
client = MQTTClient(client_id=Mqtt_CLIENT_ID, server=broker, port=1883,
user=username, password=PASSWORD, keepalive=10000) # Configuración del Cliente MQTT
client.connect()
UPDATE_TIME_INTERVAL = 1000 # in ms unit
last_update = time.ticks_ms()
# **************************************#
data = dict()
# **************************************#
led_estado = True
led_ama_estado = False
print("Conectado a THINGSBOARD")
time.sleep(4)
# Main loop:
while True:
if time.ticks_ms() - last_update >= UPDATE_TIME_INTERVAL:
last_update = time.ticks_ms()
d.measure()
t = d.temperature()
h = d.humidity()
pir = pir_sensor.value()
# Condicionales para activar LEDs
if pir == 1: # Si se detecta movimiento
led_ama.value(1)
led_ama_estado = True
else:
led_ama.value(0)
led_ama_estado = False
if h <= 50.0: # Si la humedad es igual o menor a 50%
led.value(1)
led_estado = True
else:
led.value(0)
led_estado = False
data["temperature"] = t
data["humidity"] = h
data["led"] = led_estado
data["led_ama"] = led_ama_estado
data2 = json.dumps(data) # convert it to json
client.publish(topic, data2)
print("Datos publicados")
print(f"{t} {h} {led_ama_estado}")
print('conexión finalizada')