# Dotdot

## Summary


Dotdot is the universal language of the Internet of Things (IoT), making it possible for devices to work together on any network. Dotdot makes devices interoperable, regardless of vendor or connectivity technologies. Consumers can buy any appliance and expect it to talk to other appliance, so long as both Dotdot certified.

Dotdot was developed by the Zigbee Alliance, an open, global, non-profit organization. Dotdot itself was made possible by the Zigbee Cluster Library (ZCL) defined for the Zigbee stack. Dotdot is more universal. It sits at the application layer but lower layers can be Zigbee, Thread, Wi-Fi, Bluetooth, and more. Zigbee devices could already interoperate among themselves seamlessly. Dotdot extends this to non-Zigbee devices. 

Other organizations or communities (Bluetooth, OMG, OCF, GS1, Haystack, Schema.org) are also developing specifications for IoT interoperability at the application layer. These could complement or compete against Dotdot.

## Discussion

### What's the need for Dotdot?

IoT devices connect with various wired or wireless technologies and networking protocols. That's fine so long as devices can understand one another at the application layer. 

Back in 2017, a toaster couldn't communicate with a coffee machine. A smart hub probably couldn't control an off-the-shelf smart lock or thermostat. A light switch couldn't turn off or dim a lamp. This is because devices come from different vendors. Their interfaces are either closed, limited or proprietary. For example, devices from Apple, Google, Amazon or Samsung probably need different mobile apps to control them. 

This is a difficult scenario for any systems integrator who has to understand and interface many different technologies. Even at runtime, devices will sacrifice some processing to protocol translation. What we need is a common language at the application layer that all devices can understand. This is exactly what Dotdot provides. 

It's possible to build a cloud platform that understands all devices. The cloud then becomes the convergence point for devices to talk to one another. But for many applications, relying on the cloud is unacceptable due to reliability, complexity and latency. 


### What are the benefits of using Dotdot?

Dotdot has the following benefits:  

    + Single solution for all markets - A single application layer that works over many networks means a single choice for developers and consumers. This ends market fragmentation across segments: home, building, industrial, retail, health, energy, and more.
    + Easy - All necessary documents, references and tools are available in a single location and a single certification mark on every certified product and package.
    + Secure - Unique IDs, DTLS sessions, operational certificates and Access Control Lists (ACLs).
    + Global - Built on the open standards and global membership of 400 Zigbee Alliance members. Uses 2.4 GHz and 800-900 MHz bands that are globally available.
    + Proven - Based on the Zigbee Cluster Library (ZCL) that's deployed in over 300 million products for over 10 years.
    + Reliable and robust - Dotdot brings a rich catalog of device interaction models to IP networks. This enables devices to interoperate natively, while being able to interact with similar/complimentary devices on a Zigbee network.
    + Interoperable - Certification ensures device-to-device interoperability. Enables and connects multi-vendor ecosystems.

### Where does Dotdot fit within the protocol stack?

Dotdot is meant for the application layer. Zigbee Alliance also has a certification program to certify devices that are compliant to the Dotdot specification. At the lower layers, Dotdot can interwork with any network or connectivity protocol. This includes Zigbee, Thread, Wi-Fi, Bluetooth, and more. 

With Dotdot, we can have direct device-to-device communications within a Zigbee network or within a Thread network. When a Zigbee device needs to talk to a Thread device, there will be a gateway to translate between the two network. However, the devices can understand each other at the application layer, thanks to Dotdot. With Dotdot over Thread, there's no need for a gateway to connect the device to the cloud. Since Thread is IP based, such devices can directly talk to the cloud. 


### How is Dotdot related to the Zigbee Cluster Library (ZCL)?

Zigbee Alliance standardized ZCL so that different devices can interoperate at the application layer. ZCL contains 100+ device types, 2400+ certified products, and has matured over 15 years. Only problem with ZCL is that it works only with the Zigbee stack. This is where Dotdot fits in. 

Dotdot can be seen as a universal application layer that can work with any underlying stack. As an example, Dotdot interfacing to Thread stack was shown at CES 2017. In this case, ZCL maps to CoAP Resources and HTTP verbs such as GET, PUT, POST, and DELETE. 

