Graag downlink voorbeeld door rechtstreeks de api te gebruiken
-
Ik probeerde net via de documentatie te achterhalen hoe downlink berichten verstuurd moeten worden, daar is helaas nog steeds vrijwel niets over te vinden. De beste beschrijving is nu in het postman screenshot van “VII. Hello device”. Bij deze dus een bump van dit oude bericht, wat meer in depth documentatie zou welkom zijn.
Hoe moet de body er bijvoorbeeld precies uit zien, is er alleen een resourceValue attirbuut of zijn er meer mogelijkheden?
En kan er alleen ASCII data verstuurd worden? -
@bart-abel Voor het versturen van een downlink bericht kan je de volgende API call uitvoeren
curl -X PUT -H "Authorization: Basic xxxxxxxxx" -H "Content-Type: application/json" -d "{ "resourceValue" : "Hallo" }" https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI:xxxxxxx004/downlinkMsg/0/data
Waarbij de xxxxxxx waardes ingevuld moeten worden met jouw credentials en IMEI. (Vergeet niet om van te voren een endpoint te registreren via de API)
Zo als je hierboven ziet, ziet body er als volgt uitziet
{ "resourceValue" : "Hallo" }
Aangezien de body JSON is kunnen er alleen ASCII characters verstuurd worden. Om binary data te versturen kan er base64 encoding gebruikt worden.
-
@bob-mooij Bedankt voor de informatie. Als er base64 encoding wordt gebruikt, wordt dit dan decoded afgeleverd bij het device? Zie ook mijn andere post over de uplink route: https://forum.iot.t-mobile.nl/topic/364/uplink-data-encoding Zou je daar ook antwoord op kunnen geven in de andere post?
-
Hoi @bart-abel en @Bob-Mooij jullie zijn op de goede weg er zijn 2 nog ongedocumenteerde API calls beschikbaar voor binaire downlink berichten.
*PUT {{base_url}}/m2m/endpoints/{{DeviceId}}/downlinkMsgBase64/0/data
*PUT {{base_url}}/m2m/endpoints/{{DeviceId}}/downlinkMsgBase64Drx/0/data
Voor beide API’s geldt dat de base64 encoded payload, binair wordt afgeleverd bij je device als je hem via de UDP adapter hebt geregistreerd.
Het verschil tussen deze calls is dat bij de eerste call je downlinks (Max 10) worden gebufferd en pas naar het device wordt gestuurd als we zeker weten dat hij luistert en dat is dus nadat we een uplink bericht hebben ontvangen.
De tweede call versturen we direct door naar je device, je moet dan zelf zeker weten dat hij op dat moment in staat is berichten te ontvangen. NB; Ook hier is een tijdelijke netwerk buffer van 1 bericht aanwezig deze is minder betrouwbaar.
-
@JeroenD said in Graag downlink voorbeeld door rechtstreeks de api te gebruiken:
@afzal_m Dank voor je hulp! De callback url met curl toevoegen werkt inderdaad. Het is misschien een goed idee dit beter te documenteren? Of nog beter: te veranderen dat een via de GUI toegevoegde URL ook werkt?
Getting started VII ‘Hello device’ is ook erg summier met alleen een postman voorbeeld…
Voor degenen die geinteresseerd zijn, dit is de API call die werkt:
curl -X PUT -H “Authorization: Basic xxx” -H “Content-Type: application/json” -d “{ “resourceValue” : “Hallo” }” https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI%3a868333030xxxxxx/downlinkMsg/0/data
Met achter ‘Basic’ uiteraard je eigen Base64(username:password) ipv xxx en je eigen device IMEI. Voor de volledigheid: de downlink op je device komt pas binnen na de eerstvolgende uplink.
Dit is toch wel een beetje vervelend. Ik loop nu een jaar later tegen exact dit probleem aan. Mijn callback URL is toegevoegd via de GUI en nu kan ik geen downlink berichten versturen. De docs reppen geen woord over deze eis. De enige info hierover is een stille video.
{"msg":"Unauthorized","code":1001}
-
@trick2011 said in Graag downlink voorbeeld door rechtstreeks de api te gebruiken:
curl -X PUT -H “Authorization: Basic xxx” -H “Content-Type: application/json” -d “{ “resourceValue” : “Hallo” }” https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI%3a868333030xxxxxx/downlinkMsg/0/data
Probeer
curl -X PUT -H “Content-Type: application/json” -d “{ “resourceValue” : “Hallo” }” https://username:password@iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI%3a868333030xxxxxx/downlinkMsg/0/dataVul bij username en password je eigen username en password in die staan bij API credentials. Na IMEI%3a moet je het IMEI nummer invullen van het device waar je hetbericht naartoe wilt sturen
-
@JeroenD Zover was ik inderdaad na dit thread gekomen en heb nu via de API de callback URL ingesteld dus hij doet nu downlinks, altough ik heb nog geen data op mijn node zien verschijnen.
-
Check je username en wachtwoord. Als je een “Unauthorized” krijgt zou het daar ergens kunnen zitten. Check de IMEI, volgens mij staat deze ook in de reply op je downlink. Heb je speciale tekens in je wachtwoord? Dan kan je ook het eerste voorbeeld gebruiken en bij de xxx de Base64 encoding van username:password zetten.
Je kunt ook naar
curl -X PUT -H “Authorization: Basic xxx” -H “Content-Type: application/json” -d “yyy” https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI%3a868333030xxxxxx/downlinkMsgBase64Drx/0/datasturen. De data die je vesrtuurd (bij yyy) moet dan Base64 encoded zijn. Als ik het me goed herinner kan je met deze 2e call ALTIJD data versturen, en met de eerste call alleen in combinatie met een uplink
-
@trick2011 Ik heb overigens nu ook de indruk dat een downlink niet werkt. @afzal_m @Eric-Barten kan het inderdaad zijn dat downlinks niet werken op het moment?
-
-
I just tested the downlink and it works. But I have to admit, for it it was just clicking a button on a GUI.
But now I am sure that it is probably an issue with our explanation.
I am going to translate the threads here and @Yassine-Amraue will come with a response tomorrow.
-
@afzal_m Thnx Afzal!
-
@afzal_m I just checked again, for me the downlink is working (again?)
But I have to admit, for it it was just clicking a button on a GUI.
Lucky you, I used a HTTP PUT request to downlinkMsgBase64Drx
-
Does it also work for @trick2011 now?