⑴ 在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上求求大神帮忙
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,网络云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第五步:启动mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为1883.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。
⑵ PLC利用函数块连接MQTT服务器
MQTT协议因其低协议消耗、数据安全性高等优点,在物联网领域广泛应用。各大服务器运营商如阿里云、腾讯、OneNET等,都提供了降低云开发难度的可视化开发工具,使得前端工程师能快速实现功能,无需从零开发界面。近年来,PLC厂家也开始提供MQTT函数功能块,使得设备通过TCP客户端连接MQTT服务器成为可能,只需设备能发送16进制透明数据,通过数据组合实现与MQTT服务器的连接。
MQTT报文格式常用包括:CONNECT、PUBLISH和SUBSCRIBE等。例如,CONNECT报文包含客户端ID、用户名、密码等信息,PUBLISH报文则包含发布地址和用户数据,而SUBSCRIBE报文包含订阅地址和服务等级。
在使用PLC连接MQTT服务器时,首先需要搭建博图开发环境,熟悉西门子SLC编程语言,利用函数块连接MQTT服务器,通常可从西门子全球技术支持中心下载MQTT连接实例。在“国际版”下载实例中,详细介绍了如何利用“SIMATIC控制器作为MQTT客户端”的过程。在配置PLC连接时,需注意PLC的参数配置和网络连接,确保PLC能正确访问MQTT服务器。
若没有实际的PLC设备,可通过“SIMATIC S7-PLCSIM Advanced V4.0”高级仿真器实现S7-1500PLC的仿真运行,进行配置虚拟网卡、下载程序等步骤。
在云平台设备创建部分,以阿里云飞燕平台为例,需要准备云平台账号,创建新项目并配置产品。在“设备调试”中选择开发的模组,跳过“功能定义”与“人机交互”,进入“设备调试”,创建设备认证参数,查询MQTT3.1.1连接所需的地址、端口、Client ID、UserName、Password等信息。
最后,配置MqttDB块参数,用于连接阿里云MQTT服务器。需要修改MqttDB块中的参数,包括“qdnAddress”和“post”,并填写对应的三要素。完成参数配置后,点击在线监控数据,将“connect”设置为“true”,函数块自动连接MQTT服务器,可监控连接状态。