emqx 官方文档:https://docs.emqx.io/broker/latest/cn/
部署到centos
安装:
curl https://repos.emqx.io/install_emqx.sh | bash
配置emqx端口号:18083
华为云平台:
本地centos:
开放18083端口
firewall-cmd --zone=public --add-port=18083/tcp --permanent
关闭18083端口
firewall-cmd --zone=public --remove-port=18083/tcp --permanent
配置立即生效
firewall-cmd --reload
还需要开通mqtt1883端口号,emqx的接收到的数据均可以通过mqtt转发
启动emqx
$ emqx start
EMQ X v4.0.0 is started successfully!
$ sudo systemctl start emqx
EMQ X v4.0.0 is started successfully!
$ sudo service emqx start
EMQ X v4.0.0 is started successfully!
查看是否启动成功
EMQ X 正常启动:
$ emqx_ctl status
Node '[email protected]' is started
emqx 4.0.0 is running
EMQ X 未能正常启动:
$ emqx_ctl status
Node '[email protected]' not responding to pings。
到这里emqx已经安装完成
用浏览器打开下面链接:
http://xx.xx.xx.xx:18083 “xx.xx.xx.xx为服务器ip”
user/pawd:admin/public
在插件里面可以看到emqx自带的一些插件,可以直接在界面内开启。
注:如果开启一些通讯插件需要服务器开通对应的端口号
firewall-cmd --zone=public --add-port=5683/udp --permanent
插件源码:https://github.com/emqx/emqx-lwm2m
插件配置文件路径:etc/plugins/emqx_lwm2m.conf
下载地址:https://github.com/eclipse/wakaama
编译:
wakaama项目采用cmake作为项目构建工具,如何引用项目的CMakeLists.txt,可以参照在/example下的各个项目的CMakeLists.txt是如何编写的。需要注意的是,为了不破坏原有的项目结构,推荐采用外部构建的方式
# 在wakaama之外新建你自己的项目目录,假设为project
cd project
# 注意替换变量为wakaama项目的所在位置,以编译server为例
# 将会在project目录下生成中间文件
cmake ${wakaama_base_dir}/example/client
make
# 产生的二进制文件名,可以参看example/server/CMakeLists.txt的PROJECT指令的参数
运行:
./lwm2mclient -n ep1 -h 127.0.0.1 -p 5683 -4
-n 客户端名字
-h 主机ip
-p 端口号
-4 IPV4
正常运行:
在Dashboard界面可以看到客户端已经连接,如下图:
使用mqtt工具发送lwm2m命令
发送主题:lwm2m/{?EndpointName}/dn
wakaama客户端接收到数据,如下图:
接收到discover命令,客户端会上报所有object id/resource id,lwm2m服务器封装成json转发给mqtt客户端
emqx_lwm2m插件会将收到的lwm2m协议数据包装成mqtt的json发送给mqtt client,同理mqttclient下发的json数据也会通过插件解析成lwm2m协议格式发送给lwm2m客户端。
主题说明:
lwm2m to mqtt :lwm2m/{?EndpointName}/up/resp
,lwm2m/{?EndpointName}/up/notify
mqtt to lwm2m:lwm2m/{?EndpointName}/dn
详细信息参考官网说明:https://github.com/emqx/emqx-lwm2m