Rumah >pembangunan bahagian belakang >tutorial php >PHP dan MQTT: Membina sistem pemantauan dan pengurusan tenaga jauh

PHP dan MQTT: Membina sistem pemantauan dan pengurusan tenaga jauh

WBOY
WBOYasal
2023-07-08 14:05:041581semak imbas

PHP dan MQTT: Membina sistem pemantauan dan pengurusan tenaga jauh

Pengenalan
Dengan pertumbuhan permintaan tenaga dan peningkatan kesedaran alam sekitar, ia menjadi semakin penting untuk membina sistem pemantauan dan pengurusan tenaga jauh. Sistem jenis ini boleh melaksanakan pengurusan penjimatan tenaga dengan memantau penggunaan tenaga dalam masa nyata, dan boleh melaraskan penggunaan tenaga melalui alat kawalan jauh, seterusnya mengurangkan sisa tenaga dan jejak karbon. Dalam artikel ini, kami akan meneroka cara membina sistem pemantauan dan pengurusan tenaga jauh menggunakan protokol PHP dan MQTT, serta menyediakan beberapa contoh kod untuk rujukan.

  1. Pengenalan kepada MQTT
    MQTT (Message Qeuing Telemetry Transport) ialah protokol penghantaran mesej terbitan/langganan ringan yang sesuai untuk peranti dengan jalur lebar rangkaian dan sumber pengkomputeran yang terhad. Ia menggunakan protokol TCP/IP untuk komunikasi, menyokong mod tolak, dan mempunyai kependaman rendah dan kebolehpercayaan yang tinggi.
  2. Membina Pelayan MQTT
    Pertama, kita perlu membina pelayan MQTT untuk mengendalikan komunikasi antara peranti dan aplikasi. Ini boleh dicapai menggunakan pelayan MQTT sumber terbuka seperti Mosquitto. Di bawah ialah contoh konfigurasi pelayan Mosquitto asas.
sudo apt-get install mosquitto
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
  1. Sambungan MQTT PHP
    Untuk menggunakan protokol MQTT dalam PHP, kita perlu memasang sambungan MQTT. Anda boleh memilih untuk menggunakan sambungan nyamuk atau phpMQTT. Di bawah ialah contoh kod menggunakan sambungan phpMQTT. mosquitto或者phpMQTT扩展。下面是使用phpMQTT扩展的示例代码。
require("phpMQTT.php");

$server = "mqtt.example.com";
$port = 1883;
$client_id = "phpMQTT-subscriber";

$mqtt = new phpMQTT($server, $port, $client_id);

if ($mqtt->connect(true, NULL, "username", "password")) {
    $topics = array("energy/usage/#" => array("qos" => 0, "function" => "processMessage"));
    $mqtt->subscribe($topics, 0);
    while ($mqtt->proc()) {
    }
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT server.";
}

function processMessage($topic, $message) {
    echo "Received message on topic: $topic
";
    echo "Message: $message
";
    // 在这里可以编写处理MQTT消息的代码逻辑
}

在上面的示例中,我们首先创建了一个phpMQTT对象并连接到MQTT服务器。然后,我们订阅了一个或多个主题,并定义了一个用于处理消息的回调函数processMessage。通过调用proc方法,我们可以持续接收和处理来自MQTT服务器的消息。

  1. 设备端
    在远程能源监控与管理系统中,设备端是指能源使用设备,例如传感器、智能电表等。设备端需要实时发送能源使用数据到MQTT服务器,并接收来自服务器的控制指令。
require("phpMQTT.php");

$server = "mqtt.example.com";
$port = 1883;
$client_id = "phpMQTT-publisher";
$topic = "energy/usage";

$mqtt = new phpMQTT($server, $port, $client_id);

if ($mqtt->connect(true, NULL, "username", "password")) {
    $usage_data = "100"; // 从能源使用设备中获取实时能源使用数据
    $mqtt->publish($topic, $usage_data, 0);
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT server.";
}

