MQTT参数配置说明
<p>[TOC]</p>
<h2>二开设备MQTT参数配置说明</h2>
<ol>
<li>确保设备是默认出厂设置(如果是通过自己的服务器可以发送命令的则不需要出厂设置),且已联网(可以通过发送<code>getDevInfo</code>等命令确保设备有应答,或通过我司的[测试页面](<a href="https://app.ssc.asinfozz.com/iot/board/switch/test">https://app.ssc.asinfozz.com/iot/board/switch/test</a> "测试页面"),可以获取到设备的基础信息或设备状态信息)。</li>
<li>所有参数都必须填写,不能为空。</li>
<li><code>clientID</code>最好带有<code>%imei%</code>的,<code>%imei%</code>设备会替换成设备的imei,确保唯一性。</li>
<li><code>cleanSession</code>最好设置为<code>true</code>。</li>
<li><code>subscribeTopic</code>不能和<code>publishTopic</code>、<code>willTopic</code>一样。</li>
<li>qos推荐为1</li>
<li>复制时注意不要复制空格回车换行等不可见字符。</li>
<li><code>clientID</code>、<code>subscribeTopic</code>、<code>publishTopic</code>、<code>willTopic</code>、<code>will</code>支持<code>%imei%</code>替换语法,<code>%imei%</code>设备会替换成设备的imei。</li>
</ol>
<h2>MQTT参数配置例子</h2>
<ul>
<li>例子一</li>
</ul>
<pre><code>{&quot;host&quot;:&quot;xxxxx&quot;,&quot;port&quot;:1883,&quot;username&quot;:&quot;xxxxx&quot;,&quot;password&quot;:&quot;xxxxx&quot;,&quot;clientID&quot;:&quot;%imei%&quot;,&quot;keepAlive&quot;:30,&quot;cleanSession&quot;:true,&quot;publishTopic&quot;:&quot;/devtoser&quot;,&quot;publishQos&quot;:1,&quot;publishRetain&quot;:false,&quot;subscribeTopic&quot;:&quot;/sertodev/%imei%&quot;,&quot;subscribeQos&quot;:1,&quot;willTopic&quot;:&quot;/devtoser&quot;,&quot;willQos&quot;:1,&quot;willRetain&quot;:false,&quot;will&quot;:&quot;{\&quot;imei\&quot;:\&quot;%imei%\&quot;,\&quot;method\&quot;: \&quot;close\&quot;}&quot;}</code></pre>
<p>其中
<code>subscribeTopic</code>为
/sertodev/%imei%
其中%imei%会替换成设备实际的imei。
<code>subscribeTopic</code>是设备订阅的主题,用来接收发送给设备的命令。</p>
<p><code>publishTopic</code>、<code>willTopic</code>为
/devtoser
<code>publishTopic</code>是设备发布的主题,用来发送设备执行完命令后的应答,还有设备事件(比如按键事件、订单结束事件等)的上报。
设备发布的应答中,都会带有设备实际的imei,可以用imei来区分是哪个设备的应答。</p>
<p><code>willTopic</code>是设备的遗嘱主题,设备离线后,mqtt服务器会将<code>will</code>遗嘱发送给订阅了<code>willTopic</code>的软件客户端。</p>
<ul>
<li>例子二</li>
</ul>
<pre><code>{&quot;host&quot;:&quot;xxxxx&quot;,&quot;port&quot;:1883,&quot;username&quot;:&quot;xxxxx&quot;,&quot;password&quot;:&quot;xxxxx&quot;,&quot;clientID&quot;:&quot;%imei%&quot;,&quot;keepAlive&quot;:30,&quot;cleanSession&quot;:true,&quot;publishTopic&quot;:&quot;/devtoser/pub/%imei%&quot;,&quot;publishQos&quot;:1,&quot;publishRetain&quot;:false,&quot;subscribeTopic&quot;:&quot;/sertodev/%imei%&quot;,&quot;subscribeQos&quot;:1,&quot;willTopic&quot;:&quot;/devtoser/will/%imei%&quot;,&quot;willQos&quot;:1,&quot;willRetain&quot;:false,&quot;will&quot;:&quot;{\&quot;imei\&quot;:\&quot;%imei%\&quot;,\&quot;method\&quot;: \&quot;close\&quot;}&quot;}</code></pre>
<p>参数大致和例子一相同,不同的是<code>publishTopic</code>、<code>willTopic</code>都加上了<code>%imei%</code>。
软件客户端可以</p>
<ol>
<li>通过订阅每一个设备的<code>publishTopic</code>,来处理不同设备的应答。</li>
<li>通过订阅主题通配符,比如/devtoser/pub/+,然后根据主题来区分设备。</li>
</ol>