# import network
import time

# import ujson
# import _thread
from machine import Pin, ADC, PWM
# from umqtt.simple import MQTTClient

# MQTT_CLIENT_ID = "sensores"
# MQTT_BROKER = "broker.mqttdashboard.com"
# MQTT_TOPIC_SEND = "purificador/sensors"
# MQTT_TOPIC_RELE = "purificador/rele"
# MQTT_TOPIC_SERVO = "purificador/servo"
# MQTT_TOPIC_VALUES = "purificador/values"

# WIFI_SSID = "Wokwi-GUEST"
# WIFI_PASSWORD = ""

# gas = ADC(Pin(34, Pin.IN))
# gas.atten(ADC.ATTN_11DB)

# particula = ADC(Pin(35, Pin.IN))
# particula.atten(ADC.ATTN_11DB)

# rele = Pin(12, Pin.OUT)

serv = PWM(Pin(13, Pin.OUT))
serv.freq(100)

print(serv)
serv.duty(0)

# for i in range(0, 1024, 10):
#     print(i)
#     serv.duty(i)
#     time.sleep(0.4)
print(serv)
time.sleep(1)

serv.duty(10)
print(serv)
time.sleep(10)

# print("Connecting to WiFi", end="")
# wifi = network.WLAN(network.STA_IF)
# wifi.active(True)
# wifi.connect(WIFI_SSID, WIFI_PASSWORD)
# while not wifi.isconnected():
#   pass

# client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)

# publish_value_rele = 0
# publish_value_servo = 0

# def callback(topic, msg):
#   msg = ujson.loads(msg.decode())
#   if topic.decode() == MQTT_TOPIC_RELE:
#     global publish_value_rele
#     publish_value_rele = int(msg["valor"])
#   elif topic.decode() == MQTT_TOPIC_SERVO:
#     global publish_value_servo
#     publish_value_servo = int(msg["valor"])
#   else:
#     global gas_value, particula_value
#     gas_value = int(msg["gas"])
#     particula_value = int(msg["particula"])

# client.set_callback(callback)
# client.connect()

# print("\nConnected!")

# client.subscribe(MQTT_TOPIC_RELE)
# client.subscribe(MQTT_TOPIC_SERVO)
# client.subscribe(MQTT_TOPIC_VALUES)

# def check_msg():
#   while True:
#     time.sleep(1)
#     client.check_msg()

# def verify_values():
#   global gas_value, particula_value
#   if (gas_value > 30000 or particula_value > 30000): return True
#   else: return False

# def change_rele():
#   global publish_value_rele
#   global publish_value_servo
#   while True:
#     print(publish_value_rele, publish_value_servo)
#     if publish_value_rele == 1 or publish_value_servo == 1: 
#         if publish_value_rele == 1: rele.on()
#         else: rele.off()
#         if publish_value_servo == 1: servo.move(180)
#         else: servo.move(0)
#     else:
#       verification = verify_values()
#       print(verification)
#       if (verification): 
#         servo.move(100)
#         rele.on()
#       else: 
#         servo.move(0)
#         rele.off()
#     time.sleep(1)

# _thread.start_new_thread(check_msg, ())
# _thread.start_new_thread(change_rele, ())

# print("Medindo...")

# while True:
#   gas_value = gas.read_u16()
#   particula_value = particula.read_u16()
#   message = ujson.dumps({
#     "gas": gas_value,
#     "particula": particula_value
#   })
#   client.publish(MQTT_TOPIC_SEND, message)
#   time.sleep(1)