Evaluating bids

Creación de Api en Node.js con Docker para Ingesta de Datos en Sql Server

Published on the November 18, 2025 in IT & Programming

About this project

Open

Desarrollar una api rest en node.js contenerizada con Docker que reciba datos de sensores IoT desde la plataforma https://iot.veto.cl/ mediante webhooks y los almacene en una base de datos SQL Server, aplicando normalización temporal y deduplicación de datos.

1. Duplicación de datos: Al momento de la inserción, se está generando un duplicado de la fila anterior en la base de datos, lo que resulta en información redundante e incorrecta.
2. Gestión de datos con desfase temporal: Los sensores están programados para enviar datos cada hora, pero no todos lo hacen simultáneamente. Existe un desfase de 10 a 15 minutos entre las transmisiones de los diferentes sensores. Es fundamental que los valores se guarden asociados a la 'hora pico más cercana' (por ejemplo, si un sensor envía a las 10:10, se asocie a las 10:00; si envía a las 10:50, se asocie a las 11:00, o se defina una lógica clara para agrupar estas lecturas horarias).

El objetivo es asegurar que la API funcione correctamente, insertando datos únicos y aplicando una lógica robusta para el manejo y normalización de los tiempos de las lecturas de los sensores. Se espera una solución que garantice la integridad y precisión de los datos almacenados.

Al momento de las pruebes, debes proporcionarme un enlace para enviar los webhooks (ngrok u otro)

Ejemplo de respuesta:
{
  "id": "69...",
  "EventId": "68f7...",
  "Type": "action_event_web_hooks",
  "message": "Http request sent to https://10fedc9567a5.ngrok-free.app/data",
  "context": {
    "end_time": 1762528241758,
    "variable": {
      "id": "674...",
      "Name": "Humedad Ambiental",
      "value": 51.2,
      "timestamp": 1762441239000
    },
    "start_time": 1762528241372,
    "is_triggered": true,
    "request_data": {
      "url": "https://10fedc9567a5.ngrok-free.app/data",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": "{ \"name\": \" B2T13F \", \"value\": \" 51.2 \", \"datetime\": \" 2025-11-06 12:00:39 -0300 \" ,\"Variable\":\"{'name': 'Humedad Ambiental', 'id': '674e0f1b4bee0906bf673b3f', 'label': 'hum_sht', 'description': '', 'properties': {'hidden': '0', 'isLocationVariable': '0'}, 'last_value': '46.7', 'timestamp': '1762527999000', 'last_value_context': {}}\",\"IdVariable\":\"674e0f1b4bee0906bf673b3f\",\"NombreVariable\":\"Humedad Ambiental\",\"TiempoUltimoValor\": \"2025-11-07 12:06:39 -0300\" }"
    },
    "response_data": {
      "body": "{\"message\":\"Dato recibido\",\"sensor\":\"B2T13F\",\"type\":\"humedad\"}",
      "headers": {
        "Date": "Fri, 07 Nov 2025 15:10:41 GMT",
        "Etag": "W/\"3e-K+5Mjf1CHL5Vkv4VJzU+rh+HelM\"",
        "Content-Type": "application/json; charset=utf-8",
        "X-Powered-By": "Express",
        "Content-Length": "62",
        "Ngrok-Agent-Ips": "190.54.97.122"
      },
      "status_code": 200
    },
  },

}

Category IT & Programming
Subcategory Web development
What is the scope of the project? Medium-sized change

Delivery term: Not specified

Skills needed

Other projects posted by F. C.