Datapoints and Connections

A datapoint is a data value or structured set of values where each value has specified encoding, units, range, and scaling. A datapoint may be published or subscribed to by an IzoT device, or it may be published by an IzoT Server via the IzoT REST API. A datapoint published or subscribed to by an IzoT device is called a device datapoint, and is also called a network variable. A datapoint published by an IzoT Server is called a server datapoint. Both types of datapoints are just called "datapoint" when used in the context of a device or an IzoT Server.

Device datapoints may be shared among multiple IzoT-enabled devices. Each device datapoint represents a single scalar value or a structure or union of multiple values containing 1 to 225 bytes. A device may have multiple datapoints, and each datapoint may be shared with one or more datapoints on any device or group of devices within an IzoT network.

Every datapoint has a direction, type, and length. The datapoint direction can be either input or output, depending on whether the datapoint is used to receive or to publish data. The datapoint type determines the encoding and units of the data.

Datapoints with the same type and length, but with opposite directions, can be connected to allow the devices to share information. Connections can be established between output and input datapoints on different devices, or between output and input datapoints on the same device. The latter type of connection is called a turnaround connection. Connections may be thought of as “virtual wires,” replacing the physical wires of traditional hard-wired systems.

An example of two devices with a connection between them is an application on a lighting LED controller device that has a load control input datapoint, and a second application on a keypad device that has a load control output datapoint. Using IzoT ISI, the keypad output can be connected to the LED controller input, either automatically or manually, under user control. This type of connection from a single output to a single input is called a unicast connection.

A single datapoint may be connected to multiple datapoints of the same type, but with opposite directions. A connection of an output datapoint to multiple input datapoints is called a multicast connection.

When notification is required of datapoint update delivery, the sending device can request acknowledgements from each of the destination devices, and the device stack automatically manages retries to any devices that do not acknowledge receipt.

The application program in a device does not need to know anything about where its input datapoint values come from, or where its output datapoint values go. When the application program has a changed value for an output datapoint, it simply passes the new value to the IzoT stack. Rather than expose the internal operation and configuration of every device to every other device on a network, datapoints allow devices to only expose data that is required to interoperate with other devices.  

Datapoints provide a data-oriented application protocol rather than a command-oriented application protocol. Application data items such as temperatures, pressures, colors, states, text strings, and other data items are exchanged between devices in standard engineering and other predefined units. Commands are encapsulated within the application programs of the receiver devices rather than being sent over the network. In this way, the same engineering value can be sent to multiple devices which each have a different application program, and potentially different commands, for that data item.

The datapoint concept simplifies the programming of complex distributed applications. Datapoints provide a flexible view of distributed data to be operated on by the devices in a system. Your IzoT-enabled  application does not have to deal with message buffers, network addressing, request/respond/retry processing or other low-level details that typically require management by other protocols.