Maison >développement back-end >tutoriel php >Meilleures pratiques pour la surveillance et la visualisation des données en temps réel à l'aide de PHP et MQTT

Meilleures pratiques pour la surveillance et la visualisation des données en temps réel à l'aide de PHP et MQTT

王林
王林original
2023-07-09 12:25:552420parcourir

Bonnes pratiques pour la surveillance et la visualisation des données en temps réel à l'aide de PHP et MQTT

Résumé :
Cet article présentera comment utiliser les protocoles PHP et MQTT pour mettre en œuvre la surveillance et la visualisation des données en temps réel. Nous utiliserons MQTT pour la messagerie et PHP pour gérer les messages et restituer les données. Grâce au guide de cet article, vous apprendrez comment créer un système simple de surveillance des données en temps réel et comment afficher les données visuellement.

Introduction :
Avec la popularisation d'Internet, nous pouvons obtenir une grande quantité de données en temps réel grâce à divers capteurs et appareils. Comment surveiller et visualiser ces données afin que nous puissions mieux les comprendre et prendre des décisions est devenu une question clé. Cet article se concentrera sur les meilleures pratiques pour la surveillance et la visualisation des données en temps réel à l'aide de PHP et MQTT.

1. Qu'est-ce que le protocole MQTT ?
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger, ouvert et facile à mettre en œuvre. Il convient à la transmission sur des réseaux, à une faible bande passante et à des environnements réseau instables, et convient parfaitement aux scénarios IoT. MQTT utilise un modèle de publication-abonnement pour transmettre des messages, qui présente les caractéristiques d'une faible consommation de ressources et d'une faible latence.

2. Construire un serveur MQTT
Avant d'utiliser le protocole MQTT, nous devons créer un serveur MQTT. Il existe de nombreux serveurs MQTT open source parmi lesquels choisir, tels que Mosquitto, EMQ X, etc. Ici, nous prenons Mosquitto comme exemple à présenter.

Tout d’abord, installez le serveur Mosquitto. Vous pouvez l'installer via la ligne de commande ou l'interface graphique. Pour les méthodes spécifiques, veuillez vous référer à la documentation officielle de Mosquitto. Une fois l'installation terminée, démarrez le serveur Mosquitto.

3. Utilisez PHP pour vous connecter au serveur MQTT
Pour utiliser le protocole MQTT en PHP, nous devons utiliser la bibliothèque client MQTT de PHP. Ici, nous utilisons la bibliothèque phpmqtt/phpmqtt. Vous pouvez installer cette bibliothèque via Composer :

composer require phpmqtt/phpmqtt

Une fois l'installation terminée, nous pouvons nous connecter et nous abonner au sujet du serveur MQTT via le code suivant :

<?php
require("vendor/autoload.php");

use PhpMqttClientMqttClient;

$client = new MqttClient("mqtt://localhost:1883");
$client->connect();

$client->subscribe("topic_name", function (string $topic, string $message){
    // 处理接收到的消息
    // 在这里可以对接收到的消息进行处理,如存储到数据库等
});

while (true) {
    $client->loop(true);
}

Dans le code, nous créons d'abord un objet MqttClient, puis utilisez la méthode connect pour vous connecter au serveur Mosquitto. Ensuite, nous nous abonnons à un sujet en utilisant la méthode d'abonnement. Dans la fonction de rappel qui reçoit le message, nous pouvons traiter le message reçu. Enfin, continuez à écouter les messages MQTT en appelant la méthode loop en boucle.

4. Visualisation des données
Une fois que nous nous sommes connectés avec succès au serveur MQTT et que nous nous sommes abonnés aux sujets connexes, nous pouvons commencer à visualiser les données. Ici, nous utilisons la bibliothèque Chart.js pour restituer des graphiques.

Tout d'abord, introduisez le fichier de bibliothèque Chart.js :

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

Ensuite, créez un élément de canevas en HTML pour afficher le graphique :

<canvas id="myChart" width="400" height="400"></canvas>

Ensuite, nous pouvons utiliser le code suivant pour obtenir les données et présenter le graphique :

var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: [], // x轴上的标签
        datasets: [{
            label: '实时数据', // 数据集的标签
            data: [], // 数据值
            fill: false, // 是否填充
            borderColor: 'rgb(75, 192, 192)',
            tension: 0.1 // 曲线的张力
        }]
    },
    options: {
        responsive: true,
        animation: false,
        scales: {
            x: {
                display: true
                // 其他相关配置
            },
            y: {
                display: true
                // 其他相关配置
            }
        }
    }
});

// 定义一个数组,用于存储接收到的数据
var dataArr = [];

// 在消息回调函数中更新图表数据
client.subscribe("topic_name", function (topic, message) {
    var data = parseFloat(message);
    dataArr.push(data.toFixed(2));
    if (dataArr.length > 10) {
        dataArr.shift();
    }

    // 更新图表数据
    myChart.data.labels = Array.from({length: dataArr.length}, (_, i) => i + 1);
    myChart.data.datasets[0].data = dataArr;
    myChart.update();
});

Dans le code ci-dessus, nous créons d’abord un objet Chart et définissons le type de graphique sur graphique linéaire. Ensuite, nous définissons un tableau dataArr pour stocker les données reçues. Dans la fonction de rappel de message, nous ajoutons les données reçues au tableau dataArr et mettons à jour les données du graphique. Enfin, nous mettons à jour l’affichage du graphique en appelant la méthode update.

Conclusion :
À travers cet article, nous avons présenté les meilleures pratiques sur la façon d'utiliser les protocoles PHP et MQTT pour réaliser une surveillance et une visualisation des données en temps réel. En créant un serveur MQTT, en utilisant la bibliothèque PHP pour vous connecter au serveur et vous abonner à des sujets, et en utilisant la bibliothèque Chart.js pour dessiner des graphiques, nous pouvons rapidement créer un système simple de surveillance des données en temps réel et afficher les données visuellement. J'espère que cet article sera utile pour le développement de la surveillance et de la visualisation des données en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn