发送qos参数以及MQTT通知

时间:2016-11-14 10:47:34

标签: php mqtt iot qos

我正在使用ponte节点应用程序从网络向设备发送MQTT通知,请参阅下面我正在使用的格式。

http://www.example.com/resources/topic/”并在邮递员测试时作为正文发送消息。我的问题是如何在使用PHP CURL发送MQTT通知时发送qos和retain参数?我的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;
            }

此致 Tismon Varghese。

2 个答案:

答案 0 :(得分:0)

如果要发送MQTT消息,则无法使用PHP curl,因为它使用HTTP协议(以及其他一些而非MQTT)发送数据。

MQTT是一种轻量级协议,用于替换HTTP以发送消息。您可以使用以下代码通过PHP发送MQTT消息:

https://github.com/bluerhinos/phpMQTT

这是一个用于向MQTT代理发布数据的示例代码(带有qos和retain参数):

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";

}

答案 1 :(得分:-1)

CURL(现在是 7.76.1)不支持比 0 更高的 QoS。