import network
import time
import dht
from machine import Pin
from umqtt.robust import MQTTClient
# Azure IoT Hub connection details
CONNECTION_STRING = "HostName=KTKPR.azure-devices.net;DeviceId=KTKPRIET;SharedAccessKey=XvVkLdBNMHyKC+c8Szlf31hPjNtwF9P8DWWrS0CV7dQ="
MQTT_BROKER = "KTKPR.azure-devices.net"
DEVICE_ID = "KTKPRIET"
MQTT_PORT = 8883
TOPIC = "devices/" + DEVICE_ID + "/messages/events/"
# DHT22 sensor setup
dht_sensor = dht.DHT22(Pin(15)) # Pin 15 for DHT22 data
# WiFi connection function
def connect_to_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('Connecting to network...')
wlan.connect(ssid, password)
while not wlan.isconnected():
time.sleep(1)
print('Network connected:', wlan.ifconfig())
# Function to read sensor data
def get_sensor_data():
try:
dht_sensor.measure()
temp = dht_sensor.temperature() # Get temperature in Celsius
hum = dht_sensor.humidity() # Get humidity percentage
return temp, hum
except OSError as e:
print('Failed to read sensor:', e)
return None, None
# Function to connect to Azure IoT Hub using MQTT with umqtt.robust
def connect_to_mqtt():
client = MQTTClient(client_id=DEVICE_ID,
server=MQTT_BROKER,
port=MQTT_PORT,
user=DEVICE_ID + "@KTKPR.azure-devices.net",
password=CONNECTION_STRING,
ssl=True)
client.connect()
print('Connected to Azure IoT Hub')
return client
# Function to send sensor data to Azure IoT Hub
def send_sensor_data(client):
temp, hum = get_sensor_data()
if temp is not None and hum is not None:
message = {
"deviceId": DEVICE_ID,
"temperature": temp,
"humidity": hum
}
client.publish(TOPIC, str(message))
print('Message sent:', message)
else:
print('Sensor data unavailable')
# Main program
def main():
wifi_ssid = 'Your_SSID'
wifi_password = 'Your_PASSWORD'
# Connect to WiFi
connect_to_wifi(wifi_ssid, wifi_password)
# Connect to Azure IoT Hub via MQTT
client = connect_to_mqtt()
# Send sensor data every 10 seconds
while True:
send_sensor_data(client)
time.sleep(10)
if __name__ == "__main__":
main()