{"id":16058057,"url":"https://github.com/ehsundar/sensortile","last_synced_at":"2026-01-19T07:02:04.899Z","repository":{"id":144339452,"uuid":"106209558","full_name":"ehsundar/sensortile","owner":"ehsundar","description":"a simple intro to get data from ST sensortile (using BLE)","archived":false,"fork":false,"pushed_at":"2017-10-08T21:00:17.000Z","size":1,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-05T08:15:13.221Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehsundar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-08T20:59:27.000Z","updated_at":"2024-06-25T06:36:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"79144d54-4e12-4411-93af-84175e67f326","html_url":"https://github.com/ehsundar/sensortile","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ehsundar/sensortile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehsundar%2Fsensortile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehsundar%2Fsensortile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehsundar%2Fsensortile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehsundar%2Fsensortile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehsundar","download_url":"https://codeload.github.com/ehsundar/sensortile/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehsundar%2Fsensortile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28562685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-09T03:06:11.109Z","updated_at":"2026-01-19T07:02:04.884Z","avatar_url":"https://github.com/ehsundar.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003chtml\u003e\n\n\u003chead\u003e\n\n\u003c/head\u003e\n\n\u003ch1\u003esensortile\u003c/h1\u003e\n\n\u003cp\u003e\nsensortile is a multi-sensor device, giving us many physical data such as acceleration, temprature, etc. you can find out more about sensortile on \u003ca href=\"http://www.st.com/en/evaluation-tools/steval-stlkt01v1.html\"\u003eofficial website\u003c/a\u003e. there is also an example application (android/ios) for recieving and monitoring sensortile data. the android SDK and example app source code are available on github: \u003ca href=\"https://github.com/STMicroelectronics-CentralLabs/STBlueMS_Android\"\u003ehere!\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e\nwhile trying to use sensortile to catch some physical data (on a platform that's not android) i found out there is no datasheet or GATT table for using sensortile BLE; however there is some standard rules. i will attach a sample python script (uses bluepy) so you will see the raw data.\n\u003c/p\u003e\nhere is the GATT table:\n\u003cp\u003e\n\u003ch3\u003e\u003cb\u003echaracteristics:\u003c/b\u003e\u003c/h3\u003e\n\u003c/p\u003e\n\n\u003cdiv style=\"overflow-x:scroll;\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eFeature\u003c/th\u003e\n    \u003cth\u003eHandle\u003c/th\u003e \n    \u003cth\u003eUUID\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eProximityGesture::Motion Intensity\u003c/td\u003e\n    \u003ctd\u003e0x000d\u003c/td\u003e \n    \u003ctd\u003e00140000-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureAcceleration::FeatureGyroscope::FeatureMagnetometer\u003c/td\u003e\n    \u003ctd\u003e0x0010\u003c/td\u003e \n    \u003ctd\u003e00e00000-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureAccelerationEvent\u003c/td\u003e\n    \u003ctd\u003e0x0013\u003c/td\u003e \n    \u003ctd\u003e00000400-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureMicLevel\u003c/td\u003e\n    \u003ctd\u003e0x0016\u003c/td\u003e \n    \u003ctd\u003e04000000-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureMemsSensorFusionCompact\u003c/td\u003e\n    \u003ctd\u003e0x0019\u003c/td\u003e \n    \u003ctd\u003e00000100-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureCompass\u003c/td\u003e\n    \u003ctd\u003e0x001c\u003c/td\u003e \n    \u003ctd\u003e00000040-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureActivity\u003c/td\u003e\n    \u003ctd\u003e0x001f\u003c/td\u003e \n    \u003ctd\u003e00000010-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFeatureCarryPosition\u003c/td\u003e\n    \u003ctd\u003e0x0022\u003c/td\u003e \n    \u003ctd\u003e00000008-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003eFeatureMemsGesture\u003c/td\u003e\n    \u003ctd\u003e0x0025\u003c/td\u003e \n    \u003ctd\u003e00000002-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003eFeatureAudioADPCM\u003c/td\u003e\n    \u003ctd\u003e0x0028\u003c/td\u003e \n    \u003ctd\u003e08000000-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n   \u003ctr\u003e\n    \u003ctd\u003eFeatureAudioADPCMSync\u003c/td\u003e\n    \u003ctd\u003e0x002b\u003c/td\u003e \n    \u003ctd\u003e40000000-0001-11e1-ac36-0002a5d5c51b\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\neach characteristic contains 3 description. you must write value 0x0100 to first description of each char (this is a standard method). then sensortile will send you data continuously as notification. you could enable multiple notifications at the same time. notifications will arrive as characteristic value. so you can distinguish notifications.\n\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003enote\u003c/b\u003e\n\u003c/li\u003e\nfor two first chars, data has following patern:\n2byte\u003ctime stamp\u003e 2byte\u003cacc data x\u003e 2byte\u003cacc data y\u003e ... 2byte\u003cmag data pitch\u003e\nthere is some more info about data structure and uuid prefixes at \u003ca href=\"https://github.com/STMicroelectronics-CentralLabs/BlueSTSDK_Android/tree/b490d4d382e6f8dddbf9ce6e02414a53d576cd58\"\u003eSDK git page\u003c/a\u003e\n\n\u003cli\u003e\n\u003cb\u003enote\u003c/b\u003e\n\u003c/li\u003e\neach char data has a time stamp at two first bytes, except stream data (audio)\n\u003c/ul\u003e\n\u003cli\u003e\n\u003cb\u003enote\u003c/b\u003e\n\u003c/li\u003e\naudio formatting is ADPCM. you cannot find any library to dicode this format to PCM(WAV) (except a corrupt python lib!). so you have two ways: write decode yourself! or use sox library. \n\u003cbr\u003e\n\u003cp\u003e\n\u003ch4\u003e\n//end\n\u003c/h4\u003e\n\u003c/p\u003e\n\u003c/html\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehsundar%2Fsensortile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehsundar%2Fsensortile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehsundar%2Fsensortile/lists"}