Downlink

This page describes the specifications for downlinks

Downlink encoders are used to encode or "translate" a human-readable JSON object into a device-specific payload (e.g. JSON -> HEX payload).

The downlink encoder script follows a similar notation to uplink decoders, however it uses emit('downlink', payload) to execute a downlink.

Using the downlink emit type has no effect in uplink scripts and custom logic blocks will be ignored and not further processed.

Generally, Downlinks can only be created for LoRa, NB-IoT and MQTT Devices. Downlinks for HTTP and CoAP devices are not supported at this point.

Output Format

The object needs to have a pre-defined structure as shown below.

{
    "port": 1, // needs to 0 or any other positive integer
    "confirmed": true, // used for confirmed downlinks and is optional, default false
    "payloadHex": "hex-string" // has to be a hex-string
}

If this specification is not followed, an error will be thrown during the forwarding of the downlink object to the LoRaWAN carrier.

The object needs to have a pre-defined structure as shown below.

{
    "topic": "string", // the MQTT topic
    "payload": {
        // object with any properties
    }
}

If this specification is not followed, an error will be thrown during the publishing of the downlink to the MQTT device.

function asciiToHexString(input) {
  let output = "";

  for (let i = 0; i < input.length; i += 1) {
    output += input.charCodeAt(i).toString(16);
  }

  return output;
}

function consume(event) {
  const payload = asciiToHexString(event.payload.message);
  const port = event.port ? event.port : 1;
  const confirmed = event.confirmed ? event.confirmed : false;

  emit("downlink", { payloadHex: payload, port, confirmed });
}

Last updated