import network
import urequests
import time
import machine
import random
from machine import Pin, I2C
from dht import DHT22
from mpu6050 import MPU6050
ssid = "Wokwi-GUEST"
password = ""
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)
while not wifi.isconnected():
print("Connecting...")
time.sleep(1)
print("WiFi Connected")
TOKEN = "TMeeWnzbGYLDYlxEBpHD"
URL = f"http://demo.thingsboard.io/api/v1/{TOKEN}/telemetry"
def send(data):
try:
r = urequests.post(URL, json=data)
r.close()
print("Sent:", data)
except:
print("Send error")
dht = DHT22(Pin(4))
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
mpu = MPU6050(i2c)
led_g = Pin(5, Pin.OUT)
led_o = Pin(2, Pin.OUT)
led_r = Pin(15, Pin.OUT)
def predict(temp, vib):
if temp > 70 or vib > 30000:
return "FAIL"
elif temp > 60 or vib > 20000:
return "WARNING"
else:
return "OK"
while True:
dht.measure()
temp = dht.temperature()
hum = dht.humidity()
vib = mpu.get_accel()['x']
state = predict(temp, vib)
if state == "FAIL":
led_r.on(); led_o.off(); led_g.off()
elif state == "WARNING":
led_o.on(); led_r.off(); led_g.off()
else:
led_g.on(); led_o.off(); led_r.off()
data = {
"temperature": temp,
"humidity": hum,
"vibration": vib,
"state": state
}
send(data)
print("Temp:", temp, "Vib:", vib, "State:", state)
time.sleep(5)