Я использую приложение ponte node для отправки MQTT-уведомлений из Интернета на устройства, и просмотрите ниже формат, который я использую.
«http://www.example.com/resources/topic/«и сообщение в качестве тела при тестировании от почтальона. Мой вопрос заключается в том, как я могу отправить qos и сохранить параметр при отправке уведомления MQTT с использованием PHP CURL? Мой код PHP приведен ниже.
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_PORT => self::MQTT_SERVER_PORT,
CURLOPT_URL => self::MQTT_SERVER_URL.'/'.$topic,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "test message"));
curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if(!$err){
$sent = true;
}
С Уважением,
Тисмон Варгезе.
Если вы хотите отправлять сообщения MQTT, невозможно использовать PHP curl, поскольку он отправляет данные по протоколу HTTP (и некоторым другим, но не MQTT).
MQTT — это легкий протокол, который заменяет HTTP для отправки сообщений. Вы можете использовать следующий код для отправки сообщений MQTT с PHP:
https://github.com/bluerhinos/phpMQTT
Вот пример кода для публикации данных в брокере MQTT (с qos и сохранением параметров):
require("phpMQTT.php");
$brokder = "address";
$port = 1883;
$clientName = "Client00";
$topic = "topic";
$message = "Test Message";
$qos = 0;
$retain = 0;
$mqtt = new phpMQTT($broker, $portNo, $clientName);
if ($mqtt->connect()) {
$mqtt->publish($topic, $message, $qos, $retain);
$mqtt->close();
} else {
echo "Error Occured";
}
Других решений пока нет …