Getting Started as a Developer

The Unify Developer Guide contains a lot of useful information for Unify developers.

The Unify Build Guide is the best starting point for working with the source code.

The Unify User Guide contains helpful tips on debugging within Unify.

Development Platform Recommendations

The Unify reference platform is a Raspberry Pi 4 however it is understood that users may not wish to run on a Raspberry Pi in a final product. Porting to Debian based linux should be straightforward.

System requirements for flash, RAM, and dependencies are listed at here

Developing IoT Services

The IoT or cloud connector must use UCL (MQTT) to communicate with the other components of Unify. See How to Develop an IoT service Unify uses MQTT to communicate among each component using the Mosquitto MQTT broker. UCL is the format of the MQTT messages. The Unify Framework Specification contains the definitions for UCL.

Also see UCL MQTT API

Developing protocol controllers

See How to Develop a Protocol Controller

The attribute mapper helps to translate protocol commands to UCL MQTT messages. See How to write UAM files

Extend UCL clusters

See How to write a new Cluster

It might be needed for non-zigbee controllers if some description are missing.

Overview of relations among Unify Applications

The Unify Framework consists of several applications including Protocol Controllers, IoT Services (e.g. Developer GUI, UPTICap) and multiple application services that facilitate various functionalities such as SmartStart Provisioning, Group Management, Name and Location Service and OTA Image Provider.

The following table presents the relationship amongst Unify Framework applications and the Unify Protocol Controllers. If a given component is supported via a Protocol Controller, it will be marked as [x].

ZPC ZigPC AoXPC
UPVL [x] [x]
GMS [x] [x]
NAL [x] [x] [x]
OTA Image Provider [x] [x]
Dev GUI [x] [x] [x]
UPTICap [x] [x]
UPTIWriter [x] [x]
AoX Positioning [x]