Saltar al contenido principal

Cámaras

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-camera-viewer@28737a7, nopal@d6d86a5).

Agrega cámaras por URL de stream MJPEG, ONVIF o webcam USB, y míralas en vivo desde el panel.

Ficha​

CampoValor
idcamera-viewer
Versión (manifiesto)1.4.0
Madurezestable (≥ 1.0)
CategoríaProducción
PublicadorNOPAL Labs
CompatibilidadImpresión 3D, Láser, CNC
Python mínimo (python_requires)sin requisito propio (hereda el del core)
Backendbackend/router.py
Interfazfrontend/camera-viewer.js · sección camera-viewer
Repositorionopal-plugin-camera-viewer
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.

  • Guardar direcciones de cámaras
  • Detectar webcams USB

API del plugin​

Prefijo(s) de ruta: /api/cameras · 32 rutas (Sesión (admin u operador): 13; Solo admin: 19; Pública: 0).

MétodoRutaAccesoPolíticaDescripción
GET/api/camerasSesión (admin u operador)—Cámaras registradas. Las RTSP vienen resueltas a la URL MJPEG que expone go2rtc para esa fuente -- el navegador nunca ve la URL RTSP.
POST/api/camerasSolo admin——
POST/api/cameras/{camera_id}/captureSolo admin——
GET/api/cameras/{camera_id}/capturesSesión (admin u operador)——
GET/api/cameras/{camera_id}/captures/{filename}Sesión (admin u operador)——
DELETE/api/cameras/{camera_id}/captures/{filename}Solo admin—Borra una captura. Admin-only: es material que no se recupera.
POST/api/cameras/{camera_id}/captures/{filename}/editSolo admin—Rotar (múltiplo de 90°) y/o recortar una captura ya guardada.
POST/api/cameras/{camera_id}/captures/zipSesión (admin u operador)—ZIP de varias capturas ya existentes -- no muta ni genera archivos nuevos en disco (arma los bytes al vuelo), por eso alcanza con require_a…
POST/api/cameras/{camera_id}/duplicateSolo admin——
GET/api/cameras/{camera_id}/focusSesión (admin u operador)——
POST/api/cameras/{camera_id}/focusSolo admin——
GET/api/cameras/{camera_id}/healthSesión (admin u operador)—Prueba real de conexión de UNA cámara (botón "Probar conexión" / estado de la fila en la lista) -- no persiste nada.
POST/api/cameras/{camera_id}/record/startSolo admin——
POST/api/cameras/{camera_id}/record/stopSolo admin——
GET/api/cameras/{camera_id}/recordingsSesión (admin u operador)—Grabaciones guardadas. Ya se escribían a disco desde el primer día, pero no había forma de listarlas: quedaban ahí sin que nadie las viera.
GET/api/cameras/{camera_id}/recordings/{filename}Sesión (admin u operador)——
DELETE/api/cameras/{camera_id}/recordings/{filename}Solo admin——
POST/api/cameras/{camera_id}/timelapseSolo admin——
POST/api/cameras/{camera_id}/timelapse/assembleSolo admin——
POST/api/cameras/{camera_id}/timelapse/assemble-gifSolo admin——
POST/api/cameras/{camera_id}/timelapse/pauseSolo admin——
POST/api/cameras/{camera_id}/timelapse/resumeSolo admin——
GET/api/cameras/{camera_id}/timelapse/statsSesión (admin u operador)——
GET/api/cameras/{camera_id}/timelapse/videosSesión (admin u operador)—Videos/GIFs ya armados. Antes de esto, assemble solo devolvía un filename en la respuesta del POST y el archivo quedaba huérfano en disco -…
GET/api/cameras/{camera_id}/timelapse/videos/{filename}Sesión (admin u operador)——
DELETE/api/cameras/{camera_id}/timelapse/videos/{filename}Solo admin——
POST/api/cameras/{camera_id}/updateSolo admin——
POST/api/cameras/onvifSolo admin—Resuelve la URL RTSP real vía ONVIF (GetCapabilities/GetProfiles/ GetStreamUri) y registra la cámara con esa URL. Dos caminos: - Solo con `…
POST/api/cameras/removeSolo admin——
GET/api/cameras/usb/{camera_id}/streamSesión (admin u operador)——
GET/api/cameras/usb/discoverSesión (admin u operador)—Webcams USB conectadas localmente (V4L2) -- ver usb_camera_service.py.
POST/api/cameras/usb/registerSolo admin—Registra una webcam USB detectada -- a diferencia de URL directa/ONVIF, el stream lo sirve el propio NOPAL (ver usb_camera_service.ensure_s…

Notas verificadas​

  • Además de su sección propia, expone el widget window.NopalCameraCard (frontend/camera-card.js), que el propio core monta en las fichas de Klipper, láser, CNC y Marlin. Esta integración del core con el plugin no está declarada en el manifiesto. (evidencia: nopal-plugin-camera-viewer/frontend/camera-card.js; nopal/backend/static/js/app.js)

Más información​