PHP und MQTT: Erstellen Sie ein Echtzeit-Wetterdatenerfassungs- und -anzeigesystem.
Zusammenfassung: In diesem Artikel wird erläutert, wie Sie mit PHP- und MQTT-Protokollen ein Echtzeit-Wetterdatenerfassungs- und -anzeigesystem erstellen. Durch die Verwendung des MQTT-Protokolls für den Datenaustausch und Echtzeit-Updates können wir die neuesten Wetterinformationen von einer Wetterdatenquelle beziehen und auf der Website anzeigen.
require 'vendor/autoload.php'; $client = new PhpMqttClientMqttClient('mqtt://your-mqtt-server'); $client->connect(); $client->subscribe('weather', function (string $topic, string $message) { // 处理收到的天气数据 }); while ($client->loop()) { // 始终保持连接 }
Im Code verwenden wir die mqtt.php-Bibliothek, um einen MQTT-Client zu erstellen und dann eine Verbindung zum MQTT-Server herzustellen. Anschließend abonnieren wir ein Thema mit dem Namen „Wetter“, indem wir die Methode subscribe()
aufrufen und eine Rückruffunktion zur Verarbeitung der empfangenen Wetterdaten angeben. Abschließend nutzen wir eine Schleife, um die Verbindung zum MQTT-Server aufrechtzuerhalten und so sicherzustellen, dass wir weiterhin Daten empfangen. 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()
Als nächstes müssen wir Echtzeit-Wetterdaten von einer Wetterdatenquelle abrufen. Sie können öffentliche Wetter-APIs wie die OpenWeatherMap-API oder die Weather.com-API verwenden. In den folgenden Beispielen gehen wir davon aus, dass wir die OpenWeatherMap-API verwenden, um Wetterdaten zu erhalten.
getWeatherData()
, die eine HTTP-Anfrage an die OpenWeatherMap-API sendet, um Wetterdaten abzurufen. Als Parameter müssen wir einen API-Schlüssel und einen Städtenamen angeben. Anschließend senden wir die HTTP-Anfrage mit der Funktion file_get_contents()
und analysieren die Antwort mit der Funktion json_decode()
. Abschließend liefern wir beschreibende Informationen aus den Wetterdaten. 🎜publish()
, um Wetterdaten in einem Thema namens „Wetter“ zu veröffentlichen. Thema. Diese Methode kann jedes Mal aufgerufen werden, wenn neue Wetterdaten abgerufen werden, um die neuesten Wetterdaten an Abonnenten zu senden. 🎜connect()
eine Verbindung zum MQTT-Server her. Anschließend verwenden wir die Methode subscribe()
, um das Thema „Wetter“ zu abonnieren und die Wetterdaten auf der Webseite zu aktualisieren, wenn neue Nachrichten eingehen. 🎜🎜Fazit🎜Durch die Verwendung des PHP- und MQTT-Protokolls können wir ein Echtzeit-Wetterdatenerfassungs- und -anzeigesystem aufbauen. Indem wir Echtzeitdaten aus Wetterdatenquellen beziehen und die Daten mithilfe des MQTT-Protokolls an Abonnenten weitergeben, sind wir in der Lage, Benutzern genaue Wetterinformationen bereitzustellen. Ich hoffe, dieser Artikel kann Ihnen beim Aufbau eines Echtzeit-Wetterdaten-Anzeigesystems helfen und eine bessere Benutzererfahrung bieten. 🎜Das obige ist der detaillierte Inhalt vonPHP und MQTT: Erstellen Sie ein Echtzeit-System zur Erfassung und Anzeige von Wetterdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!