Amalan terbaik untuk visualisasi data masa nyata menggunakan PHP dan MQTT

PHPz
Lepaskan: 2023-07-07 17:56:01
asal
868 orang telah melayarinya

Amalan terbaik untuk visualisasi data masa nyata menggunakan PHP dan MQTT

Pengenalan:
Dengan pembangunan berterusan teknologi IoT, kami dapat mengumpul pelbagai data sensor dengan mudah. Cara untuk menggambarkan data ini dalam masa nyata adalah cabaran penting. Artikel ini akan memperkenalkan amalan terbaik tentang cara menggunakan protokol PHP dan MQTT untuk mencapai visualisasi data masa nyata.

1. Apakah itu protokol MQTT?
MQTT ialah protokol komunikasi ringan yang digunakan untuk komunikasi antara peranti IoT. Ia ringkas, ringan dan sumber terbuka, menjadikannya sangat sesuai untuk aplikasi IoT.

2 Mengapa memilih PHP dan MQTT?

  1. PHP sebagai bahasa skrip mudah dipelajari dan digunakan.
  2. Protokol MQTT mempunyai ciri lebar jalur yang rendah, penggunaan kuasa yang rendah dan kebolehpercayaan yang tinggi, menjadikannya sangat sesuai untuk aplikasi IoT.
  3. PHP mempunyai perpustakaan klien MQTT yang kaya, seperti Mosquitto, PHPMQTT, dll., yang boleh berkomunikasi dengan mudah dengan pelayan MQTT.

3. Amalan terbaik untuk visualisasi data masa nyata
Dalam proses merealisasikan visualisasi data masa nyata, kita perlu menjalankan langkah berikut:

  1. Sediakan persekitaran
    Pertama, kita perlu memasang MQTT pelayan pada pelayan, seperti Mosquitto . Kemudian, kita perlu memasang perpustakaan klien MQTT untuk PHP, seperti Mosquitto-PHP. Ia boleh dipasang dengan menjalankan arahan berikut:

    sudo apt-get install mosquitto mosquitto-clients
    sudo apt-get install php-pear
    sudo apt-get install php-dev
    sudo pecl install Mosquitto-alpha
    sudo echo "extension=mosquitto.so" > /etc/php/7.2/cli/conf.d/20-mosquitto.ini
    Salin selepas log masuk
  2. Buat Klien MQTT
    Seterusnya, kita perlu mencipta klien MQTT untuk berkomunikasi dengan pelayan MQTT. Kami boleh menggunakan perpustakaan Mosquitto-PHP untuk mencipta klien. Kod sampel adalah seperti berikut:

    <?php
    $mqtt = new MosquittoClient();
    $mqtt->onConnect('connectHandler');
    $mqtt->onMessage('messageHandler');
    $mqtt->connect('mqtt.example.com', 1883, 60); // 连接到MQTT服务器
    
    function connectHandler($r)
    {
     // 连接成功后的处理逻辑
    }
    
    function messageHandler($m)
    {
     // 接收到消息后的处理逻辑
    }
    
    $mqtt->loopForever(); //开启循环监听
    Salin selepas log masuk
  3. Terbitkan data
    Di mana kita perlu menerbitkan data, kita boleh menggunakan kod berikut untuk menerbitkan data:

    $mqtt->publish('topic', 'message', 2, false); // 发布消息
    Salin selepas log masuk
  4. Langgan data
    Di mana kita perlu melanggan data, kita boleh gunakan kod berikut untuk melanggan Data:

    $mqtt->subscribe('topic', 2); // 订阅消息
    Salin selepas log masuk
  5. Visualisasi Data
    Selepas menerima data, kami boleh menggunakan perpustakaan carta yang sepadan untuk menggambarkan data. Ini boleh dicapai menggunakan perpustakaan carta seperti Highcharts dan Echarts.

4. Contoh Demonstrasi
Mari kita laksanakan sistem pemantauan suhu masa nyata yang mudah. Pertama, kami mencipta pelanggan yang menerbitkan data, seperti peranti penderia:

$mqtt = new MosquittoClient();
$mqtt->connect('mqtt.example.com', 1883, 60);

while (true) {
    $temperature = getTemperature(); // 获取温度数据
    $mqtt->publish('temperature', $temperature, 2, false);
    sleep(1); // 每隔1秒发布一次数据
}
Salin selepas log masuk

Kemudian, kami mencipta pelanggan yang melanggan data untuk menerima dan memaparkan data suhu masa nyata:

$mqtt = new MosquittoClient();
$mqtt->connect('mqtt.example.com', 1883, 60);
$mqtt->subscribe('temperature', 2);

$mqtt->onMessage(function ($message){
    $temperature = $message->payload;
    echo '当前温度:' . $temperature . '℃';
});

$mqtt->loopForever();
Salin selepas log masuk

Akhir sekali, kami menggunakan Highcharts untuk melaksanakan sebenar - Visualisasi suhu masa. Mula-mula, kita perlu memperkenalkan perpustakaan Highcharts, kemudian buat carta suhu dan kemas kini carta selepas menerima data:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
</head>
<body>
    <div id="container"></div>

    <script>
        var chart = Highcharts.chart('container', {
            title: {
                text: '实时温度监控'
            },
            series: [{
                name: 'Temperature',
                data: []
            }]
        });

        var topic = 'temperature';

        var client = new Paho.MQTT.Client("mqtt.example.com", 1883, "clientId");

        client.onConnectionLost = function (responseObject) {
            if (responseObject.errorCode !== 0) {
                console.log("连接丢失: " + responseObject.errorMessage);
            }
        };

        client.onMessageArrived = function (message) {
            var temperature = parseFloat(message.payloadString);
            chart.series[0].addPoint(temperature);
        };

        client.connect({
            onSuccess: function () {
                client.subscribe(topic);
            }
        });
    </script>
</body>
</html>
Salin selepas log masuk

Kesimpulan:
Dengan protokol PHP dan MQTT, kita boleh mencapai visualisasi data masa nyata. Dalam amalan, kami boleh menggunakan fungsi dan ciri yang disediakan oleh PHP dan MQTT secara fleksibel mengikut keperluan khusus untuk mencapai kesan visualisasi data yang lebih kaya.

Atas ialah kandungan terperinci Amalan terbaik untuk visualisasi data 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