Configuración de Hotspot MikroTik para Venta de Pines y Vouchers

Video

Objetivo: ¿Qué vas a conseguir?

Voy a mostrarles como podemos utilizar el hotspot de mikrotik para la venta de pines o vouchers para acceso a internet.

¿Qué necesitamos?

1. Trabajamos con base a https://jcts.com.co/configuracion-hotspot-mikrotik-routeros-v7 donde previamente realizamos la configuración inicial básica del hotspot en mikrotik versión 7.

Importación de perfiles para tiempo y velocidad

/ip hotspot user profile
add mac-cookie-timeout=1h name=Plan_1h on-login="{\r\
    \n:local tdias 0\r\
    \n:local atime [ /system clock get time ]\r\
    \n:local adate [ /system clock get date ]\r\
    \n:local mes1 [:pick \$adate 5 7]\r\
    \n:local dia1 [:pick \$adate 8 10]\r\
    \n:local horaminutos [:pick \$atime 0 5]\r\
    \n:local thoras 1\r\
    \n:local comentariouser (\"Mes: \" . \$mes1 . \" D\EDa: \" . \$dia1 . \" Hora: \" . \$horaminutos . \" Horas: \" . \$thoras);\r\
    \n:if ([ /ip hotspot user get \$user comment ]=\"\") do={ [ /ip hotspot user set \$user comment=\$comentariouser ] }\r\
    \n\r\
    \n# Agrego un registro en el LOG del usuario\r\
    \n/log info \"Usuario= \$user \$adate \$atime Dias: \$tdias \";\r\
    \n:local monthtxt [:pick \$adate 5 7]\r\
    \n:local mesarray (\"01\",\"02\",\"03\",\"04\",\"05\",\"06\",\"07\",\"08\",\"09\",\"10\",\"11\",\"12\")\r\
    \n:local diaarray (\"31\",\"28\",\"31\",\"30\",\"31\",\"30\",\"31\",\"31\",\"30\",\"31\",\"30\",\"31\")\r\
    \n:local day [:pick \$adate 8 10]\r\
    \n:local months ([:find \$mesarray \$monthtxt])\r\
    \n:local year [:pick \$adate 0 4]\r\
    \n:local dia ([:pick \$diaarray \$months])\r\
    \n:local fhora [:pick \$atime 0 2]\r\
    \n:local fminutos [:pick \$atime 3 5]\r\
    \n:local fsegundos [:pick \$atime 6 9]\r\
    \n:local mayorhora ((\$fhora+\$thoras)-24)\r\
    \n\r\
    \n:if ((\$fhora+\$thoras)>23) do={\r\
    \n:set atime (\"0\".\$mayorhora.\":\".\$fminutos.\":\".fsegundos);\r\
    \n:set \$tdias (\$tdias+1);\r\
    \n} else={\r\
    \n:set atime ((\$fhora+\$thoras).\":\".\$fminutos.\":\".fsegundos) ;\r\
    \n}\r\
    \n\r\
    \n:log info \$atime;\r\
    \n\r\
    \n:if ((\$day+\$tdias)>\$dia) do={\r\
    \n:if (\$months=11) do={\r\
    \n:set months 0;\r\
    \n:set year (\$year+1);\r\
    \n:set day ((\$day+\$tdias)-\$dia);\r\
    \n:local mes ([:pick \$mesarray \$months]);\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day);\r\
    \n} else={\r\
    \n:set months (\$months+1);\r\
    \n:set day ((\$day+\$tdias)-\$dia);\r\
    \n:local mes ([:pick \$mesarray \$months]);\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day);\r\
    \n}\r\
    \n} else={\r\
    \n:set day (\$day+\$tdias);\r\
    \n:local mes ([:pick \$mesarray \$months]);\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day);\r\
    \n}\r\
    \n:log info \$adate;\r\
    \n[/system scheduler add name=\$user on-event=\"/ip hotspot user remove \\\"\
    \$user\\\" \\r\\\r\
    \n  \\n/system scheduler remove [find name=\\\"\$user\\\"] \\r\\\r\
    \n  \\n/ip hotspot active remove [find user=\\\"\$user\\\"] \\r\\\r\
    \n  \\n/\\r\\\r\
    \n\" start-date=\$adate start-time=\$atime]\r\
    \n \r\
    \n}  \r\
    \n\r\
    \n\r\
    \n}\r\
    \n}\r\
    \n" rate-limit=800k/800k transparent-proxy=yes
