Link Search Menu Expand Document

Plenom - Kuando-Busylight

The Kuando-Busylight is an LED which can get changed through LoRaWAN downlink messages. The Busylight can show any color and be used as a visual notifier, indicating a certain event, status or as a cue for specific handling.


Table of contents

  1. Specifications
  2. Documents
  3. Ordering Info
  4. Adding the Device to TTN
  5. Optional Settings
    1. Change sampling interval
      1. Example messages
  6. Payload Decoder
    1. Uplink
    2. Downlink

Specifications

  • indoor device
  • Price ca. CHF 75.- (20.08.2025)
  • Multi color RGB LED light
    • Color, brightness and flashing can be customized through LoRaWAN payload
    • 360° visibility
  • LoRaWAN Class C Device
  • LoRaWAN version 1.0.3
  • Power Supply: over USB with 3m cable, adapter included
  • Size: 38 × 38 mm

Documents


Ordering Info

  • Part Number: kuando Busylight IoT Omega - LoRaWAN - EU
  • Ordering Link

Adding the Device to TTN

  • The JoinEUI, App EUI and the DevEUI should be on a sticker on the cardboard box.
  • Before a device can communicate via “The Things Network” we have to add it to an application.
  1. Create a new application
  2. Under End devices in the application click (+) Register end device
  3. Under Input method select Enter end device specifics manually
  4. Under Frequency plan select Europe 863-870 Mhz (SF9 for RX2 - recommended)
  5. Under LoRaWAN version select 1.0.3
  6. Under JoinEUI enter the App EUI from the App and press Confirm
  7. Enter as well the DevEUI and the AppKey from the App
  8. Additional LoRaWAN class capabilities: Class C
  9. Set an end-device name
  10. Press Register end device
  11. Add the payload formatter from below, either to the device itself or if all devices in the app are from the same type, to the application
  12. Switch on the device
  • Now the device should join the network and you can see the incoming telegrams in the Live data section

Optional Settings

Change sampling interval

To change the sampling interval, you have to send the device configuration telegrams (Downlink-Messages) The time interval in minutes at which the sensor queries the current values.

  1. In the TTN Console on the device view, select the device and change to the tab Messaging, select Downlink
  2. Change the FPort to 15
  3. Copy/paste the payload, e.g. 01000258 into the Payload field to set the led to red
  4. Press Send
  5. In the Data tab you should now see the scheduled telegram. The device receives downlink data immediately, because its a class C device.

Example messages

  • solid white: FF FF FF FF 00
  • solid red: FF 00 00 FF 00
  • solid green: 00 FF 00 FF 00
  • red fast blink: FF 00 00 20 20
  • red slow blink: FF 00 00 A0 A0
  • green fast blink: 00 FF 00 20 20
  • green slow blink: 00 FF 00 A0 A0
  • off: 00 00 00 00 00

Payload Decoder

function decodeUplink(input) {
  if (input.bytes.length === 24) {
    return {
      data: {
        "counter_inc@received": byteArrayToLong(input.bytes, 8),
        "counter_inc@sent": byteArrayToLong(input.bytes, 12),
        "last_color@red": input.bytes[16],
        "last_color@blue": input.bytes[17],
        "last_color@green": input.bytes[18],
        "last_color@ontime": input.bytes[19],
        "last_color@offtime": input.bytes[20],
        "adr_state_abs": input.bytes[23],
      },
      warnings: [],
      errors: [],
    };
  }
}

function byteArrayToLong(byteArray, from) {
  return (
    byteArray[from] |
    (byteArray[from + 1] << 8) |
    (byteArray[from + 2] << 16) |
    (byteArray[from + 3] << 24)
  );
}
function encodeDownlink(input) {
  return {
    bytes: [
      input.data.red & 0xFF,
      input.data.blue & 0xFF,
      input.data.green & 0xFF,
      input.data.ontime & 0xFF,
      input.data.offtime & 0xFF
    ],
    fPort: 15,
    warnings: [],
    errors: []
  };
}

function decodeDownlink(input) {
  return {
    data: {
      red: input.bytes[0],
      green: input.bytes[2],
      blue: input.bytes[1],
      ontime: input.bytes[3],
      offtime: input.bytes[4]
    },
    warnings: [],
    errors: []
  };
}