{"id":16692069,"url":"https://github.com/bennerlukas/libcap","last_synced_at":"2026-05-07T10:33:17.433Z","repository":{"id":46025701,"uuid":"429742984","full_name":"BennerLukas/LibCap","owner":"BennerLukas","description":"LibCap - Library Capacity Measurement System","archived":false,"fork":false,"pushed_at":"2022-02-11T19:05:38.000Z","size":216971,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T03:26:38.518Z","etag":null,"topics":["esp32","flask","iot","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BennerLukas.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-19T09:38:29.000Z","updated_at":"2022-01-31T10:54:51.000Z","dependencies_parsed_at":"2022-09-02T23:21:12.820Z","dependency_job_id":null,"html_url":"https://github.com/BennerLukas/LibCap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BennerLukas/LibCap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BennerLukas%2FLibCap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BennerLukas%2FLibCap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BennerLukas%2FLibCap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BennerLukas%2FLibCap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BennerLukas","download_url":"https://codeload.github.com/BennerLukas/LibCap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BennerLukas%2FLibCap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273409327,"owners_count":25100442,"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-09-03T02:00:09.631Z","response_time":76,"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":["esp32","flask","iot","python"],"created_at":"2024-10-12T16:11:12.940Z","updated_at":"2026-05-07T10:33:17.397Z","avatar_url":"https://github.com/BennerLukas.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch2\u003eLibCap - Library Capacity Measurement System\u003c/h2\u003e\n\n\u003cimg src=\"./Docs/LibCap_simple_black.png\" alt=\"Logo\" width=\"210\" align=\"center\"/\u003e\n\u003cbr\u003e\n\u003c/div\u003e\n\n## Usage\nYou need to have docker installed and execute the docker-compose.yml by doing the following:\n\n```bash\ndocker compose up --build --force-recreate\n```\n\nor \n\n```bash\ndocker compose up\n```\n\n\n## Manual Testing\nFor testing Mosquitto broker locally use this docker container:\n```bash\n docker run -ti -p 1883:1883 -p 9001:9001 toke/mosquitto\n```\nafter that adapt the IP Address in the code to your own.\n\n**For setting it up permanently** install Mosquitto per apt-install on your Raspberry Pi and create a ```.conf``` file`.\n(see internet for that)\n```bash\ntouch custom_mosquitto.conf\n```\nwrite the following inside the file\n```bash\nlistener 1883\nallow_anonymous true\n```\n\nStart the Mosquitto service again with your own config-file.\n```bash\nMosquitto -c custom_mosquitto.conf\n```\n\n## Idea\nThe idea behind LibCap is a Library-Capacity-Measurement-System that detects the occupancy of workstations passively, without user interventions. With this system, visitors can find free places easily and can check whether a trip to a library is worth it.\n\n\u003cimg src=\"./Docs/Presentations/state_diagram.png\" alt=\"Logo\" align=\"center\"/\u003e\n\n## Tools\nNumerous new state of the art technologies were implemented in this project; ranging from database over containerization to messaging brokers. The following technologies have been used: \n\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Postgres-grey?style=flat-square\u0026logo=postgresql\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Docker-grey?style=flat-square\u0026logo=docker\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Flask-grey?style=flat-square\u0026logo=flask\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Bootstrap-grey?style=flat-square\u0026logo=bootstrap\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/HTML-grey?style=flat-square\u0026logo=html5\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/CSS-grey?style=flat-square\u0026logo=css3\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/JavaScript-grey?style=flat-square\u0026logo=JavaScript\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Arduino-grey?style=flat-square\u0026logo=arduino\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/ESP32-grey?style=flat-square\u0026logo=espHome\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/C++-grey?style=flat-square\u0026logo=c\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Mosquitto-grey?style=flat-square\u0026logo=Eclipse Mosquitto\"/\u003e\n\u003c/div\u003e\n\n\n## Team\n\nThe team consists of 4 People. The planing and brainstorming was done in team-meetings with the help of Github's KANBAN Boards.\nWe collaborated on all fields and worked together to achieve our goal. Nevertheless we decided on splitting the responsibilities in 4 areas as follows:\n\n- Alina Buss (Research \u0026 Theory)\n- Ayman Madhour (Middleware \u0026 Timeseries)\n- Phillip Lange (Frontend \u0026 Container)\n- Lukas Benner (Hardware \u0026 Design)\n\n# Implementation\n\nLibCap is a fully functional System on a docker-stack. It can be easily deployed on minimal hardware requirements. \nThe system is designed in such way, that the frontend, middleware and hardware can work independently of each other. \nThis is possible due to the use of a MQTT-Broker between the Middleware and the hardware, \nas well as on strictly not making a direct connection between the frontend and middleware. All communication is over the database.\n\nTherefore, the system is easily scalable and the components can be switched or enhanced without much hassle.\n\n\nFor a quick demonstration see here: https://youtu.be/ml8fKBpgCN8\n\n## Documentation and Assignment\n\nThe presentation and the assignment as well as the OnePager for the Project-Documentation is stored within the \"Docs\"-Folder. There you can also see the the Live-Demo and the Teaser-Video and the brand logos.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbennerlukas%2Flibcap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbennerlukas%2Flibcap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbennerlukas%2Flibcap/lists"}