{"id":26259772,"url":"https://github.com/eclipse-upm/upm","last_synced_at":"2025-11-17T03:42:23.249Z","repository":{"id":52260404,"uuid":"20530177","full_name":"eclipse-upm/upm","owner":"eclipse-upm","description":"UPM is a high level repository that provides software drivers for a wide variety of commonly used sensors and actuators. These software drivers interact with the underlying hardware platform through calls to MRAA APIs.","archived":false,"fork":false,"pushed_at":"2025-11-03T05:00:51.000Z","size":27610,"stargazers_count":666,"open_issues_count":66,"forks_count":411,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-11-12T13:02:59.427Z","etag":null,"topics":["actuators","c","cpp","internet-of-things","iot","java","nodejs","python","sensor","upm"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-upm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-05T15:20:41.000Z","updated_at":"2025-11-03T05:01:00.000Z","dependencies_parsed_at":"2023-02-15T21:45:56.799Z","dependency_job_id":null,"html_url":"https://github.com/eclipse-upm/upm","commit_stats":null,"previous_names":["intel-iot-devkit/upm","eclipse-upm/upm","eclipse/upm"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-upm/upm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-upm%2Fupm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-upm%2Fupm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-upm%2Fupm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-upm%2Fupm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-upm","download_url":"https://codeload.github.com/eclipse-upm/upm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-upm%2Fupm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284818572,"owners_count":27068110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-17T02:00:06.431Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actuators","c","cpp","internet-of-things","iot","java","nodejs","python","sensor","upm"],"created_at":"2025-03-13T23:01:11.354Z","updated_at":"2025-11-17T03:42:23.232Z","avatar_url":"https://github.com/eclipse-upm.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/eclipse/upm/blob/master/docs/icons/upm_logo.png\" height=\"150px\" width=\"auto\" algt=\"UPM Logo\"/\u003e\n\u003c/p\u003e\n\nEclipse UPM Sensor and Actuator Repository\n==============\n\nThe Eclipse UPM repository provides software drivers for a wide variety of\ncommonly used sensors and actuators. These software drivers interact with the\nunderlying hardware platform (or microcontroller), as well as with the attached\nsensors, through calls to [Eclipse MRAA](https://github.com/eclipse/mraa) APIs.\n\nProgrammers can access the interfaces for each sensor by including the sensor's\ncorresponding header file and instantiating the associated sensor class. In the\ntypical use case, a constructor initializes the sensor based on parameters that\nidentify the sensor, the I/O protocol used and the pin location of the sensor.\nAs of UPM 2.0, sensor initialization can also be done, in most cases, via\noverloaded constructors that accept string identifiers.\n\nWe endorse additions that implement the generic C and C++ interfaces provided\nwith the libraries. With the 2.0 release, UPM introduces the following sensor\ninterfaces:\n```\niAcceleration, iAngle, iButton, iClock, iCollision, iDistance,\niDistanceInterrupter, iEC, iElectromagnet, iEmg, iGas, iGps, iGyroscope,\niHallEffect, iHeartRate, iHumidity, iLight, iLineFinder, iMagnetometer,\niMoisture, iMotion, iOrp, iPH, iPressure, iProximity, iTemperature, iVDiv,\niWater.\n```\nThe developer community is invited to propose new interfaces for actuator types.\n\nThe UPM project is joining the Eclipse Foundation as an Eclipse IoT project.\nYou can read more about this [here](https://projects.eclipse.org/proposals/eclipse-upm).\n\n### Example\n\nA sensor/actuator is expected to work as such (here is the MMA7660 accelerometer API):\n```C++\n  // Instantiate an MMA7660 on I2C bus 0\n  upm::MMA7660 *accel = new upm::MMA7660(MMA7660_DEFAULT_I2C_BUS,\n                                         MMA7660_DEFAULT_I2C_ADDR);\n\n  // place device in standby mode so we can write registers\n  accel-\u003esetModeStandby();\n\n  // enable 64 samples per second\n  accel-\u003esetSampleRate(MMA7660_AUTOSLEEP_64);\n\n  // place device into active mode\n  accel-\u003esetModeActive();\n\n  while (shouldRun)\n    {\n      float ax, ay, az;\n\n      accel-\u003egetAcceleration(\u0026ax, \u0026ay, \u0026az);\n      cout \u003c\u003c \"Acceleration: x = \" \u003c\u003c ax\n           \u003c\u003c \"g y = \" \u003c\u003c ay\n           \u003c\u003c \"g z = \" \u003c\u003c az\n           \u003c\u003c \"g\" \u003c\u003c endl;\n\n      usleep(500000);\n    }\n```\n\nBrowse through the list of all [examples](https://github.com/eclipse/upm/tree/master/examples).\n\nMulti-sensor samples for starter and specialized kits can be found in the\n[iot-devkit-samples](https://github.com/intel-iot-devkit/iot-devkit-samples) repository.\n\n### Supported Sensors\n\nSupported [sensor list](http://iotdk.intel.com/docs/master/upm/modules.html) from API documentation.\n\n### IDE Support and More\n\nThe UPM project includes support for multiple industrial-grade sensors, actuators, radios,\nprotocols and standards in use today. It is also highly integrated with the Eclipse IDE \nthrough the help of the Foundation's partners.\nLearn more about [tools](https://software.intel.com/en-us/tools-by-segment/systems-iot).\n\n### Installing UPM\n\nFind notes on how to install UPM on various OS'es on this [page](docs/installing.md).\n\n### Building UPM\n\nSee building documentation [here](docs/building.md).\n\n[![Build Status](https://travis-ci.org/intel-iot-devkit/upm.svg?branch=master)](https://travis-ci.org/intel-iot-devkit/upm)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=upm-master\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=upm-master)\n\n### Guidelines and rules for new UPM contributions\n\nBefore you begin development, take a look at our naming [conventions](docs/naming.md).\nThe name you pick for a newly added sensor needs to be unique in the UPM library.\n\nNext, review the project's [contribution guide](docs/contributions.md).\n\nMake sure you add yourself as an author on every new code file submitted.\nIf you are providing a fix with significant changes, feel free to add yourself\nas a contributor. Signing-off your commits and accepting the ECA is mandatory\nfor making new contributions to this project.\n\nDocumenting your code is also a big part of the task. We have a strict set of\ntags used to classify our sensors and their capabilities. You can find out more\nabout this in our [section](docs/documentation.md) on documenting a sensor API.\n\nFinally, if you really want to ensure consistency with the rest of the library,\nand the intel-iot-devkit repositories in general, take a look at our extensive\n[author guide](docs/guidelines.md).\n\nAPI Documentation\n==============\n\n\u003ca href=\"http://iotdk.intel.com/docs/master/upm\"\u003e\u003cimg src=\"docs/icons/c++.png\"/\u003e\u003c/a\u003e\n\u003ca href=\"http://iotdk.intel.com/docs/master/upm/java\"\u003e\u003cimg src=\"docs/icons/java.png\"/\u003e\u003c/a\u003e\n\u003ca href=\"http://iotdk.intel.com/docs/master/upm/python\"\u003e\u003cimg src=\"docs/icons/python.png\"/\u003e\u003c/a\u003e\n\u003ca href=\"http://iotdk.intel.com/docs/master/upm/node\"\u003e\u003cimg src=\"docs/icons/node.png\"/\u003e\u003c/a\u003e\n\n### API Compatibility\nEven if we try our best not to, every once in a while we are forced to modify\nour API in a way that will break backwards compatibility. If you find yourself\nunable to compile code that was working fine before a library update, make sure\nyou check the [API changes](docs/apichanges.md) section first.\n\n### Changelog\nVersion changelog [here](docs/changelog.md).\n\n### Known Limitations\nList of known limitations [here](docs/knownlimitations.md).\n","funding_links":[],"categories":["TODO scan for Android support in followings"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-upm%2Fupm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-upm%2Fupm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-upm%2Fupm/lists"}