Device Services - existing and work underway

This page contains a list of device services that currently exist, are under development, or are considered archived (potentially serving as example code at best).

Current Device Services

Modbus (Go):  Written with the Go SDK.  Provides generic connectivity to read and write Modbus input status, coils, input registers and holding registers.  This implementation works for both TCP and RTU connections.

https://github.com/edgexfoundry/device-modbus-go

MQTT (Go):  Written with the Go SDK.  Provides the connectivity to listen to and publish to the specific MQTT topics.

https://github.com/edgexfoundry/device-mqtt-go

SNMP (Go): Written with the Go SDK and used to provide data ingestion and command/control of a Dell N-series PoE switch. Future development plans include abstraction for use with other switch types.

https://github.com/edgexfoundry/device-snmp-go

Grove (C):  Written with the C SDK.  A device service to communicate with the Grove PI sensors. 

https://github.com/edgexfoundry/device-grove-c

Virtual Device (Go): Written with the Go SDK. This device service simulates different kinds of devices with different data types to generate Events and Readings to the Core Data micro service, and allows sending commands through the Command micro service.

https://github.com/edgexfoundry/device-virtual-go

Camera (Go): Written with the Go SDK and used to provide access to still images and RTP video streams from ONVIF compliant IP cameras. Also provides access to metadata on Axis cameras.

https://github.com/edgexfoundry-holding/device-camera-go

REST(Go): Written with the Go SDK. This device service provides easy way for 3rd party applications, such as Point of Sale, CV Analytics, etc., to push data into EdgeX via the REST protocol.  The current implementation is meant for one-way communication into EdgeX via async readings.

https://github.com/edgexfoundry/device-rest-go

BACnet (C):  Wirtten with the C SDK.  A device service to communicate with BACnet sensors/devices (IP and MSTP)

https://github.com/edgexfoundry/device-bacnet-c

CoAP (C):  Written with the C SDK.  A device service to do specialized Internet Application Protocol for constrained devices.

https://github.com/edgexfoundry/device-coap-c

GPIO (Go):  Written with the Go SDK.  GPIO is a standard interface used to connect microcontrollers to other electronic devices. It is also very popular with Raspberry Pi adopters given its availability on the devices.

https://github.com/edgexfoundry/device-gpio

LLRP / RFID (Go): Low Level Reader Protocol (LLRP) is a standardized network interface to many RFID readers.

https://github.com/edgexfoundry/device-rfid-llrp-go

In Development

Contact the party associated with the development to get more background, status and potentially early code drops.

UART (Go):  being developed by Jianxing Intelligence in Go.  Universal Asynchronous Receiver/Transmitter (UART) is serial data communications and is used in modems and can be used with USB in a USB to UART bridge.

https://github.com/edgexfoundry-holding/device-uart

OPC UA (C):  being developed by IoTech using the C SDK.  A device service to communicate with OPC UA sensors/devices.

https://github.com/edgexfoundry-holding/device-opcua-c

Bluetooth (C):  being developed by IoTech using the C SDK.  A device service to communicate with BLE devices/sensors.

https://github.com/edgexfoundry-holding/device-bluetooth-c

GPS (C):  being developed by IoTech and written in Go.  A device service to communicate with GPS devices/sensors.

https://github.com/edgexfoundry-holding/device-gps

Archived (device services no longer supported or potentially functioning)

MQTT (Java):  https://github.com/edgexfoundry/device-mqtt

Modbus (Java):  https://github.com/edgexfoundry/device-modbus

SNMP (Java): https://github.com/edgexfoundry/device-snmp

Bluetooth (Java): https://github.com/edgexfoundry/device-bluetooth

Fischertecknic (Java): https://github.com/edgexfoundry/device-fischertechnik

Bacnet (Java): https://github.com/edgexfoundry/device-bacnet

Random Number Generator (Go): https://github.com/edgexfoundry/device-random Archived and moved to edgex-examples.  Written with the Go SDK and demonstrates the simplest of device services - generating a random number (ints of different size) on a scheduled interval and sends the number as an Event/Reading to Core Data.  It also allows the random number range to be set through a request via the Command micro service (demonstrating commands).

Commercially available

from IOTech Systems

Commercial connectors (Current):

  • BLE in C
  • Zigbee in C
  • GPS in C
  • CAN in C
  • CANOpen in C
  • MEMS in C
  • EtherCat in C
  • EtherNet/IP in C
  • Profinet in C
  • OPC-UA Pub/Sub in C
  • Siemens S7 in C
  • File reader in C
  • There are additional commercial MQTT (Go), Modbus (Go), OPC-UA (in C) and BACnet (in C) that have added features over the community editions

Commercial connectors (Future):

  • ONVIF in C (summer 2020)