Integration LR1110 LoRa Cloud Geolocation

I am trying to understand how the integration of LoRa Cloud Geolocation works with regard to the payload decoder and what information / variables it needs to work with LR1110 GNSS.

As stated in the documentation of LoRa Cloud, the needed information is as follows:

{
  "payload":                    HEX,            // Required. HEX string with valid single capture payload
  "gnss_capture_time":          FLOAT,          // Optional. capture time estimate, GPST
  "gnss_capture_time_accuracy": FLOAT,          // Optional. capture time accuracy, seconds, default: 300
  "gnss_assist_position":       [FLOAT, FLOAT], // Optional. assistance position WGS84, (latitude, longitude) [deg]
  "gnss_assist_altitude":       FLOAT,          // Optional. assistance position WGS84, (latitude, longitude) [deg]
  "gnss_use_2D_solver":         BOOL            // Optional. force 2D solve, "gnss_assist_altitude" mandatory
}

However, the example payload decoder for LR1110 GNSS by Chirpstack documentation only indicates the use of:

// bytes has the following encoding:
// [Sat. count (uint8): 1 byte] | [LR1110 GNSS payload: remaining bytes ]
function Decode(fPort, bytes, variables) {
  return {
    "sat_count": bytes[0],
    "lr1110_gnss": bytes.slice(2, bytes.length)
  };
}

I assume that Chirpstack is translating “lr1110_gnss” as the “payload” required by LoRa Cloud, however I do not see anywhere if and how I can also provide the other (optional) variables like for example the “gnss_assist_position”. Can I just use these exact variable names in the payload or will they be ignored by Chirpstack anyway?

How can I ensure that Chirpstack also forwards the optional variables mentioned by LoRa Cloud for GNSS?

  "gnss_capture_time":          FLOAT,          // Optional. capture time estimate, GPST
  "gnss_capture_time_accuracy": FLOAT,          // Optional. capture time accuracy, seconds, default: 300
  "gnss_assist_position":       [FLOAT, FLOAT], // Optional. assistance position WGS84, (latitude, longitude) [deg]
  "gnss_assist_altitude":       FLOAT,          // Optional. assistance position WGS84, (latitude, longitude) [deg]
  "gnss_use_2D_solver":         BOOL            // Optional. force 2D solve, "gnss_assist_altitude" mandatory
1 Like

I have found the place in source-code of Chirpstack, but still can not figure out completely what variable additional variable names in the decoder I can use to feed the LoRa Cloud Geoloc GNSS integration. I can also see that the source makes a differentiation between the use of “LoRa Cloud Geoloc” and “LoRa Cloud DAS”, and that the additional/optional fields are being used in the “dasGNSS” integration but not in the “gnssLR1110Geolocation” integration. Does this mean, I can not feed these additional fields into the “gnssLR1110Geolocation” integration?

This is automatically set based on the gateways receiving the uplinks. You’ll find the source here: https://github.com/brocaar/chirpstack-application-server/blob/65b5d15c55062c583ce9253ba124343e7fa36a80/internal/integration/loracloud/client/geolocation/structs.go#L185.

ah I see. Then I think I need to make a feature request then, because for some use-cases it will be needed to define these values from the decoder/payload itself and not be automatically defined by the application server. For example, when you want to process a log of LR11110 payloads with different gps_timestamps and reference locations. Our sensors provide all the needed variables in the payload.

Let me know if this is possible.