Skip to main content

Cámaras

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-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.

Summary​

FieldValue
idcamera-viewer
Version (manifest)1.4.0
Maturitystable (≥ 1.0)
CategoryProducción
PublisherNOPAL Labs
CompatibilityImpresión 3D, Láser, CNC
Minimum Python (python_requires)no own requirement (inherits the core's)
Backendbackend/router.py
UIfrontend/camera-viewer.js · section camera-viewer
Repositorynopal-plugin-camera-viewer
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.

  • Guardar direcciones de cámaras
  • Detectar webcams USB

Plugin API​

Route prefix(es): /api/cameras · 32 routes (Session (admin or operator): 13; Admin only: 19; Public: 0).

MethodRouteAccessPolicyDescription
GET/api/camerasSession (admin or operator)—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/camerasAdmin only——
POST/api/cameras/{camera_id}/captureAdmin only——
GET/api/cameras/{camera_id}/capturesSession (admin or operator)——
GET/api/cameras/{camera_id}/captures/{filename}Session (admin or operator)——
DELETE/api/cameras/{camera_id}/captures/{filename}Admin only—Borra una captura. Admin-only: es material que no se recupera.
POST/api/cameras/{camera_id}/captures/{filename}/editAdmin only—Rotar (múltiplo de 90°) y/o recortar una captura ya guardada.
POST/api/cameras/{camera_id}/captures/zipSession (admin or operator)—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}/duplicateAdmin only——
GET/api/cameras/{camera_id}/focusSession (admin or operator)——
POST/api/cameras/{camera_id}/focusAdmin only——
GET/api/cameras/{camera_id}/healthSession (admin or operator)—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/startAdmin only——
POST/api/cameras/{camera_id}/record/stopAdmin only——
GET/api/cameras/{camera_id}/recordingsSession (admin or operator)—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}Session (admin or operator)——
DELETE/api/cameras/{camera_id}/recordings/{filename}Admin only——
POST/api/cameras/{camera_id}/timelapseAdmin only——
POST/api/cameras/{camera_id}/timelapse/assembleAdmin only——
POST/api/cameras/{camera_id}/timelapse/assemble-gifAdmin only——
POST/api/cameras/{camera_id}/timelapse/pauseAdmin only——
POST/api/cameras/{camera_id}/timelapse/resumeAdmin only——
GET/api/cameras/{camera_id}/timelapse/statsSession (admin or operator)——
GET/api/cameras/{camera_id}/timelapse/videosSession (admin or operator)—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}Session (admin or operator)——
DELETE/api/cameras/{camera_id}/timelapse/videos/{filename}Admin only——
POST/api/cameras/{camera_id}/updateAdmin only——
POST/api/cameras/onvifAdmin only—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/removeAdmin only——
GET/api/cameras/usb/{camera_id}/streamSession (admin or operator)——
GET/api/cameras/usb/discoverSession (admin or operator)—Webcams USB conectadas localmente (V4L2) -- ver usb_camera_service.py.
POST/api/cameras/usb/registerAdmin only—Registra una webcam USB detectada -- a diferencia de URL directa/ONVIF, el stream lo sirve el propio NOPAL (ver usb_camera_service.ensure_s…

Verified notes​

  • Besides its own section, it exposes the window.NopalCameraCard widget (frontend/camera-card.js), which the core itself mounts on the Klipper, laser, CNC and Marlin device cards. This core-to-plugin integration is not declared in the manifest. (evidence: nopal-plugin-camera-viewer/frontend/camera-card.js; nopal/backend/static/js/app.js)

More information​