This is a versatile and customizable Storage System. It has the ability to combine multiple Storage Systems via the use of ESP32 (a cheap microcontroller) as controllers for the neopixels (indicators). It has a simple but useful WebUI and an API. The storage bins are compatible with Gridfinity 1x4 bins.
- Gridfinity Compatible: Easily integrates with the Gridfinity storage system for modular storage.
- Parametric Design: Easily customizable bins.
- ESP32 Controlled: Scalable system using ESP32 as wireless controllers.
- Neopixels: Dynamic lighting indicators.
- Web UI to Manage Storage: User-friendly web interface for managing the items.
- API: Simple to use API.
- Endpoint:
/api/list
- Method:
GET
- Description: Retrieves a list of all storage items. Supports optional query parameters for filtering by category, node, and position.
- Query Parameters:
category
(optional): Filter items by category.node
(optional): Filter items by node.position
(optional): Filter items by position.id
(optional): Filter items by ID:
- Endpoint:
/api/locateget
- Method:
GET
- Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Query Parameters:
id
(required): The ID of the item to locate.
- Endpoint:
/api/nodes
- Method:
GET
- Description: Retrieves a list of all nodes. Supports optional query parameter for filtering by ID.
- Query Parameters:
id
(optional): Filter nodes by ID.
- Endpoint:
/api/additem
- Method:
POST
- Description: Adds a new storage item to the database.
- Request Body (JSON):
{ "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
- Endpoint:
/api/addnode
- Method:
POST
- Description: Adds a new node to the database or updates an existing node if the ID already exists.
- Request Body (JSON):
{ "id": "integer", "ip": "string", "positions": "integer" }
- Endpoint:
/api/delete
- Method:
POST
- Description: Deletes a storage item by its ID.
- Request Body (JSON):
{ "id": "integer" }
- Endpoint:
/api/edit
- Method:
POST
- Description: Edits an existing storage item by its ID.
- Request Body (JSON):
{ "id": "integer", "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
- Endpoint:
/api/move
- Method:
POST
- Description: Moves a storage item to a different node and position.
- Request Body (JSON):
{ "id": "integer", "node": "integer", "position": "integer" }
- Endpoint:
/api/locate
- Method:
POST
- Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Request Body (JSON):
{ "id": "integer" }
- PlatformIO installed on your development environment.
- ESP32 DevBoard or Controller PCB (WIP).
- Neopixels (WS2812B) or Indicator PCB.
- Some wire.
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/Server
- Create a Python virtual environment and install the requirements:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
- Run the main Python file:
python3 main.py
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem/Code/Server
- Build and run the Docker container:
docker buildx build -t storagesystem:server -f server.Dockerfile .
docker run -p 5000:5000 -v ./database.db:/app/database.db storagesystem:server
- The API should now be running and accessible at
http://localhost:5000
.
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem
- Install the required libraries and dependencies:
platformio run
- Connect your ESP32 to your computer.
- Edit the
include/.env.template
file and rename it toinclude/.env
. - Upload the firmware to the ESP32:
platformio run --target upload
- Open the serial monitor to check if the installation was successful:
platformio device monitor
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/App
- Create a Python virtual environment and install the requirements:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
- Run the main Python file:
python3 main.py
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem
- Build and run the Docker container:
docker buildx build -t storagesystem:app -f app.Dockerfile .
docker run -p 5001:5001 storagesystem:app
- The website should now be running and accessible at
http://localhost:5001
.
Contributions are welcome! Please fork the repository and submit a pull request with your changes.