Publier des informations de la carte vers le broker MQTT d'adafruit
Méthode :
Le montage étant identique au précédent, il nous reste à regarder le code du programme. Comme dans le tutoriel précédent, si vous avez réalisé la connexion Wifi dans le boot.py, vous pourrez supprimer la première partie du programme.
Les champs indispensables à renseigner sont
AIO_USER : votre nom d'utilisateur sur le site io.adafruit.com
AIO_APIKEY : Votre clé IO_KEY que vous avez noté précédemment
AIO_FEED : Le nom du Feed que vous avez créé pour accueillir les données récoltées par le capteur.
import dht
import machine
import time
import network # Si connexion dans ce script
import sys
import json
from umqtt.simple import MQTTClient
import ubinascii
# Connexion Wifi
# Supprimer cette partie si elle est
# faite automatiquement au demarrage de la carte
# dans le boot.py
############################
# Debut configuration Wifi #
############################
WIFI_SSID = "MON_WIFI"
WIFI_PASSWORD = "MON_PASSWD"
# turn off the WiFi Access Point
ap_if = network.WLAN(network.AP_IF)
ap_if.active(False)
# connect the device to the WiFi network
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
# wait until the device is connected to the WiFi network
MAX_ATTEMPTS = 20
attempt_count = 0
while not wifi.isconnected() and attempt_count < MAX_ATTEMPTS:
attempt_count += 1
time.sleep(1)
if attempt_count == MAX_ATTEMPTS:
print("could not connect to the WiFi network")
sys.exit()
################################
# fin de la configuration Wifi #
################################
d = dht.DHT22(machine.Pin(14)) # Capteur sur D5
# parametres MQTTClient
AIO_SERVER = "io.adafruit.com"
AIO_USER = "MON_LOGIN"
AIO_APIKEY = "MA_CLE_IO_KEY"
CLIENT_ID = ubinascii.hexlify(machine.unique_id())
AIO_FEED = "MON_FEED"
client = MQTTClient(
client_id=CLIENT_ID,
server=AIO_SERVER,
user=AIO_USER,
password=AIO_APIKEY,
ssl=False,
)
mqtt_feedname = "{:s}/feeds/{:s}".format(AIO_USER, AIO_FEED)
try:
client.connect()
except Exception as e:
print("Connexion au serveur MQTT impossible : {}{}".format(type(e).__name__, e))
sys.exit()
while True:
d.measure()
temp = d.temperature()
client.publish(mqtt_feedname, str(temp))
time.sleep(60)
Remarque :
Si vous avez déjà utilisé le protocole MQTT, il sera intéressant de noter que le topic dans lequel vous publiez l'information n'est pas juste le nom du Feed mais est de la forme
NOM_LOGIN/feeds/MON_FEED
Résultat
Toutes les minutes, la température relevée par le capteur est enregistrée sur le site et accessible en cliquant sur le Feed en question. On peut consulter les données sous forme de graphiques ou de tableau de valeurs :