/ip hotspot user profile
add mac-cookie-timeout=1d name=Plan_1d on-login="{\r\
    \n:local tdias 1\r\
    \n:local atime [ /system clock get time ]\r\
    \n:local adate [ /system clock get date ]\r\
    \n:local mes1 [:pick \$adate 5 7]\r\
    \n:local dia1 [:pick \$adate 8 10]\r\
    \n:local horaminutos [:pick \$atime 0 5]\r\
    \n:local comentariouser (\"Mes: \" . \$mes1 . \" D\EDa: \" . \$dia1 . \" Hora: \" . \$horaminutos . \" Dias: \" . \$tdias);\r\
    \n:if ([ /ip hotspot user get \$user comment ]=\"\") do={ [ /ip hotspot user set \$user comment=\$comentariouser ] }\r\
    \n\r\
    \n# Agrego un registro en el LOG del usuario\r\
    \n/log info \"Usuario= \$user \$adate \$atime Dias: \$tdias \";\r\
    \n:local mesarray (\"01\",\"02\",\"03\",\"04\",\"05\",\"06\",\"07\",\"08\",\"09\",\"10\",\"11\",\"12\")\r\
    \n\r\
    \n:local diaarray (\"31\",\"28\",\"31\",\"30\",\"31\",\"30\",\"31\",\"31\",\"30\",\"31\",\"30\",\"31\")\r\
    \n:local day [:pick \$adate 8 10]\r\
    \n:local monthtxt [:pick \$adate 5 7]\r\
    \n:local year [:pick \$adate 0 4]\r\
    \n:local months ([:find \$mesarray \$monthtxt])\r\
    \n:local dia ([:pick \$diaarray \$months])\r\
    \n\r\
    \n:log info \$atime;\r\
    \n\r\
    \n:if ((\$day+\$tdias)>\$dia) do={\r\
    \n:if (\$months=11) do={\r\
    \n:set months 0\r\
    \n:set year (\$year+1)\r\
    \n:set day ((\$day+\$tdias)-\$dia)\r\
    \n:local mes ([:pick \$mesarray \$months])\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day)\r\
    \n} else={\r\
    \n:set months (\$months+1)\r\
    \n:set day ((\$day+\$tdias)-\$dia)\r\
    \n:local mes ([:pick \$mesarray \$months])\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day)\r\
    \n}\r\
    \n} else={\r\
    \n:set day (\$day+\$tdias)\r\
    \n:local mes ([:pick \$mesarray \$months])\r\
    \n:set adate (\$year.\"-\".\$mes.\"-\".\$day)\r\
    \n}\r\
    \n:log info \$adate;\r\
    \n[/system scheduler add name=\$user on-event=\"/ip hotspot user remove \\\"\$user\\\" \\r\\\r\
    \n  \\n/system scheduler remove [find name=\\\"\$user\\\"] \\r\\\r\
    \n  \\n/ip hotspot active remove [find user=\\\"\$user\\\"] \\r\\\r\
    \n  \\n/\\r\\\r\
    \n\" start-date=\$adate start-time=\$atime]\r\
    \n \r\
    \n}  \r\
    \n\r\
    \n\r\
    \n}\r\
    \n}\r\
    \n" rate-limit=800k/800k transparent-proxy=yes

Creación de usuario asignado a un perfil para pruebas

Hacemos la creación del nuevo usuario, solo con pin, sin contraseña y le asignamos uno de los perfiles creados, yo usare el de 1 hora. Lo dejamos disponible para uso mas adelante.

Reemplazo de plantilla por defecto para usar solo pin

Descarga de la plantilla, tenemos dos opciones, las vamos a descargar

Usuario y contaseña: https://media.jctsoluciones.com.co/kHgFpHvzF3zC7/password/login.html

Solo Pin: https://media.jctsoluciones.com.co/kHgFpHvzF3zC7/pin/login.html

Para ambas, adicional vamos a descargar el siguiente archivo, que es el logo: https://media.jctsoluciones.com.co/kHgFpHvzF3zC7/hotspot-icon.svg

Hacemos copiado al mikrotik dentro de la carpeta hotspot, solo una de las plantillas según se requiera y el archivo de logo.

Confirmar que la plantilla se muestra correctamente al conectarse a la red y hacer prueba de conexión.

Posibles problemas

1. No se elimina los pines automáticamente: Si el router no estaba prendido a la hora que se debía eliminar, este no se eliminara posteriormente, por lo que se debería hacer revisión periodica para eliminarlos, esto posiblemente lo veamos en un video mas adelante.

2. Los pines duran mas o menos tiempo del que deberían: Es posible que se creen pines con un perfil incorrecto, que el perfil este mal o que se esta usando una versión mas vieja de mikrotik o mas nueva si a futuro mikrotik hace cambios que afecten el script actual, si esto se llega a dar, se deben eliminar todos los pines y volverlos a crear una vez corregido el origen del problema.

Conclusión o Resumen

Así avanzamos en la configuración personalizada del hotspot y vemos como usar con usuario y contraseña o solo con pin, adicional agregamos opciones de perfiles para limitar el tiempo de conexión y eliminar los pines una vez se les cumpla el plazo

Datos de Contacto

Brindamos soporte técnico en este tema, para agregar mas perfiles de otras cantidades de horas, dias, personalización de la plantilla de hotspot, asi como muchos otros temas de mikrotik. También trabajamos con redes de datos, servidores, computadores, presencia web. Puedes contactarnos por medio de un navegador web ingresando a https://jcts.com.co/contacto, donde encontraras un botón de whatsapp al número actualizado de mi empresa.
¿Necesitas ayuda?

Estamos listos para asesorarte. Escríbenos por WhatsApp.

Chatear por WhatsApp