我已经通读了一些问题,但它们要么是用另一种语言编写的,要么是要在网页上解决的,
我使用node-red来接收BLE数据,但数据来自1个长字符串,表示接收到以下内容:
string
[{"timestamp":"2020-02-
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"DB1265E96B6F","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514 932AC01","ibeaconMajor":1,"ibeaconMinor":2,"rssi":-51,"ibeaconTxPower":-54,"battery":0}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"F0728DEB0B9B","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514932AC01","ibeaconMajor":5,"ibeaconMinor":1,"rssi":-30,"ibeaconTxPower":-62,"battery":0}]
我的目标是以以下格式将数据输入到node-red中
Gateway-Mac,IbeaconMinor,mac,rssi
我以前使用过我不同的收集器来收集数据,它以以下格式给了我字符串
$GPRP,AC233FC02D95,FE2279DCB92B,-70,0201061AFF4C000215ACFD065EC3C011E39BBE1A514932AC0100050003C2
它单独输入了收集的BLE设备数据,而不是输入一个较长的JSON字符串,因此更易于转换和输入。
所以我的问题是我该如何更改
string
[{"timestamp":"2020-02-
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"DB1265E96B6F","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514 932AC01","ibeaconMajor":1,"ibeaconMinor":2,"rssi":-51,"ibeaconTxPower":-54,"battery":0}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"F0728DEB0B9B","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514932AC01","ibeaconMajor":5,"ibeaconMinor":1,"rssi":-30,"ibeaconTxPower":-62,"battery":0}]
to
string
[{"timestamp":"2020-02-
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}
{2020-02-24T13:44:59Z,DB1265E96B6F,ACFD065EC3C011E39BBE1A514932AC01",1,2,-51,-54,0}
{2020-02-24T13:44:59Z,F0728DEB0B9B,ACFD065EC3C011E39BBE1A514932AC01,5,1,-30,-62,0}]
或我如何以以下格式将其输入到mysql中作为mysql字符串
AC233FC02D95,F0728DEB0B9B51,1,-30
和
AC233FC02D95,DB1265E96B6F,2,-51
在更改硬件之前,我像这样输入了字符串,但是使用新的json格式,我不确定代码中要更改的内容
GPRP,AC233FC02D95,FE2279DCB92B,-70,0201061AFF4C000215ACFD065EC3C011E39BBE1A514932AC0100050003C2
var raw = msg.payload;
msg.length = raw.length;
msg.raw = raw;
var data = {};
data.major = raw.slice(-10,-4);
data.mac = raw.substring(5,17);
data.hostname = raw.substring(18,30);
data.minor = raw.slice(-8,-4);
data.rssi = raw.substring(31,34)
var str = data.hostname;
var location = str.replace(`AC233FC02D95`, `PURPLE`)
var beacon = parseInt(data.minor ,16);
var msg = {
topic : "INSERT INTO `test`.`track` (`location`,`beacon`, `mac`,`rssi`)
VALUES ('"+location+"','"+beacon+"', '"+data.mac+"','"+data.rssi+"');"
}
return msg;
只需将带有字符串有效负载的消息传递到JSON节点,它将解析为JSON对象,然后您就可以照常访问字段了。