Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP dan MQTT: merealisasikan penghantaran data dan kawalan sistem rumah pintar

PHP dan MQTT: merealisasikan penghantaran data dan kawalan sistem rumah pintar

WBOY
WBOYasal
2023-07-10 09:12:061187semak imbas

PHP dan MQTT: Realisasikan penghantaran data dan kawalan sistem rumah pintar

Pembangunan pesat sistem rumah pintar telah menyebabkan semakin ramai orang mula menggunakan peranti pintar untuk mengawal peranti rumah. Untuk merealisasikan penghantaran data dan kawalan sistem rumah pintar, kami boleh menggunakan protokol MQTT untuk melaksanakan komunikasi antara peranti. Artikel ini akan memperkenalkan cara menggunakan PHP dan MQTT untuk mencipta sistem rumah pintar yang mudah.

Pertama, kita perlu memasang perpustakaan sambungan MQTT. Kita boleh memasang sambungan PHP Mosquitto dengan arahan berikut:

pecl install Mosquitto-alpha

Selepas pemasangan selesai, dayakan sambungan dalam fail php.ini:

extension=mosquitto.so

Seterusnya, kita perlu memasang broker MQTT, seperti Mosquitto, untuk komunikasi antara peranti. Kita boleh memasang ejen Mosquitto menggunakan arahan berikut dalam baris arahan:

sudo apt-get install mosquitto

Selepas pemasangan selesai, kita boleh memulakan ejen Mosquitto melalui arahan berikut:

mosquitto -v

Sekarang, mari kita tulis sekeping kod PHP untuk dilaksanakan penghantaran data untuk sistem dan kawalan rumah pintar. Katakan kita mempunyai penderia suhu dan lampu LED sebagai peranti rumah. Sensor suhu akan menghantar nilai suhu kepada broker MQTT, dan lampu LED akan mengawal suis mengikut arahan yang diterima.

<?php
 
require("phpMQTT.php");
 
$mqtt = new phpMQTT("localhost", 1883, "ClientID".rand());
 
if(!$mqtt->connect()){
    exit(1);
}
 
$topics['temperature'] = array("qos" => 0, "function" => "procTemperature");
$mqtt->subscribe($topics, 0);
 
while($mqtt->proc()){
}
 
$mqtt->close();
 
function procTemperature($topic, $msg){
    echo "Received temperature: " . $msg . "C" . "
";
 
    // 控制LED灯的代码
 
    // 如果温度大于30°C,开启LED灯
    if($msg > 30){
        echo "Turn on LED" . "
";
    }else{
        echo "Turn off LED" . "
";
    }
}
 
?>

Kelas phpMQTT digunakan dalam kod di atas untuk menyambung dan melaksanakan operasi MQTT. Kami mula-mula membuat contoh phpMQTT dan memasukkan alamat dan nombor port broker MQTT. Kami kemudiannya mewujudkan sambungan kepada broker MQTT dengan memanggil kaedah connect().

Dalam bahagian langganan, kami mentakrifkan topik bernama "suhu" dan menentukan fungsi panggil balik procTemperature. Apabila sensor suhu mengeluarkan data suhu baharu, fungsi panggil balik procTemperature akan dipanggil.

Dalam fungsi panggil balik, kami mula-mula mencetak nilai suhu yang diterima. Kemudian, kami mengawal status hidup/mati lampu LED berdasarkan nilai suhu.

Dalam gelung utama, kami menggunakan kaedah proc() untuk memproses mesej MQTT sehingga sambungan ditutup.

Jika kami ingin menghantar arahan untuk mengawal suis lampu LED, kami boleh menulis kod berikut:

<?php
 
require("phpMQTT.php");
 
$mqtt = new phpMQTT("localhost", 1883, "ClientID".rand());
 
if(!$mqtt->connect()){
    exit(1);
}
 
$topic = "led";
$message = "on";
$mqtt->publish($topic, $message, 0);
 
$mqtt->close();
 
?>

Dalam kod di atas, kami mula-mula membuat instance phpMQTT dan mewujudkan sambungan dengan broker MQTT. Kami kemudiannya menentukan topik "dipimpin" dan mesej "dihidupkan" dan menggunakan kaedah terbitkan() untuk menghantar mesej kepada broker MQTT. Akhirnya, kami menutup sambungan kepada broker MQTT.

Contoh kod di atas menunjukkan cara menggunakan PHP dan MQTT untuk melaksanakan penghantaran data dan kawalan sistem rumah pintar. Dengan menggunakan protokol MQTT, kami hanya boleh melaksanakan komunikasi antara peranti untuk mencipta sistem rumah pintar. Melalui pengembangan dan pengoptimuman selanjutnya, kami boleh mencapai sistem kawalan rumah yang lebih kompleks dan pintar.

Atas ialah kandungan terperinci PHP dan MQTT: merealisasikan penghantaran data dan kawalan sistem rumah pintar. 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