"""
MicroPython IoT Weather Station Example for Wokwi.com
"""
import network
import time
from machine import Pin, ADC
import ujson
from umqtt.simple import MQTTClient
import math
# MQTT Server Parameters
MQTT_CLIENT_ID = "xxx_cahaya" # ganti xxx dengan nama atau inisial
MQTT_BROKER = "broker.emqx.io" # ganti dengan broker mqtt public cloud lainnya jika ada masalah
MQTT_TOPIC1 = "pcr/xxx/cahaya"
MQTT_TOPIC2 = "pcr/xxx/jcahaya"
GAMMA = 0.7;
RL10 = 50;
sensor = ADC(Pin(34))
sensor.atten(ADC.ATTN_11DB)
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER,)
client.connect()
print("Connected!")
while True:
print("Measuring light resistor... ")
sensor_value = int(sensor.read() / 4)
print(sensor_value)
voltage = sensor_value / 1024.0 * 5.0
resistance = 2000.0 * voltage / (1 - voltage / 5.0)
lux = math.pow(RL10 * 1e3 * math.pow(10, GAMMA) / resistance, 1 / GAMMA)
print(lux)
client.publish(MQTT_TOPIC1, str(lux))
message = ujson.dumps({
"lux": lux,
"isLight": True if lux >= 50 else False,
})
client.publish(MQTT_TOPIC2, message)
time.sleep(5)