Panduan teknikal untuk kawalan lampu jauh menggunakan PHP dan MQTT

PHPz
Lepaskan: 2023-07-10 09:56:01
asal
1378 orang telah melayarinya

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

    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);
    Salin selepas log masuk
  2. 订阅MQTT主题
    接下来,需要订阅MQTT主题以接收远程控制指令。可以使用MosquittoClientonMessage方法来处理收到的消息。代码如下所示:

    $client->onMessage(function($message){
      // 处理收到的消息
    });
    
    $client->subscribe('light_control/#', 1);
    Salin selepas log masuk
  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);
});
Salin selepas log masuk

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);
}
Salin selepas log masuk
🎜🎜🎜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);
}
?>
Salin selepas log masuk
🎜🎜🎜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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!