Lookup here …
Send data via MQTT
The following code sends temperature data measured by a DHT11 connected to an ESP32 to an Adafruit.IO feed:
import network
from machine import Pin
import os
import sys
from umqtt.robust import MQTTClient
from time import sleep
from dht import DHT11
# ADAFRUIT IO connection related
#
ledPin = Pin(8, Pin.OUT, value=1)
# A randomly created MQTT clientID
# https://io.adafruit.com/api/docs/mqtt.html#adafruit-io-mqtt-api)
#
random_num = int.from_bytes(os.urandom(3), 'little')
mqtt_client_id = bytes('client_'+str(random_num), 'utf-8')
# Your IO.ADAFRUIT.COM account data
#
ADAFRUIT_IO_URL = b'io.adafruit.com'
ADAFRUIT_USERNAME = b'p4xxxxr'
ADAFRUIT_IO_KEY = b'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ADAFRUIT_IO_FEEDNAME = b'DemoFeed'
# Establ. connection to AdafruitIO MQTT via unsecure TCP port 1883
# Set parameter ssl from "ssl=False" to "ssl=True" for SSL connection
#
client = MQTTClient(client_id=mqtt_client_id,
server=ADAFRUIT_IO_URL,
user=ADAFRUIT_USERNAME,
password=ADAFRUIT_IO_KEY,
ssl=False)
try:
client.connect()
except Exception as e:
print('could not connect to MQTT server {}{}'.format(type(e).__name__, e))
sys.exit()
# send temperature measured by the DHT11 sensor to Adafruit IO via MQTT
#
# format of feed name:
# "ADAFRUIT_USERNAME/feeds/ADAFRUIT_IO_FEEDNAME"
mqtt_feedname = bytes('{:s}/feeds/{:s}'.format(ADAFRUIT_USERNAME, ADAFRUIT_IO_FEEDNAME), 'utf-8')
PUBLISH_PERIOD_IN_SEC = 10
dht11sensor = DHT11(Pin(5))
# endless loop
while(True):
# get new sensor values
dht11sensor.measure()
temp = dht11sensor.temperature()
sleep(1)
hum = dht11sensor.humidity()
# send temperature value to ADAFRUIT IO
try:
client.publish(mqtt_feedname, bytes(str(temp), 'utf-8'), qos=0)
#sleep(PUBLISH_PERIOD_IN_SEC)
for i in range(1, 300):
ledPin.value(0)
sleep(0.1)
ledPin.value(1)
sleep(0.9)
except KeyboardInterrupt:
print('Ctrl-C pressed...exiting')
client.disconnect()
sys.exit()