通过 MQTT 将 LoRa 措施发送到 Fiware IOT 代理
Send LoRa measures to Fiware IOT agent via MQTT
我有 LoRa 传感器,它发送带有 Cayenne LPP 格式负载的测量值。
我的网关 (LOrank8v1) 捕获这些数据包并将它们转换为 UDP。
在网关中有一个服务(lora-gateway-bridge)将数据包从 UDP 转换为 TCP/MQTT.
然后将 MQTT 数据包发布到云中的 mosquitto MQTT 代理。
然后我 运行 lora-server 和 lora-app-server 服务来解密、解码和删除重复数据包。
然后我再次发布解密后的信息给MQTT broker。
以下是所有这些操作后的发布示例:
application/1/node/0000000000000000/rx
{
"applicationID":"1",
"applicationName":"Temperature-Humidity",
"deviceName":"Temperature-Humidity",
"devEUI":"0000000000000 000",
"rxInfo":[
{
"mac":"1dee18c14948a955",
"rssi":-27,
"loRaSNR":9.5,
"name":"1dee18 c14948a955",
"latitude":0,
"longitude":0,
"altitude":0
}
],
"txInfo": {
"frequency":8685 00000,
"dataRate": {
"modulation":"LORA",
"bandwidth":125,
"spreadFactor":9
},
"adr":false,
"codeRate":"4/5"
},
"fCnt":2,
"fPort":1,
"data":"AGcAxQFojA==",
"object": {
"temperatureSensor": {
"0":19.7
},
"humiditySensor": {
"1":70
}
}
}
现在我想使用 Fiware 的 JSON/MQTT IOT 代理将 MQTT 转换为 NGSI,以便将数据发布到 Context Broker。
为了便于阅读,数据应该这样发布:
$ mosquitto_pub -h $HOST_IOTAGENT_MQTT -u theUser -P thePassword -t /myapikey/mydevicemqtt/attrs -m '{ "t": 19,7, "h": 70}'
有没有人遇到同样的问题?
我应该制作一个 JSON 解析器并将数据重新发布为另一种格式到 MQTT Broker 中吗?
我该如何处理这个问题?
不知道我是否理解正确你的问题。您的步骤没问题,您需要将一些东西从 Cayenne LPP 转换为您选择的代理所期望的 JSON 格式。当然,您首先需要通过代理注册您的设备,在此步骤中,您定义设备将提供的不同参数(这将配置您必须如何发送 json 消息)。
https://github.com/telefonicaid/iotagent-json/blob/master/docs/stepbystep.md#provisioning-the-device
从 Cayene 到 "special-json-expected-by-the-agent" 的这种转换是 "non-desirable" 的一步。因为你做的是cayene->json->NGSI(但我不确定是否还有其他选择)。我们正在研究创建一个能够理解 Cayene 格式的新代理的可能性,但现在还很早,我不确定 MQTT 是否会成为选定的传输协议。此外,lora-networ-server 还与基于 Cayene 的组合 JSON 相关,所以...这会使任务变得更加复杂...让我们看看...
您应该使用支持 Cayenne LPP 的 Lorwan 物联网代理。
我有 LoRa 传感器,它发送带有 Cayenne LPP 格式负载的测量值。 我的网关 (LOrank8v1) 捕获这些数据包并将它们转换为 UDP。 在网关中有一个服务(lora-gateway-bridge)将数据包从 UDP 转换为 TCP/MQTT.
然后将 MQTT 数据包发布到云中的 mosquitto MQTT 代理。 然后我 运行 lora-server 和 lora-app-server 服务来解密、解码和删除重复数据包。
然后我再次发布解密后的信息给MQTT broker。 以下是所有这些操作后的发布示例: application/1/node/0000000000000000/rx
{
"applicationID":"1",
"applicationName":"Temperature-Humidity",
"deviceName":"Temperature-Humidity",
"devEUI":"0000000000000 000",
"rxInfo":[
{
"mac":"1dee18c14948a955",
"rssi":-27,
"loRaSNR":9.5,
"name":"1dee18 c14948a955",
"latitude":0,
"longitude":0,
"altitude":0
}
],
"txInfo": {
"frequency":8685 00000,
"dataRate": {
"modulation":"LORA",
"bandwidth":125,
"spreadFactor":9
},
"adr":false,
"codeRate":"4/5"
},
"fCnt":2,
"fPort":1,
"data":"AGcAxQFojA==",
"object": {
"temperatureSensor": {
"0":19.7
},
"humiditySensor": {
"1":70
}
}
}
现在我想使用 Fiware 的 JSON/MQTT IOT 代理将 MQTT 转换为 NGSI,以便将数据发布到 Context Broker。
为了便于阅读,数据应该这样发布:
$ mosquitto_pub -h $HOST_IOTAGENT_MQTT -u theUser -P thePassword -t /myapikey/mydevicemqtt/attrs -m '{ "t": 19,7, "h": 70}'
有没有人遇到同样的问题? 我应该制作一个 JSON 解析器并将数据重新发布为另一种格式到 MQTT Broker 中吗? 我该如何处理这个问题?
不知道我是否理解正确你的问题。您的步骤没问题,您需要将一些东西从 Cayenne LPP 转换为您选择的代理所期望的 JSON 格式。当然,您首先需要通过代理注册您的设备,在此步骤中,您定义设备将提供的不同参数(这将配置您必须如何发送 json 消息)。
https://github.com/telefonicaid/iotagent-json/blob/master/docs/stepbystep.md#provisioning-the-device
从 Cayene 到 "special-json-expected-by-the-agent" 的这种转换是 "non-desirable" 的一步。因为你做的是cayene->json->NGSI(但我不确定是否还有其他选择)。我们正在研究创建一个能够理解 Cayene 格式的新代理的可能性,但现在还很早,我不确定 MQTT 是否会成为选定的传输协议。此外,lora-networ-server 还与基于 Cayene 的组合 JSON 相关,所以...这会使任务变得更加复杂...让我们看看...
您应该使用支持 Cayenne LPP 的 Lorwan 物联网代理。