El proyecto incluye tanto el lado del servidor como una aplicación web diseñada para comunicarse con dispositivos de reloj inteligente para niños equipados con rastreadores GPS de diferentes modelos y conocidos bajo varias marcas. Por ejemplo, puede funcionar con Q50, Q60, Q80, Q90, Q100, Q360, Q523, Q730, Q750, Q8, GW100, GW100S, GW200, GW200S, GW300, GW300S, GW400S, GW400X, GW500S. GW600S, GW700, GW800, GW900, GW900S, GW1000, GW1000S, EW100, EW100S, EW200, K911, W8, W9, W10, Y3, G36 SAFE KEEPER, DS18, T58, T100, I8, G10, G100, D99, D100, D100S y muchos otros. En términos generales, hace lo mismo que aplicaciones como SeTracker, FindMyKids, etc. La principal diferencia es que todos los datos personales, como contactos, posiciones, historial de comunicaciones, etc., se vuelven verdaderamente privados, ya que se almacenan en un hardware controlado por el usuario.
Otro tema que se abordó es el modelo de seguridad de las aplicaciones de seguimiento y comunicación de relojes inteligentes para niños. De forma predeterminada, cualquier persona podría tomar el control del dispositivo siempre que conozca el identificador del dispositivo, sin necesidad de confirmación adicional de ser el propietario del dispositivo. El identificador, a su vez, se puede obtener fácilmente enviando un mensaje de texto al dispositivo si se conoce el número de teléfono móvil del dispositivo. Hay una contraseña, por supuesto, pero todos los dispositivos tienen la misma contraseña de fábrica y no hay notificaciones molestas que pidan cambiarla, por lo que nadie hace eso.
En esta aplicación se han implementado los siguientes escenarios de seguridad:
Y por último, pero no menos importante, es gratis y sin publicidad :).
Construir el proyecto es tan simple como
docker compose -f docker-builder.yml run --rm builder
Mientras se construye, se crea un certificado SSL necesario para las conexiones https
. Es posible especificar un dominio y/o una dirección IP utilizando las variables de entorno DOMAIN
e IP
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
La aplicación puede estar respaldada por diferentes bases de datos, según su elección. El escenario más ligero es utilizar una base de datos H2 integrada. En este caso, la aplicación se puede iniciar con el comando
docker compose --profile h2 up -d
También es posible utilizar PostreSQL, ya sea en contenedores o de forma independiente. En el primer caso puedes iniciar la aplicación con el comando
docker compose --profile pg up -d
En el último caso, debe completar el archivo db.env
con la URL de la base de datos y las credenciales y luego ejecutar el comando
docker compose --profile pg_ext up -d
Si su versión de redacción no admite perfiles, puede usar archivos de redacción dedicados para cada escenario.
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
En el último caso, aún deberá completar el archivo db.env
con la URL de la base de datos y las credenciales.
También es posible saltarse la aburrida fase de construcción y ejecutar el binario adjunto al lanzamiento (se supone que debe estar instalado Java 8 o superior).
java -jar kidtracker.jar
El binario está configurado para utilizar la base de datos H2 integrada. Se crean tres carpetas en el primer inicio en el directorio de trabajo:
data
contienen registros de bases de datos para ubicaciones de dispositivos, números de teléfono, etc. Esta fecha es confidencial, ¡así que manténgala segura!logs
lo suficientemente autodescriptivos, contienen registros, tanto para la aplicación en sí como para los dispositivos cuando la depuración del dispositivo está activa,media
esta carpeta se utiliza para convertir el audio entrante en formato amr a mp3 La interfaz de usuario web está disponible en https://<hostname>:8003
. Para iniciar sesión, utilice las credenciales predeterminadas admin
/ password
.
Para asignar un dispositivo a un usuario registrado en la aplicación, la aplicación debe estar disponible en redes públicas, es decir, debe tener una dirección IP pública y, probablemente, un nombre de dominio asociado. De forma predeterminada, la aplicación escucha dispositivos en el puerto 8001
, supongamos que el mismo puerto está asignado a la red pública. Luego el siguiente mensaje de texto enviado al dispositivo hace que este comience a conectarse a la aplicación:
pw,123456,ip,<public IP address or domain>,8001#
Aquí 123456
es la contraseña predeterminada, que probablemente esté configurada en el dispositivo. Otras contraseñas predeterminadas conocidas son 523681
, 54321
y 654321
. Sin embargo, si se cambió la contraseña, se debe utilizar la nueva contraseña en lugar de la predeterminada.
¡Se recomienda encarecidamente cambiar la contraseña predeterminada!
Luego haga clic en el botón en el lado derecho de la barra de navegación y luego haga clic en el botón en el pie de página. El identificador del dispositivo es necesario para asignar el dispositivo. Una vez que el dispositivo está conectado a la aplicación, se envía un token de confirmación de cuatro dígitos al dispositivo. Para confirmar que el usuario es propietario del dispositivo, este token debe ingresarse en el formulario emergente durante los próximos 5 minutos; después de ese tiempo, el token caduca.
Cualquier usuario registrado en la aplicación puede ser un usuario normal o un administrador. Los administradores pueden registrar a otros usuarios, mientras que los usuarios normales no pueden; ésta es la única diferencia. Los administradores pueden crear tanto usuarios habituales como otros administradores. Para un usuario existente, el privilegio de administrador no se puede otorgar ni revocar; la única forma de modificarlo es eliminar la cuenta de usuario y volver a crearla.
Por motivos de seguridad, el número de móvil del usuario tampoco se puede modificar. Nuevamente, para cambiarla, se debe eliminar y volver a crear la cuenta de usuario. Para eliminar una cuenta de usuario, todos los dispositivos deben estar desasignados.
Cuando se ejecuta por primera vez, hay una cuenta de usuario predeterminada con privilegios de administrador con inicio de sesión admin
y password
. Se recomienda eliminar esta cuenta cuando se crean otras cuentas de usuario o cambiar la contraseña predeterminada. Si solo hay una cuenta con privilegios de administrador, no se puede eliminar. La cuenta de administrador predeterminada no tiene un número de teléfono móvil válido y no se le puede asignar ningún dispositivo.
Los dispositivos se comunican con la aplicación mediante mensajes. Hay varios tipos de mensajes, algunos pueden proporcionar información sobre la ubicación del dispositivo y alertas, otros contienen la carga real de la batería y el valor del podómetro.
La aplicación también puede enviar algunos mensajes a un dispositivo para que realice varias acciones o modifique su configuración. Para asegurarse de que el dispositivo haya recibido el mensaje, envía un mensaje de confirmación a la aplicación. Mientras espera el mensaje de confirmación, la UI permanece bloqueada. Si no se recibe confirmación en 10 segundos (se puede configurar), el mensaje inicial se considera no confirmado.
Los marcadores de posición de todos los dispositivos asignados junto con el marcador de posición del usuario comparten el mismo mapa. Los marcadores del dispositivo contienen información sobre la hora de la última ubicación conocida, la carga de la batería, el valor del podómetro y, eventualmente, la alerta de despegue del dispositivo, la alerta de batería baja, la alerta de conexión perdida y la alerta de ubicación obsoleta. El dispositivo se considera perdido si el último mensaje del dispositivo se recibió hace más de 15 minutos.
El dispositivo podría proporcionar su ubicación real, basándose en datos GPS directos, cuando estén disponibles, así como la última posición detectada, cuando la observación GPS directa no esté disponible, principalmente dentro de edificios o en presencia de ruido electromagnético, en tales casos los datos GPS
se considera obsoleto. Cuando los datos de ubicación recibidos están obsoletos, se muestra la alerta de datos obsoletos.
Tenga en cuenta que la alerta de batería baja y el valor de carga real aparecen en diferentes tipos de mensajes. Los mensajes con cargo real llegan con más frecuencia (cada 5 minutos) que los mensajes con ubicaciones y alertas, que pueden no enviarse durante horas. Por lo tanto, no es raro que un marcador muestre el 100% de la carga de la batería junto con una alerta de batería baja. En este caso, la prioridad es el valor numérico de la carga de la batería y se puede ignorar la alerta de batería baja.
El dispositivo envía mensajes de alarma cuando se presiona el botón SOS. En este caso, el marcador del dispositivo se vuelve rojo y se reproduce un sonido de sirena hasta que se hace clic en el marcador. Al hacer clic en el marcador, se mueve hacia arriba y se cambia la selección de niños. Cuando se cambia la selección de niños, el marcador del dispositivo seleccionado se coloca en la parte superior.
El dispositivo puede enviar mensajes de audio y (si está equipado con cámara) instantáneas a la aplicación. Cuando llega un nuevo mensaje de este tipo, el marcador del dispositivo se vuelve azul y se reproduce el sonido del timbre del teléfono antiguo hasta que se hace clic en el marcador. Como en el caso de la alarma, al hacer clic en el marcador se mueve hacia arriba y se cambia la selección de niños.
Se puede hacer clic en cualquier lugar de la interfaz de usuario, y con un clic se puede cambiar entre el valor absoluto de fecha y hora y el intervalo de tiempo a partir de ahora.
Hay dos íconos que tienen dos estados, lleno y cableado. El primero se llena cuando la vista del mapa sigue el marcador del dispositivo seleccionado. Su estado se puede alternar haciendo clic en él. Otro se llena cuando la vista del mapa sigue el marcador de posición del usuario. Su estado también se puede alternar haciendo clic en él. Cuando un ícono se llena, otro se vuelve cableado y viceversa. Ambos íconos se conectan cuando se arrastra el mapa.
Al hacer clic en un comando para activar el GPS y proporcionar la posición actual se envía al dispositivo. La vista del mapa comienza a seguir el marcador del dispositivo y el icono de seguimiento del dispositivo se llena.
El chat con el dispositivo es asimétrico. Los mensajes de chat de texto se pueden enviar al dispositivo con el botón , mientras que el dispositivo puede enviar mensajes de audio cortos y, si el dispositivo está equipado con una cámara, instantáneas. También se puede forzar al dispositivo a tomar una instantánea con el botón o realizar una grabación de audio de 15 segundos con el botón.
El cuadro de diálogo Historial permite elegir el intervalo de tiempo en dos modos, la fecha, de una medianoche a la siguiente, y general, donde el usuario puede elegir tanto el inicio como el final del intervalo. Para cambiar entre modos, haga clic en las etiquetas del selector de fecha y hora.
Cuando se elige el intervalo de tiempo, se puede mostrar el historial de chat o el podómetro y el gráfico de carga de la batería. El seguimiento del dispositivo para el intervalo de tiempo seleccionado también se puede colocar en el mapa. Aparece un control deslizante en la esquina superior derecha que se utiliza para mover el marcador del dispositivo a lo largo de la pista. Cuando se inspecciona el seguimiento del historial, el icono del cuadro de diálogo del historial cambia a . Para eliminar la pista y volver a las posiciones de los marcadores en línea, haga clic en ella.
El cuadro de diálogo Contactos permite editar el administrador del dispositivo principal y secundario, los números SOS, los contactos del dispositivo, los números permitidos para realizar llamadas al dispositivo y los números de llamada rápida asignados a los botones del dispositivo. Para todas las categorías de contactos hay un número fijo de espacios que se pueden cubrir. De forma predeterminada, los espacios vacíos están ocultos, pero se pueden mostrar haciendo clic en el botón en el pie de página del cuadro de diálogo.
El diálogo para niños permite al usuario asignar y desasignar dispositivos para niños, cambiar el pulgar y obtener información general sobre el dispositivo y su estado real. En la columna del lado izquierdo se coloca un pulgar en el que se puede hacer clic; al hacer clic en él, se abre el cuadro de diálogo de edición para niños. En la columna del medio está el identificador del dispositivo. Si el dispositivo está en línea su identificador está en verde, en caso contrario está en rojo. Debajo del identificador del dispositivo se encuentra la hora en la que se recibió el último mensaje del dispositivo. Todos los usuarios que tienen acceso al dispositivo aparecen en la columna de la derecha con sus teléfonos móviles.