{"id":29206105,"url":"https://github.com/ikajdan/sixthsense-server","last_synced_at":"2025-08-08T23:13:15.105Z","repository":{"id":265590610,"uuid":"640794972","full_name":"ikajdan/sixthsense-server","owner":"ikajdan","description":"A REST API server and a web client for the Sense HAT","archived":false,"fork":false,"pushed_at":"2025-03-16T23:24:22.000Z","size":514,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-02T05:44:41.292Z","etag":null,"topics":["fastapi","iot","rest"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ikajdan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2023-05-15T06:32:43.000Z","updated_at":"2025-06-24T11:45:37.000Z","dependencies_parsed_at":"2025-06-21T00:07:09.794Z","dependency_job_id":"7340685e-48a3-4dc6-910b-24f234510449","html_url":"https://github.com/ikajdan/sixthsense-server","commit_stats":null,"previous_names":["ikajdan/sixthsense_server","ikajdan/sixthsense-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ikajdan/sixthsense-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikajdan%2Fsixthsense-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikajdan%2Fsixthsense-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikajdan%2Fsixthsense-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikajdan%2Fsixthsense-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ikajdan","download_url":"https://codeload.github.com/ikajdan/sixthsense-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikajdan%2Fsixthsense-server/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269502567,"owners_count":24427790,"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-08-08T02:00:09.200Z","response_time":72,"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":["fastapi","iot","rest"],"created_at":"2025-07-02T17:34:44.114Z","updated_at":"2025-08-08T23:13:15.047Z","avatar_url":"https://github.com/ikajdan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"web/favicon.png\" width=\"125\" height=\"auto\"/\u003e\n  \u003cbr\u003eSixthSense\u003cbr\u003e\u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ikajdan/sixthsense_server\"\u003eWeb Client\u003c/a\u003e •\n  \u003ca href=\"https://github.com/ikajdan/sixthsense_mobile\"\u003eMobile Client\u003c/a\u003e •\n  \u003ca href=\"https://github.com/ikajdan/sixthsense_desktop\"\u003eDesktop Client\u003c/a\u003e\n\u003c/p\u003e\n\nThe aim of this project was to create an IoT (Internet of Things) system composed of a SBC (Single Board Computer) with a Sense HAT attached. The server should host a REST (Representational State Transfer) API (Application Programming Interface) that enables clients to read and control peripherals of the hat.\n\nData from various sensors on the Sense HAT should be collected and exposed through the REST API. Real-time plots of the sensor data should be displayed on each client. The user should be able to control the LED matrix on the Sense HAT.\n\nThe architecture of the system can be seen in the diagram below.\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/system_architecture.png\" width=\"75%\"\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cem\u003eSystem architecture.\u003c/em\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\nAll the clients should expose a GUI (Graphical User Interface) to the user allowing for interaction with the embedded system. Three REST clients were developed:\n- web-based client (this repository),\n- [Android mobile client](https://github.com/ikajdan/sixthsense_mobile),\n- [Linux desktop client](https://github.com/ikajdan/sixthsense_desktop).\n\nThe mobile app can be run on any Android 12 or newer operating system. The desktop program can be run on any Linux-based operating system. The web-based client is platform agnostic, therefore can be accessed through any modern web browser.\n\nDue to a high price and low availability of the Sense HAT, a software emulator was used, which provides Python bindings identical to the physical device.\n\n## Server\n\nThe REST API server is implemented using the FastAPI Python library. The server exposes endpoints as shown in the diagram below. Each endpoint is responsible for a different aspect of the system. The `/sensors` endpoint is used to read the sensor data. The `/leds` endpoint is used to control the LED matrix.\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/api_endpoints.png\" width=\"75%\"\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cem\u003eArchitecture of the system.\u003c/em\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## Web Client\n\nThe web client is a multi-page application built with HTML, CSS, and JavaScript. It is responsible for displaying the sensor data and controlling the LED matrix. The client is platform agnostic and can be accessed through any modern web browser.\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/1_sensors.png\" width=\"45%\"\u003e\n\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\n  \u003cimg src=\"images/2_plots.png\" width=\"45%\"\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cem\u003eSensors (left) and plots (right) pages.\u003c/em\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/3_control.png\" width=\"45%\"\u003e\n\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\n  \u003cimg src=\"images/4_settings.png\" width=\"45%\"\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cem\u003eLED control (left) and settings (right) pages.\u003c/em\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fikajdan%2Fsixthsense-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fikajdan%2Fsixthsense-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fikajdan%2Fsixthsense-server/lists"}