Dotdot enables Zigbee devices to get connected to the Internet. In fact, Dotdot is considered an alias for **ZCL over IP (ZCLIP)**. It's been said that, 

> Dotdot is a standard that allows you to put ZCL on any “rails” other than Zigbee – WiFi, Thread, and so on.

ZCL is optimized for constrained devices. Messages are compact, most fitting within 127-byte 802.15.4 packet. Zigbee Alliance gets a head start by reusing the work done on ZCL for IP networks. 


### Which are the documents relevant to Dotdot development?

For mapping ZCL to IP and RESTful interfaces, the following IETF documents are relevant: 

    + RFC 6690: Constrained RESTful Environments (CoRE) Link Format
    + RFC 7252: Constrained Application Protocol (CoAP)
    + RFC 7049: Concise Binary Object Representation (CBOR)ZCL Specification is an essential reference. It's also worth reading NXP's ZCL User Guide.


### What exactly is the Dotdot Commissioning App?

The Dotdot Commissioning App is an app that's mostly based on the Thread Commissioning App developed for commissioning Thread-enabled devices. This app facilitates management and expansion of a Dotdot network. 

The app first discovers Dotdot-compliant devices in a Thread network. It interrogates each device to discover services, clusters and endpoints. It discovers commands supported by each device. Once this is done, the app can send commands and change attributes on devices. 

Zigbee Alliance members get access to this app. This saves operators the trouble of developing their own apps.


### What are the alternatives to Dotdot?

IoTivity is a reference implementation of Open Connectivity Foundation (OCF) specifications. It uses RESTful interfaces. 

IPSO Alliance is also involved in defining specifications. 

Object Management Group (OMG) defined the Data Distribution Service (DDS) for it's Industrial Internet Consortium (IIC). OMG has defined standards for healthcare and retail. 

Bluetooth Special Interest Group (SIG) concerns itself with application layer interoperability among constrained devices. It does this via Generic Attributes (GATT) profiles and assigned numbers. 

GS1 is involved in supply chain standards for data exchange across Retail, Healthcare, and Transport & Logistics industries. It's standards include EPC Information Service (EPCIS), Core Business Vocabulary (CBV), Global Product Classification (GPC), and more. 

IETF's Extensible Provisioning Protocol (EPP) is an application-layer, client-server protocol for the provisioning and management of objects stored in a shared central repository. Developed for Internet domains and hosts, it can be extended to IoT. 

Project Haystack is an open community looking at semantic data models and web services. 

Schema.org manages a common set of semantic schemas. It's current ontology can be extended to IoT. 

## Milestones

2007

Zigbee Alliance publishes the first release of the **Zigbee Cluster Library (ZCL)**. Revision 6 of this document appears in January 2016. A cluster is a related collection of commands and attributes, which together define an interface to specific functionality. Example clusters include HVAC, lighting, security and safety, and measurement and sensing. ZCL later becomes a starting point for Dotdot.

2013

At a meeting in Boston, a stack vendor and two door lock manufacturers discuss how best to interface their products. Over a few days, they agree on what eventually becomes the **Door Lock Cluster** within ZCL. This cluster defines how doors can be locked/unlocked or their pin codes changed. This is just one example about how clusters in ZCL are organized around specific device types. 

2017

Though the IoT world has seen a number of protocols at the connectivity layers the last few years, this is the year when there's serious talk about interoperability at the application layer. Since various devices have to understand one another in terms of types, capabilities and interfaces, it's also called **semantic interoperability**. Many specifications and guidelines are available by the end of the year. 

Jan  
2017

At CES, Zigbee Alliance demonstrates how Dotdot can enable devices across Zigbee and IP networks talk to each other. In particular, they show Thread-based devices that have Dotdot at the application layer. 

Feb  
2017

Thread Group releases version 1.1 of the **Thread specification** and a certification program. 

Dec  
2017

The Zigbee Alliance and Thread Group announce the availability of the **Dotdot over Thread Specification**. The specification is available to Zigbee Alliance members. By mid-2018, they expect to release Dotdot Commissioning Application and launch a certification program. 

Jan  
2019

Dotdot over Thread certification program is launched. Support for more networks other than Thread is added later in the year.