Beantwoord

Mijn HTTPS end-point ontvangt een lege body

  • 23 May 2023
  • 9 reacties
  • 91 keer bekeken

Met ons bedrijf hebben we al een aantal sensor-netwerken, en nu zijn we voor een nieuwe locatie/klant connectiviteits-testen aan het doen met het KPN netwerk. 

Ons test-toestel stuurt heel mooi berichten naar KPN, ik kan zien dat die mooi binnenkomen. Echter als ik een HTTPS end-point configureer krijg ik altijd een lege JSON body binnen. 

Eerst had ik in de flow helemaal geen decoders gespecifieerd, en nu heb ik dus enkel de “= Raw LoRa payload Extended” aangezet. Dat is ook wat ik wil: de ruwe payload ontvangen + meta-data met bv de connectie-kwaliteit. 

Maar zoals gezegd ontvang ik enkel een lege json body. 

 

Ik heb al vanalles gelezen op het forum, maar ik weet ondertussen niet wat er nog relevant is. Moet ik ook een decoder op ons device aanzetten? En zo ja: waar kan dat dan? 

 

Het email adres waarmee alles geconfigureerd is : projects@ifluxsampling.com (opgezet door mijn collega). We hebben 1 device (“universalloratestdevice”) met DevEUI A8610A33344B7F15, we hebben een flow opgezet, met een destination en dus de decoder die m.i. gewoon de ruwe payload zou doorsturen, maar we ontvangen gewoon een lege json “{}”.

 

Doen we nog iets verkeerd? 

icon

Beste antwoord door Nathan Van der Auwera 1 June 2023, 11:02

Bekijk origineel

9 reacties

Reputatie 7
Badge +6

Goedemiddag @Nathan Van der Auwera,

Welkom op het Zakelijk KPN Forum! 
Ik help jullie graag verder. Goed om te lezen dat jullie met ons netwerk aan de slag zijn gegaan en dat het in principe werkt. Ik heb het account in de Things Portal gevonden en ook dat ziet er prima uit. Ik weet niet precies hoe we er nu voor kunnen zorgen dat je in plaats van de lege json gewoon de ruwe payload data ontvangt. Ik heb daarom intern een hulpvraag uitgezet om mee te kijken. Zodra er meer duidelijk is kom ik gelijk bij je terug. 

Reputatie 7
Badge +6

Hey Nathan, 

Daar ben ik weer! 
Ik heb vanochtend onderstaande terugkoppeling van een van de specialisten ontvangen: 
 

In de logging zien we dat berichten succesvol worden afgeleverd op “https://yuca-int.fluxsense.app/api/streams

Successfully sent SenML to Https plug dde8cb11-4e31-4e6d-8140-c524d7c01dc0 for request 83e79a22-5b45-4d34-be28-813384000e77; remote returned 200 OK (expected: 200)

In de portal zien we data (payload)van het device alsook de locatiedata.

Echter we zien ook dat de destination in de portal niet hetzelfde is als wat we in de logging zien. Daar is het namelijk “https://yuca-int.fluxsense.app/api/streams.json” . Dat is dus een punt van aandacht. 

Daarnaast adviseren we om met een decoder te testen. Wij kunnen nu niets doen met bijvoorbeeld een webhook, omdat er geen data meer verstuurd wordt. Ze kunnen ook zelf een webhook aanmaken om verschillende decoders te testen.
 

Wij hebben ook succesvol berichten ontvangen, de authenticatie is ok, MAAR we ontvangen een lege JSON-body.

Maw: “{}”

(ik heb naderhand het eindpunt/url nog aangepast met het toevoegsel “.json” dat aan onze kant de data als JSON forceert, om te zien of dat een verschil maakt)

 

In de portal zien wij ook de payload, ik zou verwachten dat we die ook zouden zien in de HTTPS call? 

 

Als men schrijft: “testen met een decoder” wat wil dat zeggen? We hebben de decoder actief staan die ons de ruwe payload + meta data opstuurt? 

 

We sturen nu geen data meer omdat we op dit moment niet meer in NL zijn (met ons test-toestel) en we hier lokaal geen connectie meer hebben. 

 

Ik heb ook net op mijn telefoon de KPN Test Device Simulator toegevoegd, om data te kunnen sturen, ik heb de enige decoder die er is voor het en daar zie ik eigenlijk hetzelfde: we krijgen een call/hit op onze URL maar de JSON body is weer leeg. De authenticatie is wel ok. 

 

Ik ga eens proberen of ik meer ruwe data kan loggen. (om te zien wat er precies wordt opgestuurd voor we het bericht proberen parsen als json bv). 

 

