PHP et MQTT : créer un système d'acquisition et d'affichage de données météorologiques en temps réel
Résumé : Cet article présente comment utiliser les protocoles PHP et MQTT pour créer un système d'acquisition et d'affichage de données météorologiques en temps réel. En utilisant le protocole MQTT pour l'échange de données et les mises à jour en temps réel, nous pouvons obtenir les dernières informations météorologiques à partir d'une source de données météorologiques et les afficher sur le site Web.
require 'vendor/autoload.php'; $client = new PhpMqttClientMqttClient('mqtt://your-mqtt-server'); $client->connect(); $client->subscribe('weather', function (string $topic, string $message) { // 处理收到的天气数据 }); while ($client->loop()) { // 始终保持连接 }
Dans le code, nous utilisons la bibliothèque mqtt.php pour créer un client MQTT puis nous connecter au serveur MQTT. Ensuite, nous nous abonnons à un sujet nommé « météo » en appelant la méthode subscribe()
et spécifions une fonction de rappel pour gérer les données météorologiques reçues. Enfin, nous utilisons une boucle pour maintenir la connexion au serveur MQTT, garantissant ainsi que nous continuons à recevoir des données. subscribe()
方法来订阅一个名为"weather"的主题,并指定一个回调函数来处理收到的天气数据。最后,我们使用循环来保持与MQTT服务器的连接,确保我们能够持续接收数据。
function getWeatherData() { $apiKey = 'your-api-key'; $city = 'your-city'; $url = "http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey"; $response = file_get_contents($url); $data = json_decode($response, true); return $data['weather'][0]['description']; } $weatherData = getWeatherData();
在代码中,我们定义了一个名为getWeatherData()
的函数,它会发送一个HTTP请求到OpenWeatherMap API来获取天气数据。我们需要提供一个API密钥和城市名称作为参数。然后,我们使用file_get_contents()
函数发送HTTP请求,并使用json_decode()
函数解析响应。最后,我们返回天气数据中的描述信息。
$client->publish('weather', $weatherData);
在代码中,我们使用publish()
方法将天气数据发布到名为"weather"的主题。可以在每次获取到新的天气数据后调用这个方法,以便将最新的天气数据发送给订阅者。
<!DOCTYPE html> <html> <head> <title>实时天气数据</title> </head> <body> <h1>实时天气数据</h1> <div id="weather"></div> <script> var client = new Paho.MQTT.Client('your-mqtt-server', 1883, 'clientId'); client.connect({ onSuccess: function () { client.subscribe('weather'); } }); client.onMessageArrived = function (message) { document.getElementById('weather').innerHTML = message.payloadString; } </script> </body> </html>
在代码中,我们首先创建一个MQTT客户端,并使用connect()
方法连接到MQTT服务器。然后,我们使用subscribe()
Ensuite, nous devons obtenir des données météorologiques en temps réel à partir d'une source de données météorologiques. Vous pouvez utiliser des API météorologiques publiques telles que l'API OpenWeatherMap ou l'API Weather.com. Dans les exemples suivants, nous supposons que nous utilisons l'API OpenWeatherMap pour obtenir des données météorologiques.
getWeatherData()
, qui enverra une requête HTTP à l'API OpenWeatherMap pour obtenir des données météorologiques. Nous devons fournir une clé API et un nom de ville comme paramètres. Nous envoyons ensuite la requête HTTP à l'aide de la fonction file_get_contents()
et analysons la réponse à l'aide de la fonction json_decode()
. Enfin, nous renvoyons des informations descriptives à partir des données météorologiques. 🎜publish()
pour publier des données météorologiques sur un sujet nommé "weather" thème. Cette méthode peut être appelée chaque fois que de nouvelles données météorologiques sont obtenues pour envoyer les dernières données météorologiques aux abonnés. 🎜connect()
. Nous utilisons ensuite la méthode subscribe()
pour nous abonner au sujet "météo" et mettre à jour les données météo sur la page Web lorsque de nouveaux messages sont reçus. 🎜🎜Conclusion🎜En utilisant les protocoles PHP et MQTT, nous pouvons construire un système d'acquisition et d'affichage de données météorologiques en temps réel. En obtenant des données en temps réel à partir de sources de données météorologiques et en transmettant les données aux abonnés à l'aide du protocole MQTT, nous sommes en mesure de fournir aux utilisateurs des informations météorologiques précises. J'espère que cet article pourra vous aider à créer un système d'affichage des données météorologiques en temps réel et à offrir une meilleure expérience utilisateur. 🎜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!