print("Hello, ESP32!")
from machine import Pin
from dht import DHT22
import time
import ujson
from umqtt.simple import MQTTClient
# Set up DHT22 sensor
dht_pin = [15, 2, 22]
dht_sensor = DHT22(Pin(dht_pin))
# Set up push buttons
button_pins = [21, 19, 18, 5, 4]
buttons = [Pin(pin, Pin.IN, Pin.PULL_UP) for pin in button_pins]
# MQTT Settings
mqtt_broker = "mqtt.eclipse.org"
mqtt_topic = "sensor_data"
mqtt_client_id = "esp1"
mqtt_client = MQTTClient(mqtt_client_id, mqtt_broker)
def read_sensor_data():
    dht_sensor.measure()
    temp = dht_sensor.temperature()
    humidity = dht_sensor.humidity()
    pressure = 1000  # Placeholder for pressure, you need to modify this based on your setup
    berat = sum([(not button.value()) << i for i, button in enumerate(buttons)])
    return {
        "temp": temp,
        "humidity": humidity,
        "pressure": pressure,
        "berat": berat
    }
def publish_data():
    data = read_sensor_data()
    json_data = ujson.dumps(data)
    mqtt_client.connect()
    mqtt_client.publish(mqtt_topic, json_data)
    mqtt_client.disconnect()
while True:
    publish_data()
    time.sleep(5)  # Publish data every 5 seconds
import machine
import ujson
from umqtt.simple import MQTTClient
# MQTT Settings
mqtt_broker = "mqtt.eclipse.org"
mqtt_topic = "sensor_data"
mqtt_client_id = "esp2"
mqtt_client = MQTTClient(mqtt_client_id, mqtt_broker)
# Set up LEDs
led_pins = [26, 27, 14, 12, 13]
leds = [machine.Pin(pin, machine.Pin.OUT) for pin in led_pins]
def subscribe_data(topic, msg):
    data = ujson.loads(msg)
    temp = data["temp"]
    humidity = data["humidity"]
    pressure = data["pressure"]
    berat = data["berat"]
    # Check conditions and control LEDs accordingly
    leds_on = [berat & (1 << i) for i in range(5)]
    for i, led in enumerate(leds):
        led.value(leds_on[i])
    # Check conditions and trigger actions
    if temp > 50:
        # Trigger alarm
        pass
    if humidity < 70:
        # Trigger pam mist
        pass
    if pressure == "meletup":
        # Trigger explosion
        pass
def on_message(topic, msg):
    print("Received message:", msg)
    subscribe_data(topic, msg)
mqtt_client.set_callback(on_message)
mqtt_client.connect()
mqtt_client.subscribe(mqtt_topic)
while True:
    mqtt_client.wait_msg()