import network
import time
import urequests
import dht
from machine import Pin
# Replace with your Wi-Fi credentials
SSID = 'DESKTOP-C1Q83OV 7091'
PASSWORD = '63y]10B0'
# Replace with your Firebase details
FIREBASE_URL = "https://dht22demo-default-rtdb.firebaseio.com/" # Firebase Realtime Database URL
FIREBASE_API_KEY = "AIzaSyCmePP0X6O-XC1mO4RBkTJUVIZKBYdtYyQ" # Your Firebase API key
# Setup DHT22 sensor
dht_pin = Pin(15, Pin.IN, Pin.PULL_UP) # GPIO15 (Adjust pin based on your wiring)
sensor = dht.DHT22(dht_pin)
# Function to connect to Wi-Fi
def connect_wifi():
print('Connecting to Wi-Fi...')
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('Connected to Wi-Fi')
print('IP Address:', wlan.ifconfig()[0])
# Function to send data to Firebase
def send_data_to_firebase(temperature, humidity):
url = f"{FIREBASE_URL}/sensor_data.json?auth={FIREBASE_API_KEY}"
data = {
"temperature": temperature,
"humidity": humidity,
"timestamp": int(time.time()) # Current timestamp
}
try:
response = urequests.post(url, json=data)
if response.status_code == 200:
print('Data sent to Firebase successfully!')
else:
print('Failed to send data to Firebase, status code:', response.status_code)
response.close()
except Exception as e:
print('Error sending data to Firebase:', e)
# Main function to read sensor and send data
def main():
connect_wifi()
while True:
try:
# Read sensor data
sensor.measure() # Trigger the DHT22 to take a measurement
temperature = sensor.temperature() # Get temperature in Celsius
humidity = sensor.humidity() # Get humidity in percentage
# Print sensor data
print(f'Temperature: {temperature}°C, Humidity: {humidity}%')
# Send data to Firebase
send_data_to_firebase(temperature, humidity)
except Exception as e:
print('Error reading sensor data:', e)
# Wait for 10 seconds before taking the next reading
time.sleep(10)
# Run the main function
if __name__ == '__main__':
main()