Réaliser une station météo de salon avec un Raspberry Pi, un Sense Hat et Thingspeak

Dans cet article, nous allons créer une station météo qui sera capable d’envoyer des informations sur la plateforme Thingspeak.

Nous pouvons donc imaginer notre carte Raspberry, à l’aide d’une carte Sense HAT, comme un objet connecté. Un programme en Python permettra de récupérer les informations du Sense HAT (température et Humidité), et les envoyer sur les serveurs de Thingspeak, permettant d’afficher des graphiques de ces grandeurs

Un avantage d’utiliser une carte Arduino, et qu’elle possède un convertisseur analogique/numérique. Ce convertisseur permet d’utiliser des capteurs de températures et d’humidité très facilement, et ceux-ci coûtent peu (quelques euros).
Mais ces cartes ne possèdent pas d’origine d’une interface permettant une connexion Internet.

Les cartes Raspberry possèdent de base d’une interface Ethernet et Wifi. Mais pas d’un convertisseur analogique/numérique.

Heureusement, l’équipe de développement a réaliser le Sense HAT :

Le module Sense HAT regroupe une série de capteurs, une matrice led, des entrées et sorties digitales ou analogiques sur une carte d’extension tout-en-un pour une utilisation didactique.
Il est donc assez facile, sur une carte Raspberry Pi, de récupérer désormais une température et un taux d’humidité.

Installation du Sense HAT :


Il faut déjà éteindre le Raspberry.
Une fois redémarré, ouvrir un terminal et taper les commandes suivantes :

sudo apt-get update
sudo apt-get install sense-hat
sudo reboot
Installation du Sense HAT

Nous pouvons ensuite tester la récupération de la température. Créer un fichier Python, et l’exécuter :

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp)
Sense HAT & Température

On peut également tester l’humidité :

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

humidity = sense.get_humidity()
print(humidity)
Sense HAT & Humidité

Si tout est fonctionnel, nous pouvons donc passer à la création d’un compte sur Thingspeak.


Mise en place de Thingspeak :

ThingSpeak est une un site web pour l’« Internet des objets », permettant de stocker et de collecter les données des objets connectés en passant par le protocole HTTP.

Afin de pouvoir envoyer les données sur ThingSpeak à des fins d’analyse et de traitement, vous devez créer votre compte :

https://thingspeak.com/login, puis cliquez sur Create One.

Une fois connecté, nous allons devoir créer ce que ThingSpeak appelle un channel.

Cela représente un ensemble de données regroupées entre elles et qui proviennent d’un objet connecté. Un channel est composé de champs (« field » en Anglais). Il peut y en avoir jusqu’à 8.

Et chaque field représente une donnée.

Nous allons créer le channel Température et Humidité qui représentera le Sense HAT dans notre installation.

Dans notre channel nous allons créer deux fields :

field1 = Pression
field2 = Température
field3 = Humidité

Cliquez sur New Channel.
Remplissez les premiers champs: Name, Description, Field 1, Field 2 et Field 3. Tous les autres ne seront pas utiles pour le moment.

Nous disposons désormais d’un channel dans lequel nous allons pouvoir envoyer nos données.

L’URL permettant d’envoyer des données, était construite sous cette forme :

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXX&field1=XXX&field2=XXX&field3=XXX

XXXXXXXXXXXXXX correspond à votre clé API d’écriture, que vous pouvez retrouver dans les menus de Thingspeak.

Pour rappel :
– Le symbole ? concatène l’URL et la chaîne de paramètres.
– Le symbole & sépare les paramètres multiples.

Nous pouvons donc passer à la création du code permettant de récupérer la température, et l’envoyer vers Thingspeak :

Il ne faut pas oublier de compléter la  ligne API =   avec votre clé API.

# On importe les librairies nécessaires
from sense_hat import SenseHat
import time
import urllib.request

# On démarre le module Sense HAT
sense = SenseHat()

# Variable des couleurs
vert = (0, 255, 0)
rouge = (255, 0, 0)
bleu = (0, 0, 255)
jaune = (255, 255, 0)
blanc = (255, 255, 255)

# On renseigne sa clé API permettant d'écrire sur le channel
API =


# On lit les valeurs différents capteurs
pression_sense = sense.get_pressure()
pression = pression_sense*100
humidite= sense.get_humidity()
temperature = sense.get_temperature()

# En fonction de la température lue, on change la couleur d'écriture
if temperature < 10 :
        color = blanc
elif temperature >= 10 and temperature < 16 :
        color = bleu
elif temperature >= 16 and temperature < 29 :
        color = vert
elif temperature >= 29 and temperature < 35 :
        color = jaune
elif temperature >= 35 :
        color = rouge

# On affiche les valeurs des capteurs sur la matrice       
sense.show_message("T: %d" % temperature, text_colour=color, scroll_speed=0.08)
sense.show_message("P: %d" % convert_pressure, text_colour=color, scroll_speed=0.08)
sense.show_message("H: %d" % humidite, text_colour=color, scroll_speed=0.08)

time.sleep(1)

# On envoie les valeurs sur Thingspeak
url_debut = 'https://api.thingspeak.com/update?api_key='
url = url_debut + API + '&field1=' + pression + '&field2=' + temperature + '&field3=' + humidite
url = urllib.request.urlopen(url) 
Objet connecté : Raspberry, Sense HAT et Thingspeak

Faites quelques essais, et vous devez retrouver normalement vos données sur Thingspeak :

Automatiser le script

Il faut désormais exécuter le script automatiquement. Nous pouvons utiliser le crontab, disponible sur les distributions Linux. Pour plus d’informations sur les tâches cron, je vous conseille cet article sur Wikipedia.

Dans un terminal, tapez la commande suivante :

sudo crontab -e 
Configuration Crontab

Puis, ajoutez la ligne suivante :

/15 * * * * /usr/bin/python /lien/vers/votre/script.py
Configuration Crontab (2)

… qui va exécuter votre script toutes les 15 minutes.


Démarrez une conversation

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.