Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan teknikal untuk kawalan lampu jauh menggunakan PHP dan MQTT

Panduan teknikal untuk kawalan lampu jauh menggunakan PHP dan MQTT

PHPz
PHPzasal
2023-07-10 09:55:391375semak imbas

Panduan Teknikal untuk Kawalan Lampu Jauh Menggunakan PHP dan MQTT

Pengenalan:
Dengan pembangunan berterusan Internet of Things, peranti kawalan jauh menjadi semakin biasa. Kawalan lampu jauh juga merupakan salah satu aplikasi, dan fungsi ini boleh dicapai dengan mudah menggunakan PHP dan MQTT. Artikel ini akan memperkenalkan cara menggunakan PHP dan MQTT untuk melaksanakan kawalan lampu jauh dan menyediakan contoh kod untuk rujukan pembaca.

1. Persediaan

  1. Pasang pelayan MQTT
    Pertama, anda perlu memasang pelayan MQTT. Pelayan MQTT yang biasa digunakan termasuk Mosquitto dan RabbitMQ. Anda boleh memilih pelayan MQTT yang sesuai untuk pemasangan mengikut keperluan anda sendiri, dan memastikan pelayan boleh berjalan seperti biasa.
  2. Buat jadual pangkalan data
    Buat jadual pangkalan data untuk menyimpan maklumat status ringan. Anda boleh menggunakan MySQL atau sistem pengurusan pangkalan data lain untuk mencipta jadual, dan struktur jadual adalah seperti berikut:

    CREATE TABLE `lights` (
     `id` INT(11) NOT NULL AUTO_INCREMENT,
     `name` VARCHAR(50) NOT NULL,
     `status` ENUM('off', 'on') NOT NULL DEFAULT 'off',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. Pasang perpustakaan klien MQTT
    Menggunakan MQTT dalam PHP memerlukan penggunaan perpustakaan klien MQTT. Pustaka klien MQTT boleh dipasang menggunakan pakej nyamuk. Pakej mosquitto boleh dipasang menggunakan arahan berikut:

    sudo apt-get install mosquitto
    sudo apt-get install php-mosquitto

    Selepas pemasangan selesai, anda boleh mengesahkan sama ada sambungan nyamuk berjaya dipasang dengan menjalankan php -m | grep mosquitto. php -m | grep mosquitto来验证mosquitto扩展是否安装成功。

二、编写PHP代码

首先,需要编写PHP代码来实现远程灯光控制。

  1. 连接MQTT服务器
    首先,需要引入MQTT客户端库,并使用MosquittoClient来连接MQTT服务器。代码如下所示:

    $client = new MosquittoClient();
    $client->connect('127.0.0.1', 1883, 60);
  2. 订阅MQTT主题
    接下来,需要订阅MQTT主题以接收远程控制指令。可以使用MosquittoClientonMessage方法来处理收到的消息。代码如下所示:

    $client->onMessage(function($message){
      // 处理收到的消息
    });
    
    $client->subscribe('light_control/#', 1);
  3. 处理收到的消息
    onMessage

  4. 2. Tulis kod PHP


    Pertama, anda perlu menulis kod PHP untuk mencapai kawalan pencahayaan jauh.

  5. Sambung ke pelayan MQTT
Mula-mula, anda perlu memperkenalkan perpustakaan klien MQTT dan menggunakan MosquittoClient untuk menyambung ke pelayan MQTT. Kodnya adalah seperti berikut:

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

Langgan topik MQTT

Seterusnya, anda perlu melanggan topik MQTT untuk menerima arahan alat kawalan jauh. Anda boleh menggunakan kaedah onMessage MosquittoClient untuk mengendalikan mesej yang diterima. Kodnya adalah seperti berikut:

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}
🎜🎜🎜Memproses mesej yang diterima🎜Dalam fungsi panggil balik onMessage, mesej yang diterima boleh diproses. Dalam contoh ini, kami akan mengemas kini status cahaya dalam pangkalan data dan menerbitkan status semasa kepada pelanggan. Kodnya adalah seperti berikut: 🎜
connect('127.0.0.1', 1883, 60);

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

$client->subscribe('light_control/#', 1);

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}

while (true) {
  $client->loop();
  sleep(1);
}
?>
🎜🎜🎜Kawal status cahaya🎜Akhir sekali, anda perlu menyediakan antara muka yang boleh mengawal status cahaya. Dalam contoh ini, kami akan menggunakan permintaan GET untuk mengawal status cahaya. Kodnya kelihatan seperti ini: 🎜rrreee🎜Contoh kod PHP lengkap boleh didapati dalam lampiran artikel ini. 🎜🎜🎜🎜3. Ringkasan🎜🎜Artikel ini memperkenalkan cara menggunakan PHP dan MQTT untuk mencapai kawalan pencahayaan jauh. Mula-mula anda perlu memasang pelayan MQTT dan mencipta jadual pangkalan data yang sepadan. Kemudian, tulis kod PHP untuk menyambung ke pelayan MQTT, langgan topik MQTT, proses mesej yang diterima dan sediakan antara muka untuk mengawal status cahaya. Semoga artikel ini dapat memberi manfaat kepada pembaca. 🎜🎜Lampiran: Contoh kod PHP lengkap🎜rrreee

Atas ialah kandungan terperinci Panduan teknikal untuk kawalan lampu jauh menggunakan PHP dan MQTT. 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