0

我的问题是关于将 loriot 网络服务器连接到 IBM Watson IoT Platform。我已经成功地将 loriot 后端与 Watson IoT Platform 连接起来,并看到了一些数据。但是,数据是十六进制格式。关于如何将这个十六进制数据转换为人类可读的任何想法?

4

1 回答 1

0

如果传入 Watson IoT Platform 的数据是 JSON 格式,但包含值是十六进制的属性,您可以使用数据管理功能将这些事件中的数据转换为设备状态。属性映射表达式中使用的表达式语言包括一个$unpack函数,该函数可用于将字符串和十六进制八位字节转换为数值。与$substring函数结合使用时,您可以从较大的十六进制值中提取特定字符串并将其转换为数字。

例如,假设您有以下入站事件:

{
  "propertyA": "valueA",
  "propertyB": "valueB",
  "data": "3b45940201000000010e4601"
}

...您可以使用类似于以下的映射表达式将值映射到设备状态的属性:

$unpack($substring($event.data, 0, 8),  "l32f")
$unpack($substring($event.data, 8, 2),  "l8")
$unpack($substring($event.data, 10, 8), "l32")

上面三个表达式的对应输出为:

2.1786381830505485E-37
1
16777216

此处记录了数据管理功能:

https://console.bluemix.net/docs/services/IoT/GA_information_management/ga_im_device_twin.html#device_twins

于 2018-03-10T10:08:30.087 回答