在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙

在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙,第1张

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官网最新的版本是151
tar xzvf mosquitto-151targz
第四步:编译
cd mosquitto-151/
make
make install
第五步:启动mosquitto
/mosquitto -v
1535473957: mosquitto version 151 starting
1535473957: Using default config
1535473957: Opening ipv4 listen socket on port 1883
1535473957: Opening ipv6 listen socket on port 1883
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquittoconf,
启动时候加上参数 -c,
/mosquitto -c mosquittoconf
可以看到,mosquitto监听的端口为1883
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 1921681105 on port 1883
1535474247: New client connected from 1921681105 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的报文。

从物联网的定义及各类技术所起的作用来看,物联网的关键核心技术应该是无线传感器网络(WSN)技术,主要原因是:WSN技术贯穿物联网的全部三个层次,是其它层面技术的整合应用,对物联网的发展有提纲挈领的作用。WSN技术的发展,能为其它层面的技术提供更明确的方向。 以下是实现物联网的五大核心技术:核心技术之感知层:传感器技术、射频识别技术、二维码技术、微机电系统和GPS技术1传感器技术传感技术同计算机技术与通信技术一起被称为信息技术的三大技术。从仿生学观点,如果把计算机看成处理和识别信息的“大脑”,把通信系统看成传递信息的“神经系统”的话,那么传感器就是“感觉器官”。微型无线传感技术以及以此组件的传感网是物联网感知层的重要技术手段。2射频识别(RFID)技术射频识别(Radio Frequency Identification,简称RFID)是通过无线电信号识别特定目标并读写相关数据的无线通讯技术。在国内,RFID已经在身份z、电子收费系统和物流管理等领域有了广泛应用。RFID技术市场应用成熟,标签成本低廉,但RFID一般不具备数据采集功能,多用来进行物品的甄别和属性的存储,且在金属和液体环境下应用受限,RFID技术属于物联网的信息采集层技术。3微机电系统(MEMS)微机电系统是指利用大规模集成电路制造工艺,经过微米级加工,得到的集微型传感器、执行器以及信号处理和控制电路、接口电路、通信和电源于一体的微型机电系统。MEMS技术属于物联网的信息采集层技术。4GPS技术GPS技术又称为全球定位系统,是具有海、陆、空全方位实时三维导航与定位能力的新一代卫星导航与定位系统。GPS作为移动感知技术,是物联网延伸到移动物体采集移动物体信息的重要技术,更是物流智能化、智能交通的重要技术。核心技术之信息汇聚层:传感网自组网技术、局域网技术及广域网技术1无线传感器网络(WSN)技术无线传感器网络(Wireless Sensor Network,简称WSN)的基本功能是将一系列空间分散的传感器单元通过自组织的无线网络进行连接,从而将各自采集的数据通过无线网络进行传输汇总,以实现对空间分散范围内的物理或环境状况的协作监控,并根据这些信息进行相应的分析和处理。WSN技术贯穿物联网的三个层面,是结合了计算、通信、传感器三项技术的一门新兴技术,具有较大范围、低成本、高密度、灵活布设、实时采集、全天候工作的优势,且对物联网其他产业具有显著带动作用。2Wi-Fi Wi-Fi(Wireless Fidelity,无线保真技术)是一种基于接入点(Access Point)的无线网络结构,目前已有一定规模的布设,在部分应用中与传感器相结合。Wi-Fi技术属于物联网的信息汇总层技术。3GPRS GPRS(General Packet Radio Service,通用分组无线服务)是一种基于GSM移动通信网络的数据服务技术。GPRS技术可以充分利用现有GSM网络,目前在很多领域有广泛应用,在物联网领域也有部分应用。GPRS技术属于物联网的信息汇总层技术。
核心技术之传输层:通信网、互联网、3G网络、GPRS网络、广电网络、NGB 1通信网通信网是一种使用交换设备、传输设备,将地理上分散用户终端设备互连起来实现通信和信息交换的系统。通信最基本的形式是在点与点之间建立通信系统,但这不能称为通信网,只有将许多的通信系统(传输系统)通过交换系统按一定拓扑结构组合在一起才能称之为通信。也就是说,有了交换系统才能使某一地区内任意两个终端用户相互接续,才能组成通信网。23G网络3G是英文the 3rd Generation的缩写,指第三代移动通信技术。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字手机,第三代手机(3G)是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。3GPRS网络这是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。通俗的讲,GPRS是一项高速数据处理的科技,方法是以“分组”的形式传送资料到用户手上。虽然GPRS是作为现有GSM网络向第三代移动通信演变的过渡技术,但是它在许多方面都具有显著的优势。4广电网络广电网通常是各地有线电视网络公司(台)负责运营的,通过HFC(光纤+同轴电缆混合网)网向用户提供宽带服务及电视服务网络,宽带可通过CableModem连接到计算机,理论到户最高速率38M,实际速度要视网络情况而定。5NGB广域网络中国下一代广播电视网(NGB)是以有线电视数字化和移动多媒体广播(CMMB)的成果为基础,以自主创新的“高性能带宽信息网”核心技术为支撑,构建适合我国国情的、三网融合的、有线无线相结合的、全程全网的下一代广播电视网络。核心技术之运营层:专家系统、云计算、API接口、客户管理、GIS、ERP 1企业资源计划(ERP)ERP是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP技术属于物联网的信息处理层技术。2专家系统(Exper System)专家系统是一个含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和经验来处理该领域问题的智能计算机程序系统。属于信息处理层技术。3云计算云计算概念间由Google提出的,这是一个美丽的网络应用模式,是指IT基础设施的交付和使用,通过网络以按需、易扩展的方式获得所需的资源。核心技术之应用层:垂直行业应用、系统集成、资源打包应用层主要是根据行业特点,借助互联网技术手段,开发各类的行业应用解决方案,将物联网的优势与行业的生产经营、信息化管理、组织调度结合起来,形成各类的物联网解决方案,构建智能化的行业应用。如交通行业,涉及的就是智能交通技术;电力行业采用的是智能电网技术;物流行业采用的智慧物流技术等。行业的应用还要更多涉及系统集成技术、资源打包技术等。
参考资料>繁易物联网模块通过MQTT协议接入第三方服务。繁易物联触摸屏,可以直接接入繁易工业物联网平台,实现真正的设备远程联网和售后运维等功能。同时,还支持MQTT,通过MQTT协议接入到第三方的物联网平台中。

