Graag downlink voorbeeld door rechtstreeks de api te gebruiken



  • Ik probeer:
    curl -X PUT -H “Accept: application/json” -H “Authorization: Basic xxx” -H “Content-Type: application/json” -d “{ “resourcevalue” : “Hallo” }” https://iot.netwerk.t-mobile.nl/m2m/endpoints/86833xxxxxxxxxx/downlinkMessage/0/data
    met xxx uiteraard de Base64 van mijn username:password en 86833xxxxxxxxx de IMEI van mijn device. Ik kan wel https://iot.netwerk.t-mobile.nl/rest/device?iDisplayLength=-1 aanroepen met dezelfde authorisatie, dus die is goed lijkt mij. Toch krijg ik {“msg”:“Unauthorized”,“code”:1001}
    Ik heb als {DeviceId} ook al IMEI:86833xxxxxxxxxx geprobeerd en ook 5041, een id dat ik terugkreeg van /rest/device?iDisplayLength=-1

    Wat doe ik niet goed?



  • Ik zie dat ik /downlinkMessage/0/data probeer terwijl het downlinkMsg/0/data moet zijn. Ik krijg echter dan dezelfde reactie


  • Deutsche Telekom IoT

    Volgens mij werkt de dowlink op bovenstaande manier alleen als je de callback URL ook via een curl command hebt toegevoegd (en refererend naar je andere topic, heb je de callback URL volgens mij via de GUI toegevoegd)



  • @afzal_m Ik heb de callback inderdaad via de GUI toegevoegd, ik zal vanavond eens proberen de URL via curl toe te voegen.
    Klopt het dat ik geen https callback kan toevoegen?



  • @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.


  • Deutsche Telekom IoT

    Ja, we gaan de doc library volgende week updaten! Dank voor de feedback.

    En…

    @jeroend said in Graag downlink voorbeeld door rechtstreeks de api te gebruiken:

    Voor de volledigheid: de downlink op je device komt pas binnen na de eerstvolgende uplink.

    Hier wordt ook aan gewerkt 😉



  • @jeroend said in Graag downlink voorbeeld door rechtstreeks de api te gebruiken:

    Ik will een bericht sturen naar een SODAQ UBEE R410M en zie dat dit kennelijk mogelijk is met “curl”. Nu begreep ik alleen niet waar ik die “Base64(username:password)” vandaan moet halen.

    Begijp ik verder goed dat mijn IMEI op de plaats van de xxxxxx moet komen in de regel met " /IMEI%3a868333030xxxxxx/downlinkMsg/0/data" en de rest moet laten staan?



  • @arie-van-wettum Goede syntax is als volgt:

    https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI:<imei>/downlinkMsg/0/data

    Met als body:

    {
    {“resourceValue” : “<string>”}
    }



  • @jeroend said in Graag downlink voorbeeld door rechtstreeks de api te gebruiken:

    O.k. stel mijn IMEI is 123456789 dan krijg ik:

    curl -X PUT -H “Authorization: Basic xxx” -H “Content-Type: application/json” -d “{ “resourceValue” : “Hallo” }” https://iot.netwerk.t-mobile.nl/m2m/endpoints/IMEI:123456789/downlinkMsg/0/data

    Wat is dat dan deze “Authorization: Basic xxx” ? Waar kan ik deze “Base64(username:password)” vandaan halen?



  • @arie-van-wettum

    Wat is dat dan deze “Authorization: Basic xxx” ? Waar kan ik deze “Base64(username:password)” vandaan halen?

    https://www.blitter.se/utils/basic-authentication-header-generator/

    Vul hier je T-Mobile API naam en wachtwoord in. Vul dat vervolgens in op de plek van xxx, dan zou het moeten werken… (veel API tools doen dit zelf al, zoals bijvoorbeeld postman)



  • 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?


  • Deutsche Telekom IoT

    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/data

    Vul 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/data

    sturen. 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


Log in to reply