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?
3. Best Practices für die Echtzeit-Datenvisualisierung
Bei der Realisierung der Echtzeit-Datenvisualisierung müssen wir die folgenden Schritte ausführen:
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
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(); //开启循环监听
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); // 发布消息
Daten abonnieren
Wo wir Daten abonnieren müssen, wir Sie können den folgenden Code verwenden, um Daten zu abonnieren:
$mqtt->subscribe('topic', 2); // 订阅消息
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!