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()