KNX IoT: Certification

This sample provides a KNX IoT device that matches the device expected by the KNX Interworking Test Tool (EITT) certification test template. Use it to run the KNX IoT certification tests with EITT on a Nordic Semiconductor device running the KNX IoT add-on for the nRF Connect SDK.

Requirements

The sample supports the following development kits:

Hardware platforms

PCA

Board name

Board target

nRF54LM20B DK

PCA10184

nrf54lm20dk

nrf54lm20dk/nrf54lm20b/cpuapp

nRF54LM20A DK

PCA10184

nrf54lm20dk

nrf54lm20dk/nrf54lm20a/cpuapp

nRF54LC10 DK

PCA10226

nrf54lc10dk

nrf54lc10dk/nrf54lc10a/cpuapp

nRF54L15 DK

PCA10156

nrf54l15dk

nrf54l15dk/nrf54l15/cpuapp

You also need the following:

  • EITT with the KNX IoT certification test template.

  • A Thread Border Router that makes the Thread network reachable from the EITT host.

Overview

The sample acts as a KNX IoT device that combines one Light Switching Actuator Basic (LSAB) functional block (number 417) and one Light Switching Sensor Basic (LSSB) functional block (number 421). Both functional blocks use instance 1. The device identity, resource paths, datapoint types, and the application parameter are those expected by the EITT test template:

Resource

Datapoint

Description

/p/1

urn:knx:dpa.417.61

LSAB switch on/off, the control input (GET and PUT, if.i). A write is mirrored onto /p/2.

/p/2

urn:knx:dpa.417.62

LSAB info on/off, the status output (GET, if.o).

/p/3

urn:knx:dpa.421.61

LSSB switch on/off, the control output (GET, if.o).

/p/4

urn:knx:dpa.421.62

LSSB info on/off, the status input (GET and PUT, if.i).

/p/p1

urn:knx:dpa.65500.201

Global test parameter, handled as a signed 32-bit value.

The device uses the following identity:

Property

Value

Serial number

00fa10020800

Manufacturer ID

667

Hardware type

Windows

Device model

KNX Certification

SPAKE2+ password

2X4W3TE0DFLLS19Y1FCH

The device runs as a router-capable Full Thread Device (FTD) with device power management disabled, so it stays reachable during the tests.

Note

The sample does not support software updates.

User interface

LED 0:

Indicates the Thread network status. The LED blinks while the device is attaching and remains on when it is attached.

LED 1:

Indicates the KNX status. The LED blinks in programming mode and remains on after commissioning.

LED 2:

Indicates the LSAB switch state (/p/1).

LED 3:

Indicates the LSSB status reported by the group (/p/4).

Button 0:

Short press starts or retries the Thread Joiner. Hold for six seconds to perform a Thread factory reset.

Button 1:

Short press toggles KNX programming mode. Use it after the device has attached to a Thread network (LED 0 steadily lit). Hold for six seconds to perform a KNX factory reset.

Button 2:

Sends the inverse of the LSSB status (/p/4) on the LSSB switch output (/p/3) to the bound groups.

Configuration

See Configuring and building for information about how to permanently or temporarily change the configuration.

The following Kconfig options are most relevant for this sample:

SPAKE2+ credentials

Important

During the build, the KNX IoT add-on generates a SPAKE2+ verifier from CONFIG_KNX_IOT_PASSWORD and compiles it into the application. The stack uses the verifier for PASE authentication, while the samples retain the password to print their onboarding QR code on demand.

The default password and salt are intended for demonstration only. Production applications must use device-specific credentials and a suitable provisioning process. For more information about SPAKE2+, see PASE and SPAKE2+.

The default Thread profile starts the Joiner automatically with PSKd N0RD1C. Use ../common/overlay-thread-otshell.conf to configure and start Thread manually.

Building and running

Before you start, make sure you have set up the KNX IoT add-on as described in the Requirements and setup page.

You can build using either the nRF Connect for VS Code extension or the command line.

  1. Open the sample folder in VS Code with the nRF Connect extension installed.

  2. Select a supported board target.

  3. Build and flash the sample.

To enable verbose KNX stack logging for debugging, build the sample with the knx-verbose-logging snippet:

west build -b nrf54l15dk/nrf54l15/cpuapp -S knx-verbose-logging

In the nRF Connect for VS Code extension, add -DSNIPPET=knx-verbose-logging to Extra CMake arguments in your build configuration.

Testing

To prepare the device for the certification tests, complete the following steps:

  1. Join the device to the Thread network as described in the Quick start guide with ETS.

  2. Wait until LED 0 remains on.

  3. If the test tool asks for the device certificate, read the onboarding QR string from the device shell:

    knx_iot qr_code
    
  4. Run the KNX IoT certification test template in EITT.

Dependencies

This sample uses the KNX IoT stack provided by the KNX IoT add-on, together with the following nRF Connect SDK components:

It also uses the following Zephyr libraries: