import machine
import network
import wifi_credentials
from umqtt.simple import MQTTClient
import dht
import time

# **************************************#
# Objects:
led = machine.Pin(2,machine.Pin.OUT)
d = dht.DHT22(machine.Pin(23))

# **************************************#
# Configure the ESP32 wifi as STAtion.
sta = network.WLAN(network.STA_IF)
if not sta.isconnected():
  print('connecting to network...')
  sta.active(True)
  #sta.connect('wifi ssid', 'wifi password')
  sta.connect(wifi_credentials.ssid, wifi_credentials.password)
  while not sta.isconnected():
    pass
print('network config:', sta.ifconfig())

# **************************************#
# Global variables and constants:
SERVER = "mqtt.thingspeak.com"
client = MQTTClient("umqtt_client", SERVER)
CHANNEL_ID = "2526318"
WRITE_API_KEY = "RU9WMUQNNF0CQRJK"
# topic = "channels/2526318/publish/RU9WMUQNNF0CQRJK"
topic = "channels/" + CHANNEL_ID + "/publish/" + WRITE_API_KEY
UPDATE_TIME_INTERVAL = 5000 # in ms unit
last_update = time.ticks_ms()

# **************************************#
# Main loop:
while True:
    if time.ticks_ms() - last_update >= UPDATE_TIME_INTERVAL:
        d.measure()
        t = d.temperature()
        h = d.humidity()
    
        #payload = "field1=" + str(t) + "&field2=" + str(h)
        payload = "field1={}&field2={}" .format(str(t), str(h))

        client.connect()
        client.publish(topic, payload)
        client.disconnect()

        print(payload)
        led.value(not led.value())
        last_update = time.ticks_ms()