tobot 发表于 2021-12-25 22:39

安信可NB-IoT模组测评——使用MQTT发送消息

<div class='showpostmsg'><p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="Calibri">MQTT</font><font face="宋体">协议是物联网上非常常用的一个协议,作为客户端一般可以支持订阅和发布两种动作中至少一种,安信可</font><font face="Calibri">NB-IoT</font><font face="宋体">模块的</font><font face="Calibri">AT</font><font face="宋体">指令集中将两种动作分别使用</font><font face="Calibri">AT+ECMTSUB</font><font face="宋体">和</font><font face="Calibri">AT+ECMTPUB</font><font face="宋体">实现了消息的订阅和发布。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在我之前的计划中,安信可</font><font face="Calibri">NB-IoT</font><font face="宋体">模块需要将环境监控信息发往服务器,因此只需要</font><font face="Calibri">AT+ECMTPUB</font><font face="宋体">功能就可以了,为了配合调试,我使用了</font><font face="Calibri">Python</font><font face="宋体">下的</font></span></span><span style="font-size:10.5000pt"><span style="font-family:Calibri">paho-mqtt</span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">模块,在电脑上订阅对应主题。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">选择</font><font face="Calibri">Internet</font><font face="宋体">上免费的</font><font face="Calibri">mqtt</font><font face="宋体">服务平台</font></span></span><span style="font-size:10.5000pt"><span style="font-family:Calibri">&nbsp;broker.emqx.io</span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">一般来说,</font><font face="Calibri">MQTT</font><font face="宋体">客户端在连接环节需要</font><font face="Calibri">5</font><font face="宋体">个基本参数,包括连接地址(</font><font face="Calibri">Host</font><font face="宋体">)、端口(</font><font face="Calibri">Port</font><font face="宋体">)、</font><font face="Calibri">clientID</font><font face="宋体">(</font><font face="Calibri">MQTT client ID</font><font face="宋体">)、用户</font><font face="Calibri">ID(Username)</font><font face="宋体">、</font><font face="Calibri">token(Password)</font><font face="宋体">。而在这个平台上,可以使用无需用户名密码(或者写成</font></span></span><span style="font-size:10.5000pt"><span style="font-family:Calibri">&ldquo;&rdquo;</span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">),直接订阅或者发布消息。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在电脑上安装</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="Calibri">mqtt</font><font face="宋体">方法只需要一条命令:</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:Calibri">pip3 install paho-mqtt</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">关于</font><font face="Calibri">paho-mqtt</font><font face="宋体">模块的具体使用和例程可以参考</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="Calibri">https://vimsky.com/examples/detail/python-module-paho.mqtt.client.html</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在这里不展开。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在电脑上执行订阅</font><font face="Calibri">/test</font><font face="宋体">的主题消息,其代码如下:</font></span></span></span></span></p>

<p style="text-align:justify"> &nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="Calibri">/test</font><font face="宋体">作为常用的主题名,订阅后可能会有服务器记录的其它消息输出,比如我使用时出现了</font><font face="Calibri">hello</font><font face="宋体">,可以不用管它。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">执行上述代码后,不关闭窗口,可以一直监控主题为</font><font face="Calibri">/test</font><font face="宋体">的消息。</font></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">如之前文中所述,我板上的</font><font face="Calibri">CH340</font><font face="宋体">不可用,所以另接了</font><font face="Calibri">uart</font><font face="宋体">接口,为了调试方便,我直接通过</font><font face="Calibri">python</font><font face="宋体">写脚本来进行输出调试。</font></span></span></span></span></p>

<p style="text-align:justify"> &nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">执行代码后,可以看到全部</font></span></span><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="Calibri">AT</font><font face="宋体">指令都成功了。</font></span></span></span></span></p>

<p style="text-align:justify"> &nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">在电脑订阅的消息端可以看到</font></span></span></span></span></p>

<p style="text-align:justify"> &nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-size:10.5000pt"><span style="font-family:宋体"><font face="宋体">其中</font><font face="Calibri">tobot</font><font face="宋体">就是刚才通过</font><font face="Calibri">AT</font><font face="宋体">指令集发布的消息。</font></span></span></span></span></p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2021-12-27 07:17

<p>AT+ECMTPUB功能和<span style="color:#333333">用了Python下的</span><span style="color:#333333">paho-mqtt</span><span style="color:#333333">模块,有什么不同呢</span></p>

tobot 发表于 2021-12-27 13:10

Jacktang 发表于 2021-12-27 07:17
AT+ECMTPUB功能和用了Python下的paho-mqtt模块,有什么不同呢

<p>at指令集和paho-mqtt模块功能上可以做到类似,但at指令集相对简单,两者都支持pub(发布)和sub(订阅)。</p>

<p>在这个试验中,我使用的NB-Iot模块做发布,paho-mqtt做订阅</p>

<p>后续也是希望让NB-IoT模块来读传感器,电脑来显示。</p>

Jacktang 发表于 2021-12-28 07:18

tobot 发表于 2021-12-27 13:10
at指令集和paho-mqtt模块功能上可以做到类似,但at指令集相对简单,两者都支持pub(发布)和sub(订阅) ...

<p>好 ,明白了。</p>
页: [1]
查看完整版本: 安信可NB-IoT模组测评——使用MQTT发送消息