manhuami2007 发表于 2024-1-7 17:38

【STM32MP135F-DK】7-搭建MQTT服务器

<div class='showpostmsg'><div>在这次测评中要用到MQTT的服务,需要在开发板上创建MQTT服务器,在开发板的终端里输入下面命令搜索mqtt相关的包:</div>

<div>
<pre>
<code>apt-cache search mqtt</code></pre>

<p>&nbsp;</p>
</div>

<div>搜索结果如下,其中mosquitto是MQTT的服务。</div>

<div></div>

<div>mosquitto默认已经安装到开发板上了,不过mosquitto-clients没有安装,使用如下命令安装mosquitto-clients。</div>

<div>
<pre>
<code>apt-get install mosquitto-clients</code></pre>

<p>&nbsp;</p>
</div>

<div>通过下面的命令查看mosquitto服务是否启动</div>

<div>
<pre>
<code>systemctl status mosquitto</code></pre>

<p>&nbsp;</p>
</div>

<div></div>

<div>从图中可以看到服务已经启用了。</div>

<div>接下来测试一下mosquitto服务。MQTT服务是基于&ldquo;订阅-发布&rdquo;机制的,因此先订阅一个主题,这里使用后台运行的方式去订阅一个主题,这样就不需要打开一个新的终端了。订阅命令如下:</div>

<div>
<pre>
<code>mosquitto_sub -h localhost -t "mqtt/manhuami" &amp;</code></pre>

<p>&nbsp;</p>
</div>

<div>然后使用如下命令向主题&rdquo;mqtt/manhuami&rdquo;发布一个消息&rdquo;hello manhuami&rdquo;</div>

<div>
<pre>
<code>mosquitto_pub -h localhost -t "mqtt/manhuami" -m "hello manhuami"</code></pre>

<p>&nbsp;</p>
</div>

<div>在发送之后,就能够在终端收到发送的消息。</div>

<div>也可以尝试局域网内的发送,比如在笔记本电脑上使用MQTTX软件向开发板上的MQTT服务发送消息。</div>

<div>在发送消息之前,需要先设置开发板上的mosquitto服务,使其能够被其它设备访问。使用vi打开文件</div>

<div>
<pre>
<code>vi /etc/mosquitto/mosquitto.conf</code></pre>

<p>&nbsp;</p>
</div>

<div>在第234行修改为</div>

<div></div>

<div>在第532行,修改为</div>

<div></div>

<div>修改之后重启mosquitto服务</div>

<div>
<pre>
<code>systemctl restart mosquitto</code></pre>

<p>&nbsp;</p>
</div>

<div>这时在电脑上使用mqttx软件就可以连接开发板,并发布消息了</div>

<div></div>

<div>在开发板上就能收到</div>

<div></div>

<div><span style="font-size:16px;"><strong>使用python作为客户端</strong></span></div>

<div>首先安装paho包</div>

<div>
<pre>
<code>apt-get install python3-paho</code></pre>

<p>&nbsp;</p>
</div>

<div>编写代码
<pre>
<code>import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.137.78", 1883, 60) #开发板的IP地址
client.subscribe(topic="mqtt/manhuami")
client.loop_forever()</code></pre>

<p>&nbsp;</p>
</div>

<div>这时就能够通过python代码订阅mqtt的消息了。</div>

<div></div>
</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>

lugl4313820 发表于 2024-1-7 20:41

<p>服务器搭好,成功了百分之九十九,大佬的作品看来快完工啦!</p>

秦天qintian0303 发表于 2024-1-8 17:31

<p>可以做个封包,看着更高看一点,写一些解析协议&nbsp;&nbsp;</p>

qiao--- 发表于 2024-1-10 02:32

<p>有屏幕没,有屏幕的话建议做一个界面方便操作</p><br/>
页: [1]
查看完整版本: 【STM32MP135F-DK】7-搭建MQTT服务器