Maison  >  Article  >  développement back-end  >  Étapes pour mettre en œuvre la surveillance et le contrôle de la température à distance à l'aide de PHP et MQTT

Étapes pour mettre en œuvre la surveillance et le contrôle de la température à distance à l'aide de PHP et MQTT

王林
王林original
2023-07-08 17:06:071157parcourir

Étapes pour mettre en œuvre la surveillance et le contrôle de la température à distance à l'aide de PHP et MQTT

Avec le développement rapide de la technologie IoT, la surveillance et le contrôle à distance sont devenus des besoins courants dans notre vie quotidienne. Cet article explique comment utiliser les protocoles PHP et MQTT pour mettre en œuvre la surveillance et le contrôle de la température à distance. Nous utiliserons un capteur de température basé sur l'ESP8266 comme exemple et enverrons les données de température au serveur distant via le protocole MQTT. En même temps, le serveur distant peut envoyer des instructions de contrôle à l'ESP8266 via le protocole MQTT. Voici les étapes à mettre en œuvre.

Étape 1 : Configurer le serveur MQTT
Tout d'abord, nous devons installer et configurer un serveur MQTT pour faciliter la communication entre l'appareil et le serveur. Ici, nous utilisons le serveur open source Mosquitto MQTT comme exemple. Vous pouvez choisir d'autres serveurs MQTT en fonction de vos besoins. Une fois l'installation terminée, vous devez configurer l'adresse IP, le numéro de port, le nom d'utilisateur, le mot de passe et d'autres informations connexes du serveur MQTT, et créer un sujet pour la communication entre l'appareil et le serveur.

Étape 2 : Configurer l'ESP8266
Installer une bibliothèque MQTT sur ESP8266 Nous utilisons ici la bibliothèque phpMQTT comme exemple. Vous pouvez installer cette bibliothèque via l'interface de gestion de bibliothèque de l'IDE Arduino. Après cela, vous devez configurer la connexion WiFi et les informations relatives au serveur MQTT dans le code, y compris le nom et le mot de passe WiFi, ainsi que l'adresse IP, le numéro de port, le nom d'utilisateur, le mot de passe et d'autres informations du serveur MQTT. Dans le même temps, vous devez configurer le thème de l'appareil. Ici, nous pouvons le nommer « température » pour transmettre les données de température.

Ce qui suit est un exemple simple de code ESP8266 :

#include <ESP8266WiFi.h>
#include <phpMQTT.h>

const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "MQTT_SERVER_IP";
const char* topic = "temperature";

WiFiClient espClient;
phpMQTT mqtt;

float temperature = 0;

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  // handle incoming MQTT messages here
}

void reconnect() {
  // Loop until we're reconnected
  while (!mqtt.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (mqtt.connect("ESP8266Client")) {
      Serial.println("connected");
      mqtt.subscribe(topic);
    } else {
      Serial.print("failed, rc=");
      Serial.print(mqtt.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  mqtt.begin(mqtt_server, 1883, espClient);
  mqtt.onMessage(callback);
}

void loop() {
  if (!mqtt.connected()) {
    reconnect();
  }
  mqtt.loop();

  // simulate reading temperature from sensor
  temperature = random(20, 40);

  // convert temperature to string for MQTT publishing
  char tmp[10];
  sprintf(tmp, "%.2f", temperature);
  
  // publish temperature to MQTT topic
  mqtt.publish(topic, tmp);
  
  delay(2000);
}

Troisième étape : configurer le serveur PHP
Sur le serveur distant, nous devons installer et configurer une bibliothèque client MQTT, ici nous utilisons la bibliothèque phpMQTT. Vous pouvez installer cette bibliothèque via Composer. Après cela, configurez les informations pertinentes du serveur MQTT dans le code PHP, notamment l'adresse IP, le numéro de port, le nom d'utilisateur, le mot de passe, etc. Dans le même temps, vous devez vous abonner aux données de température envoyées par l'appareil afin de pouvoir surveiller les changements de température en temps réel. Voici un exemple de code PHP simple :

<?php

require("phpMQTT.php");

$mqtt_server = "MQTT_SERVER_IP";
$mqtt_port = 1883;
$mqtt_user = "your_MQTT_username";
$mqtt_password = "your_MQTT_password";
$mqtt_topic = "temperature";

$client_id = "PHPServer";

$mqtt = new phpMQTT($mqtt_server, $mqtt_port, $client_id);

if(!$mqtt->connect(true, NULL, $mqtt_user, $mqtt_password)){
    exit(1);
}

$topics[$mqtt_topic] = array("qos"=>0, "function"=>"receiveTemperature");
$mqtt->subscribe($topics, 0);

while($mqtt->proc()){
}

$mqtt->close();

function receiveTemperature($topic, $payload){
    // handle incoming temperature data here
    $temperature = floatval($payload);
    // do something with the temperature data, such as storing it in a database or triggering a notification
}

?>

Quatrième étape : Surveillance et contrôle de la température
Vous pouvez maintenant connecter l'ESP8266 à la source d'alimentation et visualiser le fonctionnement de l'appareil sur le moniteur série. L'ESP8266 lira régulièrement la valeur du capteur de température et la publiera sur le sujet spécifié via le protocole MQTT. Dans le même temps, le serveur PHP s'abonnera à ce sujet et effectuera le traitement correspondant en fonction des données de température reçues, comme par exemple les stocker dans la base de données ou déclencher une alarme.

Sur la base de la surveillance de la température, vous pouvez également mettre en œuvre une fonction de contrôle de la température. Vous pouvez ajouter une fonction de publication MQTT à votre code PHP pour envoyer des instructions de contrôle à l'ESP8266. Vous pouvez déclencher des instructions de contrôle via l'interface web, l'application ou d'autres méthodes selon vos besoins, et envoyer les instructions à l'ESP8266 via le protocole MQTT. L'ESP8266 peut effectuer les opérations de contrôle correspondantes selon les instructions reçues.

En résumé, en utilisant les protocoles PHP et MQTT, nous pouvons facilement mettre en œuvre des fonctions de surveillance et de contrôle de la température à distance. Cette méthode peut être appliquée à divers scénarios, tels que la surveillance de la température intérieure, le contrôle de la température des serres, etc. J'espère que cet article pourra vous être utile.

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