Beantwoord

2 HTTP responses instead of one (1 with the payload and 1 with the location)

  • 28 November 2022
  • 8 reacties
  • 121 keer bekeken

Hoi,

Inmiddels al een stuk op weg met loRa op het KPN netwerk. Werkt als een zonnetje inmiddels :-)

Echter zat ik met een vraag/probleem, namelijk:

 

Ik zou graag de locatie gegevens willen gebruiken die het KPN netwerk kan bepalen. Dit heb ik dan ook ook in mijn flow aangeven (+ LoRa Geolocation data). Ik heb daar alle 3 de vinkjes aan (› Decoded ThingsML for LoRa payload & + LoRa Geolocation data & Raw LoRa payload).

 

Nu genereer ik mijn data structuur als JSON of CBOR middels de lib https://github.com/kpn-iot/thingsml-c-library (door jullie gemaakt) en stuur dat middels de lmic lib (https://github.com/mcci-catena/arduino-lorawan). 

Als response op mijn request lijk ik er 2 te krijgen. 1 met de raw payload en 1 met de locatie gegevens. Ik zie niet de response voor “Decoded ThingsML for LoRa payload” en ik vind het vreemd dat dit niet allemaal in 1 response staat.

 

Voorbeeld response 1 raw payload
 

[
{ bn: 'urn:dev:DEVEUI:xxxxxxxxxx:', bt: 1669584121 },
{
n: 'payload',
vs: '383441323137333530324642343034413141374330364531394239314132313733343032464234303137443635413134343838433631413230303635373436463642363536453033373831383441354134343638353833343334363434463436324434463336364234433538343937373441373303036343634363137343635303231413633383233433844'
},
{ n: 'port', v: 1 },
{ n: 'TIME_ORIGIN', vs: 'THINGSENGINE' }
]


Voorbeeld locatie gegevens
 

[
{ bn: 'urn:dev:DEVEUI:xxxxx:', bt: 1669584122 },
{ n: 'locOrigin', vs: 'KPNLORA' },
{ n: 'latitude', u: 'lat', v: 52.91032 },
{ n: 'longitude', u: 'lon', v: 5.151115 },
{ n: 'radius', u: 'm', v: 602.784424 },
{ n: 'locAccuracy', u: '%', v: 9999 },
{ n: 'locPrecision', u: '%', v: 9999 },
{ n: 'locTime', vs: '1669584122443' }
]


Nu mijn vragen:

  • Waarom mis ik de decoded payload
  • Waarom zijn niet alle responses samengevoegd? 

Ik hoor het graag.

icon

Beste antwoord door Mark L. 1 December 2022, 14:38

Bekijk origineel

8 reacties

Reputatie 5
Badge +5

Goedemiddag @Reinos, welkom op het Zakelijk KPN Forum.

Ik ga bij de IoT developers navragen waarom dit zo is ingericht en of het eventueel aan te passen is. 

Thanks Mark.

 

Ik heb inmiddels het volgende gedaan, alle decoders uitgezet behalve “Decoded ThingsML for LoRa payload”. Resultaat is dat ik niks op mijn HTTPS endpoint binnen krijg.

 

Zet ik “Decoded ThingsML for LoRa payload & + LoRa Geolocation data” aan, dan krijg ik alleen de locatie gegevens binnen.

 

Zet ik alle 3 de decoders aan, dan krijg ik dus 2 responses, 1 met locatie en de andere met de raw payload.

 

Dat nog even ter info.

 

Vermoed dan ook dat wat ik stuur niet goed is…  Maar als ik het goed begrepen heb moet ik CBOR sturen als formaat en dat is ook wat ik doe. Als ik de payload, die ik in de device log zie terug converteer krijg ik een CBOR string die ik dan weer kan kan vertalen naar het daadwerkelijke bericht via https://thingsml.tools.kpnthings.com/#/

Voorbeeld, dit is de payload die binnenkomt op het KPN netwerk 

“383441323137333530324642343034413141374330364531394239314132313733343032464234303137443635413134343838433631413230303635373436463642363536453033373831383441354134343638353833343334363434463436324434463336364234433538343937373441373636423535353733304132303036343634363137343635303231413633383233433844”

Als ik die omzet met https://www.rapidtables.com/convert/number/hex-to-ascii.html krijg ik 

“84A2173502FB404A1A7C06E19B91A2173402FB4017D65A14488C61A20065746F6B656E0378184A5A4468583434644F462D4F366B4C5849774A766B555730A2006464617465021A63823C8D”

Als ik die omzet met https://thingsml.tools.kpnthings.com/#/ krijg ik de juist waarde.
 

Badge

je merkt op dat je twee berichten krijgt. Eentje van je device en eentje van je gateway (of althans indirect van de gateway). Dat zie ik ook en vind ik prima. De timestamp in de gateway-melding, die met de geolocatie, kan nooit precies betrekking hebben op het bericht van je device, dus samenvoegen zou niet correct zijn.

Wel zou ik heel graag een timestamp in het device-bericht zien, maar dat is een ander issue.

Zelf voeg ik in een dataverwerkings-pipeline de geo-info samen met het device-bericht. Dan kunnen ze later tegelijkertijd verwerkt worden. Dat zou jij ook kunnen doen.

Denk dat vooral bij mij het probleem is dat als ik decoded data verstuur, de KPN decoder dit niet oppakt.

 

Het punt dat wanneer je ook de raw payload aanzet en dit resulteert in 2 responses op mijn HTTP endpoint vind ik vreemd. Ik zou verwachten dat dit gewoonweg wordt samengevoegd met alle andere decoders. Je stuurt tenslotte ook maar 1 request middels je Lora device naar het KPN netwerk, dus ik verwacht dan dat daaruit ook maar 1 HTTP response uitkomt.

 

 

Badge

het geo-locatie-pakket is een extra dienst, ik denk niet dat het handig is als die vermengd wordt met het pakket dat je device stuurt. Ik vind het juist netjes dat het twee pakketten zijn.

Dat met de data is inderdaad zoals je zegt. Het is, dat is normaal onder SenML, encoded, dus dat kun je zelf decoden. Ik geloof niet dat het handig is om de interpretatie van de payload aan de network-server over te laten, dan beperk je het formaat van de payload nogal.

succes!

Hi Joost,

Bedankt voor je reactie -)

het geo-locatie-pakket is een extra dienst

Dat klopt, maar als ik de documentatie en de beschrijving onder de decoder moet geloven “Add LoRa Geolocation data to messages where location could be calculated.” zou die de data wel degelijk moet samenvoegen. Ik versta “messages” de huidige messages die ik dan stuur. Maar ik kan het verkeerd interpreteren :-)

 

Kortom, @Mark L. mijn huidige issue is dus dat mijn encoded dat niet wordt doorgestuurd middels de “Decoded ThingsML for LoRa payload” decoder.

 

Reputatie 5
Badge +5

Goedemiddag @Reinos 

Ik heb ondertussen contact gehad met de developers. Zijn geven aan dat het voor Freemium accounts de optie om berichten te mergen niet beschikbaar is, vandaar dat er twee responses gegeven worden.

@Mark L. thanks voor je bericht terug! Dat maakt een hoop duidelijk :-)

Wellicht handig om dit erbij te vermelden?

Dan ga ik ze zelf verzamelen en samenvoegen of overwegen voor een betaald account ;-)

Reageer