Ik wil eraan toevoegen, voor de duidelijkheid, dat wij op hetzelfde eindpunt al LoRa berichten ontvangen van Proximus, TheThingsNetwerk, Helium,. Orange dus dat we vrij zeker zijn dat ons eindpunt ook werkt. 

Ik heb extra logging toegevoegd, en dit is wat wij ontvangen: 

 

 {:status=>200, :time=>{:total=>12.82, :db=>3.84, :view=>8.98}, :method=>"POST", :path=>"/api/streams.json", :params=>{}, :host=>"yuca-int.fluxsense.app", :ip=>"82.201.28.52", :ua=>"Apache-HttpClient/4.5.13 (Java/17.0.2)", :headers=>{"User-Agent"=>"Apache-HttpClient/4.5.13 (Java/17.0.2)", "Accept-Encoding"=>"gzip,deflate", "Authorization"=>"Bearer [SENSORED]", "Things-Message-Token"=>"c4790a406c1225de894e17ddddbaae65b93fd0b2dc330e03b0276e361164d7fc", "Accept"=>"text/plain, application/json, application/*+json, */*", "Things-Plug-Uuid"=>"[SENSORED]", "Host"=>"yuca-int.fluxsense.app", "Things-Device-Barcode"=>"NULL", "Version"=>"HTTP/1.1"}}

 

De aandachtige lezer ziet: params bevat enkel {} → das leeg. 

 

Voor de volledigheid voeg ik de logging toe van wat bv ProximusMythings ons stuurt: 

 

{:status=>200, :time=>{:total=>12.55, :db=>3.5, :view=>9.05}, :method=>"POST", :path=>"/api/streams.json", :params=>{"Lrrlon"=>"4.320903", "payload"=>"0242ec000360e051540b9d", "Spfact"=>"7", "Lrrsnr"=>"3.000000", "thingName"=>"DL_PR26_001_EU868_SN17132", "DevEUI"=>"70B3D57BA00042EC", "Lrrrssi"=>"-106.000000", "timestamp"=>"1685016329051", "Lrrlat"=>"51.339546"}, :host=>"yuca-int.fluxsense.app", :ip=>"52.137.29.243", :ua=>"Apache-HttpClient/4.5.5 (Java/1.8.0_201)", :headers=>{"User-Agent"=>"Apache-HttpClient/4.5.5 (Java/1.8.0_201)", "Accept-Encoding"=>"gzip,deflate", "Authorization"=>"Bearer [SENSORED]", "Host"=>"yuca-int.fluxsense.app", "Version"=>"HTTP/1.1"}}

 

Helpt dat? 

Enige update? Status? Wij moeten voor twee projecten beslissen of we met KPN in zee gaan, maar we moeten dan wel de berichten kunnen verwerken. Ik vermoed dat ik iets in onze configuratie over het hoofd zie, kan ik nog iets testen? Een mogelijke reden waarom jullie body leeg is dat jullie geen json sturen, moet ik dat expliciet aangeven? Ik zou verwachten dat dat de default is (met SenML) ?

Ik heb een test-destination toegevoegd en zie daar de body mooi binnenkomen. De library die ik gebruik verwacht blijkbaar altijd een JSON-hash, en kan blijkbaar niet goed tegen een “top-level” array. Eens kijken of ik daar rond kan werken.

Reputatie 7
Badge +6

Goedemorgen @Nathan Van der Auwera,

Bedankt voor de berichten! En excuses voor de late reactie. 
Na jouw reactie van afgelopen donderdag heb ik de specialisten gevraagd om nog even verder te kijken. Tot nu toe heb ik echter nog geen inhoudelijke terugkoppeling ontvangen. Ik heb dus nog geen update voor je. Ik hoop snel een reactie te krijgen. 

Onze issue is opgelost! Zoals ik zei kon de library niet om met een JSON array ipv een hash/object. Dat heb ik kunnen oplossen en nu kunnen we de berichten ook lezen. Op zich is SenML een mooi formaat, maar echt JSON-achtig is het natuurlijk niet, het lijkt meer op XML in JSON maar dat volledig terzijde. 

Bedankt voor de ondersteuning, en vooral ook voor de zeer goede documentatie. Door met de webhook test site aan de slag te gaan kon ik ook meteen zien wat de fout was. 

 

Reputatie 7
Badge +6

Goedemiddag Nathan, 

Wat goed om te lezen dat het is opgelost! 
En excuses dat de terugkoppeling van ons op zich liet wachten. We helpen je natuurlijk graag.
Verder zijn we ook erg blij om te horen dat de documentatie als goed ervaren wordt. 

Als we nog iets voor je kunnen betekenen weet je ons te vinden.
Fijn weekend! 

Reageer