Descripción General: El proyecto consiste en desarrollar un sistema de control de acceso para un edificio de oficinas compartidas utilizando un asistente virtual de voz. Este sistema está diseñado para gestionar el acceso de visitantes al edificio, garantizando que solo las personas autorizadas puedan ingresar. Se implementará en un dispositivo Raspberry Pi, que servirá como el núcleo del sistema, controlando la interacción con los visitantes y los oficinistas.
Funcionamiento del Sistema: El sistema consta de los siguientes componentes y pasos:
1. Detección de Presencia: El Raspberry Pi estará conectado a un sensor de movimiento que detectará cuando un visitante se acerque a la entrada del edificio.
2. Recepción del Visitante: Al detectar la presencia de un visitante, el asistente activará un micrófono para registrar la conversación. El visitante podrá indicar el nombre del oficinista que desea visitar.
3. Solicitud de Credenciales: El asistente pedirá al visitante que proporcione su cédula. Si es la primera vez que visita el edificio, se solicitará adicionalmente el nombre, apellido, destino, dirección (opcional) y se tomará una fotografía del visitante, que se enviará al anfitrión por WhatsApp como medida de seguridad. Si la cédula ya está en la base de datos, solo se solicitará el nombre del anfitrión y el destino.
4. Consulta en la Base de Datos: Usando Python, el asistente interpretará la voz del visitante y buscará en una base de datos la información relacionada con el personal del edificio. La IA a implementar será Gemini, que se encargará de gestionar estas consultas y tomar decisiones basadas en los datos recibidos.
5. Llamada al Oficinista: El asistente realizará una llamada telefónica al oficinista a través de WhatsApp o Twilio, notificando sobre la llegada del visitante y solicitando confirmación para permitir o denegar el acceso. En el caso de citas tipo 1 y tipo 2 (descriptas más adelante), esta llamada puede ser automatizada o omitida según las preferencias configuradas.
6. Registro de la Visita: Independientemente de la decisión del oficinista, el asistente registrará los detalles de la visita en la base de datos.
7. Respuesta al Visitante: Finalmente, el asistente transmitirá la decisión del oficinista al visitante a través del altavoz, permitiendo o denegando el acceso según corresponda.
Tecnologías a Utilizar:
• Raspberry Pi: Actuará como el cerebro del sistema, controlando el sensor de movimiento, el micrófono, el altavoz, y gestionando la comunicación con el asistente virtual.
• Python: Se utilizará para interpretar la voz del visitante y realizar consultas en la base de datos.
• Firebase: Servirá como la base de datos que almacenará la información necesaria para gestionar el acceso de los visitantes, anfitriones, visitas y citas.
• HTML y JavaScript: Se utilizarán para desarrollar la interfaz web del sistema.
• IA Gemini: Se implementará para gestionar el reconocimiento de voz, la toma de decisiones y la interacción con los visitantes.
• WhatsApp o Twilio: Se utilizará para realizar las llamadas telefónicas necesarias para verificar si un oficinista puede recibir a un
visitante.Si es WhatsApp se implementa MetaIA.
• Flutter o una web: Podría ser utilizado para el desarrollo de una aplicación móvil complementaria o una web para registrar y ver la información de visitantes, anfitriones, visitas y citas.
Diseño del Sistema: El diseño del sistema incluye varios componentes clave que trabajarán en conjunto para garantizar un control de acceso efectivo:
• Sensor de Movimiento: Detectará la presencia de los visitantes que se aproximen al área de entrada.
• Micrófono: Capturará la voz del visitante para que el asistente pueda procesarla.
• Procesamiento de Voz a Texto: Convertirá la voz del visitante en texto, que luego será interpretado por el sistema.
• Altavoz: Permitirá que el asistente se comunique con el visitante, proporcionando instrucciones y respuestas.
• Raspberry Pi: Centralizará todas las operaciones del sistema, desde la detección de presencia hasta la comunicación con el asistente.
• API: Actuará como intermediario entre el asistente y la base de datos, facilitando la comunicación y el intercambio de información.
• Base de Datos: Almacenará información sobre los oficinistas, visitantes, las citas programadas y el registro de todas las visitas.
• Cerrojo de la Puerta: Controlará el acceso al edificio, permitiendo o denegando la entrada según las instrucciones del asistente.
Detalles de la Base de Datos: La base de datos del sistema contendrá las siguientes tablas clave:
1. Tabla de Visitantes: Contendrá la cédula, nombre, apellido, destino, dirección (opcional) y una foto de seguridad del visitante. Este registro se utilizará para identificar a los visitantes que ya han ingresado al edificio en el pasado.
2. Tabla de Anfitriones: Contendrá el ID, nombre, teléfono y otros datos relevantes del oficinista.
3. Tabla de Jerarquia: En esta tabla se almacenará el ID del Departamento, el ID del anfitrión, nombre, teléfono y cargo. Esta estructura relacional se usará para determinar el orden en que el asistente realizará llamadas para conceder o denegar acceso. Por ejemplo, si el visitante solicita ver al oficinista y este no contesta, el asistente llamará automáticamente al asistente u otro oficinista con el mismo cargo en la lista según el ID.
4. Tabla de Citas: Las citas podrán ser de dos tipos:
o Cita Tipo 1 (Cerrada): El anfitrión genera una clave permanente para acceso repetido sin necesidad de validación constante.
O Cita Tipo 2 (Abierta): El anfitrión genera una clave temporal válida solo dentro de un rango de tiempo específico.
5. Tabla de Usuarios: Contendrá el ID, nombre de usuario, contraseña y nivel de acceso (si es superusuario o no). El superusuario tiene privilegios para crear, modificar o eliminar registros de anfitriones y familiares, así como gestionar las citas.
Funcionamiento del Asistente Virtual: El asistente operará en tres fases:
1. Reconocimiento de Voz a Texto: Capturará y convertirá los patrones de voz del visitante en texto para su procesamiento.
2. Consulta a la API y Conexión a la Base de Datos: Realizará una consulta a la API para verificar si el oficinista solicitado está registrado en la base de datos.
3. Respuesta según la Disponibilidad del Oficinista:
o Citas Tipo 1: Si la cita es de tipo cerrado, el visitante podrá ingresar automáticamente sin necesidad de llamada al anfitrión.
O Citas Tipo 2: Durante el periodo activo de la clave temporal, el visitante podrá ingresar sin llamada. Si la clave expira, el acceso será negado automáticamente.
Desarrollo de la Aplicación para Oficinistas: Se desarrollará una aplicación, que podría ser una web o una app móvil desarrollada con Flutter, diseñada para facilitar la gestión de citas y visitantes por parte de los oficinistas. Las funcionalidades clave de la aplicación incluyen:
1. Pantalla 1: Login - Edit User - Login
• Descripción: Permite a los usuarios iniciar sesión, editar su perfil y acceder al sistema.
2. Pantalla 2: Anfitriones - Edit - Consulta
• Descripción: Proporciona una interfaz para que los anfitriones gestionen sus datos personales, actualicen su información y consulten el estado de sus citas.
3. Pantalla 3: Citas - Edit - Consulta
• Descripción: Permite a los anfitriones programar, modificar y consultar citas. Aquí se introducen las claves de acceso, con la opción de elegir entre citas tipo 1 y tipo 2.
4. Pantalla 4: Visitantes - Edit - Consulta
• Descripción: Interfaz para revisar y gestionar los datos de los visitantes, incluyendo el historial de visitas y datos de contacto.
5. Pantalla 5: Visitas - Edit - Consultas
• Descripción: Permite a los usuarios revisar todas las visitas realizadas, incluyendo detalles como la hora, fecha y anfitrión correspondiente.
En el proyecto se aplican metodologias como: embeding, lagnchain y vectorizar datos
Como nota adicional nos gustaría que la persona que acepte este proyecto este ubicado en la ciudad de Caracas- Venezuela ya que como se implementa hardware (raspberry, sensor de movimiento, micrófono y cornetas, nos gustaría que la persona este presente para las pruebas finales del proyecto).
Fecha límite: la primera semana de septiembre
Si alguien está interesado, me pueden indicar el costo del proyecto.
Plazo de Entrega: 08 Septiembre, 2024