Dans cet article, je vais vous montrer comment créer une application Web de station météo basée sur l'API Python en utilisant le température, pression barométrique, et humidité capteurs du chapeau de sens de la framboise Pi. Pour suivre cet article, vous aurez besoin de ce qui suit:
NOTE: Dans cet article, nous nous connecterons à la Raspberry Pi à distance via VNC ou SSH en utilisant la configuration sans tête du Raspberry Pi. Si vous ne souhaitez pas accéder à votre framboise PI à distance via SSH ou VNC, vous devrez connecter un moniteur, un clavier et une souris à votre framboise PI.
Pour apprendre à flasher l'image Raspberry Pi OS sur une carte microSD, veuillez vous référer à l'installation et à utiliser l'imageur Raspberry Pi. Si vous avez besoin d'aide pour installer Raspberry Pi OS sur votre Raspberry Pi, lisez comment installer Raspberry Pi OS sur Raspberry Pi 4. Si vous avez besoin d'aide pour la configuration sans tête de Raspberry Pi, consultez comment installer et configurer Raspberry Pi OS sur Raspberry Pi 4 sans moniteur externe.
Connexion de Raspberry Pi Sense Hat à Raspberry Pi
Le kit de chapeau Raspberry Pi Sense est livré avec la carte complémentaire Rendatber Pi Sense Hat, un en-tête masculin à 40 broches et quelques vis et espaceurs.
Avant de pouvoir attacher la carte Sense Hat au Raspberry Pi, vous devez connecter l'en-tête à 40 broches au chapeau de sens. Connectez les épingles mâles de l'en-tête masculin-femelle à 40 broches au chapeau de sens comme indiqué dans les images ci-dessous.
Les ordinateurs monomodes Raspberry Pi ont 4 trous qui peuvent être utilisés pour attacher des planches complémentaires ou un boîtier. Pour fixer la carte complémentaire, insérez les vis à l'arrière du framboise PI, comme indiqué dans les images ci-dessous.
Ensuite, connectez une entretoise à la vis.
Une fois que vous avez ajouté les quatre vis et espaceurs, votre Raspberry Pi devrait ressembler à celui montré dans l'image ci-dessous.
Connectez le chapeau Sense Raspberry Pi à la tête mâle GPIO à 40 broches du Raspberry Pi, comme indiqué dans les images ci-dessous.
NOTE: Soyez prudent tout en déconnectant le chapeau Sense Raspberry Pi de l'en-tête GPIO Raspberry Pi 40-Pin pour éviter de plier les broches du framboise PI GPIO.
Avec les quatre vis restantes, fixez le chapeau de sens de Raspberry Pi, comme indiqué dans les images ci-dessous.
Alimenter sur le Raspberry Pi
Maintenant que le chapeau de Sense Raspberry Pi est connecté au Raspberry Pi, insérez la carte microSD avec Raspberry Pi OS.
Installation de la bibliothèque Python du chapeau Sense Raspberry Pi
Pour utiliser le chapeau de sens de Raspberry Pi sur le Raspberry Pi, le houx du sens La bibliothèque Python doit être installée sur le Raspberry Pi OS. Le houx du sens La bibliothèque est disponible dans le référentiel officiel de package de Raspberry Pi OS.
Pour installer le Raspberry Pi houx du sens Python Library sur le Raspberry Pi OS, mettez d'abord à jour le cache du référentiel de package APT avec la commande suivante:
$ sudo apt mise à jourEnsuite, exécutez la commande suivante:
$ sudo apt installer sens-hat -yInstallation de la bibliothèque Python Micro Framework Flask
Nous utiliserons le framework Flask Python pour créer notre application météo. Vous pouvez installer Flask à partir du référentiel de package officiel de Raspberry Pi OS avec la commande suivante:
$ sudo apt installer python3-flask -yCréation d'un répertoire de projet
C'est une bonne idée de créer un répertoire de projet pour organiser vos fichiers de projet. Pour créer un répertoire de projet ~ / travail, Utilisez la commande suivante:
$ mkdir ~ / travailUne fois le répertoire du projet créé, accédez au répertoire du projet comme suit:
$ cd ~ / travailTester le chapeau de Sense Raspberry Pi
Pour tester si le chapeau Raspberry Pi Sense fonctionne, nous pouvons écrire un simple script Python de test. Vous pouvez créer un nouveau script python appelé test.py avec le nano Éditeur de texte comme suit:
$ test nano.pyEntrez le code suivant dans le test.py déposer. Ligne 1 importations Senshat du SENSE_HAT module, la ligne 3 crée un Senshat Object et stocke une référence dans le sens variable et les lignes 5-6 définissent la couleur des LED 8 × 8 vers le rouge. Une fois que vous avez terminé, appuyez sur + X suivie par Y et .
Vous pouvez exécuter le test.py Script python avec la commande suivante:
$ Python3 Test.pyLa matrice LED 8 × 8 doit briller en couleur rouge comme indiqué dans l'image ci-dessous.
Pour éteindre les LED du chapeau de sens, exécutez le clair() Méthode sans aucune valeur de couleur dans le test.py Script python, comme indiqué dans la capture d'écran ci-dessous, et exécutez le test.py Script Python à nouveau.
Les LED du chapeau de sens doivent maintenant être désactivées, comme indiqué dans l'image ci-dessous.
Si le chapeau de sens fonctionne correctement, passez à la section suivante.
Obtenir les données météorologiques de Sense Hat
Vous pouvez obtenir des données de capteur à partir du chapeau de sens très facilement en utilisant le houx du sens Bibliothèque python. Pour récupérer les données du capteur à partir du chapeau de sens, vous pouvez créer un nouveau script Python read_sensor_data.py comme suit:
$ nano read_sensor_data.pyEntrez le code suivant dans le read_sensor_data.py Fichier python.
de Sense_hat Import SensehatUne fois que vous avez terminé, appuyez sur + X suivie par Y et .
Dans le code ci-dessus, les lignes 1 et 2 importent toutes les bibliothèques requises, la ligne 4 crée un Senshat objet et ligne 5 éteint toutes les LED du chapeau de sens en utilisant le clair() méthode. La boucle while dans la ligne 7 est une boucle infinie qui exécutera le code dans les lignes 8-16 pour toujours.
Dans la ligne 8, le get_Temperature () La méthode est utilisée pour lire les données de température (en degrés Celsius) à partir du capteur d'humidité du chapeau de sens. Dans la ligne 9, les données de température sont converties de degrés Celsius à degrés Fahrenheit. Dans la ligne 10, le get_pressure () La méthode est utilisée pour lire les données de pression d'air (en millibars) à partir du capteur de pression du chapeau de sens. Dans la ligne 11, le get_humidity () La méthode est utilisée pour lire les données d'humidité (en%) à partir du capteur d'humidité du chapeau de sens.
Les lignes 13-15 sont utilisées pour imprimer les données du capteur à la console, et la ligne 16 est utilisée pour attendre 5 secondes avant de relire les données du capteur.
Vous pouvez exécuter le read_sensor_data.py Script python comme suit:
$ python3 read_sensor_data.pyUne fois le script exécuté, les données du capteur seront imprimées sur la console.
Maintenant que nous pouvons lire les données du capteur du chapeau de sens, appuyez sur + C Pour arrêter le programme.
Création d'une application Web de station météo
Dans cette section, nous vous montrerons comment utiliser le framework Web Python Flask pour créer une API météo et une application météorologique. L'application météorologique accédera à l'API des données météorologiques et affichera les données météorologiques en temps réel. Tout le code discuté dans cette section est disponible sur GitHub à Shovon8 / Raspberry-pi-sens-hat-weather-app.
Tout d'abord, créez un serveur.py Script Python dans le répertoire du projet comme suit:
$ Nano Server.pyEntrez le code suivant dans le serveur.py Fichier python.
De Flask Import FlaskPuis appuyez + X suivie par Y et Pour sauver le serveur.py Script python.
Dans le code ci-dessus, les lignes 1 à 5 importent toutes les bibliothèques requises, la ligne 7 crée une application Flask, la ligne 11 crée un objet SenseHat et la ligne 12 éteint toutes les LED du chapeau de sens. Ligne 8 désactive la mise en cache Web pour l'application Flask. Parce que cette application est légère, il n'y a pas besoin de mise en cache. Si vous souhaitez modifier l'application, le désactivé de la cache Web facilitera les tests beaucoup plus faciles.
Les lignes 18-31 lisent les données du capteur du chapeau de sens et renvoyez les données de l'API au format JSON sur HTTP GET DEMAND dans le / API point de terminaison du serveur Web. Les lignes 37-39 renvoient la page d'accueil de l'application Web météo sur la / / point de terminaison du serveur Web. La page d'accueil est rendue à partir du maison.html fichier, qui devrait être dans le modèles / Répertoire du répertoire du projet.
Les lignes 14-16 sont utilisées pour permettre l'accès au style.CSS et appliquer.js fichiers statiques. Ces fichiers doivent être dans le statique/ Répertoire du répertoire du projet. Le style.CSS le fichier est utilisé pour styliser le maison.html page d'accueil, et le appliquer.js le fichier est utilisé pour demander les données de l'API à la / API point final et mettez à jour les données météorologiques sur le maison.html Page toutes les 5 secondes.
Créer le statique/ et modèles / Répertoire dans le répertoire de projet comme suit:
$ mkdir -v statique, modèlesCréer un maison.html fichier dans le modèles / Répertoire comme suit:
$ Modèles Nano / Home.htmlEntrez le code suivant dans le maison.html déposer.
Température
Pression
Humidité
Puis appuyez + X suivie par Y et Pour sauver le maison.html déposer.
Créer un style.CSS fichier dans le statique/ Répertoire comme suit:
$ nano statique / style.CSSEntrez les codes suivants dans le style.CSS déposer.
@Import URL ('https: // polices.googleapis.com / css2?Family = Roboto & Display = swap ');Puis appuyez + X suivie par Y et Pour sauver le style.CSS déposer.
Créé un appliquer.js fichier dans le statique/ Répertoire comme suit:
$ nano statique / application.jsEntrez le code suivant dans le appliquer.js déposer.
fenêtre.addEventListener («charge», main);Puis appuyez + X suivie par Y et Pour sauver le appliquer.js déposer.
Ici, la ligne 1 exécute le principal() fonction lorsque la page Web termine le chargement. Dans le principal() fonction, le getapidata () La fonction récupère les données de l'API météorologiques à l'aide de AJAX et appelle le mise à jour() fonction (à la ligne 10) une fois que les données ont été récupérées avec succès. Le mise à jour() La fonction met à jour l'élément de page Web à l'aide des données de l'API.
Dans la ligne 20, le document.getElementByid () La méthode est utilisée pour obtenir la référence de l'élément de page Web avec l'ID tempc. La ligne 28 est utilisée pour remplacer le contenu de l'élément de page Web qui a l'ID tempc avec la température (en Celsius) de l'API. De la même manière, le contenu de tous les éléments Web (lignes 21-26) est remplacé par leurs données API respectives.
Dans le app () fonction, le getapidata () est appelé toutes les 5 secondes (5000 millisecondes) pour maintenir les données météorologiques à jour dans l'application météorologique. Enfin, dans la ligne 46, le app () La fonction est exécutée.
Pour tester l'application Web, entrez la commande suivante:
$ Flask_app = serveur.Py Flask Run --host = 0.0.0.0L'application météo doit fonctionner sur le port 5000 (par défaut).
Pour tester si l'API Weather fonctionne, exécutez la commande suivante:
$ curl -s http: // localhost: 5000 / api | JSON_PPComme vous pouvez le voir, les données de l'API météorologiques sont imprimées sur la console. Par conséquent, l'API fonctionne.
Pour tester l'application météo, visitez http: // localhost: 5000 d'un navigateur Web Chromium. L'application météo doit être chargée sur le navigateur Web, mais aucune donnée météorologique ne doit être affichée au début.
Après quelques secondes, l'application météo doit finir de récupérer les données météorologiques de l'API et l'afficher.
À tout moment, vous pouvez appuyer + C Pour arrêter le serveur Web.
Création d'un service systemd pour l'application Web météo
Dans cette section, nous vous montrerons comment créer un fichier de service SystemD pour l'application météo afin qu'elle commence automatiquement lors du démarrage.
Tout d'abord, créez un Station météo.service Fichier dans votre répertoire de projet comme suit:
$ Nano Weather Station.serviceEntrez les lignes de code suivantes dans le Station météo.service déposer.
[Unité]Puis appuyez + X suivie par Y et Pour sauver le Station météo.service déposer.
Copier le Station météo.service fichier à la / etc / systemd / system / Répertoire avec la commande suivante:
$ sudo cp -v station météorologique.Service / etc / Systemd / System /Recharger les démons Systemd pour que les changements prennent effet comme suit:
$ sudo Systemctl Daemon-ReloadLe Station météo Le service SystemD doit être inactif pour le moment, comme le montre la capture d'écran ci-dessous.
$ sudo systemctl statut weather station.serviceCommencer le Station météo Service avec la commande suivante:
$ sudo systemctl démarrer la station météorologique.serviceComme vous pouvez le voir, le Station météo Le service est maintenant en cours d'exécution.
$ sudo systemctl statut weather station.serviceMaintenant que le Station météo Le service fonctionne, vous pouvez l'ajouter au démarrage du système de Raspberry Pi OS avec la commande suivante:
$ sudo systemctl activer la station météorologique.serviceRedémarrez votre Raspberry Pi avec la commande suivante:
$ sudo redémarrerUne fois vos bottes de framboise Pi, le Station météo Le service doit être en cours d'exécution, comme indiqué dans la capture d'écran ci-dessous.
$ sudo systemctl statut weather station.serviceAccéder à l'application météo à partir d'autres appareils
Pour accéder à l'application météo à partir d'autres appareils de votre réseau domestique, vous devez connaître l'adresse IP de votre framboise PI. Vous pouvez trouver l'adresse IP de votre Raspberry Pi 4 à partir de l'interface de gestion Web de votre routeur domestique. Dans notre cas, l'adresse IP est 192.168.0.103, mais cette adresse sera différente pour vous, alors assurez-vous de remplacer cette adresse par la vôtre dans toutes les étapes suivantes.
Si vous avez accès à la console Raspberry Pi, vous pouvez également exécuter la commande suivante pour trouver l'adresse IP également.
$ hostname -iUne fois que vous connaissez l'adresse IP de votre Raspberry Pi, vous pouvez y accéder à partir de n'importe quel appareil de votre réseau domestique. Comme le montre la capture d'écran ci-dessous, nous avons accédé à l'application météo à partir d'un smartphone Android.
Conclusion
Dans cet article, nous vous avons montré comment utiliser le chapeau Raspberry Pi Sense pour construire une station météo Raspberry Pi. Nous avons utilisé le houx du sens Python Library pour extraire les données météorologiques du chapeau de sens de Raspberry Pi. Ensuite, nous avons utilisé le framework Web Flask Python Micro pour créer une API météo et une application Web. L'application Web obtient les données météorologiques de l'API météo toutes les 5 secondes pour garder l'application Web à jour avec les dernières données météorologiques.