ThingsKit物联网平台设备UDP接入

入门介绍

UDP基础知识

UDP是User Datagram Protocol(用户数据协议)的简称,是一种无连接的协议,该协议工作在OSI模型中的第四层(传输层),处于IP协议的上一层。传输层的功能就是建立“端口到端口”的通信,UDP提供面向事务的简单的不可靠信息传送服务。
接下来来看UDP与TCP的区别:

UDP TCP
面向无连接 面向连接(即需要建立连接)
基于数据报(发送数据时会直接打上UDP头部将整个报文发送出去) 面向字节流(发送数据时会将数据分解为多个小的数据报文进行发送)
传输数据可能存在丢包 有三次握手可以保证数据传输的可靠性
无法保证数据顺序 保证数据顺序
支持一对一、一对多、多对多通讯 只支持点对点通讯
无拥塞机制 有拥塞机制
头部8个字节 头部20-60个字节
要求实时性高,准确度低 要求实时性低,准确度高

:::info
提示
ThingsKit支持设备直接通过UDP接入平台,并支持 JSON、Text、HEX格式的上下行消息,平台中还提供了脚本函数功能,为更复杂的设备通信提供了便利性。
:::
UDP设备的常见网络配置:

  • IP:127.0.0.1
  • port:8088

    设备身份认证

    UDP设备的上报样式:

  • 【注册包】+【数据包】
  • 【注册包】

    UDP注册包

    注册包对平台而言则是访问令牌“AccessToken”。只要保证设备端的注册包与平台端的访问令牌一致。
    注册包是作为设备端与平台鉴权的方式,如果常见的DTU厂家,都有提供配置软件来设置。
    当设备和平台成功建立UDP连接后,设备必须马上向平台发送身份信息,完成身份认证。若设备端在一定时间内未发送身份信息,平台会自动断开设备的UDP连接。
    在使用UDP透传方式的网关或DTU中,同样可以使用该注册包连接到平台。
    示例:UDP模拟工具注册包设置:
    ThingsKit物联网平台设备UDP接入_第1张图片

    UDP心跳包

    当设备和平台建立UDP连接并完成身份认证后,便可以相互收发消息。但是,如果相当长一段时间内没有消息通信,双方如何判断对方仍然在线呢?因为UDP对于一些非正常的连接断开是无法侦测到的,比如设备断电、网线断掉等。
    因此,对于消息通信间隔较长的应用场景,为了让双方尽早的知道连接是否已经断开,从而实现重连,就需要有UDP保活机制,这是通过设备定期发送心跳包来实现的。
    但是,大多数物联网通信场景的数据上报间隔时间并不长,所以也可以起到保活的目的,心跳包不是必须的,用户可根据需求使用心跳包。

    数据流转换

    平台提供的UDP接入方式,是需要您对UDP通道所属的自定义数据流,设置相应的消息规则,实现自定义数据和设备属性之间的解析和处理。
    数据上报到平台,则需要通过平台提供的转换函数进行,转码解析处理。
    如某厂家的温湿度传感器,上报到平台的数据为:

    010302004A39B3

    平台端,可通过转换函数解析数据:

    var demo = (parseInt('0x'+params.substr(6, 4))).toFixed(2);
    out.test = demo;

    解析结果为:

    {"test":"74.00"}

    ThingsKit物联网平台设备UDP接入_第2张图片

    数据上报

    设备接入时,咱们得先创建UDP协议的产品,产品创建时,需要绑定对应的转换脚本。
    ThingsKit物联网平台设备UDP接入_第3张图片
    一旦完成上边的UDP绑定自定义数据流,设备端就可以通过UDP协议发送符合负载格式的数据,例如:类似属性消息结构的JSON消息,或者自定义的HEX消息
    平台收到UDP自定义数据上报后,则通过规则引擎来对数据做各种解析和处理,平台提供了函数等可编程方式。
    :::info
    提示
    平台8088端口同时监听UDP协议数据,平台产品类型只显示TCP的问题后面会修改。
    :::

    数据下发

    接下来就是平台下发命令到设备端自定义数据,可以通过如下方式:

    规则引擎的命令下发如下图:


附:使用模拟设备接入UDP

模拟UDP设备接入
文章来源(首发地址):ThingsKit物联网平台

你可能感兴趣的:(物联网)