fiware - IoT-AgentUL 如何获取数据
问题描述
目前我有自己的 LoRaWAN 网络,大约有 45 台设备使用此有效负载发送数据: ID=D0001&T=23&H=60 其中 ID 是 sensorId;T-温度;H - 湿度。
接下来我必须采取哪些步骤才能从我的设备中获取上下文?
这些是我所做的步骤:
1 - 安装 IoT-Agent Ultralight
2 - 使用我的 MQTT 数据在 config.js 文件上配置 MQTT
config.mqtt = { 主机:'HOST_NAME',端口:1883,协议:mqtt
,用户名:'USERNAME',密码:'PASSWORD',保留:false,重试:5,retryTime:5,keepalive:0,avoidLeadingSlash:false } ;
3 - IoTAgent-ul(节点 bin/iot-agentul),收到此消息:time=2020-12-01T10:44:48.197Z | lvl=信息 | corr=526cdc56-62b8-4791-b95d-f5110ca18b7e | 反式=526cdc56-62b8-4791-b95d-f5110ca18b7e | op=IOTAUL.MQTT.绑定 | 来自=n/a | srv=n/a | 订阅服务器=不适用 | 味精=已连接 | comp=IoTAgent
解决方案
目前尚不清楚您是否需要Ultralight的 IoT 代理或LoRaWAN的 IoT 代理。Ultralight 是一种有效负载语法,Ultralight IoT 代理支持 HTTP、MQTT 和 AMPQ 传输。LoRaWAN 是一种传输,它支持几个 COAP 协议。
如果您真的要发送 LoRa COAP 消息,那么您将需要 LoRaWAN 代理。
如果您在 MQTT 上使用 Ultralight,那么您的消息负载应如下所示
ID|D0001|T|23|H|60
分步指南中有一个Ultralight over MQTT 教程。
如果您在 LoRaWAN 上使用 COAP,那么您的消息负载将是base64
来自 LoRa 网关的字节流。物联网教程描述了设置。
如果您的有效负载实际上是:ID=D0001&T=23&H=60
,您将需要创建自己的解析器,如自定义 IoT 代理教程,并按照更改 IoT 代理代码库的步骤操作。
具体来说,使用HTTPBindings
parseData()函数的控制流程。ulParser
需要重写以接受您的替代语法。它看起来很相似,您需要做的就是:
if (payload) {
data = ulParser.parse(payload.replace(/&/g, "|").replace(/=/g, "|"));
}
(如果可以在发送到 Ultralight IoT 代理之前完成,那就更好了)
重用现有物联网代理(或使用物联网代理节点库编写新代理)的优势在于,使用现有代码实现实体创建和属性映射等功能。
推荐阅读
- ios - 在不影响发布者类型的情况下向发布者转换链添加额外的逻辑
- sql - 正则表达式而不是 LIKE 语句
- ruby - 如何检测字符串是否为 pangram 并返回 true 或 false
- android - 如何让这个函数等待 JSON 数据准备好
- .net - .Net Core 3.1/Standard 2.1 NU1101 适用于所有包
- sql-server - 有没有一种简单的方法来检索包含 id 列表的组合?
- c++ - 复杂类和指针
- c - 如果 uint8_t 存在,uint8_t* 是否等同于 unsigned char*?
- php - 在 PHP 中将关联数组添加到另一个关联数组
- java - 显示原生广告 OnBackpressed