Home  >  Article  >  Backend Development  >  Technical guide for remote device control using PHP and MQTT

Technical guide for remote device control using PHP and MQTT

王林
王林Original
2023-07-08 17:09:111873browse

Technical Guide for Remote Device Control Using PHP and MQTT

Introduction:
The rapid development of modern technology has made the Internet of Things (IoT) gradually become a reality. In the Internet of Things, by connecting various devices through the Internet, we can achieve remote control and monitoring of the devices. MQTT is a lightweight message transfer protocol that can facilitate communication between devices. This article will introduce how to use PHP and MQTT protocols to achieve remote device control.

1. Preparation:
Before we start, we need to install the MQTT server and PHP. The most common option is to use Mosquitto as the MQTT server, which can be installed through commands such as apt-get. For PHP, we can install it in various ways, such as LAMP, XAMPP, etc.

2. Build MQTT server:

1. Install Mosquitto:
Use the following command to install Mosquitto:

sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients

After the installation is completed, Mosquitto will start automatically.

2. Test the Mosquitto server:
You can test whether the Mosquitto server is running normally by running the following command:

mosquitto_pub -h localhost -t test -m "Hello, MQTT"
mosquitto_sub -h localhost -t test

If everything is normal, you should be able to see "Hello, MQTT" on the terminal This news.

3. Using MQTT in PHP:

1. Install the MQTT extension of PHP:
There is no function that natively supports MQTT in PHP, so we need to install the MQTT extension. It can be installed through the following command:

sudo apt-get install php-pear php-dev libmosquitto-dev
sudo pecl install Mosquitto-alpha

After the installation is complete, add the following content in the php.ini file:

extension=mosquitto.so

Restart the Apache server to make the settings take effect.

2. Write a PHP program:
The following is a simple PHP program example for connecting to the MQTT server and publishing messages:

<?php
$mqtt = new MosquittoClient();

$mqtt->connect("localhost", 1883, 60);

$message = "Hello, MQTT";
$mqtt->publish("test", $message);

$mqtt->disconnect();
unset($mqtt);
?>

The above code will connect to the local MQTT server and publish messages to the "test" topic.

3. Subscribe to MQTT messages:
In addition to publishing messages, we can also subscribe to messages to obtain the status of the device or control instructions. The following is an example of a PHP program that subscribes to MQTT messages:

<?php
$mqtt = new MosquittoClient();

$mqtt->onMessage(function($message){
    echo $message->payload;
});

$mqtt->connect("localhost", 1883, 60);

$mqtt->subscribe("test", 1);

while($mqtt->loop() == 0){
    
}

$mqtt->disconnect();
unset($mqtt);
?>

The above code will connect to the local MQTT server and subscribe to messages on the "test" topic. When a message is received, it is printed on the terminal.

4. Remote device control example:
Through the above steps, we can already remotely control and monitor the device locally. Next, we use a simple example to demonstrate how to achieve remote device control through the Internet.

1. Device-side code:

<?php
$mqtt = new MosquittoClient();

$mqtt->onConnect(function() use ($mqtt){
    $mqtt->publish("test", "Device connected", 0, false);
});

$mqtt->connect("mqtt.example.com", 1883, 60);

while($mqtt->loop() == 0){
    $mqtt->publish("test", "Device is working", 0, false);
    sleep(1);
}

$mqtt->disconnect();
unset($mqtt);
?>

In the above code, the device will connect to an MQTT server named "mqtt.example.com" and send "Device" every 1 second is working" message to the "test" topic.

2. Control terminal code:

<?php
$mqtt = new MosquittoClient();

$mqtt->onMessage(function($message){
    echo $message->payload;
});

$mqtt->connect("mqtt.example.com", 1883, 60);

$mqtt->subscribe("test", 1);

while($mqtt->loop() == 0){
    $mqtt->publish("test", "Control message", 0, false);
    sleep(1);
}

$mqtt->disconnect();
unset($mqtt);
?>

In the above code, the control terminal will connect to the same MQTT server and subscribe to messages on the "test" topic. At the same time, a "Control message" message will be sent to the "test" topic every 1 second. When the device receives the message, it can perform corresponding control operations.

Conclusion:
By using PHP and MQTT protocols, we can achieve convenient remote device control and monitoring. This article explains how to set up an MQTT server and how to use PHP code to connect to the server and publish and subscribe to messages. Through a simple remote device control example, it shows how to achieve remote control through the Internet. This is just the tip of the iceberg of the Internet of Things, I hope it will be helpful to readers.

Reference:

  1. MQTT official website: http://mqtt.org/
  2. Mosquitto project page: https://mosquitto.org/
  3. Eclipse Paho project page: https://www.eclipse.org/paho/clients/php/

The above is the detailed content of Technical guide for remote device control using PHP and MQTT. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn