Device Services
Introduction to Device Services
Device Services are the software connectors that interact with the physical devices, sensors, actuators, and other IoT objects that reside at the edge, such as:
- Home appliances
- Industrial machines
- Alarm systems
- HVAC equipment
- Lighting
- Irrigation systems
- Drones
- Traffic systems
- Automated transportation
The data collected from devices is delivered to the Edge Xpert Core Services layer for normalization and aggregation. From there, the data can be delivered to other edge components such as the Edge Xpert Supporting Services or Edge Xpert Application Services.
The Device Services communicate to the edge devices using their native industrial protocol, with services provided for industry standards including BACnet, Modbus, OPC-UA, and many more.
Device Service Features
All Device Services do the following:
- Register with the Core Metadata service
- Obtain configuration settings
- Register with the Registry Service
- Onboard and manage the edge devices. This process is called provisioning the device. Some device services are able to automatically detect and provision the device, See Automatic Discovery
- Update and inform Edge Xpert of the operating state of the device
- Monitor for configuration changes and apply the new configuration
- Obtain sensor data and pass the data to the Core Data microservice
- Receive and respond to actuation commands
Auto Events or Data on Demand
Data collected from devices by a device service is marshaled into events and reading objects (delivered as JSON objects in service REST calls). This is one of the primary responsibilities of a device service.
This data can be polled and written to on-demand through user-submitted REST API calls.
Alternatively, auto events can be configured for each device to schedule events on specific resources at defined intervals. Auto events have three configurable fields:
-
Resource. The name of the resource
-
Interval. The required interval. This is specified in an alphanumeric string, for example, 5m indicates five minutes, 1hr indicates one hour, 5000 μs indicates 5000 microseconds
-
On Change. This indicates if events should only be created when data values have changed
- If set to
true
, this will only poll the device when data has changed, if no change has occurred, an event will not be generated. - If set to
false
, this will poll the device at every interval, regardless of whether or not a change in data values has occurred.
- If set to
Auto events are defined when configuring a device. If necessary, they can be added to, modified, or removed from devices by editing a device.
Admin State
The Admin State is either LOCKED
or UNLOCKED
for each device. This is an administrative condition applied to the device. This state is periodically set by an administrator of the system — perhaps for system maintenance or upgrade of the sensor. When LOCKED
, requests to the device via the device service are stopped and an indication that the device is locked (HTTP 423 status code) is returned to the caller.
Using Device Services
Device services can be managed through both cURL commands, or the Edge Xpert Manager UI.
Starting a Device Service
To start a device service, enter the following command:
edgexpert up <device-service>
Adding Device Profiles
Once a device service is started, you can add device profiles. A device profile details resources and commands that are available on that device type.
For further information on device profiles, see Device Profiles.
Adding Devices
When adding a device connection to Edge Xpert, you must provide information that depends on the protocol used. Some examples of the information that could be required are as follows:
- The hardware port (for example, serial) to which the device is connected
- The IP address of the device
- The MAC address of the device
- The TCP/IP port used for the connection
- A hierarchical path
The required information is detailed in the documentation for each supported device service.
Some Device Services support automatic discovery which where the sensors and devices that are running in a local network can be dynamically discovered by Edge Xpert and automatically onboarded to the platform. This feature can greatly minimize the configuration required to locate and onboard devices in a specific deployment scenario and can help to simplify the roll out of the solution at scale.
Warning
A device service must be started and a compatible device profile must be uploaded prior to adding a device
Device Interaction
Once the above steps have been completed, you can start interacting with devices. Device services use a REST API for interaction.
For further information on the Device Service API, see API Documentation.
Current Device Services
Edge Xpert is always adding new device services. The currently available device services are as follows:
Device Service | Port | Description | Language |
---|---|---|---|
BACnet (IP) | 59980 |
Integrates the BACnet protocol into Edge Xpert. Compatible with BACnet/IP | C |
BACnet (MSTP) | 59981 |
Integrates the BACnet protocol into Edge Xpert. Compatible with BACnet/MSTP | C |
BLE | 59984 |
Integrates the BLE protocol into Edge Xpert | C |
EtherNet/IP | 59959 |
Supports connections over the EtherNet/IP protocol | C |
GPS | 59987 |
Supports reading of GPS data via a GPS daemon | C |
Modbus | 59901 |
Integrates the Modbus protocol into Edge Xpert. Compatible with TCP/IP and RTU | C |
MQTT | 59982 |
Integrates the MQTT protocol into Edge Xpert | Go |
ONVIF Camera | 59985 |
Integrates ONVIF Camera with Edge Xpert | C |
OPC-UA | 59953 |
Integrates the OPC-UA protocol into Edge Xpert | C |
REST | 59986 |
Allows third-party applications, such as Point of Sale (POS) systems and CV Analytics, to push data to Edge Xpert using the REST protocol | Go |
S7 | 59958 |
Integrates the S7 protocol into Edge Xpert | C |
USB Camera | 59983 |
Integrates USB cameras with Edge Xpert | C |
Virtual | 59900 |
An example device service used for testing and demonstrative purposes | Go |
WebSocket | 59950 |
Allows applications to push data into Edge Xpert via the WebSocket protocol | Go |