Once downlink message is transmitted to the end device NS generates a message with type=downlink and sends this message to AS.

Please note the these messages could not be used to actually send downlink messages to end devices. It is generated only to notify AS that downlink has been successfully sent by the NS.

In order to initiate a downlink message to device please read downlink_request section carefully.

NS allows you to optionally add information about MAC commands to the downlink message: add lora=1parameter to the query string.

For example:

wss://ns.eu.everynet.io/api/v1.0/data?access_token=9ec85978f3fa1ab6f953406269f69a95&lora=1

For better undestanding of mesaage flow, please refer to this sequence diagram:

In other words the following sequence is taking place:

  • Device transmit confirmed uplink message and wait for the acknowledgment from the network server.

  • NS receives uplink message from device, process it and send uplink and downlink_request messages to AS.

  • AS receive uplink and downlink_request messages, but it has nothing to send back to device.

  • NS build downlink message for the device and send it in order to acknowledge confirmed uplink.

  • NS send downlink message to AS in order to notify about downlink message to device.

Params

Message of type downlink has the following fields:

Name Description
counter_down integer, downlink counter from LoraWAN packet, required
port integer, FPort from LoraWAN packet, required
payload string, optional, message (BASE64-encoded, plain). Use this in case of app_key is provided to Network. Encryption will be provided by Network.
encrypted_payload string, required, FRMPayload, message (BASE64-encoded, encrypted). Use this in case of Application Server is performing encryption procedure.
duplicate boolean, if the message is duplicate then this flag is true, required
radio object, required, includes radio information about hardware, modulation, frequency
radio.freq float, central frequency in MHz (unsigned float, Hz precision), required
radio.time float, unixtime, time of receiving the message at the gateway, optional
radio.modulation object, information about modulation, required
radio.modulation.type string, required, type of modulation, enum: LORA, FSK
radio.modulation.coderate string, LoRa ECC coding rate identifier, required
radio.modulation.spreading integer, required, spreading factor of LoRa message
radio.modulation.bandwidth integer, required, bandwidth of LoRa message
radio.hardware object, information about hardware, required
radio.hardware.tmst integer, send packet on a certain timestamp value (will ignore time), required
radio.hardware.channel integer, concentrator IF channel used for RX (unsigned integer), required
radio.hardware.chain integer, concentrator 'RF chain', required
radio.hardware.status integer, CRC status: 1 = OK, -1 = fail, 0 = no CRC, required

Example

{
    "meta": {
        "network": "75697b95",
        "packet_hash": "79f664df2c2073af798fa87497305d8d",
        "application": "70b3d54b17db0106",
        "device_addr": "36c365b4",
        "time": 1504806731.759066,
        "device": "faa73111a2aead2c",
        "packet_id": "fdbb09021c4523d9f28bb815ca872c70",
        "gateway": "7c95bd79864622a4",
        "history": true
    },
    "params": {
        "radio": {
            "modulation": {
                "bandwidth": 125000,
                "type": 0,
                "coderate": "4/7",
                "spreading": 12,
                "inverted": true
            },
            "hardware": {
                "status": 1,
                "chain": 0,
                "power": 14.0,
                "tmst": 515586002,
                "channel": 0
            },
            "freq": 868.1,
            "datr": "SF12BW125",
            "time": 1504806732.249041
        },
        "payload": "YLRlwzaHRwAEAAUA0q2EFHt7NA==",
        "port": 0,
        "counter_down": 71
    },
    "type": "downlink"
}

results matching ""

    No results matching ""