Heim > Backend-Entwicklung > PHP-Tutorial > Echtzeitüberwachung der Wasserqualität mit PHP und MQTT

Echtzeitüberwachung der Wasserqualität mit PHP und MQTT

WBOY
Freigeben: 2023-06-28 14:06:02
Original
1631 Leute haben es durchsucht

Da die Menschen dem Gesundheits- und Umweltschutz immer mehr Aufmerksamkeit schenken, werden auch ihre Ansprüche an die Wasserqualität immer höher. Durch die Überwachung der Wasserqualität in Echtzeit können wir die Wasserqualitätsbedingungen zeitnah verstehen und die Sicherheit der Trink- und Haushaltswasserquellen der Menschen gewährleisten. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP- und MQTT-Technologie eine Echtzeitüberwachung der Wasserqualität erreichen.

1. Einführung in MQTT

MQTT (Message Queuing Telemetry Transport) ist ein leichtes Kommunikationsprotokoll, das hauptsächlich für die sofortige Kommunikation zwischen IoT-Geräten verwendet wird. Das MQTT-Protokoll verwendet den Publish/Subscribe-Modus (Publish/Subscribe), um die Nachrichtenverteilung und -weiterleitung über den Broker zu implementieren. Einfach ausgedrückt: Der Herausgeber veröffentlicht Nachrichten an alle Abonnenten, und der Abonnent erhält Nachrichten, indem er ein interessantes Thema abonniert.

Das MQTT-Protokoll weist die folgenden Eigenschaften auf:

  1. Leicht: Das Protokoll ist einfach, hat einen geringen Overhead und eignet sich für die Kommunikation zwischen kleinen Geräten.
  2. Hohe Zuverlässigkeit: Stellen Sie die Korrektheit und Zuverlässigkeit der Nachrichtenübertragung sicher.
  3. Flexibles Routing: Nachrichten können entsprechend den tatsächlichen Bedingungen weitergeleitet werden.
  4. Sicherheit: Unterstützt SSL/TLS-verschlüsselte Übertragung, die die Sicherheit der Nachrichtenübertragung schützen kann.

2. PHP implementiert die MQTT-Kommunikation

Die Implementierung des MQTT-Protokolls erfordert die Verwendung spezifischer Client-Bibliotheken wie Paho MQTT, Mosquitto usw. In PHP können wir die phpMQTT-Klassenbibliothek verwenden, um die MQTT-Kommunikation zu implementieren. Es handelt sich um eine einfache und benutzerfreundliche PHP MQTT-Clientbibliothek.

Die Schritte zur Verwendung von phpMQTT sind wie folgt:

  1. Installieren Sie die phpMQTT-Klassenbibliothek:
composer require bluerhinos/phpmqtt
Nach dem Login kopieren
  1. Verwenden Sie die Klassenbibliothek:
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";
}
Nach dem Login kopieren

Im obigen Code erstellen wir ein phpMQTT-Objekt über das neue Schlüsselwort und übergeben es in der Adresse und Portnummer des Brokers sowie einer zufällig generierten ClientID. Als nächstes verbinden wir uns mit der connect()-Methode mit dem MQTT-Broker und veröffentlichen die Nachricht mit der Publish()-Methode.

3. Echtzeit-Wasserqualitätsüberwachung

Bei der Echtzeit-Wasserqualitätsüberwachung müssen wir Wasserqualitätsdaten sammeln und die Daten an MQTT Broker senden. Um die Datenerfassung zu simulieren, können wir mithilfe einer Zufallszahlengenerierungsfunktion Wasserqualitätsindikatoren wie Wassertemperatur, pH-Wert und gelösten Sauerstoff generieren.

Das Folgende ist eine PHP-Funktion, die zufällige Wasserqualitätsdaten generiert:

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
    );
}
Nach dem Login kopieren

Nachdem wir die Wasserqualitätsdaten generiert haben, müssen wir die Daten an den MQTT-Broker senden. Um dies zu erreichen, können wir die Methode „publish()“ verwenden, die von der Klassenbibliothek phpMQTT bereitgestellt wird:

$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";
}
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst ein MQTT-Objekt und stellen eine Verbindung zum MQTT-Broker her. Als Nächstes verwenden wir eine While-Schleife, um kontinuierlich zufällige Wasserqualitätsdaten zu generieren und diese über die Methode „publish()“ im Thema „water_quality“ zu veröffentlichen.

Endlich können wir das Thema über MQTT abonnieren, um Daten zur Wasserqualität zu empfangen und zu verarbeiten. In PHP können wir die subscribe()-Methode verwenden, die von der phpMQTT-Klassenbibliothek bereitgestellt wird:

$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);
    // 处理水质数据
}
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst ein MQTT-Objekt und stellen eine Verbindung zum MQTT-Broker her. Als nächstes haben wir das Thema „water_quality“ mit der Methode subscribe() abonniert und die Nachrichtenverarbeitungsfunktion „processWaterData“ angegeben. Schließlich verwenden wir die Methode proc(), um die Verbindung aufrechtzuerhalten und jederzeit auf den Empfang von MQTT-Nachrichten zu warten. Durch die Verarbeitung der empfangenen Wasserqualitätsdaten in der Funktion „processWaterData()“ können wir das Ziel einer Echtzeitüberwachung der Wasserqualität erreichen.

Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mithilfe der PHP- und MQTT-Technologie eine Echtzeitüberwachung der Wasserqualität erreichen. Über die phpMQTT-Klassenbibliothek können wir problemlos eine Verbindung zum MQTT-Broker herstellen und Datenveröffentlichungs- und Abonnementfunktionen implementieren. Die Anwendung des MQTT-Protokolls zur Echtzeitüberwachung der Wasserqualität kann nicht nur die Echtzeit und Zuverlässigkeit der Datenübertragung verbessern, sondern uns auch dabei helfen, die Wasserqualitätsbedingungen rechtzeitig zu erfassen und die Trinkwassersicherheit der Menschen zu gewährleisten.

Das obige ist der detaillierte Inhalt vonEchtzeitüberwachung der Wasserqualität mit PHP und MQTT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage