Saltar al contenido principal

Automatización de Taller

nota

Página generada automáticamente. No la edites a mano: corrige la fuente y vuelve a generar. Fuentes: nopal-plugin.json, código del plugin y plugin_catalog.json (nopal-plugin-arduino-accessories@7d81164, nopal@d6d86a5).

Control unificado del taller para placas Arduino/ESP32: relés, iluminación, telemetría, escenas, mapas de pines y automatizaciones por máquina.

Ficha​

CampoValor
idarduino-accessories
Versión (manifiesto)2.6.0
Madurezestable (≥ 1.0)
CategoríaAccesorios
PublicadorNOPAL Labs
CompatibilidadImpresión 3D, Láser, CNC
Python mínimo (python_requires)sin requisito propio (hereda el del core)
Backendbackend/router.py
Interfazfrontend/arduino-accessories.js · sección arduino-accessories
Repositorionopal-plugin-arduino-accessories
Pruebas propiasSí
Carpeta docs/ propiaSí

Permisos declarados​

Son texto informativo para quien instala el plugin. NOPAL no los aplica como un sistema de permisos: el plugin se ejecuta dentro del proceso de NOPAL con sus mismos privilegios.

  • Detectar puertos USB
  • Enviar comandos a la placa
  • Flashear firmware por USB u OTA

Desfase de versiones​

El manifiesto debería ser la fuente de verdad (Standard §6.4). Se detectan valores distintos en:

DóndeValor encontradoManifiesto
plugin_catalog.json2.5.02.6.0

API del plugin​

Prefijo(s) de ruta: /api/accessories · 43 rutas (Sesión (admin u operador): 19; Solo admin: 23; Pública: 1).

