CRÉER SA STATION MÉTÉO À L’AIDE DU RASPBERRY PI ET DE SON ÉCRAN 3.5’’
ÉTAPE 1 : INSTALLER LE RASPBERRY PI ET SON ÉCRAN LCD 3.5’’
Nous allons nous baser sur cet écran, disponible sur Amazon : https://www.amazon.fr/gp/product/B07ZQCM57G?pf_rd_p=3369e5a6-6989-43dc-ad01-b2b5ee1dcd12&pf_rd_r=V9EJBB7VE4VDETNKZ50Y ainsi que le raspberry pi 4.
Lors de ce tutoriel, nous allons supposer que votre Raspberry Pi ainsi que son écran LCD 3.5’’ sont déjà correctement installés.
Si tel n’est pas le cas, voici tout de même l’installation simplifiée que vous pourrez retrouver ICI de manière plus détaillée :
sudo su
rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
./MHS35-show 90
ÉTAPE 2 : RÉFLÉCHIR SON ARCHITECTURE
Pour une station météo, les données essentielles sont : les prévisions météorologiques ainsi que la température et l’humidité extérieure.Les prévisions météorologiques seront téléchargées du site OpenWeatherMap. La température extérieure sera mesurée par un capteur Bluetooth BeeWi-BBW200. Ce capteur a été choisi, car la communauté open source a développé une librairie d’accès python et que c’est un produit français facile à trouver. Toutes les données seront stockées dans une base de données MySQL/MariaDB (la base de données utilisée sera MariaDB, mais certains packages continuent à porter le nom MySQL).
Le capteur BeeWi peut être acheté ICI
ÉTAPE 3 : CRÉER LE PROJET
La première chose à faire est de créer le répertoire qui accueillera notre projet :
Créons maintenant notre fichier de configuration meteo.ini :
Copier, coller dedans le contenu ci-dessous :
Un certain nombre de paquets sera utilisé pour réaliser ce projet qu'il faut installer :
ÉTAPE 4 : CONFIGURER MYSQL/MARIADB
Pour stocker les informations, nous allons créer 2 tables : openweathermap et sensor_data qui nous permettront de stocker les prévisions météo OpenWeatherMap et le relevé des températures.
Voici à quoi elles ressembleront une fois créées :
Pour la création des tables, arrêter le service SQL :
Création du script de changement de mot de passe meteo.passwd.sql :
Puis copier, coller le contenu suivant et sauvegarder :
Configuration du mot de passe root pour MySQL/MariaDB :
Création du script de création de la base de données, des tables ainsi que de l’utilisateur meteo.database.sql :
Puis copier, coller le contenu suivant et sauvegarder :
Exécutons maintenant le script dans la base de données MySQL/MariaDB :
ÉTAPE 5 : ACCÉDER AUX INFORMATIONS OPENWEATHERMAP
Les données qui nous intéresseront pour ce projet sont :
- la température (list[0].main.temp) ;
- la pression atmosphérique (list[0].main.pressure) ;
- l’humidité (list[0].main.humidity) ;
- l’icône de prévision météo (list[0].weather[0].icon) ;
- la date et l’heure de la prévision (list[0].dt_txt).
Téléchargeons la liste de villes :
Extrayons le fichier et récupérons le numéro de ville (id) :
Par exemple, l'id de Vernon dans le 27 est : 6453910
Pour pouvoir utiliser le service OpenWeatherMap, il faut nous enregistrer pour récupérer une clef d’accès APPID :
https://home.openweathermap.org/users/sign_up.
Avant d’aller plus loin, on teste que tout fonctionne bien en tapant l’URL dans son navigateur :
http://api.openweathermap.org/data/2.5/forecast?id=xxxxx&APPID=xxxxxxxxxxxxxxxxxxxxxx&units=metric
Il faut bien sûr saisir l’id et l’APPID correctement.
Dans le fichier de configuration meteo.ini, positionner l’id et l’APPID OpenWeatherMap. Editer le fichier de configuration meteo.ini :
Puis copier, coller le contenu suivant et sauvegarder :
ÉTAPE 6 : CODER l'ACCÈS À OPENWEATHERMAP
Maintenant que nous avons accès aux données météo, nous allons créer un script récupérant ces informations pour les stocker dans notre base de données Weather.py :
Puis copier, coller le contenu suivant et sauvegarder :
Notez bien que la requête SQL est un REPLACE et non pas un INSERT.
Cette requête propre à MySQL/MariaDB permet de remplacer la ligne si elle existe déjà, l’insérer sinon.
Testons notre programme :
chmod +x Weather.py
./Weather.py
mysql -umeteo -pmeteo
MariaDB [(none)]> USE meteo;
MariaDB [meteo]> select * FROM openweathermap;
+---------------------+-------------+----------+----------+------+
| date | temperature | pressure | humidity | icon |
+---------------------+-------------+----------+----------+------+
| 2018-05-30 12:00:00 | 22.7 | 1013.44 | 84 | 02d |
| 2018-05-30 15:00:00 | 24.0 | 1012.43 | 74 | 01d |
| 2018-05-30 18:00:00 | 23.3 | 1012.83 | 66 | 01d |
| 2018-05-30 21:00:00 | 19.1 | 1013.47 | 73 | 03n |
...
+---------------------+-------------+----------+----------+------+
40 rows in set (0,01 sec)
MariaDB [meteo]> exit

