Heim  >  Artikel  >  Backend-Entwicklung  >  Best Practices für die Echtzeit-Datenvisualisierung mit PHP und MQTT

Best Practices für die Echtzeit-Datenvisualisierung mit PHP und MQTT

PHPz
PHPzOriginal
2023-07-07 17:53:42815Durchsuche

Best Practices für die Echtzeit-Datenvisualisierung mit PHP und MQTT

Einführung:
Durch die kontinuierliche Weiterentwicklung der IoT-Technologie sind wir in der Lage, problemlos verschiedene Sensordaten zu erfassen. Die Visualisierung dieser Daten in Echtzeit ist eine große Herausforderung. In diesem Artikel werden die Best Practices für die Verwendung von PHP- und MQTT-Protokollen zur Erzielung einer Echtzeit-Datenvisualisierung vorgestellt.

1. Was ist das MQTT-Protokoll?
MQTT ist ein leichtes Kommunikationsprotokoll, das für die Kommunikation zwischen IoT-Geräten verwendet wird. Es ist einfach, leichtgewichtig und Open Source und eignet sich daher sehr gut für IoT-Anwendungen.

2. Warum PHP und MQTT wählen?

  1. PHP als Skriptsprache ist einfach zu erlernen und zu verwenden.
  2. Das MQTT-Protokoll zeichnet sich durch geringe Bandbreite, geringen Stromverbrauch und hohe Zuverlässigkeit aus und eignet sich daher sehr gut für IoT-Anwendungen.
  3. PHP verfügt über umfangreiche MQTT-Client-Bibliotheken wie Mosquitto, PHPMQTT usw., die problemlos mit MQTT-Servern kommunizieren können.

3. Best Practices für die Echtzeit-Datenvisualisierung
Bei der Realisierung der Echtzeit-Datenvisualisierung müssen wir die folgenden Schritte ausführen:

  1. Vorbereiten der Umgebung
    Zuerst müssen wir ein MQTT installieren Server auf dem Server, z. B. Mosquitto . Anschließend müssen wir die MQTT-Clientbibliothek für PHP installieren, beispielsweise Mosquitto-PHP. Es kann durch Ausführen des folgenden Befehls installiert werden:

    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
  2. MQTT-Client erstellen
    Als nächstes müssen wir einen MQTT-Client erstellen, um mit dem MQTT-Server zu kommunizieren. Wir können die Mosquitto-PHP-Bibliothek verwenden, um den Client zu erstellen. Der Beispielcode lautet wie folgt:

    <?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(); //开启循环监听
  3. Daten veröffentlichen
    Wo wir Daten veröffentlichen müssen, können wir den folgenden Code zum Veröffentlichen von Daten verwenden:

    $mqtt->publish('topic', 'message', 2, false); // 发布消息
  4. Daten abonnieren
    Wo wir Daten abonnieren müssen, wir Sie können den folgenden Code verwenden, um Daten zu abonnieren:

    $mqtt->subscribe('topic', 2); // 订阅消息
  5. Datenvisualisierung
    Nach Erhalt der Daten können wir die entsprechende Diagrammbibliothek verwenden, um die Daten zu visualisieren. Dies kann mithilfe von Diagrammbibliotheken wie Highcharts und Echarts erreicht werden.

4. Beispieldemonstration
Lassen Sie uns ein einfaches Echtzeit-Temperaturüberwachungssystem implementieren. Zuerst erstellen wir einen Client, der Daten veröffentlicht, beispielsweise ein Sensorgerät:

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

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

Dann erstellen wir einen Client, der Daten abonniert, um Echtzeit-Temperaturdaten zu empfangen und anzuzeigen:

$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();

Schließlich verwenden wir Highcharts, um real zu implementieren -Zeit-Temperatur-Visualisierung. Zuerst müssen wir die Highcharts-Bibliothek vorstellen, dann das Temperaturdiagramm erstellen und das Diagramm aktualisieren, nachdem wir die Daten erhalten haben:

<!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>

Fazit:
Mit dem PHP- und MQTT-Protokoll können wir eine Datenvisualisierung in Echtzeit erreichen. In der Praxis können wir die von PHP und MQTT bereitgestellten Funktionen und Features je nach spezifischen Anforderungen flexibel nutzen, um umfassendere Datenvisualisierungseffekte zu erzielen.

Das obige ist der detaillierte Inhalt vonBest Practices für die Echtzeit-Datenvisualisierung mit PHP und MQTT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn