À mesure que les gens accordent de plus en plus d’attention à la santé et à la protection de l’environnement, leurs exigences en matière de qualité de l’eau deviennent également de plus en plus élevées. Grâce à la surveillance de la qualité de l'eau en temps réel, nous pouvons comprendre les conditions de qualité de l'eau en temps opportun et garantir la sécurité des sources d'eau potable et domestique. Cet article expliquera comment utiliser les technologies PHP et MQTT pour réaliser une surveillance de la qualité de l'eau en temps réel.
1. Introduction à MQTT
MQTT (Message Queuing Telemetry Transport) est un protocole de communication léger principalement utilisé pour la communication instantanée entre les appareils IoT. Le protocole MQTT adopte le mode publication/abonnement (Publish/Subscribe) pour implémenter la distribution et le routage des messages via Broker. En termes simples, l'éditeur publie des messages à tous les abonnés et l'abonné reçoit des messages en s'abonnant à un sujet d'intérêt.
Le protocole MQTT présente les caractéristiques suivantes :
2. PHP implémente la communication MQTT
L'implémentation du protocole MQTT nécessite l'utilisation de bibliothèques client spécifiques, telles que Paho MQTT, Mosquitto, etc. En PHP, nous pouvons utiliser la bibliothèque de classes phpMQTT pour implémenter la communication MQTT. Il s'agit d'une bibliothèque client PHP MQTT simple et facile à utiliser.
Les étapes pour utiliser phpMQTT sont les suivantes :
composer require bluerhinos/phpmqtt
require("phpMQTT.php"); $mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand()); if ($mqtt->connect()) { $mqtt->publish("Topic", "Hello World! QoS 0", 0); $mqtt->close(); } else { echo "Failed to connect to MQTT broker"; }
Dans le code ci-dessus, nous créons un objet phpMQTT via le nouveau mot-clé et passons dans l'adresse et le numéro de port du courtier, ainsi qu'un ClientID généré aléatoirement. Ensuite, nous nous connectons au courtier MQTT à l'aide de la méthode connect() et publions le message à l'aide de la méthode publier().
3. Surveillance de la qualité de l'eau en temps réel
Dans la surveillance de la qualité de l'eau en temps réel, nous devons collecter des données sur la qualité de l'eau et envoyer les données au courtier MQTT. Afin de simuler la collecte de données, nous pouvons utiliser une fonction de génération de nombres aléatoires pour générer des indicateurs de qualité de l'eau tels que la température de l'eau, la valeur du pH et l'oxygène dissous.
Ce qui suit est une fonction PHP qui génère des données aléatoires sur la qualité de l'eau :
function generateWaterData() { $temp = rand(20, 30); $ph = (float)rand(60, 80) / 10; $do = rand(5, 11); return array( "temperature" => $temp, "pH" => $ph, "dissolved_oxygen" => $do ); }
Après avoir généré les données sur la qualité de l'eau, nous devons envoyer les données au courtier MQTT. Nous pouvons utiliser la méthode publier() fournie par la bibliothèque de classes phpMQTT pour y parvenir :
$mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand()); if ($mqtt->connect()) { while (true) { $waterData = generateWaterData(); $mqtt->publish("water_quality", json_encode($waterData), 0); sleep(5); } $mqtt->close(); } else { echo "Failed to connect to MQTT broker"; }
Dans le code ci-dessus, nous créons d'abord un objet mqtt et nous nous connectons au courtier MQTT. Ensuite, nous utilisons une boucle while pour générer en continu des données aléatoires sur la qualité de l'eau et les publier dans le sujet water_quality via la méthode publier().
Enfin, on peut s'abonner au sujet via MQTT pour recevoir et traiter les données sur la qualité de l'eau. En PHP, nous pouvons utiliser la méthode Subscribe() fournie par la bibliothèque de classes phpMQTT :
$mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand()); if ($mqtt->connect()) { $topics["water_quality"] = array("qos" => 0, "function" => "processWaterData"); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { // 运行代码 } $mqtt->close(); } else { echo "Failed to connect to MQTT broker"; } function processWaterData($topic, $msg) { $waterData = json_decode($msg); // 处理水质数据 }
Dans le code ci-dessus, nous créons d'abord un objet mqtt et nous nous connectons au MQTT Broker. Ensuite, nous nous sommes abonnés au sujet water_quality en utilisant la méthode Subscribe() et avons spécifié la fonction de traitement des messages processWaterData. Enfin, nous utilisons la méthode proc() pour maintenir la connexion et attendre de recevoir des messages MQTT à tout moment. En traitant les données reçues sur la qualité de l'eau dans la fonction processWaterData(), nous pouvons atteindre l'objectif de surveillance de la qualité de l'eau en temps réel.
Résumé
Cet article présente comment utiliser la technologie PHP et MQTT pour réaliser une surveillance de la qualité de l'eau en temps réel. Grâce à la bibliothèque de classes phpMQTT, nous pouvons facilement nous connecter au MQTT Broker et implémenter des fonctions de publication de données et d'abonnement. L'application du protocole MQTT à la surveillance en temps réel de la qualité de l'eau peut non seulement améliorer le temps réel et la fiabilité de la transmission des données, mais également nous aider à comprendre les conditions de qualité de l'eau en temps opportun et à garantir la sécurité de l'eau potable des populations.
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!