Vraag

Downlink Message

  • 18 April 2019
  • 19 reacties
  • 1351 keer bekeken

Als ik een POST wil doen naar "https://loradeveloper.mendixcloud.com/rest/sendkpnloramessage?"
wat zijn dan de parameters ? en moet je je aanmelden met een username en password in de parameters ?

19 reacties

Reputatie 7
Badge +6
Goedemorgen @EricRF ,

Ik ben even gaan speuren en heb een idee over het antwoord.
Nu vind ik het wel belangrijk om u gelijk de juiste informatie te kunnen geven. Ik kies er daarom voor om dit eerst ook nog even voor te leggen aan onze LoRa specialisten. Zodra ik een terugkoppeling krijg hoort u direct weer van ons.

Ik wil hierbij gelijk ook de aankondiging doen dat ik na vandaag met vakantie ga. Dat betekent dat u vermoedelijk een terugkoppeling en antwoord van een van mijn collega's krijg. Mocht een reactie uitblijven kunt u ook mijn collega's Leroy en Rashid via een privébericht bereiken.
Heel fijn, als dat voor elkaar is, werkt alles naar behoren, fijne vakantie ....
Reputatie 5
Badge +10
Hi @EricRF,

Door afwezigheid van mijn collega Rick, help ik u graag verder 🙂. Ik heb inmiddels bericht ontvangen van de specialisten.

Van wat ik heb begrepen hoeft er geen gebruik gemaakt te worden van een user name en password om een downlink te sturen, omdat er andere veiligheidsmaatregelen zitten in het LoRa netwerk. De exacte vereisten om een downlink te sturen kan gevonden worden in een ietwat verouderd topic, dat inhoudelijk nog steeds correct is. Hier staat ook een voorbeeld beschreven.
Kunt u hier een voorbeeld van geven ?

Zoiets als dit, maar dan werkent in 2019.

https://api.kpn-lora.com/thingpark/lrc/rest/downlink?DevEUI=000000000F1D8693& FPort=1&Payload=00&AS_ID=app1.sample.com&Time=2016-01-11T14:28:00& Token=b5a84fe9c8921e9de359e3041a37b76c4b122f6f9b83577b5596c842052f7e62

DevEUI enz... zijn veranderd in mijn code...

Overal kom je verschillende voorbeelden tegen en niet een werkt.
De PHP parameters zijn soms met accolades dan weer zonder, dan weer met token dan weer niet, oude urls...
Is is ook niet handig om alle oude voorbeelden weg te gooien ?
Als je een token berekent met SHA256 moet deze dan weer omgezet worden in HEX, en is dat dan per byte ?
Dank U.
Reputatie 5
Badge +10
Hi @EricRF,

In het topic Sending Downlink messages staan voorbeelden van hoe dit kunt doen. Wellicht dat u daar het antwoord vindt. Laat u mij weten of het is gelukt?
Als eerste staat hier: This post has become obsolete ook oud dus ???

Het voorbeeld is alles behalve duidelijk: zie vette tekst:

DevEUI=000000000F1D8693&FPort=1&Payload=00&AS_ID=app1.sample.com&Time=2016-01-11T14:28:00

Also a token should be added by computing it from SHA-256
SHA 256(DevEUI=000000000F1D8693&FPort=1&Payload=00&AS_ID=app1.sample.com&Time=2016-01-11T14:28:0046ab678cd45df4a4e4b375Eacd096acc)
Remember that the can be found at you user profile in the developer portal and is 46ab678cd45df4a4e4b375Eacd096acc in this example. // vastgeplakt aan Time ??? en bij Complete example hieronder is het weer niet gebruikt...

The resulting is encoded as an hex string (e.g. b5a84fe9c8921e9de359e3041a37b76c4b122f6f9b83577b5596c842052f7e62) AND added at the end of the query parameters line

