物联网平台与kettle技术的结合(二)

821 阅读2分钟

上篇文章介绍了如何将tb的rest接口出参数据格式通过kettle平台转换为最合适的出参格式。本篇文章将接着上篇文章,通过kettle平台来处理tb的websocket接口。

提出问题:

websocket接口如何统一格式?

tb中获取设备的遥测数据是这样的。

{
  "EA": [
    {
      "ts": 1479735870786,
      "value": "0"
    },
    {
      "ts": 1479735871857,
      "value": "0"
    }
  ],
  "ER": [
    {
      "ts": 1479735870786,
      "value": "0"
    },
    {
      "ts": 1479735871857,
      "value": "0"
    }
  ]
}

而我们正常需要的数据出参,应该是这样的:

{
    "success":true,
    "resultCode":"0",
    "resultMsg":null,
    "result":{
        "id":"53884a40-8554-11eb-bccd-c11a74ecd150",
        "name":"1_G01",
        "state":false,
        "cmdId":10,
        "nickName":"电源进线",
        "note":"电源进线",
        "data":[
            {
                "key":"EA",
                "val":"0",
                "dw":"kWh",
                "max":null,
                "min":null,
                "danger":false,
                "note":"未知"
            },
            {
                "key":"ER",
                "val":"0",
                "dw":"kVarh",
                "max":null,
                "min":null,
                "danger":false,
                "note":"未知"
            }
        ]
    }
}

如何将tb原始的格式,转换为我们需要的格式呢?

解决方案:

  • 通过修改tb的源码进行解决

修改tb源码,会导致管理后台的websocket不可用,不能实时的查看数据。如果采用修改源码的方式,那就必须修改后端java代码,和前端angularjs代码。如果对平台不够熟悉很有可能导致系统的不可用。

  • 通过基于kettle的数据平台解决

kettle平台通过将websocket的数据进行透传,然后对每一条返回的数据进行定制化处理。并最终转换为我们需要的websocket格式。

演示:

创建kettle文件,并在kettle中进行websocket数据格式转换。

在kettle平台中上传转换文件,并配置服务。

websocket在线测试。

查看日志。

总结 :

本篇文章通过将tb的websocket接口进行格式转换已达到业务需求的目的,同时也证明了kettle平台功能的强大。目前这些功能已经用于生产环境,并且非常稳定可靠。下一篇文章将介绍如何将tb的接口进行聚合,来适配各种不同的业务场景。