[PYTHON] Gratter les données pluviométriques de l'Agence météorologique et les afficher sur M5Stack

Aperçu

IMG_9811.JPG

Quoi préparer

Environnement

(1) Installez Arduino IDE https://www.arduino.cc/en/main/software (2) Installer les bibliothèques liées à M5Stack https://mag.switch-science.com/2018/02/28/getting-started-with-m5stack/ (3) Installez Apache (serveur http) sur Raspberri Pi

Préparation

Exemple) Naka-ku, ville d'Hiroshima * Je travaille à distance depuis la ville d'Hiroshima スクリーンショット 2020-09-23 9.57.37.png

la programmation

Programme principal Si vous changez Hiroshima pour une autre zone, vous pouvez obtenir la quantité de précipitations dans cette zone.

/var/www/html/rain.php


<?php

mb_language("Japanese");//Traitement des paramètres de langue
mb_internal_encoding("UTF-8");//Spécification du code de caractère
date_default_timezone_set('Asia/Tokyo');//Définir le fuseau horaire

$url = "http://www.data.jma.go.jp/obd/stats/data/mdrr/pre_rct/alltable/pre1h00.h
tml";
 
//Chargement d'une page Web
$contents= file_get_contents($url);
 
//Conversion de code de caractère
$contents_utf = mb_convert_encoding($contents,"UTF-8","auto");
 
//Extrait la partie délimitée par la chaîne de caractères spécifiée.
$startString = '<td style="white-space:nowrap">Hiroshima (Hiroshima)*</td><td style="
text-align:right;white-space:nowrap;">';
$endString = '</td>';
 
$startPoint = mb_strpos($contents_utf,$startString) ;//$Découvrez où apparaît startString
$startPoint = $startPoint + mb_strlen($startString);//Position de départ
//echo $startPoint;
//echo"";
 
$endPoint = mb_strpos($contents_utf,$endString,$startPoint );//$endString est le suivant
Découvrez où il apparaît
//echo $endPoint;
//echo"";
 
$length = $endPoint - $startPoint;//Trouvez la longueur de la chaîne.
$rainfallString = mb_substr($contents_utf,$startPoint,$length)." mm"."\n\n"."GET
 Time"."\n".date("H:i:s")."\n";
echo $rainfallString;
file_put_contents("/var/www/html/index.html", $rainfallString);
?>

Script shell pour exécuter PHP

/var/www/html/cron.php


#!/bin/sh
/usr/bin/php /var/www/html/rain.php

Résultat d'exécution PHP

/var/www/html/index.html


0.0 mm

GET Time
09:30:02

Assurez-vous que vous pouvez le voir depuis votre navigateur. スクリーンショット 2020-09-23 9.37.08.png

Réglage de démarrage automatique (dans cet exemple, obtenez la quantité de précipitations toutes les heures) */60 * * * * root sudo sh /var/www/html/cron.sh

Programmation côté M5Stack

rain.ino


#include <M5Stack.h>
#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid       = "XXXXXXXXXXXXX";  // Wifi SSID
const char* password   = "XXXXXXXXXXXXX";  // Wifi Password

const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;


void setup()
{
  M5.begin();
  M5.Lcd.setBrightness(10);
  M5.Lcd.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      M5.Lcd.printf(".");
  }

  M5.Lcd.println(" CONNECTED");
  M5.Lcd.fillScreen(BLACK);
}

void getrain()
{
  M5.Lcd.fillScreen(BLACK);
  HTTPClient http;

  http.begin("http://xxx.xxx.xxx.xxx/index.html");  //Adresse IP du Raspberry Pi
  int httpCode = http.GET();

  String result = http.getString();
  M5.Lcd.setTextSize(5);
  M5.Lcd.setCursor(0,0);
  M5.Lcd.print(result);
  
  http.end();

}

void loop()
{
  getrain();
  delay(xxxxxxx);  //De Raspberry Pi`index.html`Intervalle d'obtention (millisecondes)
}

point important

Essayez d'utiliser

Recommended Posts

Gratter les données pluviométriques de l'Agence météorologique et les afficher sur M5Stack
Téléchargez les données éoliennes de l'Agence météorologique
Une histoire sur l'obtention du champ Atom (télégramme XML) de l'Agence météorologique avec une tarte à la râpe et de le tweeter
Lire le fichier GRIB2 de l'Agence météorologique sur pygrib
J'ai analysé les données de combat de rang du bouclier d'épée Pokemon et je les ai visualisées sur Tableau
Racler le calendrier de Hinatazaka 46 et le refléter dans Google Agenda
Obtenez des informations de l'Agence météorologique et informez Slack des avertissements météorologiques dans les 23 quartiers de Tokyo
[Mémo personnel] Obtenez des données sur le Web et faites-en un DataFrame
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
[Python] Précautions lors de l'acquisition de données en grattant et en les mettant dans la liste
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
Gratter les données gagnantes de Numbers à l'aide de Docker
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
Data Langling PDF sur l'épidémie de grippe par le ministère de la Santé, du Travail et du Bien-être social
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
Grattage des données du bulletin IDWR par nombre de rapports par point fixe de grippe et par préfecture
Comment obtenir les données météorologiques actuelles et les afficher sur l'interface graphique tout en la mettant à jour automatiquement
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Essayez de gratter les données COVID-19 Tokyo avec Python
Informations de raclage Web sur les programmes de rire et notification en ligne
Analyse des données basée sur les résultats des élections du gouverneur de Tokyo (2020)
Le processus de création et d'amélioration du code Python orienté objet
Observation en virgule fixe de données spécifiques sur le Web en exécutant automatiquement un navigateur Web sur le serveur (Ubuntu16.04) (2) -Web scraping-
Gratter la liste des magasins membres Go To EAT dans la préfecture de Fukuoka et la convertir en CSV
Gratter la liste des magasins membres Go To EAT dans la préfecture de Niigata et la convertir en CSV
Comment retourner les données contenues dans le modèle django au format json et les mapper sur le dépliant