Comment créer une application de prévisions météo en temps réel en utilisant PHP et MQTT
Introduction :
Les prévisions météo sont un service très important dans nos vies Avec le développement de l'Internet des objets et de la technologie de messagerie instantanée, nous pouvons utiliser MQTT (Message). Queuing Telemetry Transport) pour obtenir des données météorologiques en temps réel. Dans cet article, je vais vous présenter comment utiliser PHP et MQTT pour créer une application de prévisions météorologiques en temps réel. Grâce à cette application, nous pouvons nous abonner à des chaînes de stations météorologiques spécifiques et obtenir des données telles que la température, l'humidité et la direction du vent en temps réel.
Sujet :
Première étape : Installer le serveur MQTT
Tout d'abord, nous devons installer un serveur MQTT afin de pouvoir nous connecter à la station météo et obtenir des données en temps réel. Il existe de nombreux serveurs MQTT parmi lesquels choisir, tels que Mosquitto, EMQ X ou HiveMQ, etc. Dans cet article, nous utiliserons Mosquitto car il s'agit d'un serveur MQTT open source populaire et gratuit. Vous pouvez le télécharger et l’installer depuis le site officiel de Mosquitto.
Étape 2 : Créer une application de prévisions météo
Ensuite, nous devons créer un script PHP pour nous abonner aux données météorologiques et les afficher dans l'application. Nous utiliserons une bibliothèque client PHP MQTT populaire telle que phpMQTT.
Tout d'abord, téléchargez la bibliothèque phpMQTT depuis GitHub et importez-la dans votre projet à l'aide de la commande suivante :
git clone https://github.com/bluerhinos/phpMQTT.git
Ensuite, créez un fichier index.php et importez la bibliothèque phpMQTT :
<?php require("phpMQTT.php");
Ensuite, créez une instance client MQTT et connectez-vous au serveur MQTT :
<?php require("phpMQTT.php"); $server = "localhost"; // MQTT服务器的主机名或IP地址 $port = 1883; // MQTT服务器的端口号 $client_id = "weather_app"; // 定义客户端ID $mqtt = new phpMQTT($server, $port, $client_id); if ($mqtt->connect()) { echo "Connected to MQTT server. "; // 订阅气象站频道 $mqtt->subscribe("weather_station/#", 0); // 持续循环以接收来自气象站的消息 while ($mqtt->proc()) { } } else { echo "Failed to connect to MQTT server. "; } $mqtt->close(); ?>
Dans le code ci-dessus, on se connecte au serveur MQTT et on s'abonne au canal "weather_station/#", ce qui signifie que nous recevrons tous les messages commençant par "weather_station/". Vous pouvez remplacer cette chaîne par la chaîne de votre station météo actuelle.
Ensuite, nous devons gérer le message reçu dans une fonction de rappel. Dans cette fonction, nous pouvons analyser et afficher les données météorologiques.
<?php require("phpMQTT.php"); // ... function messageReceived($topic, $payload) { // 接收到消息时调用此函数 $data = json_decode($payload, true); // 解析天气数据 $temperature = $data['temperature']; $humidity = $data['humidity']; $wind_direction = $data['wind_direction']; // 显示天气数据 echo "Temperature: ".$temperature."°C "; echo "Humidity: ".$humidity."% "; echo "Wind Direction: ".$wind_direction." "; } $mqtt->debug = true; $mqtt->onMessage('messageReceived');
Dans le code ci-dessus, nous analysons la chaîne JSON reçue dans un tableau associatif et en extrayons les données de température, d'humidité et de direction du vent. Ensuite, nous affichons les données sur l'écran.
Étape 3 : Configurer une station météo
Enfin, nous devons configurer une station météo et publier des données météorologiques en temps réel. Vous pouvez utiliser n'importe quel périphérique matériel compatible avec le protocole MQTT pour envoyer des données. Une option courante consiste à utiliser une puce ESP8266 et un capteur DHT11. Nous n'entrerons pas ici dans la configuration matérielle spécifique, mais vous pouvez la choisir et la configurer en fonction de vos besoins.
L'exemple de code pour publier des données météo sur le serveur MQTT est le suivant :
#include <Arduino.h> #include <ESP8266WiFi.h> #include <PubSubClient.h> // 定义WiFi连接信息 const char* ssid = "your_wifi_ssid"; const char* password = "your_wifi_password"; // 定义MQTT服务器信息 const char* mqtt_server = "mqtt_server_ip"; const char* mqtt_topic = "weather_station"; WiFiClient espClient; PubSubClient mqttClient(espClient); void setup() { // 连接WiFi WiFi.begin(ssid, password); // 连接MQTT服务器 mqttClient.setServer(mqtt_server, 1883); // 设置回调函数 mqttClient.setCallback(callback); // 读取传感器数据并发布 float temperature = readTemperature(); float humidity = readHumidity(); String windDirection = readWindDirection(); publishData(temperature, humidity, windDirection); } void loop() { // 接收MQTT消息 mqttClient.loop(); } void callback(char* topic, byte* payload, unsigned int length) { // 不处理接收消息的回调函数 // 可以添加自己的逻辑以处理接收到的消息 } void publishData(float temperature, float humidity, String windDirection) { // 构造JSON字符串 String json = "{"temperature":" + String(temperature) + ","; json += ""humidity":" + String(humidity) + ","; json += ""wind_direction":"" + windDirection + ""}"; // 发布消息到MQTT服务器 mqttClient.publish(mqtt_topic, json.c_str()); }
Dans le code ci-dessus, nous nous connectons d'abord au réseau WiFi puis nous nous connectons au serveur MQTT. Nous lisons ensuite les données du capteur (telles que la température, l'humidité et la direction du vent) et les encapsulons sous forme de chaîne JSON. Enfin, nous publions le message sur le canal "weather_station" sur le serveur MQTT.
Conclusion :
En utilisant PHP et MQTT, nous pouvons facilement créer une application de prévisions météo en temps réel. Nous pouvons nous abonner aux données météorologiques et afficher des informations en temps réel sur la température, l'humidité et la direction du vent dans l'application. Cette application nous aide à mieux comprendre les conditions météorologiques actuelles et à prendre des décisions en conséquence.
Veuillez noter que l'exemple de code fourni dans cet article est un cadre de base et peut être étendu et modifié pour répondre à vos besoins spécifiques. Pour utiliser cette application, vous devez adapter votre périphérique matériel et les paramètres du serveur MQTT.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!