连接MQTT服务器

连接MQTT服务器

  • 某站UP主提供的服务器
  • EMQX官网提供的两个服务器
  • 腾讯云提供的服务器
  • 百度云提供的服务器

某站UP主提供的服务器

MQTT

​  点进去链接后,需要先登录账号,账号可以利用某站相关信息进行登录。
​  登录之后,点击工具大全->物联网平台,就可以看到MQTT服务器的地址、端口号以及支持的协议,每一个账号默认有一个免费的设备,先创建一个项目->添加设备(输入密码及所属项目),进入项目后就可以看见设备的ID及密码等信息,不过里面要求订阅和推送信息需要主题前缀。由于UP主的服务器是私有的,所以连接服务器需要设备ID和密码,经过测试该服务器不是很稳定,会时不时断开连接,不过影响不大,在程序中设置重新连接即可。
​  该地址上还提供了小程序所需要的mqtt.js文件(其中有用的是mqtt.min.js文件),在网站标题上开发->物联网中有此文件可供下载。

EMQX官网提供的两个服务器

MQTT1和MQTT2

​  broker-cn.emqx.io是服务器地址;broker.emqx.io也是服务器地址,两者地址是不相同的;
​  点进去链接后,在官网首页标题上学习->在线MQTT5服务器,可查看该官网免费服务器的地址及端口号,不过该服务器是公开的,所以数据没有隐私保护。因为是公有,所以配置不需要用户名和密码,但是服务器稳定,基本不会断开连接。此官网上还提供了一个MQTT客户端测试工具,在标题学习->MQTT Websocket Toolkit中,如下所示:
连接MQTT服务器_第1张图片

腾讯云提供的服务器

MQTT

​​  腾讯云的这个服务器是私有的,所以连接服务器需要设备ID和密码,经过测试该服务器很稳定。
​​  进入腾讯云官网,在上面标题中产品->物联网->物联网通信->立即使用,然后登录账号,接着产品列表->创建新产品->选择产品类型,填写产品名称,选择认证方式(密钥认证),选择数据类型(自定义),这样就创建了一个产品,如下图所示:
连接MQTT服务器_第2张图片
​​  创建产品后,点击管理进入产品设置,里面有一个产品ID是需要我们保存的,如下图所示:
连接MQTT服务器_第3张图片
​​  接着,点击设备列表->添加新设备->输入设备名称->保存,如下所示:
连接MQTT服务器_第4张图片
​​  然后,点击设备后面的管理操作,进入页面后滑到最下面保存客户端id,MQTT的用户名和密码,至于设备的主题,进入设备后即可看到有个topic列表,里面就是规定好的主题前缀及主题的操作权限,如下图所示:
连接MQTT服务器_第5张图片
​​  重复上面操作再次创建一个设备,用于一个客户端到另一个客户端的数据传输,最后,需要设置规则引擎,把两个设备的主题关联起来,这样才可以达到一个客户端A订阅主题1,另一个客户端B发送主题2,客户端B主题2的数据通过规则引擎转发到主题1上,从而使得客户端A接收到主题1上的数据,此腾讯云上面的一个设备同时只允许一个客户端进行连接,所以只能通过创建两个设备,然后利用规则引擎转接来实现数据的传输。
​​  在规则引擎中,新建规则,规则名称随便命名,然后点击规则后面的管理操作,然后编辑筛选数据,在字段栏中输入*号(表示不筛选),在主题栏中,填写数据源主题(即需要发布的主题),在条件栏中,设置为空(表示任何条件下都触发该规则引擎)。最后添加行为操作,行为类型为数据转发到另一个Topic,下面选择转发到的具体主题。至此,规则引擎已经设置好了,可以将规则状态打开进行数据的转发(在禁用状态下才可编写规则)。腾讯云的免费服务器地址及端口号是分为多个不同协议的服务器,一般的客户端都是普通的TCP连接,则连接的服务器地址及端口号如下:
连接MQTT服务器_第6张图片
连接MQTT服务器_第7张图片连接MQTT服务器_第8张图片
​​  可见,普通tcp服务器地址是:产品ID+.iotcloud.tencentdevices.com,端口号是8883或1883。
​​  而对于小程序来说,它是基于wss协议的,所以腾讯云上的免费服务器有另外对应这个协议的服务器地址,如下所示:
连接MQTT服务器_第9张图片
​​  可见,wss服务器地址是:产品ID+.ap-guangzhou.iothub.tencentdevices.com,端口号是80。
​​  所以,如果客户端是普通的tcp连接那就使用第一种服务器地址及端口号,如果客户端是小程序(wss)的话,那就使用第二种服务器地址及端口号,虽然两个客户端连接的服务器地址和端口号不同,但是最终数据都会交到同一个服务器进行处理,所以两个客户端可以进行数据传输。

