Skip to main content

Automatización de Taller

note

This page is generated automatically. Do not edit it by hand: fix the source and regenerate. Sources: nopal-plugin.json, plugin code and 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.

Summary​

FieldValue
idarduino-accessories
Version (manifest)2.6.0
Maturitystable (≥ 1.0)
CategoryAccesorios
PublisherNOPAL Labs
CompatibilityImpresión 3D, Láser, CNC
Minimum Python (python_requires)no own requirement (inherits the core's)
Backendbackend/router.py
UIfrontend/arduino-accessories.js · section arduino-accessories
Repositorynopal-plugin-arduino-accessories
Own testsYes
Own docs/ folderYes

Declared permissions​

These are informational text for whoever installs the plugin. NOPAL does not enforce them as a permission system: the plugin runs inside the NOPAL process with its same privileges.

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

Version drift​

The manifest should be the source of truth (Standard §6.4). Different values are found in:

WhereValue foundManifest
plugin_catalog.json2.5.02.6.0

Plugin API​

Route prefix(es): /api/accessories · 43 routes (Session (admin or operator): 19; Admin only: 23; Public: 1).

MethodRouteAccessPolicyDescription
GET/api/accessoriesSession (admin or operator)—Accesorios IoT registrados (extractores, ventiladores, bombas, etc.).
POST/api/accessoriesAdmin only—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-statusSession (admin or operator)—Prueba la placa de un accesorio WiFi con sus credenciales YA guardadas y devuelve modelo/firmware/protocolo actuales -- el paso "Buscando……
GET/api/accessories/activitySession (admin or operator)—Historial reciente de eventos reales (encendidos, apagados, cambios de color, altas/bajas de accesorios, escenas ejecutadas) — ver activity…
GET/api/accessories/arduino/ambient-sensorSession (admin or operator)—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-sensorAdmin only—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/boardsSession (admin or operator)—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/boardsAdmin only—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}Admin only—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}Admin only——
PUT/api/accessories/arduino/boards/{board_id}/pins/{side}/{index}Admin only——
GET/api/accessories/arduino/discoverAdmin only—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/lightingAdmin only—Alta directa de una luz conectada a una placa NOPAL existente.
GET/api/accessories/arduino/list-portsAdmin only—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-wifiAdmin only—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/relayAdmin only—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/telemetrySession (admin or operator)—Estado real de las placas configuradas, por USB o WiFi.
GET/api/accessories/cluster/configSession (admin or operator)—Config de los avisos, token incluido: el usuario lo necesita para copiarlo al secrets.h de cada placa.
POST/api/accessories/cluster/configAdmin only——
POST/api/accessories/cluster/config/rotate-tokenAdmin only—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/eventPublic—Aviso de la placa maestra: una placa entró (o salió) del clúster.
GET/api/accessories/driversSession (admin or operator)—Drivers disponibles (ej. 'home_assistant', 'http_relay') — para poblar el formulario de registro sin hardcodear la lista en el frontend.
GET/api/accessories/firmware/buildsSession (admin or operator)—Binarios .bin ya subidos y disponibles para flashear.
GET/api/accessories/firmware/builds/{filename}/downloadSession (admin or operator)—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-otaAdmin only—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}Admin only—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-usbAdmin only—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/sourceSession (admin or operator)—Descarga el .ino fuente del firmware actual del accesorio.
POST/api/accessories/firmware/uploadAdmin only—Sube un binario .bin ya compilado (Export Compiled Binary) al servidor, para poder flashearlo después por USB u OTA.
POST/api/accessories/ledSession (admin or operator)—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/configSession (admin or operator)—Configuración de alertas visuales de una máquina y destinos LED reales.
POST/api/accessories/machine-led/configAdmin only——
GET/api/accessories/machine-led/enabledSession (admin or operator)—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/stateSession (admin or operator)——
POST/api/accessories/powerSession (admin or operator)——
POST/api/accessories/removeAdmin only——
POST/api/accessories/renameAdmin only——
GET/api/accessories/scenesSession (admin or operator)——
POST/api/accessories/scenesAdmin only——
PUT/api/accessories/scenes/{scene_id}Admin only—Igual que el POST de creación pero sobre una escena existente.
DELETE/api/accessories/scenes/{scene_id}Admin only——
POST/api/accessories/scenes/{scene_id}/runSession (admin or operator)——
GET/api/accessories/statusSession (admin or operator)—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…

Verified notes​

  • Only works with boards running NOPAL's generic firmware; relays or LED strips with factory firmware are not supported. (evidence: nopal-plugin-arduino-accessories/README.md)
  • The NOPAL process needs read/write access to /dev/ttyUSB* or /dev/ttyACM* (usually via the dialout group). USB flashing requires esptool on the host. (evidence: nopal-plugin-arduino-accessories/README.md)
  • Imports core services (backend.services.laser_service, marlin_printer_service) to skip USB ports already used by a laser/CNC or a Marlin printer. (evidence: nopal-plugin-arduino-accessories/README.md)

More information​