ÉTAPE 7 : ACCÉDER AUX INFORMATIONS DU CAPTEUR BEEWI-BBW200
Tout d’abord, il nous faut récupérer l’adresse Bluetooth du capteur :

bluetoothctl
[NEW] Controller XX:XX:XX:XX:XX:XX my-linux [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes
[NEW] Device F0:C7:00:00:00:00 BeeWi SmartClim
[bluetooth]# exit
Dans cet exemple, l’adresse Bluetooth de mon capteur est F0:C7:00:00:00:00 (il s’agit d’une adresse factice).
Nous allons maintenant télécharger la librairie d’accès au capteur :
cd ~
git clone https://github.com/enrimilan/BeeWi-BBW200-Reader
cd BeeWi-BBW200-Reader/python/Reader/src

Insérer l’adresse Bluetooth dans le fichier Constants.py :
Puis copier, coller le contenu suivant et sauvegarder :
Test :
python3 Main.py
raw data:
00 a4 00 02 38 07 00 00 06 40
temperature: 16.4°C
humidity: 56%
battery: 64%

Copions la partie python dont nous avons besoin pour notre projet :
Le principal problème de cette librairie est que l’adresse Bluetooth ainsi que l’identifiant de l’appareil sont codés « en dur » dans le fichier utils/Constants.py. Nous voulons pouvoir configurer ces informations dans notre fichier meteo.ini. Modifions donc la fonction se chargeant de la lecture du capteur pour lui passer ces informations : reader/GattSensorReader.py :
Puis copier, coller le contenu suivant et sauvegarder :
Il faut maintenant donner l’adresse Bluetooth de notre capteur à notre fichier de configuration meteo.ini :
Puis copier, coller le contenu suivant (en ayant pris compte la bonne adresse bluetooth du capteur) et sauvegarder :
ÉTAPE 8 : CODER l'ACCÈS AU CAPTEUR BEEWI-BBW200
Maintenant que nous avons accès aux données du capteur BeeWi, nous allons créer un script récupérant ces informations pour les stocker dans notre base de données BeeWi.py :
Puis copier, coller le contenu suivant et sauvegarder :
Testons notre programme :

chmod +x BeeWi.py
./BeeWi.py
mysql -umeteo -pmeteo
MariaDB [(none)]> USE meteo;
MariaDB [meteo]> SELECT * FROM sensor_data;
+-----------+---------------------+-------------+----------+---------+
| sensor_id | date | temperature | humidity | battery |
+-----------+---------------------+-------------+----------+---------+
| 1 | 2018-06-14 18:04:00 | 23.8 | 65 | 100 |
+-----------+---------------------+-------------+----------+---------+
1 row in set (0,01 sec)
MariaDB [meteo]> exit
ÉTAPE 9 : PRÉPARER L'AFFICHAGE
Réfléchissons maintenant à l’affichage des données. Quelle orientation pour l’écran LCD ? Quelle police de caractères ? Quelles icônes à afficher ?
Pour la police de caractères, j’ai créé la mienne en suivant le tutoriel « Créer votre fonte symbole » de Linux Pratique n°101. Ne pas oublier les symboles ° et %.
Pour les icônes, j’ai trouvé des icônes libres d’utilisation que j’ai redimensionnées : https://d3stroy.deviantart.com/art/SILq-Weather-Icons-356609017.
Téléchargement des ressources :
ÉTAPE 10 : CODER L'AFFICHAGE DES DONNÉES MÉTÉORLOGIQUES
Tout est prêt, il ne nous reste plus qu’à coder le programme principal qui se chargera de l’affichage sur l’écran LCD. Ici, la librairie graphique qui a été retenue est pygame tout simplement, car je la maîtrise. Attention de bien commenter le code pour pouvoir le maintenir facilement. Créer le fichier Meteo.py :
Puis copier, coller le contenu suivant et sauvegarder :
Testons notre programme :

chmod +x Meteo.py
./Meteo.py
Tout fonctionne, il ne nous reste plus qu’à automatiser le démarrage de notre station météorologique.
Nous allons collecter les données périodiquement grâce au service crontab : la lecture du capteur de température toutes les 5 minutes et les prévisions météorologiques toutes les 15 minutes.
Crééons le fichier de configuration meteo.crontab :
Puis copier, coller le contenu suivant et sauvegarder :
On ajoute les lignes à la crontab avec la commande suivante :
Il ne nous reste plus qu’à désactiver l’économiseur d’écran et à lancer automatiquement notre affichage des données météorologiques. On crée le fichier meteo.autostart :
Puis copier, coller le contenu suivant et sauvegarder :
On ajoute ces commandes au démarrage de LXDE :
Notre station météorologique est désormais opérationnelle. À vous de rajouter ce dont vous avez besoin…
Je citerai comme exemple : un capteur de température intérieure, le support d’autres capteurs, l’affichage des phases de la lune, l’affichage des marées...
Au niveau du code, vous pourrez aussi retirer toutes les constantes de localisation d’élément pour les mettre dans le fichier de configuration.