百度云提供的服务器

MQTT
​​  百度云的这个服务器是私有的,所以连接服务器需要设备ID和密码,经过测试该服务器很稳定。
​​  进入百度智能云官网->产品->物联网->物联网核心套件:
连接MQTT服务器_第10张图片
​​  然后就可以立即使用,旁边还有一个帮助文档可供参考:
连接MQTT服务器_第11张图片
​​  进入后需要先登录账号->实例列表->创建IoT Core(名称随便起)
连接MQTT服务器_第12张图片
​​  接着点创建好的IoT Core的名称进入具体的设备管理,在这个页面的右上角有显示服务器的地址,这个是需要保存的。

连接MQTT服务器_第13张图片
​​  然后先在设备管理中的模板中添加模板(相当于是产品,名称随便起),接着再新增设备(同样名称随便起,认证方式为密钥认证,模板选择上一步创建的模板名称)
连接MQTT服务器_第14张图片
​​  新增设备后,点击设备名称进入设备信息界面,里面可以查看IoTCoreId、设备的KEY和密钥,这个是需要我们保存的,因为后面我们要通过一个信息生成器来把这三个数据生成对应的设备ID和密码
连接MQTT服务器_第15张图片
​​  接着重复上面的操作,再创建一个新设备,==因为百度云一个设备只能连接一个客户端,要想实现客户端与客户端的数据传输,则需要创建两个设备。==两个设备创建好以后,我们要利用上面拿到的设备KEY和密钥去生成对应的设备ID和密码,生成的操作方法如下。
​  打开上面红色箭头指出的帮助文档,进行如下操作:
连接MQTT服务器_第16张图片
​​  这里面有一个MQTT连接信息生成器,输入之前的IoT Core的ID、设备的KEY和密钥,如下:
连接MQTT服务器_第17张图片
​​  此时会在下面生成服务器地址、设备ID和密码、(客户端ID基本没什么用)。这样两个客户端就可以通过这些数据连接到服务器,接下来还需要设置一下主题,在进入IoT Core后,在模板中点击模板名称就可以设置主题,支持添加主题,主题前缀如下:$iot/{deviceName}/user/xxx(里面的deviceName就是我们前面新增设备的名称,xxx就是我们自定义的主题),如我们前面新增两个设备名称分别为test1、test2,则两个设备的主题分别是$iot/test1/user/xxx、$iot/test2/user/xxx,那么如何将这两个主题关联起来,达到一个客户端发布主题,另一个客户端订阅主题,从而使得数据可以传输呢?那就需要用到规则引擎了,同样在进入IoT Core后,里面有一个规则引擎,然后创建规则(名称随便起),然后编辑规则,在里面输入数据来源(发布主题)和数据目的地(订阅主题),最后保存即可。这样就实现了一个客户端A发布主题A通过规则引擎将主题A中的数据转发到订阅主题B的客户端B上,从而达到数据传输的目的。
下面附上一个MQTT测试软件下载地址:mqttbox测试软件

你可能感兴趣的:(MQTT,通讯,ESP8266,MQTT服务器,物联网,人工智能)