{"id":29213897,"url":"https://github.com/medialabuniovi/thermalinversion","last_synced_at":"2025-08-02T10:34:24.180Z","repository":{"id":301777507,"uuid":"1004265302","full_name":"MediaLabUniovi/ThermalInversion","owner":"MediaLabUniovi","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-28T18:36:03.000Z","size":287,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-28T19:43:01.176Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/MediaLabUniovi.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,"zenodo":null}},"created_at":"2025-06-18T11:13:18.000Z","updated_at":"2025-06-28T18:36:05.000Z","dependencies_parsed_at":"2025-06-28T19:43:32.038Z","dependency_job_id":"2721fabb-458d-4bff-9140-f075f2edb136","html_url":"https://github.com/MediaLabUniovi/ThermalInversion","commit_stats":null,"previous_names":["medialabuniovi/thermalinversion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MediaLabUniovi/ThermalInversion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaLabUniovi%2FThermalInversion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaLabUniovi%2FThermalInversion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaLabUniovi%2FThermalInversion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaLabUniovi%2FThermalInversion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MediaLabUniovi","download_url":"https://codeload.github.com/MediaLabUniovi/ThermalInversion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaLabUniovi%2FThermalInversion/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268371778,"owners_count":24239794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-07-02T23:30:21.818Z","updated_at":"2025-08-02T10:34:24.137Z","avatar_url":"https://github.com/MediaLabUniovi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ThermalInversion – Sistema IoT para Monitorización Ambiental\n\nEste proyecto consiste en el desarrollo de un sistema de sensores autónomo basado en **LoRaWAN**, diseñado para monitorizar variables ambientales que afectan a la calidad del aire. Está orientado a la detección de patrones asociados a fenómenos atmosféricos persistentes mediante la recopilación de datos en tiempo real y su transmisión a plataformas de análisis.\n\nSe trata de un proyecto desarrollado como Trabajo Fin de Grado en la Universidad de Oviedo y forma parte de las iniciativas de sensorización del entorno impulsadas por el MediaLab de la Escuela Politécnica de Ingeniería de Gijón.\n\n## 📌 Características principales\n\n- Sensorización ambiental en tiempo real: PM2.5, PM10, temperatura, humedad, presión y nivel de batería.\n- Comunicación mediante **LoRaWAN** a través de **The Things Network (TTN)**.\n- Consumo energético optimizado gracias a ciclos de deep sleep.\n- Visualización en tiempo real con **Node-RED** y **Grafana**.\n- Almacenamiento de datos en **InfluxDB** para análisis temporal.\n- Código modular en C++ compatible con **Arduino IDE** o **PlatformIO**.\n\n## 🛠️ Hardware utilizado\n\n- **Microcontrolador**: LILYGO T3 (ESP32 + LoRa)\n- **Sensor de partículas**: SDS011\n- **Sensor climático**: BME280\n- **Alimentación**: batería 18650 con regulador y opción de panel solar\n\n## 📂 Estructura del firmware\n\n- thermal_inversion.ino       # Lógica principal\n- configuration.h             # Pines, intervalos, ajustes LoRa\n- credentials.h               # Claves LoRaWAN (DevEUI, AppEUI, AppKey)\n- sensor.{h,ino}              # Lectura de sensores BME280 y SDS011\n- lvlbat.{h,ino}              # Medición de batería\n- sleep.{h,ino}               # Gestión del deep sleep\n- ttn.{h,ino}                 # Comunicación LoRa con TTN (LMIC)\n\n## 🚀 Cómo empezar\n\n1. Clona el repositorio:\n   git clone https://github.com/MediaLabUniovi/ThermalInversion.git\n\n2. Abre el proyecto en Arduino IDE o PlatformIO.\n\n3. Rellena el archivo `credentials.h` con las claves LoRaWAN (DevEUI, AppEUI, AppKey) desde tu cuenta de TTN.\n\n4. Compila y sube el código al dispositivo LILYGO T3 (ESP32).\n\n5. Visualiza los datos en Node-RED/Grafana (requiere configurar MQTT e InfluxDB).\n\n## 📊 Visualización y análisis\n\nLos datos transmitidos por los nodos se procesan a través de la siguiente arquitectura:\n\nNodo LoRa ⟶ TTN ⟶ MQTT ⟶ Node-RED ⟶ InfluxDB ⟶ Grafana\n\n- **Node-RED**: decodifica el payload LoRa y enruta los datos.\n- **InfluxDB**: almacena los datos como series temporales.\n- **Grafana**: dashboards en tiempo real con los valores registrados.\n\n## 🔍 Objetivos del proyecto\n\n- Crear una solución IoT funcional y de bajo coste.\n- Obtener datos ambientales desde ubicaciones sin infraestructura.\n- Evaluar la calidad del aire en diferentes condiciones meteorológicas.\n- Facilitar la escalabilidad de nodos y su integración en entornos urbanos o rurales.\n\n## 🙋 Autor\n\n**Alfonso Fernández Aybar**  \nGrado en Ingeniería en Tecnologías y Servicios de Telecomunicación  \nUniversidad de Oviedo · EPIG  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmedialabuniovi%2Fthermalinversion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmedialabuniovi%2Fthermalinversion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmedialabuniovi%2Fthermalinversion/lists"}