MétodoRutaAccesoPolíticaDescripción
GET/api/accessoriesSesión (admin u operador)—Accesorios IoT registrados (extractores, ventiladores, bombas, etc.).
POST/api/accessoriesSolo admin—Registra un accesorio nuevo. config es un JSON con los campos que pida el driver elegido (ej. para 'home_assistant': base_url, token, ent…
GET/api/accessories/{accessory_id}/firmware-statusSesión (admin u operador)—Prueba la placa de un accesorio WiFi con sus credenciales YA guardadas y devuelve modelo/firmware/protocolo actuales -- el paso "Buscando……
GET/api/accessories/activitySesión (admin u operador)—Historial reciente de eventos reales (encendidos, apagados, cambios de color, altas/bajas de accesorios, escenas ejecutadas) — ver activity…
GET/api/accessories/arduino/ambient-sensorSesión (admin u operador)—Qué placa (si hay alguna) está marcada como sensor ambiente del taller -- ver board_pinmap_service.get_ambient_sensor_board_id(). Lo consul…
POST/api/accessories/arduino/ambient-sensorSolo admin—board_id vacío quita la selección (ninguna placa es el sensor ambiente). Devuelve 404 si se pidió una placa que no existe, en vez de guar…
GET/api/accessories/arduino/boardsSesión (admin u operador)—Placas agregadas a mano (catálogo + apodo) o adoptadas por el asistente de firmware, con la función/parámetros que el usuario le asignó a c…
POST/api/accessories/arduino/boardsSolo admin—pins es el JSON {"left": [...], "right": [...]} tal cual lo arma el catálogo del frontend -- el backend no interpreta su forma, solo la p…
PUT/api/accessories/arduino/boards/{board_id}Solo admin—Edita nombre/puerto USB/IP de una placa ya agregada -- ver board_pinmap_service.update_board_info. No toca sus pines.
DELETE/api/accessories/arduino/boards/{board_id}Solo admin——
PUT/api/accessories/arduino/boards/{board_id}/pins/{side}/{index}Solo admin——
GET/api/accessories/arduino/discoverSolo admin—Escanea los puertos USB en busca de placas ESP32 con el firmware NOPAL (firmware/nopal_accessory/) — para cada una que contesta, el puerto…
POST/api/accessories/arduino/lightingSolo admin—Alta directa de una luz conectada a una placa NOPAL existente.
GET/api/accessories/arduino/list-portsSolo admin—Puertos USB candidatos SIN exigir que ya respondan el handshake NOPAL (a diferencia de /discover) -- para el asistente de primer uso, donde…
POST/api/accessories/arduino/probe-wifiSolo admin—Prueba una placa NOPAL por IP antes de darla de alta por WiFi (mismas credenciales OTA que ya usa el flasheo por WiFi) — mismo propósito qu…
POST/api/accessories/arduino/relaySolo admin—Alta directa de un relé de una placa NOPAL existente -- misma idea que /api/accessories/arduino/lighting: la placa ya reportó cuántos relés…
GET/api/accessories/arduino/telemetrySesión (admin u operador)—Estado real de las placas configuradas, por USB o WiFi.
GET/api/accessories/cluster/configSesión (admin u operador)—Config de los avisos, token incluido: el usuario lo necesita para copiarlo al secrets.h de cada placa.
POST/api/accessories/cluster/configSolo admin——
POST/api/accessories/cluster/config/rotate-tokenSolo admin—Token nuevo. Deja fuera a todas las placas hasta que se actualice su secrets.h -- es intencional, es lo que lo hace revocable.
POST/api/accessories/cluster/eventPública—Aviso de la placa maestra: una placa entró (o salió) del clúster.
GET/api/accessories/driversSesión (admin u operador)—Drivers disponibles (ej. 'home_assistant', 'http_relay') — para poblar el formulario de registro sin hardcodear la lista en el frontend.
GET/api/accessories/firmware/buildsSesión (admin u operador)—Binarios .bin ya subidos y disponibles para flashear.
GET/api/accessories/firmware/builds/{filename}/downloadSesión (admin u operador)—Descarga un binario .bin ya subido -- para quien prefiera subirlo a mano desde el panel OTA de la propia placa (http://<ip>/update) en vez…
POST/api/accessories/firmware/flash-otaSolo admin—Flashea filename (ya subido) por red, contra el ElegantOTA que corre en la placa en ip (firmware 1.3+, Wi-Fi ya conectado). username/pa…
POST/api/accessories/firmware/flash-ota-for/{accessory_id}Solo admin—Igual que /firmware/flash-ota, pero usando la IP y credenciales OTA YA guardadas del accesorio en vez de pedírselas de nuevo al usuario --…
POST/api/accessories/firmware/flash-usbSolo admin—Flashea filename (ya subido, ver /firmware/upload) en la placa conectada en device (ej. /dev/ttyUSB1) usando esptool, offset 0x0. Suelt…
GET/api/accessories/firmware/sourceSesión (admin u operador)—Descarga el .ino fuente del firmware actual del accesorio.
POST/api/accessories/firmware/uploadSolo admin—Sube un binario .bin ya compilado (Export Compiled Binary) al servidor, para poder flashearlo después por USB u OTA.
POST/api/accessories/ledSesión (admin u operador)—Fija el color de una tira LED (PWM o WS2812) conectada a una placa NOPAL. Solo aplica a accesorios cuyo driver soporte 'set_color' (hoy, ún…
GET/api/accessories/machine-led/configSesión (admin u operador)—Configuración de alertas visuales de una máquina y destinos LED reales.
POST/api/accessories/machine-led/configSolo admin——
GET/api/accessories/machine-led/enabledSesión (admin u operador)—Estado habilitado/deshabilitado de todas las máquinas configuradas, para pintar el ícono de ajustes LED en cada tarjeta sin abrir el modal.
POST/api/accessories/machine-led/stateSesión (admin u operador)——
POST/api/accessories/powerSesión (admin u operador)——
POST/api/accessories/removeSolo admin——
POST/api/accessories/renameSolo admin——
GET/api/accessories/scenesSesión (admin u operador)——
POST/api/accessories/scenesSolo admin——
PUT/api/accessories/scenes/{scene_id}Solo admin—Igual que el POST de creación pero sobre una escena existente.
DELETE/api/accessories/scenes/{scene_id}Solo admin——
POST/api/accessories/scenes/{scene_id}/runSesión (admin u operador)——
GET/api/accessories/statusSesión (admin u operador)—Igual que /api/accessories pero con el estado on/off en vivo de cada uno (probeo real contra el driver) — endpoint aparte porque ese probeo…

Notas verificadas​

  • Solo funciona con placas que tengan el firmware genérico de NOPAL; relés o tiras LED con firmware de fábrica no están soportados. (evidencia: nopal-plugin-arduino-accessories/README.md)
  • El proceso de NOPAL necesita permiso de lectura y escritura sobre /dev/ttyUSB* o /dev/ttyACM* (normalmente mediante el grupo dialout). El flasheo por USB requiere esptool en el equipo. (evidencia: nopal-plugin-arduino-accessories/README.md)
  • Importa servicios del core (backend.services.laser_service, marlin_printer_service) para omitir puertos USB que ya usa un láser/CNC o una impresora Marlin. (evidencia: nopal-plugin-arduino-accessories/README.md)

Más información​