Integración domótica scanservjs, gratuita y de código abierto

Escanee desde Gladys con scanservjs: botón o escena, y un evento cuando el archivo está listo.
scanservjs es una interfaz web que escanea con SANE desde cualquier dispositivo de su red. Esta integración permite a Gladys iniciar un escaneo, con un toque en el panel o desde una escena, y avisa cuando un archivo está listo: desde Gladys o desde la interfaz web de scanservjs. Adónde va luego el archivo (una carpeta compartida, Paperless-ngx…) es cosa de scanservjs y de sus pipelines.
Probada con un scanservjs 3.3 real (imagen Docker sbs20/scanservjs) que
controla el escáner virtual de SANE (su backend test): escaneos del cristal
y del alimentador de documentos (10 páginas), en PDF, JPEG y PNG, ajustes
rechazados, un archivo eliminado, con y sin autenticación. Desarrollada sin el
hardware (ningún escáner físico) y aún sin probar en un Gladys real: sus
comentarios son bienvenidos en
las issues.
Lo que necesita
- Gladys Assistant 5.1.0 o posterior.
- scanservjs 3.x (probado con 3.3.0), su interfaz web accesible desde la máquina de Gladys (puerto 8080 por defecto), y un escáner que vea.
- Si declaró usuarios en su
config.local.js: uno de ellos y su contraseña.
La integración lee la lista de archivos de scanservjs cada minuto por defecto, y sus escáneres una vez por hora. Nada sale de su red.
Puesta en marcha
1. Comprobar la dirección de scanservjs
Abra scanservjs en un navegador y anote su dirección, por ejemplo
http://192.168.1.2:8080. Haga un primer escaneo desde su interfaz web: si
funciona allí, funcionará desde Gladys.
2. Configurar la integración
En Integraciones → scanservjs → Configuración:
- Dirección de scanservjs: la dirección anterior. Una dirección IP sola usa el puerto 8080.
- Usuario y Contraseña: solo si scanservjs los pide.
- Preajuste 1, 2 y 3: lo que hace un toque. Cada preajuste tiene un Nombre (el texto de su botón; vacío, el preajuste está desactivado), una Resolución, un Modo (color, escala de grises, blanco y negro), un Formato (PDF, PDF con texto por OCR, JPEG, PNG) y un Origen: el predeterminado del escáner, el cristal o el alimentador de documentos, que escanea todas las hojas que contiene (un solo archivo). Por defecto: Document (300 ppp, escala de grises, PDF) y Photo (300 ppp, color, JPEG). La integración encuentra las palabras de su escáner (un modo «Color» puede llamarse «24bit Color»); un blanco y negro que no tenga pasa a escala de grises.
- Pipeline de scanservjs (opcional): el nombre exacto de un pipeline de scanservjs, uno suyo por ejemplo (vea Paperless y carpetas compartidas). Vacío, la integración toma el del formato.
- Intervalo de actualización: en cuánto tiempo se detecta un escaneo hecho desde la interfaz web de scanservjs (30 segundos, 1 o 5 minutos). Un escaneo iniciado desde Gladys se detecta enseguida.
- Permitir eliminar archivos: desactivado por defecto; vea la acción más abajo.
- Idioma de los nombres: el idioma de los nombres de las funciones (fijados al añadir un dispositivo) y de los estados.
Probar la conexión lee scanservjs e indica su versión, sus escáneres y sus archivos.
3. Añadir los dispositivos
En la pestaña Descubrir, añada los escáneres y el dispositivo scanservjs. No se crea nada sin usted. El widget y las escenas funcionan sin ellos, pero una escena solo puede elegir un escáner añadido.
Los dispositivos
Un dispositivo por escáner de scanservjs:
| Función | Valor |
|---|---|
| Estado | Listo, Escaneando, Último escaneo fallido (hasta el siguiente correcto), No encontrado (scanservjs ya no lo lista) |
| Escaneo en curso | 1 mientras dura un escaneo iniciado desde Gladys |
Un dispositivo scanservjs para los archivos de su carpeta de salida:
| Función | Valor |
|---|---|
| Último escaneo | Día y hora del archivo más reciente |
| Último archivo | Su nombre |
| Páginas del último escaneo | Contadas en el PDF (o el ZIP de imágenes); 0 si se desconoce |
| Escaneos de hoy | Archivos creados desde medianoche |
| Archivos | Archivos de la carpeta |
Los archivos no están en los escáneres: scanservjs no anota qué escáner creó un archivo.
Panel
El widget Escáner muestra los escaneos del día, las páginas del último escaneo, el estado del escáner, los cinco últimos archivos y un botón por preajuste (Document, Photo…). Un toque escanea: el nombre del archivo y sus páginas aparecen en 20 segundos como máximo, o el widget indica que el escaneo continúa y se actualiza al terminar. En sus ajustes, elija el escáner (vacío: el primero).
Escenas
Desencadenantes
- Un escaneo ha terminado: un archivo nuevo en scanservjs, iniciado desde Gladys o desde su interfaz web. Filtros: iniciado desde (Gladys, la interfaz web) y tipo de archivo. Variables: el archivo, sus páginas, su tipo, su tamaño y, para un escaneo iniciado desde Gladys, su preajuste, su pipeline y su escáner.
- Un escaneo falla: un escaneo iniciado desde Gladys falla (atasco, alimentador vacío, escáner apagado, ajuste rechazado). Filtro: los escáneres. Variables: el escáner, el preajuste y el error de scanservjs.
Acciones
- Escanear: escanea con un preajuste (y un escáner; vacío, el primero) y espera el archivo, 100 segundos como máximo. Sus resultados: si el archivo está listo, su nombre y sus páginas. Un escaneo más largo continúa, y Un escaneo ha terminado se activa al terminar.
- Eliminar el último archivo: elimina el archivo más reciente de scanservjs, por ejemplo un escaneo fallido. Inactivo salvo que Permitir eliminar archivos esté activado. Su resultado: el nombre del archivo eliminado.
Ideas de escenas
- Un botón de la entrada (interruptor Zigbee) → Escanear con el preajuste Document: la carta en el cristal, un toque, y está en Paperless.
- Un escaneo ha terminado → enviar un mensaje «Escaneado: archivo (páginas)» con las variables del desencadenante.
- Un escaneo falla → avisar con el error: el alimentador estaba vacío.
Paperless y carpetas compartidas
La integración inicia los escaneos; scanservjs crea y envía los archivos. Para
que lleguen a Paperless-ngx, haga que la carpeta de salida de scanservjs
(/var/lib/scanservjs/output en su contenedor) apunte a la carpeta de consumo
de Paperless, o declare en su config.local.js un pipeline cuyo afterAction
mueva allí el archivo (vea la documentación de scanservjs,
«config.local.js»), y escriba su nombre en Pipeline de scanservjs de un
preajuste.
Solución de problemas
- «scanservjs no responde»: compruebe la dirección y el puerto desde la máquina de Gladys.
- «usuario o contraseña ausentes o rechazados por scanservjs»: scanservjs
tiene usuarios en su
config.local.js: introduzca uno de ellos y su contraseña. - «no hay ningún scanservjs en esta dirección»: la dirección apunta a otra cosa.
- «scanservjs no ve ningún escáner»: compruebe el escáner en su interfaz web y luego Buscar en la pestaña Descubrir (los escáneres se leen de nuevo).
- «este escáner no tiene alimentador de documentos»: el preajuste pide el alimentador; elija el cristal o el origen predeterminado del escáner.
- Un escaneo falla con el error de
scanimage: el mismo escaneo seguramente falla desde la interfaz web de scanservjs; sus registros dicen más. - Para ver más, ponga la variable
LOG_LEVELde la integración endebug.
Límites
- Una instancia de scanservjs por integración, un escaneo desde Gladys a la vez. scanservjs no impide que un escaneo de su interfaz web se ejecute al mismo tiempo que uno de Gladys: evítelo.
- Un escaneo iniciado desde la interfaz web se detecta cuando aparece su archivo, en la siguiente lectura: su fallo, su preajuste y su escáner no se conocen.
- Las páginas se cuentan en los archivos PDF y los archivos ZIP; un archivo de texto del OCR cuenta como una página.
- Desarrollada sin el hardware: sus comentarios son bienvenidos (solo un escáner virtual de SANE). Sin relación con scanservjs ni SANE. Informe de un problema o una idea en las issues.
Parámetros de configuración
Estos son los parámetros que scanservjs te pide en su pantalla de configuración en Gladys.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Su scanservjs | section | No | scanservjs, la interfaz web que escanea con SANE. Introduzca su dirección y, si su autenticación está activada, un usuario y una contraseña. Después añada los escáneres desde la pestaña Descubrir. |
| Dirección de scanservjs | string | Sí | La dirección de la interfaz web, puerto 8080 por defecto. |
| Usuario | string | No | Un usuario de config.local.js (users). Vacío sin autenticación. |
| Contraseña | secret | No | La contraseña de este usuario. Vacía sin autenticación. |
| Preajuste 1 | section | No | Un botón del widget y una opción de la acción de escena «Escanear». Nombre vacío: el preajuste está desactivado. |
| Nombre (el botón) | string | No | |
| Resolución | select | No | |
| Modo | select | No | |
| Formato | select | No | |
| Origen | select | No | |
| Pipeline de scanservjs (opcional) | string | No | Su nombre exacto, p. ej. uno suyo que envía a Paperless. Vacío: el del formato. |
| Preajuste 2 | section | No | |
| Nombre (el botón) | string | No | |
| Resolución | select | No | |
| Modo | select | No | |
| Formato | select | No | |
| Origen | select | No | |
| Pipeline de scanservjs (opcional) | string | No | Su nombre exacto, p. ej. uno suyo que envía a Paperless. Vacío: el del formato. |
| Preajuste 3 | section | No | |
| Nombre (el botón) | string | No | |
| Resolución | select | No | |
| Modo | select | No | |
| Formato | select | No | |
| Origen | select | No | |
| Pipeline de scanservjs (opcional) | string | No | Su nombre exacto, p. ej. uno suyo que envía a Paperless. Vacío: el del formato. |
| Opciones | section | No | |
| Intervalo de actualización | select | No | Con qué frecuencia se leen los archivos de scanservjs: un escaneo de su interfaz web se detecta en este plazo. |
| Permitir eliminar archivos | boolean | No | Permite que la acción de escena «Eliminar el último archivo» elimine el archivo más reciente de scanservjs. |
| Idioma de los nombres | select | No | Idioma de los nombres de las funciones (fijados al añadir un dispositivo), de los estados y de los mensajes de escena. |
Cómo instalar scanservjs en Gladys
- En Gladys, abre Integraciones: scanservjs aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
- Haz clic en Instalar. Gladys descarga la imagen Docker (
ghcr.io/guim31/gladys-scanservjs:1.0.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración). - Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
- También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-scanservjs.
scanservjs requiere Gladys >=5.1.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.
¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.
Sobre las integraciones externas
scanservjs es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.
- Explorar todas las integraciones, nativas y de la comunidad
- Crear y publicar tu propia integración externa
- Código fuente en GitHub — fuente de esta documentación