Cumulocity offers a wide range of functionality for interfacing IoT devices and other IoT-related data sources with the Cumulocity IoT platform.
For interfacing devices with Cumulocity, we recommend to use MQTT and SmartREST 2. SmartREST 2 can be very efficiently implemented using generally available MQTT client libraries such as Eclipse Paho.
An up-to-date, open source reference implementation of a Cumulocity agent for embedded Linux systems with many device management features can be found at https://bitbucket.org/m2m/cumulocity-agents-linux. Note that the reference implementation currently uses SmartREST 1 with the choice to switch between HTTP and MQTT as transport protocol.
For information on the general concept of agents being used for interfacing IoT data sources with Cumulocity, refer to Interfacing devices in the Concepts guide.