{"id":22860043,"url":"https://github.com/reelyactive/diract","last_synced_at":"2025-10-24T00:06:07.357Z","repository":{"id":69136725,"uuid":"229791057","full_name":"reelyactive/diract","owner":"reelyactive","description":"Proximity interaction detection embedded software for Bluetooth beacons.  We believe in an open Internet of Things.","archived":false,"fork":false,"pushed_at":"2023-09-27T14:22:11.000Z","size":1276,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T18:34:22.569Z","etag":null,"topics":["bluetooth-beacons","bluetooth-low-energy","embedded-software","espruino","indoor-positioning","proximity","proximity-interaction-beacon","rtls"],"latest_commit_sha":null,"homepage":"https://www.reelyactive.com/diract/","language":"JavaScript","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/reelyactive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null}},"created_at":"2019-12-23T16:53:57.000Z","updated_at":"2024-09-04T01:23:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"569e36e6-aef0-4b46-ada1-80e3bad4d003","html_url":"https://github.com/reelyactive/diract","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reelyactive%2Fdiract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reelyactive%2Fdiract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reelyactive%2Fdiract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reelyactive%2Fdiract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reelyactive","download_url":"https://codeload.github.com/reelyactive/diract/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251754228,"owners_count":21638478,"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","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":["bluetooth-beacons","bluetooth-low-energy","embedded-software","espruino","indoor-positioning","proximity","proximity-interaction-beacon","rtls"],"created_at":"2024-12-13T09:08:48.170Z","updated_at":"2025-10-24T00:06:02.107Z","avatar_url":"https://github.com/reelyactive.png","language":"JavaScript","readme":"DirAct\n======\n\n__DirAct__ is embedded software for proximity interaction detection: _Who is interacting with whom/what?_  The lightweight code runs on Bluetooth Low Energy wearables, badges and beacons.\n\n![DirAct Logo](https://reelyactive.github.io/diract/images/diract-logo-black.png)\n\n__DirAct__ is written in JavaScript for [Espruino](https://www.espruino.com/), which runs on just about any device with a Nordic nRF52 microcontroller, and can be programmed through the web browser using the [Espruino Web IDE](https://www.espruino.com/ide/).  __DirAct__ advertising packets can be decoded by the [advlib-ble-manufacturers](https://github.com/reelyactive/advlib-ble-manufacturers/) library which is part of reelyActive's [Pareto Anywhere](https://www.reelyactive.com/pareto/anywhere/) open source middleware suite.\n\nLearn more at [reelyactive.com/diract](https://www.reelyactive.com/diract/) and at [reelyactive.github.io/diract](https://reelyactive.github.io/diract/).\n\n\nProgramming Espruino devices with DirAct\n----------------------------------------\n\nThe following Espruino devices are supported.\n\n### Puck.js\n\nCode is available in the __puckjs__ folder of this repository.  See our [Puck.js Development Guide](https://reelyactive.github.io/diy/puckjs-dev/) for detailed programming instructions.\n\n### Pixl.js\n\nCode is available in the __pixljs__ folder of this repository.\n\n### Bangle.js\n\n__DirAct__ is available directly from the [Bangle App Loader](https://banglejs.com/apps/#diract).  For development, see our [Bangle.js Development Guide](https://reelyactive.github.io/diy/banglejs-dev/) tutorial for detailed programming instructions.\n\nCode for the original Bangle.js v1 is available in the __banglejs__ folder of [release-0.1](https://github.com/reelyactive/diract/tree/release-0.1) of this repository.\n\n### ca-va-bracelet\n\nCode is available in the __ca-va-bracelet__ folder of this repository.  See the [ca-va-bracelet](https://upverter.com/profile/cavabracelet/) open hardware project based on the MDBT42Q module, which runs Espruino.\n\n\nProgramming other devices with DirAct\n-------------------------------------\n\nThe following devices which can be programmed to run Espruino are supported.\n\n### micro:bit v2\n\nCode for the BBC micro:bit v2 (the version with the microphone, speaker and a nRF52833 microcontroller) is available in the __microbit-v2__ folder of this repository.  See the [Espruino micro:bit guide](https://www.espruino.com/MicroBit) for programming instructions.\n\n\nDirAct Identifiers\n------------------\n\nEach __DirAct__ device shall identify itself with a unique INSTANCE_ID.  By default, the two least-significant bytes of the nRF advertiser address are used as the unique INSTANCE_ID, unless a specific ID is entered, as below:\n\n```javascript\n// Auto-generate a unique INSTANCE_ID:\nconst INSTANCE_ID = null;\n```\n\n```javascript\n// Specify INSTANCE_ID of 00000001\nconst INSTANCE_ID = new Uint8Array([ 0x00, 0x00, 0x00, 0x01 ]);\n```\n\n__DirAct__ devices recognise not only their peers, but also beacons which transmit an [InteroperaBLE Identifier](https://reelyactive.github.io/interoperable-identifier/) with the DirAct entity UUID (496f4944446972416374).\n\n__DirAct__ devices transmit advertising packets which include _manufacturer specific data_ using the [Bluetooth-SIG-assigned Company Identifier](https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/) of Code Blue Consulting (0x0583), the co-developers of __DirAct__.  Developers may continue to use this company identifier for experimental and educational purposes.  However, __company identifier 0x0583 may NOT be used for commercial use of the DirAct embedded software__.  An entity may [request a company identifier from the Bluetooth SIG](https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/) and use this instead.  [Contact us](https://www.reelyactive.com/contact/) if in doubt.\n\n\nDirAct filters on AOS 8.x\n-------------------------\n\nHPE Aruba Networking access points running AOS 8.x offer a DirAct filter for forwarding BLE Data in their IoT WebSocket Interface.  Note that the DirAct checkbox has the behaviour of forwarding _only_ __DirAct__ digest packets.\n\n![DirAct AOS8 filtering](https://reelyactive.github.io/diract/images/diract-aos8-filtering.png)\n\nIn order to forward _both_ __DirAct__ proximity _and_ digest packets, instead include a Company Identifier filter with the value `0583`.\n\nSee our [Configure an Aruba Instant AP](https://reelyactive.github.io/diy/aruba-instant-config/) tutorial for more details on this integration.\n\n\nProject History\n---------------\n\n__DirAct__ is jointly developed by [reelyActive](https://www.reelyactive.com) and [Code Blue Consulting](https://consultcodeblue.com/).  The code was open sourced as v0.x in 2019.\n\n__DirAct__ v1.x, released at the start of the COVID-19 pandemic, added a digest feature to facilitate contact tracing in environments with sparse infrastructure.\n\n__DirAct__ v2.x, released in 2023, fully adopts the [InteroperaBLE Identifier](https://reelyactive.github.io/interoperable-identifier/), and supports the digest and non-digest variants independently as diract-digest.js and diract.js, respectively.\n\n\nContributing\n------------\n\nDiscover [how to contribute](CONTRIBUTING.md) to this open source project which upholds a standard [code of conduct](CODE_OF_CONDUCT.md).\n\n\nSecurity\n--------\n\nConsult our [security policy](SECURITY.md) for best practices using this open source software and to report vulnerabilities.\n\n\nLicense\n-------\n\nMIT License\n\nCopyright (c) 2019-2023 [reelyActive](https://www.reelyactive.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freelyactive%2Fdiract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freelyactive%2Fdiract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freelyactive%2Fdiract/lists"}