Merger πŸ’Ž
πŸ’Ž Add-on feature This feature is only available for contracted customers. Please contact [email protected] if your are interested!
When configuring your Destination, you can also configure merger functionality. When you enable the merger for your Destination, you can have data from different decoders merged into one message to your Destination.
The merger could be useful to merge LoRa Geolocation information with the decode payload from your LoRa device, in order to present this LoRa Geolocation data as an ordinary measurement to your application.
The merger can merge the output of multiple decoders back to one message.
If two SenML packs that are merged contain a record with the same SenML name, both SenML records will be put in the final SenML pack. You application should.
In the future, we plan to implement priority, where measurements with the same SenML name can overwrite the other measurement.

Attributes

Attribute
Value
Description
merge
true/false
Whether to enable merger functionality.
mergeDecoderSpecifications
array of uuid's
Array of decoder specification uuid's of decoder outputs you want to merge.
ttl
nr. seconds
(Default: 10) max. time to wait for all messages to merge.
orphanStrategy
DISCARD/FORWARD
What to do with messages arriving after the ttl.
Decoder specification uuid's are listed on the Supported device types page and the KPN Things devices page.
With a ttl of 10s you could expect up to 2% of LoRa Geolocation messaged to be outside the ttl. With a ttl of 15s, up to 1% can be outside ttl.
A higher ttl will increase the change all messages are merged. A lower ttl will introduce a shorter delay for message that could not be merged.

Example

Below an example of two merged messages is given.

Before merge

1
// Output from the LoRa Geolocation decoder
2
[
3
{"bn": "urn:dev:DEVEUI:0059AC00001B036E:", "bt": 1599058945},
4
{"n": "locOrigin", "vs": "KPNLORA"},
5
{"n": "latitude", "u": "lat", "v": 51.982597},
6
{"n": "longitude", "u": "lon", "v": 4.467995},
7
{"n": "radius", "u": "m", "v": 111.272842}
8
]
9
​
10
// Output from the ThingsML for LoRa decoder
11
[
12
{"bn": "urn:dev:DEVEUI:0059AC00001B036E:", "bt": 1599058946},
13
{"n": "temperature", "u": "Cel", "v": 25},
14
{"n": "humidity", "u": "%RH", "v": 13.6},
15
{"n": "radius", "u": "m", "v": 20}
16
]
Copied!

After merge

As you can see the two decoder outputs have been merged into one SenML pack. Because the LoRa Geolocation data is one second newer than the data from the payload, all SenML records from the latter are given an extra t-attribute to express the time difference.
Also, since both decoder outputs contain a radius measurement, there are now two SenML records with this measurement name.
1
[
2
{"bn": "urn:dev:DEVEUI:0059AC00001B036E:", "bt": 1599058945},
3
{"n": "locOrigin", "vs": "KPNLORA"},
4
{"n": "latitude", "u": "lat", "v": 51.982597},
5
{"n": "longitude", "u": "lon", "v": 4.467995},
6
{"n": "radius", "u": "m", "v": 111.272842},
7
{"n": "temperature", "u": "Cel", "v": 25, "t": 1},
8
{"n": "humidity", "u": "%RH", "v": 13.6, "t": 1},
9
{"n": "radius", "u": "m", "v": 20, "t": 1}
10
]
Copied!