{"id":21971788,"url":"https://github.com/cristopher1/api_colmena_abeja","last_synced_at":"2026-04-16T08:37:44.107Z","repository":{"id":181203615,"uuid":"590648701","full_name":"cristopher1/api_colmena_abeja","owner":"cristopher1","description":"api para obtener info de colmena de abeja","archived":false,"fork":false,"pushed_at":"2023-11-02T17:22:32.000Z","size":460,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T08:37:34.715Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristopher1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-18T22:06:28.000Z","updated_at":"2023-07-14T11:14:35.000Z","dependencies_parsed_at":"2024-11-29T14:56:06.207Z","dependency_job_id":"f0985056-416f-496b-8364-0a43f0f8a23e","html_url":"https://github.com/cristopher1/api_colmena_abeja","commit_stats":null,"previous_names":["cristopher1/api_colmena_abeja"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cristopher1/api_colmena_abeja","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristopher1%2Fapi_colmena_abeja","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristopher1%2Fapi_colmena_abeja/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristopher1%2Fapi_colmena_abeja/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristopher1%2Fapi_colmena_abeja/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristopher1","download_url":"https://codeload.github.com/cristopher1/api_colmena_abeja/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristopher1%2Fapi_colmena_abeja/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31878415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T07:36:03.521Z","status":"ssl_error","status_checked_at":"2026-04-16T07:35:53.576Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T14:55:59.664Z","updated_at":"2026-04-16T08:37:44.090Z","avatar_url":"https://github.com/cristopher1.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [API COLMENA ABEJA](#indice)\n\nEl presente proyecto fue desarrollado durante el ramo **trabajo de titulo**, para optar al titulo de **ingenierío civil informático** en la Universidad Técnica\nFederico Santa María (UTFSM). API que contiene el extractor de características y la red neuronal convolucional (CNN), para detectar la presencia o ausencia de abeja reina dentro de la colmena. Si quiere facilitar el despliegue del sistema, mediante automatización, vaya al repositorio [APP_COLMENA_ABEJA](https://github.com/cristopher1/app_colmena_abeja)\n\n### \u003ca id=\"indice\"\u003e\u003c/a\u003e Índice\n\n* \u003ca id=\"introduccion\"\u003e\u003c/a\u003e[Introducción](#Introducción)\n* \u003ca id=\"pre-rrequisitos\"\u003e\u003c/a\u003e [Prerrequisitos](#Prerrequisitos)\n* \u003ca id=\"descarga\"\u003e\u003c/a\u003e [Descargar el repositorio](#Descargar-el-repositorio)\n* \u003ca id=\"entorno\"\u003e\u003c/a\u003e[Variables de entorno](#Variables-de-entorno)\n  * \u003ca id=\"entorno-django\"\u003e\u003c/a\u003e[Variables de entorno para configurar DJANGO](#Variables-de-entorno-para-configurar-DJANGO)\n  * \u003ca id=\"entorno-api\"\u003e\u003c/a\u003e[Variables de entorno para configurar la API](#Variables-de-entorno-para-configurar-la-API)\n* \u003ca id=\"dockerfile\"\u003e\u003c/a\u003e[Docker](#Docker)\n* \u003ca id=\"run\"\u003e\u003c/a\u003e[Ejecutar la aplicación](#Ejecutar-la-aplicación)\n* \u003ca id=\"urls\"\u003e\u003c/a\u003e[URLs](#URLs)\n* \u003ca id=\"consulta-http\"\u003e\u003c/a\u003e[Consulta HTTP](#Consulta-HTTP)\n* \u003ca id=\"respuesta-http\"\u003e\u003c/a\u003e[Respuesta HTTP](#Respuesta-HTTP)\n\n## \u003ca id=\"Introducción\"\u003e\u003c/a\u003e [Introducción](#introduccion)\n\nEl presente repositorio contiene la API utilizada por el sistema APP COLMENA ABEJA. Esta API contiene un extractor de características y una CNN, los cuales son utilizados para determinar la presencia o ausencia de abeja reina. A continuación se dan algunos detalles del funcionamiento de la API a grandes rasgos.\n\n* Para determinar la presencia o ausencia de abeja reina, se le envia un archivo de audio a la API (la cual contiene los zumbidos emitidos por la colmena de abeja, duración mínima del archivo de audio 3 segundos) y la zona horaria del cliente web. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L302-L303\n  \n* Luego de recibir el archivo de audio, se procede a obtener su contenido **serie de tiempo de la amplitud** y **tasa de muestreo** (la CNN fue entrenada con audios con tasa de muestreo de 44100 muestras por segundo, por lo tanto la tasa de muestreo usada por el sistema es de 44100). https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L304\n\n* En caso de que el archivo de audio tenga una duración mayor a 3 segundos, solo se toman los primeros 3 segundos de los zumbidos presentes en el archivo de audio (la CNN esta diseñada para procesar solamente audios con duración de 3 segundos). https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L305\n\n* Posteriormente se usa el extractor de características para obtener la información relevante de la muestra de audio, se extraen 13 MFCCs (Coeficientes Cepstrales en la Frecuencia de Mel). https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L306-L307\n\n* La matriz que contiene los 13 MFCCs es redimensionada para calzar con el tamaño de matriz recibida por la capa de entrada de la CNN. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L308 De esta manera puede ser pasada a la CNN con la finalidad de obtener una predicción. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L309-L311\n\n* Luego de obtener la predicción, se obtiene la fecha en la cual el cliente web ha enviado el archivo a la API. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L312 Y Se formatean los resultados. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L313\n\n* Finalmente el resultado es enviado al cliente web. https://github.com/cristopher1/api_colmena_abeja/blob/63e36a2b23169d6c7f005c5ee01bff81eb46aa90/api/views.py#L314\n\n## \u003ca id=\"Prerrequisitos\"\u003e\u003c/a\u003e [Prerrequisitos](#pre-rrequisitos)\n\nEl sistema ha sido probado en SO Windows 11.\n\n* Docker Desktop con Servidor WSL 2. Ver documentación sobre [Docker Desktop para Windows](https://docs.docker.com/desktop/install/windows-install/)\n\n## \u003ca id=\"Descargar-el-repositorio\"\u003e\u003c/a\u003e [Descargar el repositorio](#descarga)\n\nPara descargar el repositorio use:\n\n```console\ngit clone git@github.com:cristopher1/api_colmena_abeja.git\n```\n\n## \u003ca id=\"Variables-de-entorno\"\u003e\u003c/a\u003e [Variables de entorno](#entorno)\n\nLa información de las variables de entorno se encuentra dentro del archivo .env.example, que se encuentra dentro de la carpeta api. https://github.com/cristopher1/api_colmena_abeja/blob/60a27b2363143c70c78f13bb325a647a13eb1468/api/.env.example#L1-L59\n\n### \u003ca id=\"Variables-de-entorno-para-configurar-DJANGO\"\u003e\u003c/a\u003e [Variables de entorno para configurar DJANGO](#entorno-django)\n\n* ```DEBUG```: Activa el modo depurador, **en producción colocar el valor False**.\n  \n* ```SECRET_KEY```: Clave asociada a seguridad de DJANGO.\n  \n* ```ALLOWED_HOSTS```: Lista de HOST a los que puede responder DJANGO.\n  \n* ```CORS_ALLOWED_ORIGINS```: Lista de los servidores que estan autorizados para realizar una petición de origen cruzado a DJANGO.\n\n### \u003ca id=\"Variables-de-entorno-para-configurar-la-API\"\u003e\u003c/a\u003e [Variables de entorno para configurar la API](#entorno-api)\n\n* ```VENTANA_TIEMPO```: Tamaño de la ventana de tiempo, de la cual se extraen los datos de los archivos de audio, para que la API pueda identificar el estado de\nla colmena. (Para la CNN que el sistema usa, este valor es 3).\n\n* ```N_CANAL```: Número de canales que tienen las características extraídas de los archivos de audio, para que la CNN pueda procesarlos. (Para las características\nque el sistema procesa, este valor es 1).\n\n## \u003ca id=\"Docker\"\u003e\u003c/a\u003e [Docker](#dockerfile)\n\nEl sistema incluye un archivo **Dockerfile**, para poder facilitar su despliegue.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/60a27b2363143c70c78f13bb325a647a13eb1468/Dockerfile#L1-L59 Se puede apreciar que el Dockerfile ha sido\ndividido en 3 etapas: base, development y production.\n\n* En la etapa development: Se incluyen herramientas para desarrollo, como nano. Tambíén se despliega el sistema usando el servidor de desarrollo de DJANGO\nutilizando el puerto 8000 para escuchar las peticiones web.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/60a27b2363143c70c78f13bb325a647a13eb1468/Dockerfile#L42\n\n* En la etapa production: Se despliega la API usando unicorn y se usa el puerto 443 para escuchar las peticiones web.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/60a27b2363143c70c78f13bb325a647a13eb1468/Dockerfile#L59\n\n## \u003ca id=\"Ejecutar-la-aplicación\"\u003e\u003c/a\u003e [Ejecutar la aplicación](#run)\n\nPara ejecutar la aplicación siga los siguientes pasos.\n\n* **Nota: El archivo Dockerfile de este repositorio utiliza multi-stage, por lo que no debe olvidar habilitar el docker BuildKit al momento de**\n**ejecutar la aplicación.**\n\n* **Nota: A partir de la versión 23.0 de Docker Desktop y Docker Engine se usa de forma predeterminada el BuildKit por lo que no es necesario habilitarlo**\n**de forma manual.**\n\n1. Ingrese a la carpeta api_colmena_abeja/api (por la teminal o interfaz gráfica)\n2. Cree un archivo llamado .env (en la misma carpeta donde esta el archivo .env.example)\n3. Copie el contenido del archivo .env.example a .env\n4. Si gusta, modifique los valores del archivo .env\n6. Abra una terminal e ingrese a la carpeta api_colmena_abeja\n8. Ejecute los siguientes comandos:\n   * Para modo desarrollo:\n     * Crear la imagen:\n       ```console\n       docker build --target development -t api_colmena_abeja_dev .\n       ```\n     * Ejecutar el contenedor:\n       ```console\n       docker run -p host_port:8000 --env-file api/.env api_colmena_abeja_dev\n       ```\n       Reemplace **host_port** por el puerto en su host, por el cual las peticiones web serán redirigidas al contenedor docker.\n       \n   * Para modo producción:\n     * Crear la imagen:\n       ```console\n       docker build --target production -t api_colmena_abeja_prod .\n       ```\n     * Ejecutar el contenedor:\n       ```console\n       docker run -p host_port:443 --env-file api/.env api_colmena_abeja_prod\n       ```\n       Reemplace **host_port** por el puerto en su host, por el cual las peticiones web serán redirigidas al contenedor docker.\n\n**Nota: Para modo producción no use directamente gunicorn para servir el sistema. Use un servidor de producción como nginx,**\n**para redirigir las peticiones al contenedor de la API.**\n\nUna vez completados los pasos, el sistema debería estar ejecutandose en `http://localhost:host_port`\n\n## \u003ca id=\"URLs\"\u003e\u003c/a\u003e [URLs](#urls)\n\nLa API responde en la url /api/estado_colmena mediante el metodo post.\n\n* En api_memoria_colmena_abejas/urls.py se encuentra la url base.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/61b0a431114d789fd48cef017f9fcdb8ca26f3b2/api_memoria_colmena_abejas/urls.py#L19-L21\n\n* En api/urls.py se encuentran las urls que procesa la API.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/61b0a431114d789fd48cef017f9fcdb8ca26f3b2/api/urls.py#L20-L22\n\n* En api/views.py se encuentra la view que se encarga de procesar la solicitud, mediante el método POST\nhttps://github.com/cristopher1/api_colmena_abeja/blob/61b0a431114d789fd48cef017f9fcdb8ca26f3b2/api/views.py#L298-L300\n\n## \u003ca id=\"Consulta-HTTP\"\u003e\u003c/a\u003e [Consulta HTTP](#consulta-http)\n\nLa API espera recibir una petición de tipo form-data, que tiene dos campos.\n\n1. audio: Dentro del form-data, debe haber un campo con el nombre `audio`. Este contiene un archivo de audio con una duración mínima de 3 segundos y\ndebe tener de preferencia una tasa de muestreo de 44100 muestras por segundo. El formato del archivo de audio puede ser .wav, .mp3 u otros formatos\naceptados por [FFmpeg](https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio)\n\n2. zonaHoraria: Dentro del form-data, debe haber un campo con el nombre `zonaHoraria`. Este contiene un string con la zona horaria donde se encuentra\nel cliente que ha realizado la petición web, puede ver ejemplos de esto en [pytz](https://pytz.sourceforge.net/).\n\n## \u003ca id=\"Respuesta-HTTP\"\u003e\u003c/a\u003e [Respuesta HTTP](#respuesta-http)\n\nLuego de que la API termina de procesar la solicitud HTTP de forma exitosa, esta devolverá un objeto similar al descrito a continuación.\nhttps://github.com/cristopher1/api_colmena_abeja/blob/61b0a431114d789fd48cef017f9fcdb8ca26f3b2/api/views.py#L67-L83\n\nHay que tener en cuenta que la fecha y la hora devuelta por la API, corresponden a la hora y fecha en la cual se ha terminado de procesar el archivo de audio,\ny no corresponde a la hora y fecha en la cual el sistema ha recibido la petición web.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristopher1%2Fapi_colmena_abeja","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristopher1%2Fapi_colmena_abeja","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristopher1%2Fapi_colmena_abeja/lists"}