Il arrive fréquemment que de nombreuses données soient générées dans des projets qui fonctionnent 24 heures sur 24. Une façon de les conserver en permanence est de stocker les données dans une base de données locale. Cependant, il y a aussi des raisons qui plaident contre cette solution. Pour que les données mesurées (par exemple, celles d’une station météorologique) restent disponibles à l’avenir, il est également possible d’éviter divers services en ligne.
L’un de ces fournisseurs est ThingSpeak. Vous pouvez y créer un compte gratuit pour de petites applications et transférer ses données très facilement. Et c’est exactement le sujet de ce tutoriel : Comment transférer des données de capteurs vers ThingSpeak et les évaluer par la suite.
Pièces de matériel requises
Tout ce dont vous avez besoin est un Raspberry Pi avec une connexion Internet et un capteur dont vous mesurez les données. Même l’activité du CPU peut être enregistrée. Dans ce tutoriel, j’ai utilisé un DHT22, à l’aide duquel je mesure et enregistre la température et l’humidité.
Les capteurs et modules suivants seraient utiles pour une station météorologique :
- DHT22 (Tutoriel)
- BMP180 (Tutoriel)
- Photorésistants
- Résistances normales
- Câble jumper femelle femelle
- Si nécessaire, une boîte en plastique étanche
Une liste des autres composants peut être trouvée dans cet article : 50 des plus importants capteurs et modules de Raspberry Pi
Créer un compte ThingSpeak
Avant de commencer, vous devez avoir un compte sur ThingSpeak. Créez un compte ici si vous n’en avez pas encore. Ensuite, créez un nouveau canal à https://thingspeak.com/channels.
Ici, vous donnez un nom au canal ainsi que les champs que vous voulez utiliser. Au total, on peut utiliser jusqu’à 8 champs. Les noms donnés n’ont aucune influence sur la transmission des données, car nous spécifions seulement « champ1 », « champ2 », etc. Tous ces noms attribués sont toujours modifiables ultérieurement.
Après avoir enregistré le canal ci-dessous, vous serez automatiquement redirigé vers l’onglet « Vue privée ». Ici, les champs attribués sont affichés sous forme de diagramme. Plus haut, vous trouverez l' »ID du Canal« . Nous en aurons bientôt besoin.
Ensuite, nous passons à l’onglet « Clés API ». Les deux valeurs « Écrire la clé API » et « Lire la clé API » sont également nécessaires pour que nous puissions écrire ou récupérer des données.
Installation et configuration du capteur de température
Si vous ne voulez pas utiliser le DHT11 ou le DHT22, vous pouvez sauter ce chapitre.
J’ai déjà parlé des deux capteurs en détail ici, il ne s’agit donc que de la connexion pour mémoire (résistance de 10kΩ) :
Si vous n’avez jamais utilisé le capteur auparavant et que la bibliothèque n’est pas encore installée, nous devons d’abord l’installer. Certains paquets sont nécessaires pour cela:
sudo apt-get update sudo apt-get install build-essential python-dev python-openssl git
Nous installons ensuite la bibliothèque pour lire les capteurs DHT11/22:
clonage git https://github.com/adafruit/Adafruit_Python_DHT.git && cd Adafruit_Python_DHT sudo python setup.py install
Si tout s’est déroulé sans erreur, nous pouvons déjà procéder.
Utilisation de la bibliothèque ThingSpreak de Raspberry Pi
Pour pouvoir utiliser le service, il est possible d’envoyer simplement les données via « POST » ou de les récupérer via « GET ». Les fonctions sont disponibles dans à peu près tous les langages de programmation et avec un peu de connaissances, le transfert de données devrait être rapide. Les réponses sont en principe en JSON.
Si vous n’avez pas assez d’expérience ou si vous n’avez tout simplement pas envie de l’écrire vous-même, vous pouvez également utiliser la bibliothèque ThingSpeak. Pour cela, nous l’installons simplement par pip :
sudo pip install thingspeak
D’une part, une bibliothèque Python est créée et, d’autre part, une application de terminal. Vous pouvez également appeler thingspeak
via la console (ou depuis un autre programme C ++ / Java).
Alors commençons. Notre petit script Python devrait lire la température et l’humidité du DHT22 toutes les 15 secondes et les envoyer à notre canal. En outre, les données devraient ensuite être récupérées à nouveau (cela n’est pas nécessaire dans les applications qui ne font qu’envoyer des données, il s’agit donc juste d’un exemple de démonstration).
Nous allons créer un nouveau fichier,
sudo nano thingspeak_example.py
qui aura le contenu suivant (sauvegarder et quitter avec CTRL + O, CTRL + X) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import thingspeak import time import Adafruit_DHT channel_id = 206897 # PUT CHANNEL ID HERE write_key = '24GJQV17H7H4XGJ5' # PUT YOUR WRITE KEY HERE read_key = '9EZ7E0918UVVAGAY' # PUT YOUR READ KEY HERE pin = 4 sensor = Adafruit_DHT.DHT22 def measure(channel): try: humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # write response = channel.update({'field1': temperature, 'field2': humidity}) # read read = channel.get({}) print("Read:", read) except: print("connection failed") if __name__ == "__main__": channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key) while True: measure(channel) # free account has an api limit of 15sec time.sleep(15) |
Vous devez adapter les lignes 5 à 7 en conséquence. La ligne 8 ne doit être modifiée que si vous utilisez un GPIO différent pour le capteur.
Bien sûr, si vous n’utilisez pas le capteur DHT22, le code doit être ajusté un peu.
Obtenir des données dans le Web Panel et via l’API
Les données du panneau sont affichées avec un délai de quelques secondes « quasi en direct ». Vous pouvez personnaliser les panneaux (apparence et affichage des données) et même écrire vos propres idées pour les données. Pour ces « applications », il suffit de maîtriser un peu de HTML, CSS et Javascript. Vous pouvez également télécharger des plugins depuis le forum.
Si vous voulez récupérer les données via API, vous pouvez le faire facilement via JSON. Vous devez remplacer votre Channel ID (avec moi : 206897) ainsi que votre « Read API Key » (avec moi : 9EZ7E0918UVVAGAY) dans le lien suivant:
https://api.thingspeak.com/channels/206897/feeds.json?api_key=9EZ7E0918UVVAGAY
En outre, il existe un grand nombre d’autres paramètres que vous pouvez spécifier pour limiter, additionner ou filtrer les données. Vous pouvez les trouver dans le Wiki MathWorks.
En conclusion, j’aimerais souligner que vous devez toujours être conscient de ce que vous transférez exactement. Même si ThingSpeak est un fournisseur réputé, vous devriez sauvegarder vous-même les données particulièrement sensibles, même si cela est un peu plus compliqué et moins sûr. Pour les projets non critiques comme les stations météo ou, par exemple, la surveillance d’un aquarium, je ne vois aucun danger.
Un commentaire
Crap integrated.