Commit 30cbdf0e by Lucía Elizo Gómez

Plugin Kadi4Mat

parents
# kadi-plugin-biaprint
Plugin de **Kadi4Mat** que expone un endpoint HTTP para recibir archivos
automáticamente desde una Raspberry Pi y crearlos como Records en la plataforma.
## Arquitectura
```
Raspberry Pi ──► POST /biaprint/upload ──► Plugin BiaPrint ──► Record en Kadi4Mat
(multipart/form-data) + archivos adjuntos
api_token + metadata JSON + extras/metadatos
+ files[] (mp4, stl, …) + Collection
```
## Instalación en el servidor Kadi4Mat
```bash
# Dentro del entorno virtual de Kadi4Mat
pip install -e /ruta/al/kadi_plugin_biaprint/
# Verificar que Kadi detecta el plugin
flask kadi list-plugins
```
## Configuración (kadi.cfg)
```python
# Token que la Pi debe enviar para autenticarse
BIAPRINT_API_TOKEN = "pat_286fd4dd7b415a0448c4d9be052a509adf1ac396494613fb"
# Identifier de la Collection donde se añadirán los Records
# (debe existir previamente en Kadi4Mat)
BIAPRINT_COLLECTION = "biaprint-trabajos"
# Directorio temporal para los archivos durante el upload
BIAPRINT_UPLOAD_DIR = "/tmp/biaprint_uploads"
```
## Endpoints disponibles
| Método | Ruta | Descripción |
|--------|--------------------|----------------------------------------------|
| GET | /biaprint/health | Comprobación rápida (sin autenticación) |
| POST | /biaprint/upload | Recibe archivos y crea/actualiza un Record |
## Formato del JSON de metadatos
```json
{
"job_name": "pieza-soporte-v3",
"material": "PLA",
"layer_height_mm": 0.2,
"print_time_s": 3600,
"printer_id": "prusa-mk4-01",
"operator": "usuario@ejemplo.com",
"custom": {
"cualquier_campo": "cualquier_valor"
}
}
```
## Ejemplo de llamada desde curl
```bash
curl -X POST https://kadi.tudominio.com/biaprint/upload \
-H "Authorization: Bearer pat_ccc6bfdb17f9ff7c1bb271fe997eafee3b91561c67405ea9" \
-F "metadata={\"job_name\":\"pieza-test\",\"material\":\"PLA\"}" \
-F "files[]=@/ruta/al/video.mp4" \
-F "files[]=@/ruta/al/config.json"
```
Metadata-Version: 2.4
Name: biaprint
Version: 0.1.0
Summary: Kadi4Mat plugin for 3D printing sessions
Requires-Python: >=3.10
Requires-Dist: kadi
README.md
pyproject.toml
setup.py
biaprint.egg-info/PKG-INFO
biaprint.egg-info/SOURCES.txt
biaprint.egg-info/dependency_links.txt
biaprint.egg-info/entry_points.txt
biaprint.egg-info/requires.txt
biaprint.egg-info/top_level.txt
kadi_plugin_biaprint/__init__.py
kadi_plugin_biaprint/plugin.py
\ No newline at end of file
[kadi_plugins]
biaprint = kadi_plugin_biaprint.plugin
PLUGINS = ["biaprint"]
PLUGIN_CONFIG = {
"biaprint": {
"api_token": "pat_286fd4dd7b415a0448c4d9be052a509adf1ac396494613fb",
"upload_dir": "/tmp/biaprint_uploads",
},
}
# kadi_plugin_biaprint/__init__.py
# Paquete del plugin BiaPrint para Kadi4Mat.
# La versión se sincroniza con pyproject.toml.
__version__ = "0.1.0"
[project]
name = "biaprint"
version = "0.1.0"
description = "Kadi4Mat plugin for 3D printing sessions"
requires-python = ">=3.10"
dependencies = [
"kadi"
]
[project.entry-points."kadi_plugins"]
biaprint = "kadi_plugin_biaprint.plugin"
from setuptools import setup, find_packages
setup(
name="kadi_plugin_biaprint",
version="0.1.0",
packages=find_packages(),
entry_points={
"kadi_plugins": [
"biaprint = kadi_plugin_biaprint.plugin",
],
},
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment