So erstellen Sie eine Echtzeit-Wettervorhersageanwendung mit PHP und MQTT
Einführung:
Die Wettervorhersage ist ein sehr wichtiger Dienst in unserem Leben. Mit der Entwicklung des Internets der Dinge und der Instant Messaging-Technologie können wir MQTT (Message) verwenden Queuing Telemetry Transport)-Protokoll zum Abrufen von Echtzeit-Wetterdaten. In diesem Artikel werde ich vorstellen, wie man mit PHP und MQTT eine Echtzeit-Wettervorhersageanwendung erstellt. Über diese Anwendung können wir bestimmte Wetterstationskanäle abonnieren und Daten wie Temperatur, Luftfeuchtigkeit und Windrichtung in Echtzeit abrufen.
Betreff:
Schritt eins: MQTT-Server installieren
Zuerst müssen wir einen MQTT-Server installieren, damit wir uns mit der Wetterstation verbinden und Echtzeitdaten erhalten können. Es stehen viele MQTT-Server zur Auswahl, wie zum Beispiel Mosquitto, EMQ X oder HiveMQ usw. In diesem Artikel verwenden wir Mosquitto, da es sich um einen beliebten und kostenlosen Open-Source-MQTT-Server handelt. Sie können es von der offiziellen Website von Mosquitto herunterladen und installieren.
Schritt 2: Erstellen Sie eine Wettervorhersageanwendung
Als nächstes müssen wir ein PHP-Skript erstellen, um die Wetterdaten zu abonnieren und in der Anwendung anzuzeigen. Wir werden eine beliebte PHP MQTT-Clientbibliothek wie phpMQTT verwenden.
Laden Sie zunächst die phpMQTT-Bibliothek von GitHub herunter und importieren Sie sie mit dem folgenden Befehl in Ihr Projekt:
git clone https://github.com/bluerhinos/phpMQTT.git
Als nächstes erstellen Sie eine index.php-Datei und importieren die phpMQTT-Bibliothek:
<?php require("phpMQTT.php");
Erstellen Sie dann eine MQTT-Client-Instanz und stellen Sie eine Verbindung her zum MQTT-Server:
<?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(); ?>
Im obigen Code verbinden wir uns mit dem MQTT-Server und abonnieren den Kanal „weather_station/#“, was bedeutet, dass wir alle Nachrichten erhalten, die mit „weather_station/“ beginnen. Sie können diesen Kanal durch den Kanal Ihrer tatsächlichen Wetterstation ersetzen.
Dann müssen wir die empfangene Nachricht in einer Rückruffunktion verarbeiten. In dieser Funktion können wir Wetterdaten analysieren und anzeigen.
<?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');
Im obigen Code analysieren wir die empfangene JSON-Zeichenfolge in ein assoziatives Array und extrahieren daraus die Daten zu Temperatur, Luftfeuchtigkeit und Windrichtung. Anschließend zeigen wir die Daten auf dem Bildschirm an.
Schritt 3: Eine Wetterstation einrichten
Zuletzt müssen wir eine Wetterstation einrichten und Echtzeit-Wetterdaten veröffentlichen. Sie können jedes mit dem MQTT-Protokoll kompatible Hardwaregerät zum Senden von Daten verwenden. Eine gängige Option ist die Verwendung eines ESP8266-Chips und eines DHT11-Sensors. Auf die konkrete Hardware-Einrichtung gehen wir hier nicht näher ein, es liegt aber an Ihnen, diese entsprechend Ihren Bedürfnissen auszuwählen und zu konfigurieren.
Das Codebeispiel für die Veröffentlichung von Wetterdaten auf dem MQTT-Server lautet wie folgt:
#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()); }
Im obigen Code stellen wir zunächst eine Verbindung zum WLAN-Netzwerk und dann eine Verbindung zum MQTT-Server her. Anschließend lesen wir die Sensordaten (wie Temperatur, Luftfeuchtigkeit und Windrichtung) und kapseln sie als JSON-String. Abschließend veröffentlichen wir die Nachricht im Kanal „weather_station“ auf dem MQTT-Server.
Fazit:
Durch die Verwendung von PHP und MQTT können wir ganz einfach eine Echtzeit-Wettervorhersageanwendung erstellen. Wir können Wetterdaten abonnieren und in der App Echtzeitinformationen zu Temperatur, Luftfeuchtigkeit und Windrichtung anzeigen. Diese App hilft uns, die aktuellen Wetterbedingungen besser zu verstehen und entsprechende Entscheidungen zu treffen.
Bitte beachten Sie, dass es sich bei dem in diesem Artikel bereitgestellten Codebeispiel um ein Grundgerüst handelt, das erweitert und an Ihre spezifischen Anforderungen angepasst werden kann. Um diese Anwendung nutzen zu können, müssen Sie die Einstellungen Ihres Hardwaregeräts und MQTT-Servers anpassen.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Echtzeit-Wettervorhersageanwendung mit PHP und MQTT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!