Hier is er weer niets van terug te vinden :
Complete example
https://loradeveloper.mendixcloud.com/rest/sendkpnloramessage?DevEUI=000000000F1D8693&FPort=1&Payload=00&AS_ID=app1.sample.com&Time=2016-01-11T14:28:00&Token=b5a84fe9c8921e9de359e3041a37b76c4b122f6f9b83577b5596c842052f7e62
Reputatie 5
Badge +3
Hallo @EricRF ,

Zoals al eerder aangegeven is het topic enigszins verouderd. Echter zou de ‘complete example’ code correct moeten zijn om als referentie te gebruiken met de token in hexadecimalen. Afhankelijk van of u ThingPark gebruikt of de Developer Portal dient respectievelijk api.kpn-lora.com of loradeveloper.mendixcloud.com gebruikt te worden.
Bedankt voor uw zeer informatieve antwoorden, ik hoop dat er iemand op dit forum de kennis heeft om te helpen en een goed voorbeeld heeft, ik ga wel weer verder met trial & error dit schiet niet op !
😡
Bij POST voor downlink krijg ik de melding :
METHOD_NOT_ALLOWED: GET sendkpnloramessage/25849 GET is not enabled for this service
Beste EricRF,

Onderstaand voorbeeld als referentie heb ik zojuist nog geverifieerd voor gebruik. In de Developer Portal is de AS ID (in dit voorbeeld KPN.developer) te vinden in je profiel, evenals de AS Key die gebruikt wordt voor de tokengeneratie. Kun je wellicht nogmaals proberen een downlink te construeren en terug te koppelen welke error je krijgt en of jouw eerder genoemde error zich blijft voordoen? Als het goed is komt er namelijk ook een foutcode (nummer) terug als respons.

https://loradeveloper.mendixcloud.com/rest/sendkpnloramessage?DevEUI=0059BB00AAAAAAAA&FPort=1&Payload=0100&ValidityTime=180&AS_ID=KPN.developer&Time=2019-04-25T11:59:04&Token=90a9deb928a1645c427e6bd6b3a2c8cd5c464d6142602f1b49042e4f29c72f64
Nog steeds niet werkend, op het forum staan steeds tegenstrijdigheden vandaar nu mijn vragen:

DevEUI=83D6828ADAB9XXXX / Hoofdletters ?
FPort=1
Payload=
ValidityTime / veld verplicht ?
AS_ID=yourcompany.developer ? / uit account gegevens ?
Time=2019-04-25T18:06:06 ??
AS_Key uit account met streepje en extra spaties ?

//XX is Prive-masker
string postData = "DevEUI=83D6828ADAB9XXXX";
postData += "&FPort=1";
postData += "&Payload=9876543210";
postData += "&ValidityTime=180";
postData += "&AS_ID=yourcompany.developer";
postData += "&Time=2019-04-25T18:06:06";

string AS_Key = "dbcc43ee - b5a5 - 4202 - b9d4 - XXXXXXXXXXXX"; ????
string token = ComputeSha256Hash(postData + AS_Key);
postData += "&Token=" + token;

Uit:
https://loradeveloper.mendixcloud.com/rest/sendkpnloramessage?DevEUI=83D6828ADAB9XXXX&FPort=1&Payload=9876543210&ValidityTime=180&AS_ID=yourcompany.developer&Time=2019-04-25T18:06:06&Token=1f371ffdc7dea6bdd6ade6d9bba615122f4286d2e6c0b8c8a1c3b76eebc23bc4

Fout:
Error code: METHOD_NOT_ALLOWED
Http status code: 405
Tevens nog een vraag:
mic_hex hoe bereken je deze hash ?
Ik kan hier nergens iets over vinden...
Beste EricRF,

Ik heb nu bij een van onze technici gevraagd waar het mis gaat. Ik herken deze foutcode namelijk niet. Ik kom hier zsm nog even op terug, want ik begrijp de frustratie over voornoemde. Onderstaand nog wel antwoord op je andere vragen.

