Message Delivery


  • Onder de users die al toegang hebben tot ons Early Access Program was er de behoefte om nu ook een bericht vanuit het IoT platform naar een device te kunnen sturen. Iets wat we zelf graag ook willen uiteraard maar ook nog moeten uitvogelen. Hierbij in ieder geval de instructie die we van Huawei hebben ontvangen.

    Challenge: presentje voor degene die dit als eerst aan de praat heeft! Eric gaat nu ook aan onze kant beginnen.



  • Ik heb de request gestuurd. Nu kijken of we hem op het apparaat krijgen:

    ==== response =====
    HTTP/1.1 200 OK
    Transfer-Encoding: chunked
    Content-Type: application/json;charset=UTF-8
    Date: Wed, 21 Jun 2017 14:40:58 GMT
    M-Trace: [2017-06-21 15:40:59,721] urn:uuid:29594d40-8910-4675-a4af-f4e67e8c230b
    Set-Cookie: JSESSIONID=8E34000941E283585403CC8FE30070F1; Path=/; Secure; HttpOnly
    Set-Cookie: SESSION_COOKIE=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/
    X-Frame-Options: SAMEORIGIN
    X-Server-Process-Time: 0.09
    X-Upstream-Process-Time: 0.09
    
    49
    {"requestId":"1234567890","commandId":"4d6b01e317654d7c9f063924a715aa97"}
    0
    


  • @afzal_m
    Ik volg de handleiding en berichten komen in de queue te staan, maar worden niet afgeleverd!

    Dit is de queue output:

    {
    “totalCount”: 7,
    “pageNo”: 0,
    “pageSize”: 7,
    “list”: [
    {
    “commandId”: “14a76eeacd624e97875f38fe0a55859c”,
    “appId”: “nBUTt9XGZhGef1JdOTPsO2Jhar8a”,
    “deviceId”: “55da01ae-6a27-4896-b618-2708e510e872”,
    “command”: {
    “serviceId”: “RawData”,
    “method”: “Test”,
    “paras”: {
    “paraName1”: “paraValue1”,
    “paraName2”: “paraValue2”
    }
    },
    “callbackUrl”: null,
    “expireTime”: null,
    “result”: {
    “resultCode”: “PENDING”,
    “resultDetail”: null
    },
    “creationTime”: “20170621T143535Z”,
    “executeTime”: null
    },

    etc.

    IK zie niet wat ik verkeerd doe…



  • Hij doet het!

    POST /iocm/app/cmd/v1.2.0/devices/ec149476-3508-4256-954b-96cd5676d06b/commands HTTP/1.1
    Host: 160.44.201.248:8743
    App_key: xxxx
    Authorization: Bearer xxxxx
    Content-Type: application/json
    
    {"requestId":"1234567890","command":{"serviceId":"RawData","method":"RawData","paras":{"rawData":"SGVsbG8gV29ybGQ="}},"callbackUrl":"https://www.google.com/","expireTime":150}
    ==== response =====
    HTTP/1.1 200 OK
    Transfer-Encoding: chunked
    Content-Type: application/json;charset=UTF-8
    Date: Wed, 21 Jun 2017 14:48:26 GMT
    M-Trace: [2017-06-21 15:48:26,305] urn:uuid:f3242277-2e60-4ddc-a659-8386241c4e1f
    Set-Cookie: JSESSIONID=BA4013E7D7EFE904D5E8690975E68DE1; Path=/; Secure; HttpOnly
    Set-Cookie: SESSION_COOKIE=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/
    X-Frame-Options: SAMEORIGIN
    X-Server-Process-Time: 0.0799
    X-Upstream-Process-Time: 0.0799
    
    49
    {"requestId":"1234567890","commandId":"3ff13ceb94684a7fbf5aaf53ca7f1b2f"}
    0
    

    Gelukt

    @JanWillem Het apparaat moet wel AT+NMGR aanroepen, anders worden er geen messages afgeleverd (of AT+NNMI=1)

    Ik heb een tool om data te versturen onderdeel gemaakt van onze open-source Golang library. Tevens een call om commando’s te sturen is nu onderdeel van de API.

    https://github.com/dualinventive/go-oceanconnect/tree/master/cmd/sendcommand



  • Ik snap er niks van. Ik doe (voor de zekerheid even) exact hetzelfde dus:

    POST /iocm/app/cmd/v1.2.0/devices/55da01ae-6a27-4896-b618-2708e510e872/commands HTTP/1.1
    Host: 160.44.201.248:8743
    app_key: ****
    Authorization: Bearer ******
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: ffc10c9e-29ed-4a5d-44f1-3d459e1660fb

    {
    “command”:{
    “serviceId”:“RawData”,
    “method”:“RawData”,
    “paras”:{
    “rawData”:“SGVsbG8gV29ybGQ=”}},
    “callbackUrl”:“https://www.google.com/”,
    “expireTime”:150}
    }

    Ik krijg dan als response:

    {
    “requestId”: “8ce3f7f6e249445ab54f3126c9b59856”,
    “commandId”: “c0d3665de5da4d20b679dcebb04761bc”
    }

    Ik zie vervolgens in de queue staan:

    {
    “commandId”: “c0d3665de5da4d20b679dcebb04761bc”,
    “appId”: “nBUTt9XGZhGef1JdOTPsO2Jhar8a”,
    “deviceId”: “55da01ae-6a27-4896-b618-2708e510e872”,
    “command”: {
    “serviceId”: “RawData”,
    “method”: “RawData”,
    “paras”: {
    “rawData”: “SGVsbG8gV29ybGQ=”
    }
    },
    “callbackUrl”: “https://www.google.com/”,
    “expireTime”: 150,
    “result”: {
    “resultCode”: “PENDING”,
    “resultDetail”: null
    },
    “creationTime”: “20170621T171155Z”,
    “executeTime”: null
    }

    Maar als ik vervolgens op het device doe:

    AT+NQMGR

    dan krijg ik

    BUFFERED=0,RECEIVED=0,DROPPED=0

    Ook als ik eerst een bericht stuur om zeker te zijn dat het device niet in een sleep state is beland.

    Ligt het aan de uBlox module of firmware versie?
    Ik draai V100R100C10B650SP11



  • @JanWillem Kun je niet AT+NMGR doen nadat je een message verstuurd hebt? Dat zal forceren dat er een message ontvangen wordt.

    Ik weet niet precies hoe het voor de uBlox-en werkt. Ik heb het aan de praat op een Quectel BC95 met V100R100C10B655SP2.



  • @rikvdh Dat hebben we uitgreid geprobeerd, maar er komt echt niks binnen.
    We hebben het overigens ook geprobeerd op een uBlox met V100R100C10B655SP2 maar dat maakte geen verschil.

    Je hebt op Ocean Connect hiervoor niets hoeven te configureren/ in te stellen?



  • @JanWillem Geen idee, wat voor device-profile gebruik je?



  • @rikvdh gefeliciteerd Rik alle credits gaan naar jou, ik krijg het nog niet voor elkaar. Ik probeer hetzelfde commando te versturen maar krijg een 404 not found. Waarschijnlijk omdat mijn device nog nooit iets verstuurd heeft. Hebben jullie een ander device profiel in gebruik?



  • Dit is mijn device:

    “deviceId”: “55da01ae-6a27-4896-b618-2708e510e872”,
    “gatewayId”: “55da01ae-6a27-4896-b618-2708e510e872”,
    “nodeType”: “GATEWAY”,
    “createTime”: “20170615T083001Z”,
    “lastModifiedTime”: “20170623T153403Z”,
    “deviceInfo”: {
    “nodeId”: null,
    “name”: “sodaq1”,
    “description”: null,
    “manufacturerId”: “Neul”,
    “manufacturerName”: “Neul”,
    “mac”: null,
    “location”: “NL”,
    “deviceType”: “MultiSensor”,
    “model”: “1623”,
    “swVersion”: null,
    “fwVersion”: null,
    “hwVersion”: null,
    “protocolType”: “CoAP”,
    “bridgeId”: null,
    “status”: “ONLINE”,
    “statusDetail”: “NONE”,
    “mute”: “FALSE”,
    “supportedSecurity”: null,
    “isSecurity”: null,
    “signalStrength”: null,
    “sigVersion”: null,
    “serialNumber”: null,
    “batteryLevel”: null
    },

    Wat me opvalt is: “nodeType”: “GATEWAY”,

    Moet dat niet zijn ENDPOINT? Hoe staat dat bij jou @rikvdh



  • @rikvdh of kan het iets te maken hebben met de deviceCapabilities in OceanConnect.
    Bij mijn device staan die op:

    {
    “deviceCapabilities”: [
    {
    “deviceId”: “55da01ae-6a27-4896-b618-2708e510e872”,
    “serviceCapabilities”: [
    {
    “serviceId”: “RawData”,
    “serviceType”: “RawData”,
    “option”: “Master”,
    “description”: “RawData”,
    “commands”: null,
    “properties”: [
    {
    “propertyName”: “Text”,
    “dataType”: “string”,
    “required”: false,
    “min”: null,
    “max”: null,
    “step”: 0,
    “maxLength”: 0,
    “method”: null,
    “unit”: null,
    “enumList”: null
    }
    ]
    }
    ]
    }
    ]
    }



  • Bij ons werkt het intussen. Maar alleen met firmware B656



  • Ik heb dit ook werkend! echter ook alleen bij de B656 firmware.



  • Hi @JanWillem en @rikvdh . Ik probeer message delivery uit. Ik voer de volgende HTTP request uit:

    POST /iocm/app/cmd/v1.2.0/devices/0ce440cf-43e7-4fc0-88ef-35f6eac46e72/commands HTTP/1.1
    Host: 160.44.201.248:8743
    app_key: ******
    Authorization: Bearer ******
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: 6b86c0c1-a21e-5cac-5133-b8f548bd2a8c
    
    {
        "command":{
            "serviceId":"RawData",
            "method":"RawData",
            "paras":{
                "rawData":"SGVsbG8gV29ybGQ="
            }
        },
        "callbackUrl":"https://www.google.com/",
        "expireTime":300
    }
    

    En krijg de volgende terug:

    {
        "requestId": "bff68759e86f4fbeb3b14d56bd7bbd69",
        "commandId": "54c45334fc8a4fabb40c225b1a7c0fe4"
    }
    

    Bij Device command history zie ik ze op PENDING staan.

    Op mijn device heb ik de volgende AT commando’s al uitgevoerd

    > AT+NNMI=1
    OK
    > AT+NMGR
    OK
    > AT+NQMGR
    BUFFERED=0,RECEIVED=0,DROPPED=0
    OK
    

    En ik zie maar geen verandering hierin. Ik gebruik firmware versie B656. Ik kan wel data versturen, maar ontvangen lukt me niet.


Locked
 

Looks like your connection to Internet of Things was lost, please wait while we try to reconnect.