在上面的示例中,我们创建了一个phpMQTT对象并连接到MQTT服务器。然后,我们使用publish方法将实时能源使用数据发送到主题energy/usage

  1. Web应用程序
    Web应用程序是远程能源监控与管理系统的核心。它可以通过订阅MQTT服务器上的主题来实时接收能源使用数据,并通过发布主题来发送控制指令。
require("phpMQTT.php");

$server = "mqtt.example.com";
$port = 1883;
$client_id = "phpMQTT-subscriber";
$topic = "energy/usage";

$mqtt = new phpMQTT($server, $port, $client_id);

if ($mqtt->connect(true, NULL, "username", "password")) {
    $mqtt->subscribe(array($topic => array("qos" => 0, "function" => "processMessage")), 0);
    while ($mqtt->proc()) {
        // 处理其他业务逻辑
    }
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT server.";
}

function processMessage($topic, $message) {
    echo "Received message on topic: $topic
";
    echo "Message: $message
";
    // 在这里可以编写处理MQTT消息的代码逻辑
}

在上面的示例中,我们创建了一个phpMQTT对象并连接到MQTT服务器。然后,我们订阅了主题energy/usage并定义了一个用于处理消息的回调函数processMessage。通过调用proc

rrreee

Dalam contoh di atas, kami mula-mula mencipta objek phpMQTT dan disambungkan ke pelayan MQTT. Kemudian, kami melanggan satu atau lebih topik dan mentakrifkan fungsi panggil balik processMessage untuk memproses mesej. Dengan memanggil kaedah proc, kami boleh terus menerima dan memproses mesej daripada pelayan MQTT.

    Sebelah peralatan

    Dalam sistem pemantauan dan pengurusan tenaga jauh, bahagian peralatan merujuk kepada peralatan penggunaan tenaga, seperti penderia, meter pintar, dsb. Peranti perlu menghantar data penggunaan tenaga ke pelayan MQTT dalam masa nyata dan menerima arahan kawalan daripada pelayan.

      rrreee
    1. Dalam contoh di atas, kami mencipta objek phpMQTT dan disambungkan ke pelayan MQTT. Kami kemudian menggunakan kaedah publish untuk menghantar data penggunaan tenaga masa nyata kepada topik tenaga/penggunaan.
      1. Aplikasi Web
      2. Aplikasi web ialah teras sistem pemantauan dan pengurusan tenaga jauh. Ia boleh menerima data penggunaan tenaga dalam masa nyata dengan melanggan topik pada pelayan MQTT, dan menghantar arahan kawalan dengan menerbitkan topik.
      🎜rrreee🎜Dalam contoh di atas, kami mencipta objek phpMQTT dan disambungkan ke pelayan MQTT. Kemudian, kami melanggan topik tenaga/penggunaan dan mentakrifkan fungsi panggil balik processMessage untuk memproses mesej. Dengan memanggil kaedah proc, kami boleh terus menerima dan memproses mesej daripada pelayan MQTT. 🎜🎜Kesimpulan🎜Sistem pengurusan dan pemantauan tenaga jauh boleh dibina dengan mudah menggunakan protokol PHP dan MQTT. Ringan dan kebolehpercayaan protokol MQTT menjadikannya sesuai untuk komunikasi masa nyata antara peranti yang menggunakan tenaga dan aplikasi web. Melalui pemantauan masa nyata dan kawalan jauh penggunaan tenaga, kita boleh mencapai matlamat penjimatan tenaga, pengurangan pelepasan dan pembangunan mampan. 🎜🎜Rujukan: 🎜🎜🎜Nyamuk - https://mosquitto.org/🎜🎜phpMQTT - https://github.com/bluerhinos/phpMQTT🎜🎜

Atas ialah kandungan terperinci PHP dan MQTT: Membina sistem pemantauan dan pengurusan tenaga jauh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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