Cara membuat aplikasi ramalan cuaca masa nyata menggunakan PHP dan MQTT

WBOY
Lepaskan: 2023-07-08 08:34:01
asal
1542 orang telah melayarinya

Cara membuat aplikasi ramalan cuaca masa nyata menggunakan PHP dan MQTT

Pengenalan:
Ramalan cuaca adalah perkhidmatan yang sangat penting dalam kehidupan kita Dengan perkembangan Internet Perkara dan teknologi pemesejan segera, kita boleh menggunakan MQTT (Message Protokol Pengangkutan Telemetri Beratur) untuk mendapatkan data cuaca masa nyata. Dalam artikel ini, saya akan memperkenalkan cara menggunakan PHP dan MQTT untuk mencipta aplikasi ramalan cuaca masa nyata. Melalui aplikasi ini, kami boleh melanggan saluran stesen cuaca tertentu dan mendapatkan data seperti suhu, kelembapan dan arah angin dalam masa nyata.

Subjek:

Langkah Pertama: Pasang Pelayan MQTT
Pertama, kita perlu memasang pelayan MQTT supaya kita boleh menyambung ke stesen cuaca dan mendapatkan data masa nyata. Terdapat banyak pelayan MQTT untuk dipilih, seperti Mosquitto, EMQ X atau HiveMQ, dsb. Dalam artikel ini, kami akan menggunakan Mosquitto kerana ia adalah pelayan MQTT sumber terbuka yang popular dan percuma. Anda boleh memuat turun dan memasangnya dari laman web rasmi Mosquitto.

Langkah 2: Buat aplikasi ramalan cuaca
Seterusnya, kita perlu mencipta skrip PHP untuk melanggan data cuaca dan memaparkannya dalam aplikasi. Kami akan menggunakan perpustakaan klien PHP MQTT yang popular seperti phpMQTT.

Mula-mula, muat turun perpustakaan phpMQTT daripada GitHub dan importnya ke dalam projek anda menggunakan arahan berikut:

git clone https://github.com/bluerhinos/phpMQTT.git
Salin selepas log masuk

Seterusnya, buat fail index.php dan import perpustakaan phpMQTT:

<?php
require("phpMQTT.php");
Salin selepas log masuk

Kemudian, buat contoh klien MQTT dan Sambung ke pelayan 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();
?>
Salin selepas log masuk

Dalam kod di atas, kami menyambung ke pelayan MQTT dan melanggan saluran "weather_station/#", yang bermaksud bahawa kami akan menerima semua mesej bermula dengan "weather_station/". Anda boleh menggantikan saluran ini dengan saluran stesen cuaca sebenar anda.

Kemudian, kita perlu mengendalikan mesej yang diterima dalam fungsi panggil balik. Dalam fungsi ini kita boleh menghuraikan dan memaparkan data cuaca.

<?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');
Salin selepas log masuk

Dalam kod di atas, kami menghuraikan rentetan JSON yang diterima ke dalam tatasusunan bersekutu dan mengekstrak data suhu, kelembapan dan arah angin daripadanya. Kemudian kami memaparkan data pada skrin.

Langkah 3: Sediakan stesen cuaca
Akhir sekali, kami perlu menyediakan stesen cuaca dan menerbitkan data cuaca masa nyata. Anda boleh menggunakan mana-mana peranti perkakasan yang serasi dengan protokol MQTT untuk menghantar data. Pilihan biasa ialah menggunakan cip ESP8266 dan sensor DHT11. Kami tidak akan pergi ke persediaan perkakasan khusus di sini, tetapi anda boleh memilih dan mengkonfigurasinya mengikut keperluan anda.

Contoh kod untuk menerbitkan data cuaca pada pelayan MQTT adalah seperti berikut:

#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());
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menyambung ke rangkaian WiFi dan kemudian menyambung ke pelayan MQTT. Kami kemudian membaca data penderia (seperti suhu, kelembapan dan arah angin) dan merangkumnya sebagai rentetan JSON. Akhir sekali, kami menerbitkan mesej ke saluran "weather_station" pada pelayan MQTT.

Kesimpulan:
Dengan menggunakan PHP dan MQTT, kami boleh membuat aplikasi ramalan cuaca masa nyata dengan mudah. Kami boleh melanggan data cuaca dan memaparkan suhu masa nyata, kelembapan dan maklumat arah angin dalam apl. Aplikasi ini membantu kami memahami keadaan cuaca semasa dengan lebih baik dan membuat keputusan sewajarnya.

Sila ambil perhatian bahawa contoh kod yang disediakan dalam artikel ini adalah rangka kerja asas dan boleh dipanjangkan dan diubah suai untuk memenuhi keperluan khusus anda. Untuk menggunakan aplikasi ini, anda perlu menyesuaikan peranti perkakasan anda dan tetapan pelayan MQTT.

Atas ialah kandungan terperinci Cara membuat aplikasi ramalan cuaca masa nyata menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan