赞
踩
EMQX 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器,目前广泛应用于全球各行业物联网平台建设中。其设计目标是实现高可靠承载海量物联网终端的 MQTT 连接,支持在海量物联网设备间低延时消息路由。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
MQTT 连接的基本概念
MQTT 连接由客户端向服务器端发起。任何运行了 MQTT 客户端库的程序或设备都是一个 MQTT 客户端,而 MQTT 服务器则负责接收客户端发起的连接,并将客户端发送的消息转发到另外一些符合条件的客户端。
客户端与服务器建立网络连接后,需要先发送一个 CONNECT 数据包给服务器。服务器收到 CONNECT 包后会回复一个 CONNACK 给客户端,客户端收到 CONNACK 包后表示 MQTT 连接建立成功。如果客户端在超时时间内未收到服务器的 CONNACK 数据包,就会主动关闭连接。
大多数场景下,MQTT 通过 TCP/IP 协议进行网络传输,但是 MQTT 同时也支持通过 WebSocket 或者 UDP 进行网络传输。
MQTT是一种协议,建立一个 MQTT 连接是使用 MQTT 协议进行通信的第一步。有很多软件可以提供MQTT服务。本文将以 EMQX v4.3.10(开源版)为例,介绍 EMQX 在 Windows 上的安装方法以及常见问题,为大家利用 MQTT 消息服务器快速搭建物联网平台提供帮助。
EMQX官网:https://www.emqx.io/zh/downloads?os=Windows
我们假设解压到:C:\ProgramData\emqx-5.0.9目录下
Win+R 打开终端cmd后再输入如下指令,提示如下即算启动成功:
Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>cd C:\ProgramData\emqx-5.0.9\bin
C:\ProgramData\emqx-5.0.9\bin>emqx start
node.db_role = EMQX_NODE__DB_ROLE = core
node.db_backend = EMQX_NODE__DB_BACKEND = mnesia
C:\ProgramData\emqx-5.0.9>
3.1 打开浏览器,进入:http://localhost:18083/*
用户名:admin
密码:public
注意:默认密码登录后,需要立即修改管理员密码。
3.2 修改界面为中文
选择左侧图标设置,将Language选“简体中文”,点击下方“Apply”,即可修改为中文界面。
键盘Win键+R 输入shell:startup,转到Windows“启动”目录,新建文件emqx.bat(文件名自命名,扩展名是bat就行),并保存以下内容。以后开机后即可自动启动EMQX服务,实现自动加载MQTT消息服务。
C:\ProgramData\emqx-5.0.9\bin\emqx start
https://mqttx.app/zh#download
下载后默认安装即可。
Name:就是我们刚才dashboard首页看到的name
Client ID:自动生成,不用管
Host:默认选mqtt://;把后面默认的broker.emqx.io,改为127.0.0.1,我们在本地,以后改成服务器的公网IP,就可以远程使用了。
Port:默认1883不动
点右上角Connect进行连接。连接成功后,可以在dashboard看到连接数变为1。
没有订阅用户,设置topic为pop,msg默认hello。点击了右下角的消息发送,因为没有订阅所以消息发送后没有接收。
点击“New Subscription” ,出现如下提示框。并设置Topic为刚才设置的pop,后面的/#不动。
在完成了与服务器连接后,设置topic,并增加订阅后,手动发送了一条消息,发送完,瞬间就被订阅用户接收到。至此完成一个闭环的消息生成传送服务器,再由订阅用户接收到服务器推送的消息。
可以设置多个主题topic,也可以增加多个订阅。
打开终端输入ipconfig查看,ipv4 IP地址,如果是公网IP地址,使用该IP替换http://localhost:18083/*的localhost,即可实现互联网访问。也即可以实现互联网下的MQTT消息订阅功能。
https://www.emqx.io/docs/zh/v5.0/
已经官方案例了,就不啰嗦了,见案例。
https://www.emqx.com/zh/blog/how-to-use-mqtt-in-python
(1)检查端口占用
端口占用会导致 EMQX 无法启动或部分功能异常,常见的症状有:
(2)执行 emqx start 时提示启动超时
无法打开 Dashboard 或打开后一直报 404 Not Found 错误
出现以上情况,可以使用 emqx console 命令启动 EMQX,console 模式下可以打印详细的错误日志。
(3)EMQX 默认情况下监听以下端口:
端口 | 说明 |
---|---|
集群通信 | |
4369-4380 | 集群通信 |
5370-5380 | 集群 RPC 通信 |
协议接入 | |
1883 | MQTT 协议端口 |
11883 | MQTT 协议端口 |
8883 | MQTT/SSL 端口 |
8083 | MQTT/WebSocket 端口 |
5683 | LwM2M 端口 |
管理监控 | |
8081 | HTTP API 端口 |
18083 | Dashboard 管理控制台端口 |
MQTT是物联网的基础,作为初学者,可以在本地先建立一个以上的服务器,然后在局域网环境里先测试,之后再考虑在互联网上搭建服务器,使用EMQX CLOUD 或者租用阿里云等平台的MQTT,实现应用部署。
后面,我们会研究一下使用ESP8266/ESP32生成topic并由其它完成订阅。
万物互联,以后是物联网的世界。可玩的还有很多,以后再慢慢研究慢慢分享给大家。如果这批文章对你有帮助,感谢在评论区里反馈!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。