У меня вопрос о подключении сетевого сервера loriot к платформе IBM Watson IoT. Мне удалось подключить серверную часть loriot к платформе Watson IoT и увидеть, как поступают некоторые данные. Однако данные представлены в шестнадцатеричном формате. Есть идеи, как преобразовать эти шестнадцатеричные данные в удобочитаемые для человека?
Платформа IBM watson IoT - шестнадцатеричные данные
Ответы (1)
Если данные, поступающие на платформу Watson IoT, имеют формат 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
Возможности управления данными описаны здесь: