Maison >développement back-end >tutoriel php >Surveillance de la qualité de l'eau en temps réel à l'aide de PHP et MQTT

Surveillance de la qualité de l'eau en temps réel à l'aide de PHP et MQTT

WBOY
WBOYoriginal
2023-06-28 14:05:361627parcourir

À 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 :

  1. Léger : le protocole est simple, a une faible surcharge et convient à la communication entre petits appareils.
  2. Haute fiabilité : garantit l'exactitude et la fiabilité de la transmission des messages.
  3. Routage flexible : capable d'acheminer les messages en fonction des conditions réelles.
  4. Sécurité : prend en charge la transmission cryptée SSL/TLS, ce qui peut protéger la sécurité de la transmission des messages.

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 :

  1. Installez la bibliothèque de classes phpMQTT :
composer require bluerhinos/phpmqtt
  1. Utilisez la bibliothèque de classes :
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!

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