DevEUI=83D6828ADAB9XXXX / Hoofdletters ?
  • Niet noodzakelijk, Maar wel gebruikelijk hoofdletters te gebruiken. Indien deze incorrect is krijg je de foutmelding: 350 “Invalid DevEUI”
FPort=1
  • Correct. Indien deze incorrect is krijg je de foutmelding: 350 “Invalid LoRa port 0”
Payload=
  • Vrij invoerbaar (hex). Indien deze incorrect is krijg je de foutmelding: 350 “Payload too big or invalid size”
ValidityTime / veld verplicht ?
  • Optioneel. Indien incorrect: 350 “ValidityTime expired or invalid”.
AS_ID=yourcompany.developer ? / uit account gegevens ?
  • Correct, onder 'My Account' in de Developer Portal bij AS ID. De daar genoteerde AD ID gebruiken. voorkeur zonder spaties. Indien incorrect: 350 “Security Check. AS_ID is mandatory" of 350 “Security Check. bad AS_ID” of 350 “Security Check. bad token”
Time=2019-04-25T18:06:06 ??
  • Correct, wel UTC tijd gebruiken. Indien incorrect: 350 “Security Check. Invalid downlink frame timestamp" of 350 “Security Check. missing timestamp/token” of 350 “Security Check. malformed ISO8601 time"
AS_Key uit account met streepje en extra spaties ?
  • Geen spaties, geen streepjes (32 tekens). En is inderdaad te vinden in 'My Account' als AS Key, Indien incorrect: 350 “Security Check. bad token”
Tot slot kan er nog een 404 error komen met de melding “No Base Station Available”. Deze doet zich echter alleen voor wanneer er nog geen uplink is geweest en er dus nog geen gateway geselecteerd is voor het betreffende device.
Tevens nog een vraag:mic_hex hoe bereken je deze hash ?
Ik kan hier nergens iets over vinden...


De MIC (Message Integrity Code) is onderdeel van het LoRa protocol, gebruikt voor het bewaken van van de integriteit van de verstuurde berichten tussen LRC en device (op basis van de NwkSKey). Op de applicatieserver zelf hoeft hier niets voor te worden ingeregeld.

Mocht je hier echter in willen duiken, dan kun je de calculatie van de MIC terugvinden in de LoRa Alliance specificaties (bijv v1.0.3): https://lora-alliance.org/sites/default/files/2018-07/lorawan1.0.3.pdf in paragraaf 4.4 (vanaf line 600).
Is er al nieuws over de foutcode ?
???????
Is er al nieuws over de foutcode ?😁
Beste ErikRF,

Er is helaas nog geen update over de foutcode, zodra ik meer weet hoor je het direct!
Beste ErikRF,

Excuses voor de tijd die het heeft gekost om met het atwoord te komen. Het bleek een lastig te reproduceren issue dat zich niet altijd en consequent voordeed, afhankelijk van wie en met welke tool een downlink werd gecreëerd. Doordat sommige tools/codes wel en anderen geen foutmelding gaven, is de oorzaak gevonden in het verschil hiertussen.

Als een POST gedaan wordt naar de reguliere API van ThingPark (https://api.kpn-lora.com/thingpark/lrc/rest/downlink?), dan mag de body van de POST ontbreken. Echter: als gebruik wordt gemaakt van de Developer Portal ("https://loradeveloper.mendixcloud.com/rest/sendkpnloramessage?" ) lijkt het erop dat de body niet mag ontbreken. Ontbreekt deze wel, dan krijg je de foutmelding:

"errorMessage": "JSON is incorrect. Please review the request data: A JSONObject text must begin with '{' at 1 [character 2 line 1]",
"errorCode": "INVALID_JSON"

Dit is te verhelpen door het veranderen van een ontbrekende body naar een lege body door het noteren van "{}" als body. Dit is voldoende om de downlink request wel te laten werken.

Dit verschil zit helaas in het platform van Mendix zelf en is niet op korte termijn te verhelpen. De documentatie zal om deze reden worden aangepast.

Reageer