Maison > développement back-end > tutoriel php > Guide technique pour le contrôle d'éclairage à distance avec PHP et MQTT

Guide technique pour le contrôle d'éclairage à distance avec PHP et MQTT

PHPz
Libérer: 2023-07-10 09:56:01
original
1419 Les gens l'ont consulté

Guide technique pour le contrôle à distance de l'éclairage à l'aide de PHP et MQTT

Introduction :
Avec le développement continu de l'Internet des objets, les appareils de contrôle à distance deviennent de plus en plus courants. Le contrôle de l'éclairage à distance est également l'une des applications, et cette fonction peut être facilement réalisée à l'aide de PHP et MQTT. Cet article expliquera comment utiliser PHP et MQTT pour implémenter le contrôle de l'éclairage à distance et fournira des exemples de code pour référence aux lecteurs.

1. Préparation

  1. Installer le serveur MQTT
    Tout d'abord, vous devez installer le serveur MQTT. Les serveurs MQTT couramment utilisés incluent Mosquitto et RabbitMQ. Vous pouvez choisir le serveur MQTT approprié pour l'installation en fonction de vos propres besoins et vous assurer que le serveur peut fonctionner normalement.
  2. Créer une table de base de données
    Créez une table de base de données pour stocker les informations sur l'état de l'éclairage. Vous pouvez utiliser MySQL ou d'autres systèmes de gestion de bases de données pour créer des tables, et la structure des tables est la suivante :

    CREATE TABLE `lights` (
     `id` INT(11) NOT NULL AUTO_INCREMENT,
     `name` VARCHAR(50) NOT NULL,
     `status` ENUM('off', 'on') NOT NULL DEFAULT 'off',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Copier après la connexion
  3. Installez la bibliothèque client MQTT
    L'utilisation de MQTT en PHP nécessite l'utilisation de la bibliothèque client MQTT. La bibliothèque client MQTT peut être installée à l'aide du package mosquitto. Le package mosquitto peut être installé à l'aide de la commande suivante :

    sudo apt-get install mosquitto
    sudo apt-get install php-mosquitto
    Copier après la connexion

    Une fois l'installation terminée, vous pouvez vérifier si l'extension mosquitto est installée avec succès en exécutant php -m | grep mosquitto. php -m | grep mosquitto来验证mosquitto扩展是否安装成功。

二、编写PHP代码

首先,需要编写PHP代码来实现远程灯光控制。

  1. 连接MQTT服务器
    首先,需要引入MQTT客户端库,并使用MosquittoClient来连接MQTT服务器。代码如下所示:

    $client = new MosquittoClient();
    $client->connect('127.0.0.1', 1883, 60);
    Copier après la connexion
  2. 订阅MQTT主题
    接下来,需要订阅MQTT主题以接收远程控制指令。可以使用MosquittoClientonMessage方法来处理收到的消息。代码如下所示:

    $client->onMessage(function($message){
      // 处理收到的消息
    });
    
    $client->subscribe('light_control/#', 1);
    Copier après la connexion
  3. 处理收到的消息
    onMessage

  4. 2. Écrivez du code PHP


    Tout d'abord, vous devez écrire du code PHP pour réaliser le contrôle de l'éclairage à distance.

  5. Connectez-vous au serveur MQTT
Tout d'abord, vous devez présenter la bibliothèque client MQTT et utiliser MosquittoClient pour vous connecter au serveur MQTT. Le code est le suivant :

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});
Copier après la connexion

Abonnez-vous au sujet MQTT

Ensuite, vous devez vous abonner au sujet MQTT pour recevoir les instructions de contrôle à distance. Vous pouvez utiliser la méthode onMessage de MosquittoClient pour gérer le message reçu. Le code est le suivant :

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}
Copier après la connexion
🎜🎜🎜Traitement du message reçu🎜Dans la fonction de rappel onMessage, le message reçu peut être traité. Dans cet exemple, nous mettrons à jour l'état de la lumière dans la base de données et publierons l'état actuel aux abonnés. Le code est le suivant : 🎜
connect('127.0.0.1', 1883, 60);

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

$client->subscribe('light_control/#', 1);

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}

while (true) {
  $client->loop();
  sleep(1);
}
?>
Copier après la connexion
🎜🎜🎜Contrôlez l'état de la lumière🎜Enfin, vous devez fournir une interface capable de contrôler l'état de la lumière. Dans cet exemple, nous utiliserons les requêtes GET pour contrôler l'état de la lumière. Le code ressemble à ceci : 🎜rrreee🎜L'exemple de code PHP complet se trouve en annexe de cet article. 🎜🎜🎜🎜3. Résumé🎜🎜Cet article présente comment utiliser PHP et MQTT pour réaliser un contrôle d'éclairage à distance. Tout d'abord, vous devez installer le serveur MQTT et créer la table de base de données correspondante. Ensuite, écrivez du code PHP pour vous connecter au serveur MQTT, abonnez-vous au sujet MQTT, traitez les messages reçus et fournissez une interface pour contrôler l'état de la lumière. J'espère que cet article pourra être utile aux lecteurs. 🎜🎜Annexe : Exemple de code PHP complet🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal