OpeniPark
Iniciar sesión Crear cuenta
OpeniPark

Gestión de estacionamientos

versión 10.0

1. Introducción

OpeniPark es un sistema de gestión de estacionamientos que permite controlar la entrada y salida de vehículos, calcular tarifas de forma automática mediante perfiles de cobro configurables, gestionar turnos de operadores y generar reportes detallados. Además, permite la integración de dispositivos como sensores de vehículos, expendedoras de boletos y barreras de estacionamiento.

2. Inicio de sesión

Para acceder al sistema, ingresa tu usuario o correo electrónico y tu contraseña en la pantalla de inicio. Presiona el botón "Ingresar" o la tecla Enter.

Pantalla de inicio de sesión

Importante:

Si no tienes cuenta, puedes crear una desde el enlace "Crear una cuenta". Si olvidaste tu contraseña, usa el enlace "Olvidé mi contraseña" para recibir un enlace de recuperación por correo electrónico.

Al iniciar sesión llegarás al panel principal (Dashboard).

Iniciar sesión con Google

Si tu estacionamiento tiene configurado el acceso con Google, en la pantalla de inicio verás la opción "o continúa con" junto al botón de Google. Presiónalo y selecciona tu cuenta de Google para entrar sin escribir usuario ni contraseña.

Nota: El correo de Google queda verificado automáticamente, por lo que no necesitas confirmarlo por correo electrónico.

3. Panel principal (Dashboard)

Al ingresar verás el resumen del turno en curso, organizado en tres bloques.

Acciones

Turno actual

Panel principal

Adicional

Bloque visible solo para administradores y supervisores:

Panel principal — bloque adicional

En la barra superior (o menú hamburguesa en celular) puedes navegar a las demás secciones.

4. Impresión de boletos de entrada

Desde el panel principal, presiona "Imprimir boleto".

Se mostrará una pantalla con:

Presiona el botón "Imprimir boleto" para enviar la impresión a la impresora térmica. El sistema registrará automáticamente la entrada del vehículo.

Impresión de boleto de entrada

La impresión se realiza en impresoras térmicas de tickets compatibles con el estándar ESC/POS, conectadas a través del "Módulo de Impresión" (dispositivo externo que recibe las órdenes de impresión de forma inalámbrica). No requiere configuración de IP ni cables adicionales.

5. Leer boleto (Salida)

Para registrar la salida de un vehículo, existen dos métodos:

Escáner QR por cámara

Desde "Leer boleto", el sistema solicitará acceso a la cámara del dispositivo. Es necesario permitir el acceso la primera vez que se usa; de lo contrario el lector no podrá escanear los códigos QR. Si accidentalmente bloqueaste el permiso, puedes otorgarlo desde la configuración del navegador (icono del candado junto a la URL).

En dispositivos con varias cámaras (celulares, tabletas), puedes elegir cuál usar. Normalmente se selecciona la cámara trasera para apuntar al boleto. Si escoges una incorrecta, solo vuelve a "Leer boleto" y selecciona la correcta.

Apunta la cámara al código QR del boleto. El sistema detectará el folio automáticamente y mostrará la pantalla de cobro.

Al leer un boleto correctamente escucharás un tono agudo de confirmación. Si el boleto ya fue leído antes o hay algún error, escucharás un tono grave de error.

Escáner láser / lector físico

Conecta un escáner de código de barras/QR al puerto USB. Al leer el código, el sistema detectará la entrada automáticamente.

Lectura de boleto

Pantalla de cobro

En la pantalla de cobro se muestra:

Opciones:

6. Boleto extraviado

Usa esta opción cuando el cliente no tenga el boleto que se le entregó en la entrada. Presiona "Boleto extraviado" en el panel principal y el sistema aplicará una tarifa fija configurable en el perfil de cobro.

Precaución: Configura esta tarifa con cuidado. Un monto demasiado bajo puede incentivar a algunos clientes a "perder" su boleto cuando su estancia habitual costaría más que la tarifa por extravío.

El resto del proceso de cobro es idéntico a la lectura normal.

Navegación: Reportes y Ajustes

Las distintas secciones del sistema se abren desde la barra de navegación superior (en celular, desde el menú hamburguesa ☰).

Menú de navegación Corte de turno

7. Corte de turno

El corte de turno cierra el turno actual y comienza uno nuevo. Los cortes se registran en el historial de operaciones y son la base para los reportes.

Corte de turno

Pasos:

El sistema asignará automáticamente el perfil de cobro según la Programación de horarios configurada. No se puede realizar un corte si ya existe un corte activo sin cerrar.

8. Reportes

En la sección "Reportes" puedes consultar el historial de todos los turnos registrados.

Reportes

Se muestran los últimos 10 turnos con un botón "Ver turno" para ver los detalles. Puedes buscar cualquier turno por su número en el campo inferior.

Reportes

Ventana de detalle

Al abrir un turno verás:

Puedes ordenar la tabla por: Folio, Fecha y hora, Servicio (duración real), Cobro, Estado o Perfil.

Exportar reporte

Desde la ventana de detalle puedes exportar el reporte de tres formas:

9. Perfiles de cobro

Los perfiles de cobro definen las tarifas del estacionamiento. Cada estacionamiento puede tener múltiples perfiles, pero solo uno puede estar activo a la vez como perfil por defecto.

Esta sección es solo para administradores. Se accede desde Ajustes → Perfiles de cobro.

Nota: Si usas Programación de horarios (sección 10), el perfil activo aquí funciona como respaldo: solo se usa cuando ningún horario programado coincide con la fecha y hora actuales.

Campos del perfil

Periodos de cobro

Cada perfil tiene uno o más periodos. Cada periodo define:

Nota: La casilla "Aplica sucesivo" se mueve automáticamente al último periodo al añadir o eliminar.

¿Cómo funcionan las tolerancias?

Hay dos tipos de tolerancia y funcionan de manera distinta:

1. Tolerancia inicial (del perfil): minutos completamente gratis al entrar. Si el vehículo sale dentro de este tiempo, solo paga la tarifa mínima. Si se excede, el tiempo completo (incluida la tolerancia) se contabiliza para el cobro.

2. Tolerancia extra (de cada periodo): minutos de gracia al finalizar un periodo. Sirve para evitar que unos pocos minutos extra disparen el cobro del siguiente periodo. La tolerancia NO se acumula ni se descuenta del tiempo total.

Ejemplo de cálculo paso a paso

Perfil configurado con tolerancia inicial: 0 y los siguientes periodos:

Auto estacionado 66 minutos:

  1. Minutos disponibles: 66 (no hay tolerancia inicial).
  2. Periodo 1 (30 min): Quedan 66 - 30 = 36 min. ¿36 > tolerancia de 5? Sí, se cobra periodo 1: $15.00.
  3. Periodo 2 (30 min): Quedan 36 - 30 = 6 min. ¿6 > tolerancia de 5? Sí, se cobra periodo 2: $20.00.
  4. Periodo 3 (60 min, sucesivo): Quedan 6 min. Se divide: 0 periodos completos de 60 min + 6 min extra. ¿6 > tolerancia de 0? Sí, se cobra 1 periodo: $30.00.
  5. Total: $15.00 + $20.00 + $30.00 = $65.00 (3 periodos).

Mismo auto, pero con 35 minutos (justo en el límite de tolerancia del periodo 1):

  1. Minutos disponibles: 35.
  2. Periodo 1 (30 min): Quedan 35 - 30 = 5 min. ¿5 > tolerancia de 5? No. El tiempo está dentro de la gracia. Solo se cobra periodo 1: $15.00.
  3. Total: $15.00 (1 periodo).

Ejemplo con tolerancia inicial

Mismo perfil pero con tolerancia inicial: 5 min y tarifa mínima: $10.00:

Ejemplo con estancia larga

Auto estacionado 2 días, 3 horas y 39 minutos (3,099 minutos) con el mismo perfil:

  1. Periodo 1: 3,099 - 30 = 3,069 min restantes. Cobro: $15.00.
  2. Periodo 2: 3,069 - 30 = 3,039 min restantes. Cobro: $20.00.
  3. Periodo 3 (sucesivo): 3,039 ÷ 60 = 50 periodos completos, sobran 39 min. ¿39 > tolerancia 0? Sí, un periodo más. Total: 51 periodos × $30.00 = $1,530.00.
  4. Total: $15.00 + $20.00 + $1,530.00 = $1,565.00 (53 periodos).
Importante: Las tolerancias extra NO se restan del tiempo total. Solo deciden si se dispara o no el cobro del siguiente periodo. Si el tiempo supera la tolerancia, los minutos de tolerancia "se pierden" y no reducen el tiempo restante.

Tarifa mínima y máxima (topes de cobro)

Después de calcular el total por periodos, el sistema aplica dos topes opcionales. Ambos usan el valor 0 para indicar "desactivado".

Ejemplo con tarifa máxima por día: con tarifa máxima por día: $180.00, un auto de 8 horas que acumula $245 se cobra a $180.00; si queda 2 días, se cobra $360.00 (2 × $180).

Ejemplo con tarifa mínima: perfil con tarifa mínima: $10.00 y periodos desde $15.00. Un auto que entra y sale en 1 minuto (dentro de la tolerancia inicial) tendría un cálculo de $0, pero el tope mínimo lo sube a $10.00.

Consejo: El sistema aplica primero la tarifa mínima y después la máxima. Por eso configura siempre mínimo < máximo: si pones un mínimo mayor que el máximo (p. ej. mínimo $20 y máximo $15), el máximo se aplica al final y deja sin efecto el mínimo.

10. Programación de horarios

Los horarios de cobro permiten programar qué perfil de cobro se aplica automáticamente según el día, la hora y la fecha. Esto elimina la necesidad de cambiar manualmente el perfil activo durante el día.

Se accede desde Ajustes → Programación de horarios (solo administradores).

¿Cómo funciona?

Cada vez que se lee un boleto o se hace un corte de turno, el sistema evalúa todos los horarios configurados en orden de prioridad (de mayor a menor). El primer horario cuyas condiciones coincidan con la fecha y hora actuales determina el perfil de cobro a usar.

Si ningún horario coincide, se usa el perfil activo por defecto (configurado en Ajustes → Perfiles de cobro).

Campos del horario

Importante: El orden de evaluación es por prioridad descendente, no por fecha de creación. Asigna prioridades más altas a horarios más específicos (como días feriados) y prioridades más bajas a horarios generales (como días entre semana).

Ejemplo 1 — Diurno y nocturno entre semana

Escenario: Lunes a viernes, de 8:00 AM a 8:00 PM cobrar con perfil "Diurno" ($25/hora). De 8:00 PM a 8:00 AM cobrar con perfil "Nocturno" ($15/hora).

Configuración:

CampoHorario 1 (Diurno)Horario 2 (Nocturno)
NombreDiurno L-VNocturno L-V
PerfilDiurnoNocturno
DíasLun, Mar, Mié, Jue, VieLun, Mar, Mié, Jue, Vie
Hora inicio08:0020:00
Hora fin20:0008:00
Prioridad1010

El horario nocturno usa hora inicio 20:00 y hora fin 08:00 (inicio > fin), lo que indica que cruza la medianoche. El sistema lo interpreta correctamente como "de 8 PM a 8 AM del día siguiente".

Ejemplo 2 — Fin de semana con tarifa especial

Escenario: Sábado y domingo todo el día cobrar con perfil "Fin de Semana" ($30 tarifa plana por día).

Configuración:

CampoValor
NombreFin de semana
PerfilFin de Semana
DíasSáb, Dom
Horas(vacío — todo el día)
Prioridad20

Al dejar los campos de hora vacíos, este horario aplica las 24 horas del sábado y domingo. La prioridad 20 es mayor que la de los horarios entre semana (10), asegurando que el fin de semana tenga preferencia si llegaran a solaparse.

Ejemplo 3 — Temporada navideña (fechas específicas)

Escenario: Del 24 al 25 de diciembre aplicar perfil "Navideño" ($50 tarifa plana), sin importar el día de la semana ni la hora.

Configuración:

CampoValor
NombreNavidad 2026
PerfilNavideño
Fecha inicio2026-12-24
Fecha fin2026-12-25
Días / Horas(vacío — todo el día, ambos días)
Prioridad50

Al usar solo fechas (sin días ni horas), el horario navideño cubre todo el 24 y 25 de diciembre completos. La prioridad 50 es más alta que la del fin de semana (20) y los horarios entre semana (10), garantizando que Navidad tenga preferencia absoluta sobre cualquier otra regla. Al terminar el 25 de diciembre, el sistema vuelve automáticamente a los horarios normales.

Ejemplo 4 — Sistema completo con prioridades

Escenario: Un estacionamiento que opera con las siguientes reglas:

Configuración de horarios (ordenados por prioridad):

#NombrePerfilDíasFechasHorasPrioridad
1Año NuevoDía Feriado—1 Ene → 1 Ene—90
2Fin de SemanaFin de SemanaSáb, Dom——20
3Diurno L-VDiurnoLun-Vie—08:00-20:0010
4Nocturno L-VNocturnoLun-Vie—20:00-08:0010

Además, en Ajustes → Perfiles de cobro se marca "Clásico" como perfil activo por defecto (el respaldo cuando ningún horario coincide).

¿Qué perfil se aplica?

Consejo: Para evitar huecos donde no haya cobertura de horarios, asegúrate siempre de que el perfil activo por defecto sea un perfil razonable que funcione como respaldo. También puedes crear un horario "comodín" sin días, fechas ni horas específicas, con prioridad 0, que cubra cualquier momento no contemplado por otras reglas.

Consideraciones importantes

11. Gestión de operadores

Desde Ajustes → Gestionar Operadores (solo administradores) puedes administrar las cuentas de usuario (operadores) del sistema.

El correo electrónico del operador debe ser único en todo el sistema, ya que se utiliza para iniciar sesión y evita ambigüedades entre distintos estacionamientos.

Estos operadores pueden ser seleccionados al hacer un corte de turno como responsables del siguiente turno.

12. Registro de sensores

El sistema recibe datos en tiempo real desde el Módulo de Sensores instalado en los carriles del estacionamiento. Este módulo detecta la entrada y salida de vehículos y envía los eventos directamente a la app, donde se almacenan en la base de datos y se visualizan en tiempo real.

Panel de control de sensores

Al ingresar a Sensores en la barra de navegación, verás:

Panel de sensores

Indicador de conexión

En la parte superior, una barra muestra el estado del Módulo de Sensores:

Los datos se actualizan automáticamente cada 5 segundos sin necesidad de recargar la página.

Tarjetas de contadores

Debajo del indicador de conexión se muestran tres tarjetas con los contadores principales:

Nota: Los contadores se calculan a partir de la base de datos. Si realizaste un reinicio, solo cuentan los eventos posteriores al reinicio. El reinicio no borra la base de datos ni el historial; solo reinicia el punto de partida de los contadores visuales.

Reiniciar contadores

El botón "Reiniciar Contadores" pone a cero los contadores visuales (Estacionados, Entradas y Salidas). Esto no borra ningún dato de la base de datos, solo establece un nuevo punto de partida para el conteo. Útil al inicio del día o al cambiar de turno.

Historial de eventos

Debajo de los contadores se encuentra la tabla de eventos con los siguientes controles:

Orden de vista

Ordenar por

Puedes ordenar la tabla por cualquiera de estos criterios:

Filtros

Token del dispositivo

Arriba de la tabla se muestra el token del Módulo de Sensores en un recuadro informativo. Este identificador único confirma qué módulo está reportando los eventos.

Columnas de la tabla

Paginación

La tabla muestra 50 eventos por página. Usa los números de paginación al final de la tabla para navegar entre páginas.

Tipos de evento del sensor

Importante: La columna "Auto-Moto" agrupa motocicletas y autos muy pequeños o compactos. El sensor actual no puede diferenciar físicamente entre una moto grande y un auto muy pequeño. Esta categoría combinada refleja esa limitación técnica. No es posible separar estos tipos de vehículo sin hardware adicional.

13. Auditar Sensores

Esta herramienta de auditoría permite cruzar los eventos detectados por los sensores con los tickets impresos en el sistema. Su objetivo es identificar discrepancias: eventos del sensor sin un ticket correspondiente, lo que podría indicar un vehículo que entró pero no recibió boleto.

Se accede desde Reportes → Auditar Sensores.

¿Cómo funciona el matching?

Para cada evento de sensor (ENTRADA o SALIDA), el sistema busca el ticket de operación más cercano en el tiempo dentro de una ventana de tolerancia:

Si encuentra un match, muestra el folio del ticket, la fecha de la operación y la diferencia exacta en segundos. Si no encuentra ninguno, marca el evento como "Sin ticket".

Controles de la vista

Columnas de la tabla

Interpretación de resultados

Nota: Esta herramienta es informativa y de auditoría. No bloquea ni modifica ninguna operación. Un evento "Sin ticket" no necesariamente indica un error — puede ser un vehículo que simplemente pasó de largo sin estacionarse. Evalúa los resultados con criterio.
Limitación: En horas de alto tráfico, cuando varios vehículos entran o salen con pocos segundos de diferencia, es posible que el matching asocie un ticket al evento de sensor equivocado. La ventana de 3-5 minutos y el criterio de "más cercano" minimizan este riesgo, pero no lo eliminan por completo. Para máxima precisión, considera instalar sensores adicionales por carril.

14. Configuración del perfil

Desde Ajustes → Información del perfil puedes completar y actualizar los datos de tu estacionamiento:

Nota: Las opciones de impresión (ancho de papel, personalización del ticket, corte de papel y logo) se configuran en una sección aparte: Ajustes → Opciones de Impresora. Ver sección 15.

15. Opciones de Impresora y personalización de tickets

Desde Ajustes → Opciones de Impresora puedes configurar el papel, la apariencia de los boletos (entrada y salida), el corte de papel y el logo impresos en la impresora térmica.

Todos los cambios se aplican al guardar y afectan inmediatamente a los siguientes boletos que se impriman.

Ancho del papel

Importante: Asegúrate de seleccionar el ancho correcto según el rollo de papel instalado en tu impresora. Si seleccionas 80 mm con papel de 58 mm, el texto se cortará.

Tamaño del título

Mostrar RFC / titular

Actívalo para incluir el nombre o razón social del titular en el ticket (útil para facturación). Desactívalo si prefieres tickets más limpios o si el nombre es muy largo.

Mostrar dirección

Controla si aparecen las tres líneas de dirección del estacionamiento en el ticket. Desactivarlo ahorra espacio en el papel.

Tamaño del QR (1 a 16)

El código QR en el boleto de entrada puede ajustarse en tamaño del 1 al 16:

El QR codifica el número de folio del boleto y es lo que escanea el lector o la cámara para registrar la salida.

Espaciado entre elementos

Mensaje de agradecimiento

Texto personalizado que aparece al final del ticket (antes del separador). Por defecto: "gracias por su preferencia". Puedes cambiarlo por cualquier frase, por ejemplo: "¡Vuelva pronto!", "Estacionamiento seguro las 24 h", etc. Déjalo vacío para no mostrar ningún mensaje.

En el ticket de salida, el mensaje se muestra entre signos de admiración (¡Mensaje!).

Texto extra

Línea de texto libre que aparece antes del mensaje de agradecimiento. Ideal para promociones, avisos o información adicional. Ejemplos:

Déjalo vacío para no mostrar texto extra.

Corte de papel

Actívalo para que la impresora corte el papel automáticamente al final de cada boleto (comando ESC/POS de corte completo). Si tu impresora no tiene cuchilla o prefieres cortar manualmente, desactívalo.

Avances de línea antes del corte

Número de saltos de línea (0 a 20) que la impresora avanza antes de ejecutar el corte. Sirve para que el texto no quede pegado al corte. Aumenta el valor si el corte queda muy junto al último texto.

Logo del ticket

Puedes imprimir un logo en la parte superior de los boletos (entrada y salida). Se sube desde esta misma pantalla y se convierte automáticamente a blanco y negro para la impresora térmica.

Nota: El logo se centra automáticamente en el boleto. La proporción correcta depende de cada impresora; si el logo se ve estirado verticalmente, reduce "Altura del logo".

16. Voz y anuncios (Text-to-Speech)

OpeniPark puede hablar en voz alta usando un servicio de texto a voz (Text-to-Speech) basado en las voces naturales de Microsoft Edge, alojado en tu propio VPS. Esto permite anunciar la bienvenida, el total a pagar o el cobro de un boleto extraviado de forma automática y audible para el cliente.

Esta sección es solo para administradores. Se accede desde Ajustes → Voz / Anuncios.

Seguridad: La API Key del servicio de voz se guarda en el servidor y nunca se expone en el navegador. Las peticiones se hacen a través de un proxy interno de OpeniPark.

Activar voz

Interruptor general del complemento. Si está en "No", no se reproducirá ningún anuncio. Úsalo para desactivar la voz temporalmente sin perder la configuración.

API Key

Clave de acceso de tu servicio TTS. Se define en el archivo docker-compose.yml de tu VPS (variable TTS_API_KEY). Pégala aquí tal cual. Sin una clave válida, los anuncios no podrán generarse.

URL del servicio

