L’Internet des Objets

L’Internet des Objets

11.4 Les serveurs applicatifs

Page précédente Page suivante

Pour les serveurs applicatifs, nous nous contentons d’un programme python qui récupère les données et qui les enregistre. L’enregistrement peut se faire dans un fichier plat, une base MariaDB, une Time series database.

11.4.1 Enregistrement dans un fichier texte

Nous allons montrer comment se connecter en écoute à un serveur MariaDB pour afficher les données.

Pour commencer, il faut faire les imports Python et définir les paramètres MQTT :

MQTTd="10.44.11.22"
MQTTuser="mqttuser"
MQTTpass="x"
MQTTclientId="ClientTexte"

Créer une fonction qui sera appelé lors d’une réception de données du serveur MQTT (callback).

def on_message(client, userdata, msg):
     print(f"Received `{msg.payload.decode()}`
                    from `{msg.topic}` topic")

Le topique est dans la variable topic, le ùessage dans le payload. Celui-ci doit éventuellement être transformé en chaîne de caractères par la fonction decode. Le topique et la chaîne de caractères peuvent être analysés par le script Python pour produire éventuellement une ligne enregistrée avec l’heure.

Il faut commencer par ouvrir un fichier en écriture :

FileName="/tmp/PT/env.data"
File=open(FileName,'w')

Puis dans une boucle ajouter les données reçues dans un fichier. Dans cet exemple les données de température et d’humidité sont choisies au hasard.

i=0
while (i < 100):
    T=random.randrange(1000,3000)/100
    H=random.randrange(1,99)
    # Convertit le temps dans un format pour gnuplot
    today = datetime.datetime.today()
    tempspresent=today.strftime("%y-%m-%d %H:%M:%S")
    print(tempspresent +" " + str(T) + " " + str(H), file=File)
    i = i+1
    time.sleep(1)

Ici le fichier va contenir 100 lignes du type :

24-06-11 14:10:43 19.5 60
24-06-11 14:10:43 26.99 9
24-06-11 14:10:43 12.2 87

11.4.2 Enregistrement dans une base de données MariaDB