Maison >développement back-end >tutoriel php >Abonnement aux messages MQTT et pratique de publication dans le développement PHP

Abonnement aux messages MQTT et pratique de publication dans le développement PHP

WBOY
WBOYoriginal
2023-07-08 14:02:512428parcourir

Abonnement et publication pratiques de messages MQTT dans le développement PHP

Introduction :
Avec le développement de l'Internet des objets, le protocole de transport de télémétrie Message Queuing (MQTT) joue un rôle important dans la communication entre les capteurs et les applications back-end. En tant que protocole léger, MQTT présente les caractéristiques d’une faible consommation d’énergie, d’une fiabilité et d’une évolutivité élevées. Dans le développement PHP, MQTT est utilisé pour s'abonner et publier des messages, qui peuvent facilement communiquer avec des capteurs et transmettre des données à l'application back-end pour traitement et affichage. Cet article présentera l'application pratique de MQTT dans le développement PHP et fournira des exemples de code pertinents.

1. Introduction à MQTT :
MQTT est un protocole de transmission de file d'attente de messages basé sur le modèle de publication/abonnement. Il adopte un format de message binaire léger et convient à divers périphériques matériels tels que des capteurs et des systèmes embarqués. Le protocole MQTT contient principalement deux rôles : éditeur de message et abonné au message. Les éditeurs publient des messages sur un sujet spécifique, tandis que les abonnés s'abonnent à des sujets d'intérêt pour recevoir des messages pertinents. Le protocole MQTT prend également en charge les paramètres de niveau QoS (Qualité de service) des messages pour garantir la fiabilité des données.

2. Installer le serveur MQTT :
Avant de commencer à pratiquer MQTT dans le développement PHP, nous devons d'abord créer un serveur MQTT. Voici les brèves étapes pour configurer un serveur MQTT :

  1. Téléchargez et installez un serveur MQTT tel que Mosquitto.
  2. Exécutez le serveur MQTT, le port d'écoute par défaut est 1883.

3. Utilisation de MQTT en PHP :
Le processus d'utilisation de MQTT pour l'abonnement et la publication de messages en PHP est le suivant :

  1. Présentation de la bibliothèque client MQTT :
    Vous devez d'abord présenter la bibliothèque client MQTT, la bibliothèque client la plus courante. client MQTT utilisé en PHP Les bibliothèques de terminaux incluent phpMQTT et mosquitto-php, etc. Cet article prend comme exemple phpMQTT, qui peut être installé via composer :

    composer require bluerhinos/phpmqttclient
  2. Configuration du client MQTT :
    Avant d'effectuer des opérations MQTT dans le code PHP, vous devez d'abord configurer la connexion, y compris l'adresse du serveur, le numéro de port et le niveau de QoS. , etc. Voici un exemple de configuration :

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
  3. Abonnement aux messages MQTT :
    Pour vous abonner à un sujet en PHP, vous pouvez utiliser la méthode subscribe. Voici un exemple : subscribe方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $topics['topic_name'] = array('qos' => 0, 'function' => 'dataCallback');
      $mqtt->subscribe($topics, 0);
      while($mqtt->proc()){
      }
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }
    function dataCallback($topic, $payload) {
      echo "收到消息:$payload";
    }
  4. MQTT消息的发布:
    在PHP中发布一个消息,可以使用publish方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $mqtt->publish('topic_name', '消息内容', 0);
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }

四、实战应用:
下面以一个简单的实景应用为例,演示在PHP中使用MQTT进行消息订阅与发布的实际应用。

  1. 场景描述:
    假设我们有一个温度传感器设备,其将实时温度通过MQTT协议发布到主题为temperature
    require('phpMQTT.php');
    
    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    
    if($mqtt->connect(true, NULL, NULL, NULL)) {
        $topics['temperature'] = array('qos' => 0, 'function' => 'temperatureCallback');
        $mqtt->subscribe($topics, 0);
    
        echo "开始订阅温度数据...
    ";
    
        while($mqtt->proc()){
        }
    
        $mqtt->close();
    } else {
        echo "连接MQTT服务器失败!";
        exit(1);
    }
    
    function temperatureCallback($topic, $payload) {
        echo "收到温度消息:$payload
    ";
        // 在这里进行温度数据的处理,如存储到数据库或展示在Web界面上
    }

  2. Publication de messages MQTT :
  3. Pour publier un message en PHP, vous pouvez utiliser la méthode publish. Voici un exemple :
<!DOCTYPE html>
<html>
<head>
    <title>温度监控</title>
</head>
<body>
    <h1>温度监控</h1>
    <div id="temperature"></div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var mqttServer = 'mqtt://localhost:1883';
            var clientId = 'web_client';
            var temperatureTopic = 'temperature';

            var client = mqtt.connect(mqttServer, { clientId: clientId });

            client.on('connect', function() {
                client.subscribe(temperatureTopic);
            });

            client.on('message', function(topic, message) {
                if (topic === temperatureTopic) {
                    var temperature = message.toString();
                    $('#temperature').text('当前温度:' + temperature + '℃');
                }
            });
        });
    </script>
</body>
</html>

  1. 4. Application pratique :
  2. Ce qui suit prend une application simple et réelle comme exemple pour démontrer l'application pratique de l'utilisation de MQTT pour l'abonnement et la publication de messages en PHP.

Description du scénario :

Supposons que nous ayons un capteur de température qui publie la température en temps réel via le protocole MQTT sur un canal avec le sujet température. Notre application PHP doit recevoir et traiter ces données de température en temps réel, et pour ce faire, nous nous abonnerons à ce sujet et afficherons la température en temps réel via l'interface web.

Exemple de code PHP : 🎜Abonnez-vous aux données de température et affichez-les sur l'interface Web : 🎜🎜rrreee🎜🎜Exemple d'interface Web : 🎜L'exemple de code pour afficher les données de température en temps réel via l'interface Web est le suivant : 🎜🎜rrreee🎜 L'exemple de code ci-dessus démontre l'utilisation de PHP Application pratique de l'utilisation de MQTT pour l'abonnement et la publication de messages. En nous abonnant aux données de température, nous pouvons recevoir des données de température en temps réel, les traiter et les afficher, et en publiant des messages, nous pouvons envoyer des instructions de contrôle aux capteurs. En cours de développement, le code peut être étendu et ajusté en fonction de besoins spécifiques. 🎜🎜Conclusion : 🎜Cet article présente l'application pratique de l'abonnement et de la publication de messages MQTT dans le développement PHP, et fournit des exemples de code pertinents. En utilisant le protocole MQTT, les applications PHP peuvent facilement communiquer avec les capteurs et réaliser la transmission et le traitement des données en temps réel. Dans le développement d'applications IoT, l'utilisation de MQTT pour la messagerie peut améliorer l'efficacité et la fiabilité des communications et apporter plus de commodité au développement d'applications. 🎜

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