Dirección base del servicio TTS (por defecto https://iot.buyubampo.com). Solo cámbiala si alojas el servicio en otro dominio.

Voz

El selector de voz incluye más de 40 voces en español, agrupadas por país. Las voces de México son:

Microsoft solo ofrece estas dos voces para México; por eso el selector incluye también voces de España (Álvaro, Elvira, Ximena), Estados Unidos (Alonso, Paloma) y el resto de países de habla hispana (Argentina, Colombia, Chile, Perú, Venezuela, etc.).

Si necesitas ver la lista completa de voces (incluidos otros idiomas), consulta el endpoint público GET /api/tts/voices de tu VPS.

Velocidad, volumen y tono

El valor por defecto de los tres es +0% (o +0Hz para el tono), es decir, sin cambios.

Momentos de uso

Puedes activar o desactivar cada anuncio de forma independiente y personalizar su mensaje:

Variables en los mensajes

En los mensajes puedes usar las siguientes variables, que se reemplazan automáticamente por el valor real:

Ejemplo: "Bienvenido a {nombre}. {hora}. Tu folio es el {folio}." → "Bienvenido a Estacionamiento JJR. Son las cuatro treinta de la tarde. Tu folio es el 565636526."

Pausas y entonación

Puedes controlar las pausas y la entonación de dos formas:

Ejemplos de pausas

Pausa corta con coma:

Bienvenido a {nombre}, tu folio es el {folio}.

Pausa larga con {pausa_larga}:

Bienvenido a {nombre}.{pausa_larga}Son las {hora}.{pausa}Tu folio es el {folio}.

Énfasis por puntuación (exclamación):

¡Gracias por su visita! Favor de pagar {total} pesos.

Importante: Este servicio no interpreta SSML. Si escribes etiquetas como <speak> o <break/>, la voz las leerá literalmente ("speak", "barra diagonal", etc.). Usa solo texto plano y signos de puntuación.

Probar

El botón "Probar voz" reproduce un texto de prueba usando los valores actuales del formulario (API Key, voz, velocidad, etc.), aunque aún no hayas presionado "Guardar". Es la forma más rápida de verificar que la clave y la voz funcionan correctamente.

Importante: Recuerda presionar "Guardar" para que los cambios queden registrados. Algunos navegadores bloquean la reproducción automática de audio al cargar la página; si no escuchas el anuncio, usa el botón "Repetir anuncio" que aparece en la pantalla de cobro y en la de impresión de entrada.

17. Modos de prueba y depuración

El sistema incluye tres modos de operación para la impresión, configurables desde Ajustes → Opciones de Impresora → Modo de prueba.

Normal (MQTT)

Modo de producción. Los boletos se envían al Módulo de Impresión a través del broker MQTT y se imprimen normalmente en la impresora térmica. Usa este modo durante la operación diaria.

Guardar en archivo

Los boletos se envían a la impresora normalmente y además se guarda una copia de los datos en el servidor, dentro de la carpeta debug/{id_estacionamiento}/.

Por cada boleto se generan tres archivos:

ArchivoContenidoUso
entrada_4380_20260805_175557.hexPayload ESC/POS en hexadecimalCopiar y pegar en MQTTX para probar manualmente
entrada_4380_20260805_175557.binPayload ESC/POS en binario crudoEnviar directamente a la impresora por TCP
entrada_4380_20260805_175557.txtConfiguración usada (ancho, tamaño, etc.)Registro de qué parámetros generaron ese ticket

El nombre del archivo incluye: tipo de ticket (entrada/salida), número de folio y fecha/hora de generación.

¿Para qué sirve este modo?

Vista previa en pantalla

En lugar de enviar el boleto a la impresora, muestra una simulación visual en el navegador con:

Importante: La vista previa en pantalla NO imprime el boleto ni lo envía por MQTT. Es exclusivamente para previsualizar y depurar. El boleto de entrada SÍ se registra en la base de datos (se genera el folio), pero no se envía a la impresora. Para el ticket de salida, la vista previa tampoco modifica la base de datos.

Flujo de trabajo recomendado para configurar tickets

  1. Cambia el modo a "Vista previa en pantalla" y guarda.
  2. Genera un boleto de entrada. Revisa el render visual y los datos HEX.
  3. Ajusta los parámetros (ancho, tamaño, espaciado, mensajes) desde Ajustes.
  4. Genera otro boleto y compara. Repite hasta que el diseño te convenza.
  5. Cambia el modo a "Guardar en archivo", genera un boleto, copia el .hex a MQTTX y verifica en la impresora real.
  6. Una vez confirmado, cambia a "Normal (MQTT)" para operación diaria.

18. Modo oscuro

El sistema incluye un modo oscuro para reducir la fatiga visual. Puedes activarlo o desactivarlo desde:

Modo oscuro

La preferencia se guarda automáticamente y se recuerda en futuras visitas.

19. Configuración de descuentos

Los descuentos permiten reducir el total a pagar por un boleto usando motivos predefinidos (convenios, empleados, cortesías, promociones). Solo los usuarios con permisos de administrador pueden configurar los motivos y aplicarlos en la pantalla de cobro.

¿Por qué definir motivos en vez de descontar a mano? Porque cada descuento queda registrado con nombre y valor en la operación y en los reportes. Así sabes exactamente cuánto se descontó, por qué concepto y quién lo aplicó, en lugar de un monto arbitrario sin justificación.

Se accede desde Ajustes → Configuración de descuentos (solo administradores).

Motivos de descuento

Cada motivo define un tipo de descuento que los administradores podrán aplicar en el cobro:

¿Monto fijo o porcentaje? ¿Cuál elegir?

La elección depende de qué quieres expresar con el descuento:

Ejemplos de cálculo

Supongamos un boleto con total original de $100.00:

Regla importante: el porcentaje se calcula sobre el total original

Cuando aplicas varios descuentos, los porcentajes se calculan siempre sobre el total original (sin descontar), no sobre el total que va quedando. Esto significa que los descuentos se suman de forma simple.

Ejemplo: total original $100 con dos descuentos de 10% → $100 - $10 - $10 = $80.00 (equivale a un 20% total). No se calcula 10% sobre $100 y luego 10% sobre $90.

Ejemplo combinado: total original $100 con 10% + $15 fijo → $100 - $10 - $15 = $75.00.

¿Cómo se aplican en la pantalla de cobro?

Al leer un boleto, los usuarios administradores verán una sección de "Descuentos" con un botón por cada motivo activo. Al presionarlo, el descuento se agrega al ticket y el total se recalcula al instante.

¿Cuándo desactivar un motivo (Activo = No)?

Desactívalo cuando un descuento deje de aplicar temporalmente, sin perder su configuración:

Al estar "No", el motivo no aparece en la pantalla de cobro, pero conserva su configuración y sus registros históricos en reportes.

En reportes

En la tabla de detalle de cada turno, la columna "Descuentos" muestra qué motivos se aplicaron a cada operación y su valor. Si una operación no tuvo descuentos, la celda aparece vacía. Los descuentos también quedan registrados en la Auditoría (sección siguiente) con el folio, el cobro y el detalle de descuentos.

Nota: Un descuento del 100% deja el ticket en $0.00. Úsalo con precaución y combínalo con un motivo claro como "Gratuidad" o "Cortesía", para que quede justificado en los reportes y en la auditoría.

20. Auditoría

La Auditoría es un registro cronológico de las acciones importantes que realizan los usuarios del sistema. Te permite saber quién hizo qué y cuándo: inicios de sesión, cortes de turno, cobros y cambios en las cuentas de operadores.

¿Para qué sirve?

Se accede desde Ajustes → Auditoría (solo administradores).

¿Qué acciones se registran?

Columnas de la tabla

Filtros

Los resultados se muestran en orden del más reciente al más antiguo y se dividen en páginas de 30 registros. Usa los botones al final de la tabla para navegar.

Ejemplo de lectura

Un registro de cobro se vería así:

25/08/2026 14:32 | Juan Pérez | Operador | Cobro realizado | folio: 4380 | cobro: 85.00 | tipo: salida | descuentos: Cliente frecuente (15%)

Esto indica que el operador "Juan Pérez" cobró $85.00 por el folio 4380 y aplicó el descuento "Cliente frecuente" del 15% sobre un total mayor.

Nota: La auditoría es solo de lectura: no se puede editar ni borrar. Esto garantiza que el historial sea confiable como evidencia. Revisa también la sección 13. Auditar Sensores, que cruza eventos de sensores con tickets y es una herramienta distinta pero complementaria.

21. Recuperación de contraseña

Si olvidaste tu contraseña, en la pantalla de inicio presiona "Olvidé mi contraseña". Ingresa tu correo electrónico y recibirás un enlace para restablecerla. El enlace expira después de 1 hora.

Nota: Por seguridad, el sistema siempre muestra un mensaje de éxito incluso si el correo no está registrado (para evitar que se descubran cuentas existentes).

22. Solución de problemas

Esta sección reúne los problemas más comunes y su solución, organizados por área. Antes de contactar a soporte, revisa aquí el apartado que corresponda a tu situación.

22.1 Acceso y cuentas

No puedo iniciar sesión (aparece "Credenciales inválidas").

No recibí el correo de confirmación al crear mi cuenta.

No recibí el enlace para restablecer mi contraseña.

No aparece el botón "Continuar con Google".

El acceso con Google solo se muestra cuando el administrador del sistema lo tiene configurado. Si no aparece, inicia sesión de la forma normal (usuario/correo y contraseña).

Al entrar con Google me pide completar mi perfil.

La primera vez que entras con una cuenta de Google nueva, el sistema crea tu cuenta y debes completar los datos de tu estacionamiento en Ajustes → Información del perfil. Es un paso único.

Me aparece "sesión expirada" o el sistema me cierra de repente.

Es normal por seguridad tras un tiempo de inactividad. Simplemente vuelve a iniciar sesión desde la pantalla de inicio.

No veo las opciones de administración (Ajustes, Operadores, Perfiles, etc.).

Las opciones de Ajustes, Gestionar Operadores, Perfiles de cobro, Programación de horarios, Configuración de descuentos y Auditoría solo están disponibles para cuentas de administrador. Si eres operador, pide al administrador que revise tu rol.

22.2 Impresión de boletos

La impresora no imprime.

El boleto sale en blanco o a medias.

El logo no imprime o hace que el boleto falle.

El tamaño del logo probablemente excede lo que el Módulo de Impresión puede recibir. Reduce el "Tamaño del logo" a un nivel menor (Mediano o Pequeño) en Ajustes → Opciones de Impresora y prueba de nuevo.

El logo se ve estirado o aplastado.

Ajusta el campo "Altura del logo (% del ancho)" en Ajustes → Opciones de Impresora. Si se ve estirado (más alto de lo normal), reduce el valor; si se ve aplastado, auméntalo. Este valor puede variar entre impresoras.

La impresora no corta el papel.

El ticket muestra el nombre antiguo del estacionamiento.

El nombre se carga al iniciar sesión. Cierra sesión y vuelve a entrar para que se actualice con el nuevo nombre.

22.3 Lectura de boletos y QR

El lector QR por cámara no funciona o no enciende la cámara.

El escáner láser no lee los códigos.

Aparece "Boleto no existe" al leer un folio.

El folio escaneado no pertenece a este estacionamiento o no fue generado por el sistema. Verifica que escaneaste el código correcto (el del boleto de entrada, no otro documento).

Aparece "Boleto ya leído".

Ese boleto ya fue procesado anteriormente y su servicio está cerrado. No puede cobrarse dos veces.

Aparece "Estacionamiento equivocado".

El boleto pertenece a otro estacionamiento. No es posible leer boletos de otro lote desde esta cuenta.

22.4 Cobros y tarifas

El cobro no es el que esperaba.

Revisa la configuración de tu perfil de cobro y la Programación de horarios. Verifica especialmente:

Aparece "No hay un perfil de cobro asignado".

No hay ningún perfil disponible para el cobro. Verifica que tengas al menos un perfil de cobro creado y que la Programación de horarios tenga una regla activa para este momento, o que exista un perfil activo por defecto en Ajustes → Perfiles de cobro.

El perfil de cobro no cambia según el horario configurado.

Verifica en Ajustes → Programación de horarios que:

Dos horarios se solapan y no se aplica el esperado.

Revisa las prioridades de ambos horarios. El de mayor número gana. Si tienen la misma prioridad, gana el de menor ID (más antiguo). Ajusta la prioridad del horario que quieres que tenga preferencia.

No aparecen los botones de descuento en la pantalla de cobro.

Los descuentos solo son visibles para usuarios administradores. Si eres administrador y no los ves, verifica que haya al menos un motivo de descuento activo en Ajustes → Configuración de descuentos.

El ticket impreso no refleja el descuento aplicado.

Aplica los descuentos antes de presionar "Imprimir ticket". Si los aplicas después de imprimir, el ticket no los incluirá, aunque el cobro final sí se registrará correctamente al presionar "Aceptar".

22.5 Corte de turno

No puedo hacer un corte de turno.

22.6 Reportes

No encuentro un turno en Reportes.

La vista muestra los últimos turnos; usa el campo de búsqueda por número de turno para localizar uno específico.

No llega el reporte por correo.

No se descarga el CSV o no se abre el PDF.

22.7 Sensores

El indicador de sensores siempre muestra OFFLINE.

Los contadores de sensores no coinciden con los tickets.

Usa Reportes → Auditar Sensores para identificar eventos sin ticket. Recuerda que los sensores detectan todo vehículo que cruza, mientras que los tickets solo se generan para vehículos que efectivamente se estacionan.

Auditar Sensores no encuentra tickets para mis eventos.

La diferencia de tiempo entre el sensor y la impresión del boleto debe estar dentro de los límites de tolerancia (3 minutos para entradas, 5 minutos para salidas). Si el operador tarda más en imprimir, el match no se producirá. Verifica también que la zona horaria del servidor esté configurada como America/Mazatlan.

22.8 OpeniPark Socio (app del cliente)

Aparece "QR no válido".

El código escaneado no es un QR de socio. Verifica que estás escaneando el código de la app OpeniPark Socio (que comienza con PARKIT|) y no un boleto normal.

Aparece "QR expirado".

El código del socio caduca a los pocos minutos por seguridad. Pide al cliente que actualice su app (cierre y vuelva a abrir la pantalla del QR) y escanéalo de nuevo.

Aparece "Socio no encontrado" o "Cuenta inactiva".

No existe un socio con ese folio, o su cuenta está bloqueada. Verifica con el cliente sus datos, o revisa el estado del socio en Ajustes → Socios registrados.

Aparece "Módulo deshabilitado".

OpeniPark Socio no está habilitado en tu estacionamiento. Actívalo en Ajustes → OpeniPark Socio → Habilitar módulo de socios.

Aparece "Socio no vinculado".

El socio no está asociado a tu estacionamiento. Pide al cliente que vincule tu lote desde su app: "Mis estacionamientos → Agregar".

Aparece "Servicio recién cerrado".

El socio cerró su servicio hace pocos minutos. Por seguridad el sistema no registra una entrada automática. Verifica si realmente va a ingresar de nuevo y espera el tiempo configurado antes de volver a leer su QR.

Aparece "QR de salida".

El QR del socio es de salida, pero no tiene servicio activo en tu estacionamiento (su servicio está en otro lote). Un QR de salida nunca crea una entrada.

No aparece el botón "Recarga socio" o no puedo recargar.

El botón "Recarga socio" solo aparece si el módulo OpeniPark Socio está habilitado. Verifica en Ajustes → OpeniPark Socio. Para recargar, escanea el QR del cliente y escribe el monto a abonar.

22.9 Voz y anuncios

No se escuchan los anuncios de voz.

22.10 Recomendaciones generales

La página se ve mal o no carga bien.

Los botones no responden o aparece "Error de conexión".

Soporte: Si después de revisar esta sección el problema continúa, contacta a soporte técnico indicando la pantalla donde ocurre, el mensaje de error exacto y los pasos que realizaste. Esta información ayuda a resolverlo más rápido.

23. OpeniPark Socio (app del cliente)

OpeniPark Socio es la aplicación (PWA) para los clientes del estacionamiento. Le da a cada cliente un pase digital que sustituye al boleto de papel: entra y sale mostrando un código QR desde su celular, y además lleva su historial de visitas y un monedero electrónico con beneficios.

Es una app independiente de la app del operador. El cliente la instala desde su navegador (se guarda como aplicación en la pantalla de inicio).

¿Cómo se registra un cliente?

Cada estacionamiento publica un código QR (o enlace) de registro. Al escanearlo, el cliente abre el formulario de registro de OpeniPark Socio y queda asociado a ese estacionamiento.

Pasos para el cliente:

  1. Escanea el código QR de registro del estacionamiento.
  2. Llena el formulario (nombre, apellidos, correo, teléfono opcional y contraseña).
  3. Recibe un correo de confirmación y activa su cuenta.
  4. Inicia sesión: la app le muestra su folio de socio (ej. S000123) y su código QR.
Nota: La app del cliente queda ligada al estacionamiento cuyo QR usó para registrarse, pero el cliente puede vincularse a varios estacionamientos después (ver "Varios estacionamientos" más abajo). El subtítulo de la app muestra el estacionamiento actual.

Pantallas del cliente

El QR del cliente expira a los pocos minutos y se renueva automáticamente. Por eso, si el cliente abrió la app en su casa, no pasa nada: el servicio solo se registra cuando el operador escanea el código en la pluma.

Operación del lado del operador

Cuando un cliente muestra su QR de OpeniPark Socio en la pluma, el operador usa el lector QR igual que con un boleto. El sistema reconoce el código de socio y actúa según el caso:

Entrada de un socio

Si el socio no tiene un servicio activo, al leer su QR el sistema:

La app del cliente muestra de inmediato el inicio del servicio y el cronómetro comienza a correr.

Salida de un socio

Si el socio ya tiene un servicio activo, al leer su QR el sistema muestra la pantalla de cobro:

Al cerrar el servicio, la app del cliente genera el fin del servicio y lo guarda en su historial.

Recarga de monedero (en caseta)

El cliente puede abonar saldo en efectivo en la caseta. El operador presiona "Recarga socio" en el panel principal, escanea el QR del cliente y escribe el monto a abonar. El saldo queda disponible de inmediato en la app del cliente.

Monedero y cashback

El monedero es por estacionamiento: cada socio tiene un saldo independiente por cada lote donde se registra. Los movimientos quedan registrados como recarga, pago o cashback.

Varios estacionamientos (vinculación)

Un mismo socio puede estar vinculado a varios estacionamientos OpeniPark con la misma cuenta. Su monedero, cashback y servicios se manejan por separado en cada lote.

Aislamiento de datos: Cada estacionamiento solo ve los datos del socio correspondientes a su lote (identidad, saldo y servicios de ese lote). Nunca se muestran el saldo ni los servicios del socio en otros estacionamientos.

Protección contra doble lectura

Si un socio cerró su servicio y su QR se vuelve a leer en los siguientes 5 minutos, el sistema muestra "Servicio recién cerrado" y no registra una entrada automática. Esto evita entradas accidentales por escanear dos veces. Pasado ese margen, una nueva lectura sí se considera una visita nueva.

QR de salida (no genera entrada)

Si el QR del socio es de salida (tiene un servicio activo) pero en este estacionamiento no hay ningún servicio abierto, el sistema no registra entrada: muestra "QR de salida" indicando que el socio tiene su servicio en otro estacionamiento. Así un QR de salida nunca crea una entrada, en ningún estacionamiento.

Configuración del módulo (administrador)

Para activar y personalizar OpeniPark Socio en tu estacionamiento:

Habilitar el módulo y definir el cashback

Ve a Ajustes → OpeniPark Socio:

Importante: Si el módulo está deshabilitado, el botón "Recarga socio" desaparece del panel principal y al leer un QR de socio se muestra "Módulo deshabilitado". El sistema tradicional de boleto de papel sigue operando con normalidad.

QR de registro (para publicar)

En Ajustes → OpeniPark Socio → Registro de socios (QR) se muestra el código QR de registro de tu estacionamiento (y su enlace con botón "Copiar enlace").

Socios registrados

En Ajustes → Socios registrados puedes ver la lista de clientes vinculados a tu estacionamiento: folio, nombre, correo, teléfono, saldo (de tu lote) y estado.

Aislamiento: Esta lista solo muestra socios vinculados a tu estacionamiento y su saldo en tu lote. No verás datos de otros estacionamientos.

Ciudad (filtro de estacionamientos locales)

En Ajustes → Información del perfil → Ciudad define la ciudad de tu estacionamiento. La app OpeniPark Socio usa este dato para mostrar al cliente, al agregar un estacionamiento, solo los de su misma ciudad.

Ubicación del estacionamiento (mapa)

Ve a Ajustes → Información del perfil → Ubicación (mapa):

Tarifas que se publican al cliente

La app del cliente muestra en su sección "Tarifas" todos los perfiles de cobro activos con sus horarios de aplicación. Revisa en Ajustes → Perfiles de cobro y Ajustes → Programación de horarios que las tarifas y horarios sean los correctos, ya que es lo que el cliente consulta para saber cuánto pagará y en qué horario aplica cada esquema.

Importante: El sistema tradicional con boleto de papel sigue funcionando igual. OpeniPark Socio es un complemento: si la app del cliente falla o el cliente no la usa, la operación normal con impresora no se ve afectada.

24. Paleta de color

En Ajustes → Paleta de color eliges el esquema de color de tu estacionamiento. El color elegido se aplica en toda la app (botones, resaltados y gráficos) y también en el icono de la pestaña del navegador.

OpeniPark

25. Aviso de privacidad

En OpeniPark, de conformidad con lo dispuesto en la Ley Federal de Protección de Datos Personales en Posesión de los Particulares, ponemos a tu disposición el presente Aviso de Privacidad.

Responsable

OpeniPark, con domicilio en Culiacán, Sinaloa, México, es el responsable del tratamiento de tus datos personales.

Datos que recabamos

Finalidades

Derechos ARCO

Puedes ejercer tus derechos de Acceso, Rectificación, Cancelación u Oposición (ARCO) en cualquier momento, así como revocar tu consentimiento, enviando tu solicitud a contacto@openipark.com.

26. Responsabilidad

Configuración correcta: El administrador es responsable de configurar correctamente las tarifas (perfiles de cobro), la programación de horarios, los descuentos, la impresora y los demás parámetros de operación. Un cobro mal calculado por una configuración incorrecta es responsabilidad del estacionamiento.

Seguridad de las credenciales: Eres responsable de mantener la confidencialidad de tu usuario y contraseña, así como de las operaciones realizadas por tus operadores. Notifica de inmediato cualquier acceso no autorizado.

Herramienta de apoyo: OpeniPark es una plataforma de apoyo a la operación y no sustituye la supervisión del personal. El personal del estacionamiento debe verificar las operaciones y los cobros.

Disponibilidad del servicio: Hacemos nuestro mejor esfuerzo por mantener el servicio disponible, pero no garantizamos un funcionamiento ininterrumpido. No somos responsables por interrupciones derivadas de fallas de internet, de energía o de los dispositivos (impresora, Módulo de Impresión, Módulo de Sensores), ni por el uso indebido de la plataforma.