Useful Packages for MRAA (UPM) is a user space collection of sensor and actuator libraries written in the C/C++ language. The Eclipse UPM project abstracts implementation details for reading sensor data and writing actuator commands through the use of consistent APIs and function names. The project focuses on multiple key features:
- Standardization of sensor classes: UPM standardizes sensor and actuator APIs based on type in order to create consistency between devices and vendors. The meaningful sensor data make it easy to consolidate data readings into other standardized frameworks and services.
- Portability and scalability: Applications using the UPM libraries are portable across any MRAA supported platform offering the same I/O capabilities with little or no changes required. UPM promotes scaling to different IoT systems if computational requirements for the application change.
- Industrial sensor and protocol support: UPM provides rich device and API abstractions for multiple industrial and wireless protocols such as BACnet*, Modbus*, CAN bus*, LoRa*, Zigbee* and Z‑Wave*. Nearly half of the devices currently on the UPM list are complex industrial-rated sensors, actuators, and radios.
- Solution design reliability: The UPM library doesn’t lock down application development to a single vendor for popular sensor types. When multiple vendors provide the same type of sensor, the generic UPM interfaces enable hardware replacement with little or no API changes.
- Device utilization examples: Every sensor driver in the UPM library comes with at least one usage example. They are generally provided for all the supported languages. Examples showcase initial device configuration and calibration where applicable.