我有LoRa传感器,它使用Cayenne LPP格式有效载荷发送测量值。 My Gateway(LOrank8v1)捕获这些数据包并将其转换为UDP。 在网关中有一个服务(lora-gateway-bridge),它将数据包从UDP转换为TCP / MQTT。
然后将MQTT数据包发布到云中的mosquitto MQTT代理。 然后我运行lora-server和lora-app-server服务,以便对数据包进行解密,解码和重复数据删除。
然后我再次将解密的信息发布到MQTT代理。 以下是所有这些操作后的出版物示例: 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吗? 我怎么能处理这个问题?
答案 0 :(得分:0)
我不知道我是否理解你的问题。您的步骤还可以,您需要从Cayenne LPP转换为您选择的代理所期望的JSON格式。当然,您首先需要通过代理注册您的设备,在此步骤中,您将定义设备将提供的不同参数(这将配置您必须如何发送json消息)。
https://github.com/telefonicaid/iotagent-json/blob/master/docs/stepbystep.md#provisioning-the-device
从Cayene转换为"特殊的json-expected-by-the-agent"是一个不可取的"步。因为你正在做cayene-> json-> NGSI(但我不确定是否还有其他选择)。我们正在研究创建一个能够理解Cayene格式的新代理的可能性,但它还很早,我不确定MQTT是否会成为所选的传输协议。此外,lora-networ-server也会与基于Cayene的组合JSON相关,所以...这会让任务变得更复杂......让我们看看......
答案 1 :(得分:0)
您应该使用 Lorwan 的 IoT 代理,它支持 Cayenne LPP。