Untitled
unknown
plain_text
9 months ago
4.2 kB
4
Indexable
# Quadran1
# Universitas Diponegoro
# UNI037
from umqtt.simple import MQTTClient
import network
import time
import ujson
from machine import Pin, Timer, ADC
import dht
# Config Pin
led1 = Pin(2, Pin.OUT)
dht22 = dht.DHT22(Pin(15))
# Config Wifi
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# Config MQTT
MQTT_BROKER = "broker.emqx.io"
MQTT_PORT = 1883
MQTT_CLIENT_ID = "quadran1_mqttx_UNI037"
# Topic Configuration
MQTT_TOPIC_SENSOR = "/UNI037/Quadran1/Sensor"
MQTT_TOPIC_LED = "/UNI037/Quadran1/LedKontrol"
# Function untuk koneksi ke Wifi nya
def connect_wifi():
print("Koneksiin WiFi...", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(WIFI_SSID, WIFI_PASSWORD)
retry = 0
while not sta_if.isconnected() and retry < 10:
print(".", end="")
time.sleep(1)
retry += 1
if sta_if.isconnected():
print("\nWiFi Terkoneksi!")
print("IP:", sta_if.ifconfig()[0])
return True
else:
print("\nWiFi Gagal Terkoneksi!")
return False
# Function untuk koneksi ke MQTT
def connect_mqtt():
try:
print("Koneksiin MQTT...", end="")
client = MQTTClient(
client_id=MQTT_CLIENT_ID,
server=MQTT_BROKER,
port=MQTT_PORT,
keepalive=60
)
client.connect()
print(" Terkoneksi!")
return client
except Exception as e:
print(" GAGAL!")
print("Error:", str(e))
return None
# Function untuk callback MQTT
def mqtt_callback(topic, msg):
try:
print("Pesan Diterima:")
print("Topic:", topic.decode())
print("Pesan:", msg.decode())
if topic.decode() == MQTT_TOPIC_LED:
command = msg.decode().upper()
# If-else perintah penghidupan LED
if command == "ON LED 1":
led1.on()
print("LED 1 HIDUP")
elif command == "OFF LED 1":
led1.off()
print("LED 1 MATI")
except Exception as e:
print("Callback error:", str(e))
# Function untuk mengambil data dari sensor
def get_sensor_data():
try:
dht22.measure() # Mengambil pengukuran dari dht22
temperature = dht22.temperature() # Read suhu
humidity = dht22.humidity() # Read kelembaban
return {
"temperature": round(temperature, 2),
"humidity": round(humidity, 2),
}
except Exception as e:
print("Error reading sensor:", str(e))
return {
"temperature": 0,
"humidity": 0,
}
# Function utama
def main():
# Connect ke Wifi
if not connect_wifi():
return
# Connect ke MQTT
client = connect_mqtt()
if client is None:
return
# Setup callback dan subscribe
try:
client.set_callback(mqtt_callback)
client.subscribe(MQTT_TOPIC_LED)
print(f"Subscribe ke {MQTT_TOPIC_LED}")
# Main loop
print("Memulai...")
while True:
try:
# Check incoming messages
client.check_msg()
# Get and publish sensor data
sensor_data = get_sensor_data()
message = ujson.dumps(sensor_data)
client.publish(MQTT_TOPIC_SENSOR, message)
print(f"Publish: {message}")
time.sleep(5)
except Exception as e:
print("Loop error:", str(e))
time.sleep(5)
try:
client.connect()
except:
print("GAGAL")
except Exception as e:
print("Setup error:", str(e))
# Running programnya
if __name__ == "__main__":
while True:
try:
main()
except Exception as e:
print("Main error:", str(e))
print("Restarting dalam 10 detik...")
time.sleep(10)Editor is loading...
Leave a Comment