Terminologies
These are terminologies widely used in the IoT world and Libertas.
Node (or Thing)
In the world of the Internet of Things (IoT), to sound more cliché, we don’t use words like “device” or “sensor.” Instead, we call “things” “things,” and we call a thing “a node.”
Endpoints
A node is a physical device. A physical device may have more than one functional component.
For example, below is a dual-socket power supply. The entire device is a node.
Each socket may be a separate endpoint only if each can be individually controlled on/off separately.
If the two sockets cannot be individually controlled, they are of the same endpoint.
In Libertas, an endpoint is also called “a logical device.” Other platforms may not use this terminology.
Clusters, Commands, and Attributes
Each endpoint shall support one or more clusters. A cluster is equivalent to some functional capabilities. In other words, a cluster is like an interface definition in Java programming language with a set of attributes (properties) and commands (methods).
For example, an on/off light shall support the “On Off Cluster.”
The “On Off Cluster” shall have an attribute of “On_Off,” which shall be of “boolean” data type.
Also, the “On Off Cluster” shall support at least two commands, “On Command” and “Off Command”; each will turn the light on or off accordingly. Executing the command will also change the “On_Off” attribute accordingly.
The attribute may be remotely queried by other devices or voluntarily reported by sending a “Report” packet frame.
More on Attributes and Commands
Here are guidelines on when one shall use attributes or commands.
- Commands are used to represent some “actions,” while attributes are used to represent some “states.”
- Commands can perform some actions with a smooth transition of states, for example, “dim the light to 100% within 2 seconds”. However, attributes are not designed to perform actions like that.
- Commands can be designed to carry any complex data structure while carrying complex (especially nested) data structure with attributes is more efficient or convenient.
- Attributes can carry “simple” state change actions using the “write attribute” command. In contrast, we can use “report attribute” commands to carry periodic reports that may not result from immediate action.
The above are Libertas implementation guidelines, although there have never been any official guidelines.
Binding
The Internet of Things is all about interconnectivity and interactivity. A thing shall be able to directly connect to and communicate with other things.
Binding has been with the Zigbee standard for over a decade. Matter also adopts the concept of binding.
End-users ultimately control bindings. For example, in the diagram below, the end-user wants to control the dimmer light with three switches and one remote. When the state of the light changes, the change shall be sent to all three switches except the remote (so that the indicator on the switch will reflect the current dim level). Therefore, binding can be bi-directional or unidirectional.
A Libertas Thing-App can run on a device and interact with other devices. Interactions require establishing interconnections first. The Libertas system (the central controller) automatically manages Thing-App bindings. Because users create, modify, and remove the Thing-App tasks, Thing-App bindings indirectly result from user actions.
Libertas Cluster Library is designed to hide the details about underlying binding. When an API is called to generate a new command, the underlying framework will try its best to deliver the command to each bound recipient. Likewise, when an API is called to notify an attribute is updated, the framework will try to deliver the update to each bound recipient.
Local and Remote Endpoint
Binding is a directional, one-to-many relationship between a local endpoint and one or more remote endpoints. In the example above, the light bulb may be bound to 4 remote endpoints, one remote controller, and three switches as a local endpoint.
Matter Data Model
The Matter smart home, Zigbee Protocol, and our Libertas platform all follow the same data model, the Zigbee Cluster Library.
The data model introduces concepts such as Clusters, Attributes, and Commands, which we will explain later.