2.进入网络组件菜单,配置MQTT服务类型的网络组件。
3.进入设备接入网关菜单,配置接入方式为MQTT直连的网关。(1)选择第2步创建的MQTT服务网络组件(2)选择第1步创建的协议包(3)填写设备接入网关名称
4.创建产品,并进入设备接入tab,选择所需的设备接入网关。
5.在设备接入tab页面中填写官方协议包认证信息;然后启用产品。
说明
不同协议包在设备接入界面所需要填写的方式不同。官方协议包,需要填写设备认证所需要的的账号密码
在设备接入tab页的MQTT认证配置项中填写secureId为:adminsecureKey为:admin。
6.创建设备,选择对应的所属产品,然后启用设备。
注意
需要先启用产品,才能基于产品创建设备
1.打开MQTTX软件,点击新建连接创建一个连接,设置连接参数。
经过加密规则处理的账号密码超过5分钟后将不在可用,需重新生成
2.点击连接按钮,平台中设备状态变为在线。
如您在点击连接后遇到MQTTX提示异常信息或设备未上线等问题。可在设备详情-设备诊断页中,诊断设备未上线原因
设备连接上平台后,可进行一些基本的事件上报、属性读取等操作。
在产品详情-物模型tab页中分别创建属性、事件、功能三种物模型
创建属性属性ID:temperature
创建功能功能ID:playVoice
创建事件事件ID:alarm_fire
{"deviceId":"设备Id","messageId":"平台下发报文中的messageId","properties":{"temperature":35.6},"success":true}回复参数说明
点击消息发送按钮图标,向平台推送该消息。
4.平台收到MqttX推送的属性值后,将会实时展示到运行状态中。
MQTTX推送设备事件消息到平台。
设备事件上报数据
{"data":{"addr":"未来科技城C2栋","time":"12-05-2012"}}参数说明data对象类型的报文数据上报成功后,在设备-运行状态tab页,可查看事件具体信息。
设备功能回复报文
{"messageId":"平台下发报文中的messageId","output":true,"success":true}参数说明messageId平台下发报文中的messageIdoutput返回的对象类型执行结果success成功状态设备功能调用成功后在设备-设备功能tab页显示调用回复结果。
在某些场景,设备不是直接接入平台,而是通过第三方MQTT服务,如:emqx接入。本文使用mqttx模拟设备端,通过emqx接入平台。
本文使用docker搭建
如EMQX服务在本机电脑启用,MQTT客户端网络组件填写参数参考下图填写即可
网络组件填写参数说明
2.进入协议管理菜单,上传协议包。
3.进入设备接入网关,创建MQTTBroker类型的接入网关。
网关创建完成后,可在emqx客户端中的“Subscriptions”菜单中看到订阅列表
5创建物模型
在产品详情-物模型tab页中创建温度属性物模型,属性ID:temperature
1.打开MQTTX软件,点击新建连接创建一个连接
2.设置连接参数。连接到EMQX
如EMQX服务在本机电脑启用,连接参数参数参考下图填写即可
连接参数说明
推送物模型属性消息到EMQX。实现平台设备上线与消息接收
topic:/产品Id/设备Id/properties/report
{"properties":{"temperature":36.8}}进入平台设备详情界面,此时设备以变成在线状态,且收到了刚刚的温度属性消息
1.在MQTTX中点击订阅添加按钮
通过官方设备模拟器模拟TCP设备接入平台
如服务在本机电脑启用,TCP服务网络组件填写参数参考下图填写即可
3.进入设备接入网关,创建TCP透传类型的接入网关。
5.设置TCP认证配置的secureKey值为admin
6.创建物模型
将如下脚本内容复制到模拟器项目的benchmark/tcp/benchmark.js中。覆盖原有脚本内容
请修改下面脚本代码中deviceId为自己系统中刚刚创建的TCP设备ID
$./run-cli.sh
2.在运行成功的界面中执行如下命令。
$benchmarktcp--size=1--name=tcp--host=127.0.0.1--port=8803--script=benchmark/tcp/benchmark.js说明
适用于HTTP设备接入平台。
设备与平台进行通信需要有协议包的支持,平台支持基于HTTP协议通过自定义协议包的方式,以解析不同厂家、不同设备上报的数据。
下载完成后的协议包目录如下。
3、在JetLinks平台协议管理内选择新增
通过Jar包的方式新增。
上传Jar包(需通过maven命令打包)。
新增完成后平台显示新增的协议如下。
网络组件是用于管理网络服务动态配置、启停,只负责接收、发送报文,不负责任何处理逻辑。
2、填入配置参数,点击保存按钮
本地端口内可选择的端口号范围可在jetlinks-standalone模块内的application.yml配置文件中通过修改network.resources的值进行指定,完整路径为jetlinks-standalone/resources/application.yml
负责平台侧统一的设备接入,使用网络组件处理对应的请求以及报文,使用配置的协议解析为平台统一的设备消息(DeviceMessage),然后推送到事件总线。
2、点击新增>>>HTTP推送接入,选择配置的HTTP网络组件,JetLinks官方协议,命名后点击保存
2、点击新增,填写产品名称,选择设备类型,之后点击确定。
3、点击创建好的产品进入产品详情页,选择设备接入,点击选择并在弹出的设备接入配置中选择上一步配置的HTTP接入网关,点击确定。
4、填写HTTP认证配置,填入Token值,然后启用产品。
Token是设备连接到平台时的身份验证,每次发送数据包都会在Header中携带,可以在协议包中进行配置一型一密或者一机一密。
2、点击新增,填写设备名称,选择上一步配置的产品,此处选择之后点击确定,并在此页面启用设备。
1、进入物联网>>>设备管理>>>产品页面,点击上文创建的产品,进入该产品的产品详情页,选择物模型。
2、在物模型>>>属性定义内点击右侧新增来新增属性定义。
3、选择事件定义>>>右侧新增,填入参数后右上角选择保存。
填写标识为abnormal_current,名称电流异常,级别警告,输出参数选择object(结构体)。
填写标识为actual_current,名称实际电流,数据类型long。
4、配置完成后可以选择设备并找到对应产品下的设备,点击查看设备详情,选择运行状态,可以直观的看到配置完成的属性和事件。
本示例将使用Postman模拟设备进行连接平台以及属性和事件上报。
2、填写连接参数
配置连接参数。
配置Headers参数。
配置Body参数。
配置完成后点击Send按钮,发送本次请求,可以看到下方收到的消息"success":true,表示设备上线成功,可以在平台看到设备为在线状态。
上报属性的Topic为/{产品id}/{设备id}/properties/report
//上报的消息体{"deviceId":"1621406622872461312",//设备Id"properties":{"actual_voltage":12.4//上报数据}}
配置完成后点击Send按钮,发送本次请求,收到的消息"success":true,表示此次属性上报成功,可以在平台看到设备的运行状态内有上报的属性值。
上报事件的Topic为/{产品id}/{设备id}/event/{事件id}
配置完成后点击Send按钮,发送本次请求,收到的消息"success":true,表示此次事件上报成功,可以在平台看到设备的运行状态内有事件上报的值。
1、获取设备模拟器
2、启动设备模拟器
运行指令
适用于UDP设备接入平台。
设备与平台进行通信需要有协议包的支持,平台支持基于UDP协议通过自定义协议包的方式,以解析不同厂家、不同设备上报的数据。
3、在JetLinks平台协议管理内选择新增。
本地端口内可选择的端口号范围可以在代码jetlinks-standalone模块内的application.yml配置文件中通过修改network.resources的值进行指定,完整路径为jetlinks-standalone/resources/application.yml
2、点击新增>>>UDP接入,选择配置好的UDP网络组件,JetLinks官方协议,命名后点击保存。
对某一型设备的分类,通常是已经存在的某一个设备型号。
2、点击新增,填写产品名称,选择设备类型,点击确定。
3、点击创建的产品并进入产品详情页,选择设备接入,点击选择并选择上一步配置的UDP设备接入网关,点击确定。
4、继续在此页面的底端找到UDP认证配置,填入secureKey的值,此处配置为admin,然后点击启用产品。
secureKey是设备连接到平台时的身份验证,每次发送数据包都会携带,可以在协议包中进行配置一型一密还是一机一密。
2、点击新增,填写设备名称,选择所属产品,此处选择之后点击确定,并在此页面启用设备。
此处设置ID为ele_dev_a_1_13是方便后续设备上线、属性上报等操作上报的报文一致。
2、在物模型>>>属性定义内点击右侧的新增来新增属性定义。
3、选择功能定义>>>右侧新增,注意此处配置的为输出参数,参数配置完成后选择保存。
输出参数选择为结构体。
新增参数,标识location,名称电表位置,数据类型选择text。
新增参数,标识consumption,名称用电量,数据类型选择double。
4、选择事件定义>>>右侧新增,填入参数后右上角选择保存。
新增参数,标识location,名称位置,数据类型选择text。
新增参数,标识state_code,名称状态码,数据类型选择text。
4、配置完成后可以选择设备并找到对应产品下的设备,点击查看设备详情,选择运行状态,可以直观的看到配置完成的属性和事件,选择设备功能可以看到已经配置好的产品功能。
本示例将使用SocketTool模拟设备进行连接平台以及属性、事件上报和功能调用回复。
2、配置连接参数连接平台。
4、设备成功上线。
功能调用回复需要在10秒内回复,否则会出现超时的提示。
在Jetlinks平台选择对应的设备,点击设备功能,点击执行。
选择日志管理查看最新一条的功能调用日志的内容,复制其中的messageId的值。如果提示设备已离线,则需要先发送上线报文00000561646d696e01000001862606b03e0077000e656c655f6465765f615f315f3133000561646d696e进行设备上线。
在JetLinks官方协议的代码中找到testFunction方法,路径为org.jetlinks.protocol.official.binary.BinaryMessageTypeTest。复制示例代码,并将messageId的值修改为上一步复制的messageId后运行。
@TestpublicvoidtestFunction(){FunctionInvokeMessageReplyreply=newFunctionInvokeMessageReply();reply.setDeviceId("ele_dev_a_1_13");reply.setMessageId("1622906517320265729");//修改为复制的messageId值Map
在生成的报文段前加上00000561646d696e后通过工具发送,然后可以在平台日志查看调用功能回复的内容。
1、找到官方协议中的BinaryMessageTypeTest类,完整路径为org.jetlinks.protocol.official.binary.BinaryMessageTypeTest
2、选择需要生成报文类型的方法
3、设置所需参数,运行后可以得到消息体报文
4、拼接固定报文
例如拼接的报文为00000561646d696e,其中00为固定值,0005表示平台配置的secureKey长度,使用十六进制表示。61646d696e表示平台配置的十六进制secureKey值,此处为字符串的admin。
5、获取完整报文
00000561646d696e05000001862bd8d7be0002000474657374010001000474656d700a404070a3d70a3d71,使用工具发送即可,此处生成的报文表示读取属性回复。
3、修改项目目录下的benchmark/udp/benchmark.js内容
//需要修改host以及port,--id为设备idbenchmarkudp--host=192.168.66.203--port=8806report=truereportLimit=100interval=1000--script=benchmark/udp/benchmark.js--id=ele_dev_a_1_13