有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方提供了 *** 作系统,需要自己移植,很麻烦,比较难看得懂。就在想有没有一些简单一定的方法。
心想MQTT是基于TCP的,能否使用TCP转MQTT?因此就想使用TCP协议然后转MQTT协议连接阿里云物联网平台,经过试验证明是可以的。
首先我们先分析一下如何登陆接入Onenet平台。
先从它数据格式开始分析。首先我们要从后台取出三个信息,我们以这个为例。
我们把产品ID,设备名称,设备秘钥,简称三要素 (具体是什么看你自己的设备)
其实阿里云物联网平台的MQTT协议用的就是标准的,不过它加入了自己的认证方式。
MQTT协议需要上传四个参数,报活时间,clientID,用户名,密码。
那么阿里云的就在clientID,用户名,密码做了手脚。
clientID比较长,按照一定的格式
用户名:设备名和秘钥组成
密码:使用了加密串进行了加密,有sha1或者MD5加密方式
下面我们来介绍一下
MQTT接入都是发十六进制的数据。
么我们发送的时候就是这样子的一串数据
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六进制解释
数据长度:0x74
协议数据长度 0x00 0x04
协议类型: 0x4d 0x51 0x54 0x54
协议数据: 0x04 0xC0
keepAlive数据:0078
ClientID长度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用户名:0009
用户名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密码长度:0028
密码: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36复制代码上面的就是连接服务器的连接包
下面呢,我们来做个发布包(上传数据到服务器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六进制数据解释
数据头:0x30
数据长度:0x1D
TopicName数据长度:0009
TopicName数据内容:2f7379732f706f7374
主体json数据: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。

前言
EMQ是带有SSL功能的,需要进行简单的配置,才能使用。下面就简单说一下如何实现自签证书。

利用OpenSSL签发证书

配置到EMQX的emqxconf
如果启用单向认证的话,客户端不需要证书都可以连接。这里的listenersslexternalfail_if_no_peer_cert = true 注释掉就启用单向认证。启用双向认证。那么客户端就必须导入CA和client的证书才可以连接。

重新启动EMQX

工具测试
我这里使用EMQ官方出品的MQTTX工具

参考: >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/13287510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-08
下一篇 2023-07-08

发表评论

登录后才能评论

评论列表(0条)

保存