cablelabs / Streamlined_Onboarding_Demo

Resources and aggregated source for demo of Streamlined Onboarding (DPP integrated with OCF).
Apache License 2.0
1 stars 1 forks source link

Streamlined Onboarding Demo

Author: Andy Dolan (a.dolan@cablelabs.com)

Documentation Manifest

Overview

This repository contains the core components to execute a demonstration of Streamlined Onboarding, the use of Wi-Fi Easy Connect (AKA Device Provisioning Protocol or DPP) to onboard OCF Devices immediately after they are associated to the Wi-Fi network.

A Debian-based Linux environment is assumed for this demonstration.

Figure 1: Overview of Streamlined Onboarding Flow

The general flow of the streamlined onboarding demo is pictured above; its general steps are as follows:

  1. The user scans the Easy Connect QR code (containing the Easy Connect URI) presented by the client OCF device.
  2. The system (or user) presents the Easy Connect URI to the Easy connect Configurator.
  3. Network-layer onboarding occurs:
    1. The Configurator starts the Easy Connect onboarding.
    2. As part of the Easy Connect configuration request, the client device provides its OCF UUID & simple secret.
    3. Upon reception, the Easy Connect Configurator relays the client's OCF information to the Diplomat (black arrow).
    4. Once the client device has connected to the network, the diplomat provides the client's OCF information to the OBT (thin, solid, blue arrow).
  4. The OBT performs automated discovery of the client device, filtered to the client's UUID.
  5. When the client device responds to discovery, the OBT onboards it, leveraging the simple secret provided over the network-layer onboarding.

The diagram above displays two client devices, a lamp and a light switch. Once both client devices are onboarded through this method, a final step of provisioning access between the two so that the switch can operate on the lamp is performed through the OBT.

Inventory of Components

This implementation of Streamlined Onboarding is made up of a number of components that operate together at different layers and in different roles in the architecture. Not all components are fully realized or packaged, and executing the demo requires installation of dependencies, building of source, configuration, and execution in a correct sequence to work correctly. The necessary dependencies are available as submodules of this repository.

Roles

For an overview of what each role in the architecture does, refer to the Streamlined Onboarding specification (OCF), and the Wi-Fi Easy Connect specification (WFA). The key roles that are used in this implementation are as follows:

Devices

To facilitate this demo, at least two Wi-Fi enabled Linux devices are needed. These devices can be thought of in the following way:

For the sake of simplicity, this README generally assumes that these are the only two devices in use, and refers to them accordingly below.

Software Components

The software components of this demo include the following:

Note on Web-Based OBT

Note that our modified version of IoTivity-Lite also includes a web-based onboarding tool written in Python. This can be the primary OBT used on the access point, or the command-line-based OBT can also be used.

However, note that, at the time of writing, the web-based OBT is not fully merged into the primary branch of the SO_IoTivity-Lite repository used in this demo, and may need to be built separately.

Caveats and Exceptions

Note that this version of the demo is not entirely compliant with the OCF streamlined onboarding specification, in that the information that is provided over the DPP channel during network association does not conform to what is outlined in the specification.

Again, further documentation is needed on building and running the web-based OBT, as its source is distributed between the upstream OCF IoTivity-Lite repository and the CableLabs fork of IoTivity-Lite (SO_IoTivity-Lite).

The graphical lightswitch device is intended to be run on a Raspberry Pi 3 with an additional Adafruit PiTFT. The source relies on specific GPIO functions that can be "mocked" through special environment variables, so that the interface can be run on a regular Linux desktop environment without GPIO. See the dotenv_template file for more information.

OBT and VLANs

The OBT relies on multicast IPv6 traffic for discovery of OCF devices. When the OBT is executed on the AP and VLANs are in use (as is the case when using the NetReach AP), ensure that multicast traffic originating from the OBT is reflected to all VLANs to ensure discovery of client devices.

Alternatively, the OBT can be run on a separate device on the same VLAN as client devices to be onboarded. The OBT can be considered logically separate and need not be tightly coupled to any particular device in this demo's architecture, so long as it can reach the DPP Diplomat and client devices.