from machine import Pin,ADC
import network
from umqtt.robust import MQTTClient
import dht
import time
import urequests
sta=network.WLAN(network.STA_IF)
sta.active(True)
sta.connect('Wokwi-GUEST','')
print('Linking...')
while not sta.isconnected() :
pass
print('Link OK')
THINGSPEAK_MQTT_CLIENT_ID = "GjcbOCszCystNhAsHiQCJhg"
THINGSPEAK_MQTT_USERNAME = b"GjcbOCszCystNhAsHiQCJhg"
THINGSPEAK_MQTT_PASSWORD = b"vuzm8dONqSSCniK4O1iJNIo0"
THINGSPEAK_CHANNEL_ID = b'2501169'
client = MQTTClient(server=b"mqtt3.thingspeak.com",
client_id=THINGSPEAK_MQTT_CLIENT_ID,
user=THINGSPEAK_MQTT_USERNAME,
password=THINGSPEAK_MQTT_PASSWORD,
ssl=False)
adc = ADC(17)
LedRed=Pin(12,Pin.OUT)
LedRed.value(0)
SW_Pin=Pin(18,Pin.IN,Pin.PULL_UP)
p0=Pin(20, Pin.IN)
d=dht.DHT22(p0)
while True:
Temp=0
Hum=0
WaterLevel=0
try:
for i in range(5):
val = adc.read()
val = val/4095*100
d.measure()
t=d.temperature()
h=d.humidity()
Temp+=t
Hum+=h
WaterLevel+=val
if(SW_Pin.value()==0):
LedRed.value(not LedRed.value())
time.sleep(2.5)
except Exception as e: print(e)
Temp = Temp/5
Hum = Hum/5
WaterLevel = WaterLevel/5
print('Temperature=', Temp, 'C', ',Humidity=', Hum, '%', ',WaterLevel=', WaterLevel, '%')
client.connect()
credentials = bytes("channels/{:s}/publish".format(THINGSPEAK_CHANNEL_ID), 'utf-8')
payload = bytes("field1={:.1f}&field2={:.1f}&field3={:.1f}\n".format(Temp,Hum,WaterLevel), 'utf-8')
client.publish(credentials, payload)