Rumah > Artikel > pembangunan bahagian belakang > PHP dan MQTT: Bina sistem pemerolehan dan paparan data cuaca masa nyata
PHP dan MQTT: Bina sistem pemerolehan dan paparan data cuaca masa nyata
Abstrak: Artikel ini memperkenalkan cara menggunakan protokol PHP dan MQTT untuk membina sistem pemerolehan dan paparan data cuaca masa nyata. Dengan menggunakan protokol MQTT untuk pertukaran data dan kemas kini masa nyata, kami boleh mendapatkan maklumat cuaca terkini daripada sumber data cuaca dan memaparkannya di tapak 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()) { // 始终保持连接 }
Dalam kod, kami menggunakan perpustakaan mqtt.php untuk mencipta klien MQTT dan kemudian menyambung ke pelayan MQTT. Kemudian, kami melanggan topik bernama "cuaca" dengan memanggil kaedah subscribe()
dan menentukan fungsi panggil balik untuk mengendalikan data cuaca yang diterima. Akhir sekali, kami menggunakan gelung untuk mengekalkan sambungan ke pelayan MQTT, memastikan kami terus menerima data. 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()
Seterusnya, kita perlu mendapatkan data cuaca masa nyata daripada sumber data cuaca. Anda boleh menggunakan API cuaca awam seperti API OpenWeatherMap atau API Weather.com. Dalam contoh berikut, kami menganggap bahawa kami menggunakan OpenWeatherMap API untuk mendapatkan data cuaca.
getWeatherData()
, yang akan menghantar permintaan HTTP kepada OpenWeatherMap API untuk mendapatkan data cuaca. Kami perlu menyediakan kunci API dan nama bandar sebagai parameter. Kami kemudian menghantar permintaan HTTP menggunakan fungsi file_get_contents()
dan menghuraikan respons menggunakan fungsi json_decode()
. Akhir sekali, kami mengembalikan maklumat deskriptif daripada data cuaca. 🎜publish()
untuk menerbitkan data cuaca kepada topik bernama "cuaca" tema. Kaedah ini boleh dipanggil setiap kali data cuaca baharu diperoleh untuk menghantar data cuaca terkini kepada pelanggan. 🎜connect()
. Kami kemudian menggunakan kaedah subscribe()
untuk melanggan topik "cuaca" dan mengemas kini data cuaca pada halaman web apabila mesej baharu diterima. 🎜🎜Kesimpulan🎜Dengan menggunakan protokol PHP dan MQTT, kami boleh membina sistem pemerolehan dan paparan data cuaca masa nyata. Dengan mendapatkan data masa nyata daripada sumber data cuaca dan menghantar data kepada pelanggan menggunakan protokol MQTT, kami dapat memberikan pengguna maklumat cuaca yang tepat. Saya harap artikel ini dapat membantu anda membina sistem paparan data cuaca masa nyata dan memberikan pengalaman pengguna yang lebih baik. 🎜Atas ialah kandungan terperinci PHP dan MQTT: Bina sistem pemerolehan dan paparan data cuaca masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!