import network
import time
from machine import Pin
import dht
import ujson
from tb_device_mqtt import TBDeviceMqttClient
# Configuración de la red WiFi
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# Configuración de MQTT
THINGSBOARD_HOST = "thingsboard.cloud"
DEVICE_ACCESS_TOKEN = "21Oa2iXb87z8t4pCt92F"
# Configuración del pin del sensor de humedad
SENSOR_PIN = 15
# Inicialización del sensor DHT
sensor = dht.DHT22(Pin(SENSOR_PIN))
# Función para conectarse a la red WiFi
def connect_wifi():
print("Conectando a WiFi...")
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
sta_if.active(True)
sta_if.connect(WIFI_SSID, WIFI_PASSWORD)
while not sta_if.isconnected():
pass
print("Conectado a WiFi:", sta_if.ifconfig())
# Función para conectar y publicar datos a ThingsBoard
def publish_to_thingsboard(sensor_data):
print("Conectando a ThingsBoard...")
client = TBDeviceMqttClient(THINGSBOARD_HOST, DEVICE_ACCESS_TOKEN)
client.connect()
print("Conectado a ThingsBoard!")
client.send_telemetry(sensor_data)
client.disconnect()
print("Desconectado de ThingsBoard")
# Función principal
def main():
connect_wifi()
while True:
try:
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
sensor_data = {"temperature": temperature, "humidity": humidity}
print("Datos del sensor:", sensor_data)
publish_to_thingsboard(sensor_data)
time.sleep(10) # Publicar datos cada 10 segundos
except Exception as e:
print("Error:", e)
time.sleep(10)
# Ejecutar la función principal
if __name__ == "__main__":
main()