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.

1
import dht
2
import machine
3
import time
4
import network  # Si connexion dans ce script
5
import sys
6
import json
7
from umqtt.simple import MQTTClient
8
import ubinascii
9
10
# Connexion Wifi
11
# Supprimer cette partie si elle est
12
# faite automatiquement au demarrage de la carte
13
# dans le boot.py
14
############################
15
# Debut configuration Wifi #
16
############################
17
WIFI_SSID = "MON_WIFI"
18
WIFI_PASSWORD = "MON_PASSWD"
19
20
# turn off the WiFi Access Point
21
ap_if = network.WLAN(network.AP_IF)
22
ap_if.active(False)
23
24
# connect the device to the WiFi network
25
wifi = network.WLAN(network.STA_IF)
26
wifi.active(True)
27
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
28
29
# wait until the device is connected to the WiFi network
30
MAX_ATTEMPTS = 20
31
attempt_count = 0
32
while not wifi.isconnected() and attempt_count < MAX_ATTEMPTS:
33
    attempt_count += 1
34
    time.sleep(1)
35
36
if attempt_count == MAX_ATTEMPTS:
37
    print("could not connect to the WiFi network")
38
    sys.exit()
39
40
################################
41
# fin de la configuration Wifi #
42
################################
43
44
d = dht.DHT22(machine.Pin(14)) # Capteur sur D5
45
46
# parametres MQTTClient
47
AIO_SERVER = "io.adafruit.com"
48
AIO_USER = "MON_LOGIN"
49
AIO_APIKEY = "MA_CLE_IO_KEY"
50
CLIENT_ID = ubinascii.hexlify(machine.unique_id())
51
AIO_FEED = "MON_FEED"
52
53
client = MQTTClient(
54
    client_id=CLIENT_ID,
55
    server=AIO_SERVER,
56
    user=AIO_USER,
57
    password=AIO_APIKEY,
58
    ssl=False,
59
)
60
mqtt_feedname = "{:s}/feeds/{:s}".format(AIO_USER, AIO_FEED)
61
62
try:
63
    client.connect()
64
except Exception as e:
65
    print("Connexion au serveur MQTT impossible : {}{}".format(type(e).__name__, e))
66
    sys.exit()
67
68
while True:
69
    d.measure()
70
    temp = d.temperature()
71
    client.publish(mqtt_feedname, str(temp))
72
    time.sleep(60)
73

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 :