FIWARE - 物联网代理 - Orion 数据
FIWARE - IoT Agent - Data for Orion
我已经在我的机器上安装了 FIWARE (Ubuntu 18.04),我目前正在尝试使用 IoT 代理,使用 HTTPBindings.js(我的数据是通过 LoRaWAN 发送的,我已经更改了 parseData 函数以使用我自己的数据“协议”[id=1&temp=12&humidity=10],这让我来这里向更有经验并可以帮助我的人提出 2 个问题:
function parseData(req, res, next) {
let data;
let error;
let payload;
let obj;
try {
let newPayload = new Buffer.from(payload, "base64").toString("ascii");
var ps = newPayload.split("&").reduce((accum, x) => {
const kv = x.split("=");
return { ...accum, ...{ [kv[0]]: kv[1] } };
}, {});
data = ulParser.parse(newPayload.replace(/&/g, "|").replace(/=/g, "|"));
} catch (e) {
error = e;
}
if (error) {
next(error);
} else {
req.ulPayload = data;
config.getLogger().debug(context, 'Parsed data: [%j]', data);
next();
}
}
更改此功能后,我无法在 orion/v2/entities 中获取要更新的数据。有人能解释一下这是如何工作的吗?
如何在 Wirecloud 中给 usenter code here
e 添加代理?我使用 FIWARE 服务器创建了它,但我自己测试时,我没有这个。
提前谢谢你。
配置 NGSI 代理
ngsi-proxy
使用环境变量和 port
配置。
ngsi-proxy:
image: fiware/ngsiproxy:1.2.0
hostname: ngsi-proxy
container_name: wc-ngsi-proxy
networks:
default:
ipv4_address: 172.18.1.14
expose:
- "8100"
ports:
- "8100:8100"
environment:
- PORT=8100
- TRUST_PROXY_HEADERS=0
wirecloud 小部件中的 NGSI 代理配置为 http://<host>:<port>
- 在本例中为 http://ngsi-proxy:8100
测试 HTTP 绑定连接
传入的 HTTP 措施可以由 IOTA_HTTP_PORT
环境变量控制:
iot-agent:
image: fiware/iotagent-ul:${ULTRALIGHT_VERSION}
hostname: iot-agent
container_name: fiware-iot-agent
depends_on:
- mongo-db
- orion
networks:
- default
ports:
- "4041:4041"
- "7896:7896"
expose:
- "7896"
environment:
..etc
- IOTA_NORTH_PORT=4041
- IOTA_LOG_LEVEL=DEBUG
- IOTA_HTTP_PORT=7896
- IOTA_PROVIDER_URL=http://iot-agent:4041
如果您加强调试并公开相关端口,您应该能够将测量直接发送到您的自定义 IoT 代理并看到某种响应(可能是错误)- 这有助于追踪您的编码问题.
您始终可以向自定义 IoT 代理添加额外的调试日志记录,以查看转换的工作情况。
我已经在我的机器上安装了 FIWARE (Ubuntu 18.04),我目前正在尝试使用 IoT 代理,使用 HTTPBindings.js(我的数据是通过 LoRaWAN 发送的,我已经更改了 parseData 函数以使用我自己的数据“协议”[id=1&temp=12&humidity=10],这让我来这里向更有经验并可以帮助我的人提出 2 个问题:
function parseData(req, res, next) {
let data;
let error;
let payload;
let obj;
try {
let newPayload = new Buffer.from(payload, "base64").toString("ascii");
var ps = newPayload.split("&").reduce((accum, x) => {
const kv = x.split("=");
return { ...accum, ...{ [kv[0]]: kv[1] } };
}, {});
data = ulParser.parse(newPayload.replace(/&/g, "|").replace(/=/g, "|"));
} catch (e) {
error = e;
}
if (error) {
next(error);
} else {
req.ulPayload = data;
config.getLogger().debug(context, 'Parsed data: [%j]', data);
next();
}
}
更改此功能后,我无法在 orion/v2/entities 中获取要更新的数据。有人能解释一下这是如何工作的吗?
如何在 Wirecloud 中给 us
enter code here
e 添加代理?我使用 FIWARE 服务器创建了它,但我自己测试时,我没有这个。
提前谢谢你。
配置 NGSI 代理
ngsi-proxy
使用环境变量和 port
配置。
ngsi-proxy:
image: fiware/ngsiproxy:1.2.0
hostname: ngsi-proxy
container_name: wc-ngsi-proxy
networks:
default:
ipv4_address: 172.18.1.14
expose:
- "8100"
ports:
- "8100:8100"
environment:
- PORT=8100
- TRUST_PROXY_HEADERS=0
wirecloud 小部件中的 NGSI 代理配置为 http://<host>:<port>
- 在本例中为 http://ngsi-proxy:8100
测试 HTTP 绑定连接
传入的 HTTP 措施可以由 IOTA_HTTP_PORT
环境变量控制:
iot-agent:
image: fiware/iotagent-ul:${ULTRALIGHT_VERSION}
hostname: iot-agent
container_name: fiware-iot-agent
depends_on:
- mongo-db
- orion
networks:
- default
ports:
- "4041:4041"
- "7896:7896"
expose:
- "7896"
environment:
..etc
- IOTA_NORTH_PORT=4041
- IOTA_LOG_LEVEL=DEBUG
- IOTA_HTTP_PORT=7896
- IOTA_PROVIDER_URL=http://iot-agent:4041
如果您加强调试并公开相关端口,您应该能够将测量直接发送到您的自定义 IoT 代理并看到某种响应(可能是错误)- 这有助于追踪您的编码问题.
您始终可以向自定义 IoT 代理添加额外的调试日志记录,以查看转换的工作情况。