Gemelo digital

Gemelo digital energético: modelar el consumo en tiempo real

Cómo modelar los flujos de energía de un emplazamiento como un gemelo digital alimentado por contadores que transmiten por MQTT, y usarlo para encontrar derroches y probar escenarios de eficiencia antes de invertir.

Diagrama de gemelo digital energético con flujos de electricidad, gas y aire comprimido en un emplazamiento y lecturas de contadores en vivo
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Un gemelo digital energético muestra en tiempo real adónde va cada kilovatio en un emplazamiento y te permite probar escenarios hipotéticos antes de invertir en proyectos de eficiencia. Esta guía explica cómo modelar los flujos de energía, cómo transmitir datos de contadores por MQTT y cómo usar el gemelo para encontrar derroches y evaluar cambios.

Qué modela un gemelo digital energético

Las facturas mensuales te dicen cuánto has gastado, pero no por qué. Un gemelo energético modela el emplazamiento como una red de flujos:

  • Fuentes: suministro de red, solar in situ, generadores, suministro de gas
  • Activos de conversión: transformadores, compresores (de electricidad a aire comprimido), calderas (de gas a calor), enfriadoras (de electricidad a frío)
  • Distribución: cuadros eléctricos, subcuadros de distribución, colectores de aire y vapor
  • Consumidores: líneas de producción, zonas de HVAC, circuitos de iluminación, grandes máquinas individuales

Cada nodo tiene mediciones en vivo (potencia, energía, caudal, presión, temperatura) y cada arista transporta una magnitud de un nodo a otro. Cuando la entrada medida en un nodo no coincide con la suma de sus salidas, la diferencia es una carga no medida, una pérdida o una fuga. Esa sencilla comprobación de balance es una de las cosas más útiles que hace un gemelo energético.

Para el concepto general de gemelo, la guía de tecnología de gemelo digital es el punto de partida.

Por qué modelar la energía como un gemelo y no como un panel

Un panel representa valores de contadores. Un gemelo añade estructura y contexto, y puede representarse como un diagrama de flujos o incluso como un gemelo digital 3D del emplazamiento:

Pregunta Panel Gemelo digital energético
¿Cuánto consumió ayer la línea 2? Sí Sí
¿Qué parte del alimentador principal no está contabilizada? Difícil, requiere cálculos manuales Se calcula de forma continua a partir del modelo de flujos
¿Qué consume la línea 2 en espera? Solo si alguien lo correlaciona a mano Sí, porque el estado de producción está en el gemelo
¿Y si bajamos 0,5 bar la presión del compresor? No Sí, con un modelo del compresor
¿Qué activos dominan la carga base nocturna? En parte Sí, ordenados por nodo

Las diferencias clave son la topología (qué alimenta a qué) y el vínculo con el estado operativo. La energía por unidad producida, el consumo en espera y la carga base solo tienen sentido cuando los datos de energía y los de producción comparten una misma columna vertebral.

Transmitir datos de contadores por MQTT

Contadores y gateways

La mayoría de los contadores industriales y comerciales exponen Modbus TCP o Modbus RTU. Un gateway lee los registros periódicamente y publica los valores en MQTT. Opciones habituales:

  1. Node-RED con nodos Modbus en un PC industrial o una Raspberry Pi
  2. Telegraf con sus plugins de entrada Modbus y salida MQTT
  3. Contadores o registradores de datos con publicación MQTT integrada

Publica tanto la potencia instantánea (kW) como los contadores de energía acumulada (kWh). Los contadores acumulados son más robustos: si se pierden algunos mensajes, el siguiente valor sigue dando el total correcto del periodo.

Diseño de topics

Sigue la jerarquía del emplazamiento para que la topología del gemelo se corresponda de forma natural con los topics:

connectmq/<site>/<area>/<asset>/energy

connectmq/site1/utilities/main-feeder/energy
connectmq/site1/utilities/compressor1/energy
connectmq/site1/production/line2/energy
connectmq/site1/production/line2/state
connectmq/site1/building/hvac-ahu1/energy

Un payload como este mantiene explícitas las unidades:

{
  "powerKw": 42.7,
  "energyKwh": 183245.6,
  "voltageV": 400.2,
  "powerFactor": 0.93,
  "ts": 1792152000
}

Un broker MQTT gestionado ofrece a los gateways de contadores de varios edificios o emplazamientos un único endpoint seguro, y los servicios del gemelo se suscriben con comodines como connectmq/site1/+/+/energy.

Práctica: un balance energético en vivo

Este ejemplo se ejecuta en el servidor MQTT público gratuito en broker.connectmq.com con contadores simulados. No publiques datos reales de tu emplazamiento en el servidor público, ya que cualquiera puede leerlo: es solo para pruebas y prototipos.

El script siguiente simula un alimentador principal y tres subcontadores, y una segunda parte del mismo programa actúa como servicio de balance del gemelo, publicando la parte no contabilizada:

import json
import random
import threading
import time
import uuid

import paho.mqtt.client as mqtt

RUN = "energy-5c21"  # cámbialo por tu propio id único
BASE = f"connectmq/demo/{RUN}/site1"
SUBMETERS = ["production/line2", "utilities/compressor1", "building/hvac-ahu1"]
latest = {}


def simulate(pub):
    while True:
        loads = {
            "production/line2": random.uniform(30, 45),
            "utilities/compressor1": random.uniform(18, 25),
            "building/hvac-ahu1": random.uniform(8, 12),
        }
        unmetered = random.uniform(6, 9)  # el derroche que el gemelo debe encontrar
        main = sum(loads.values()) + unmetered
        pub.publish(f"{BASE}/utilities/main-feeder/energy", json.dumps({"powerKw": round(main, 2)}))
        for path, kw in loads.items():
            pub.publish(f"{BASE}/{path}/energy", json.dumps({"powerKw": round(kw, 2)}))
        time.sleep(5)


def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{BASE}/+/+/energy")


def on_message(client, userdata, msg):
    node = msg.topic[len(BASE) + 1 : -len("/energy")]
    latest[node] = json.loads(msg.payload)["powerKw"]
    if "utilities/main-feeder" in latest and all(s in latest for s in SUBMETERS):
        main = latest["utilities/main-feeder"]
        gap = main - sum(latest[s] for s in SUBMETERS)
        result = {"mainKw": main, "unaccountedKw": round(gap, 2), "unaccountedPct": round(100 * gap / main, 1)}
        client.publish(f"{BASE}/twin/balance", json.dumps(result), qos=1, retain=True)
        print(result)


twin = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"energy-twin-{uuid.uuid4().hex[:6]}")
twin.on_connect = on_connect
twin.on_message = on_message
twin.connect("broker.connectmq.com", 1883, keepalive=30)

sim = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"meter-sim-{uuid.uuid4().hex[:6]}")
sim.connect("broker.connectmq.com", 1883, keepalive=30)
sim.loop_start()
threading.Thread(target=simulate, args=(sim,), daemon=True).start()

twin.loop_forever()

El servicio de balance informará de una parte no contabilizada estable. En un emplazamiento real, esa cifra te señala un subcontador que falta, una carga desconocida o pérdidas que merece la pena investigar.

Probar escenarios de eficiencia

Cuando el gemelo refleja la realidad, puedes plantear preguntas hipotéticas con modelos sencillos asociados a los nodos:

  • Reducción de la presión del aire comprimido: modela la potencia del compresor en función de la presión de descarga y la demanda. Una regla práctica muy extendida es que una menor presión del sistema reduce la energía del compresor; el gemelo te permite estimar el efecto con tu propio perfil de carga medido en lugar de cifras genéricas.
  • Reparación de fugas: mide la potencia del compresor en horas sin producción, cuando la demanda de aire debería ser casi nula. Esa carga base se aproxima a las fugas; el gemelo muestra la energía que podría recuperar una campaña de reparación.
  • Desplazamiento de cargas: reproduce una semana de datos medidos moviendo las cargas flexibles a horas valle para ver el efecto en la demanda punta.
  • Políticas de apagado en espera: combina el estado de la línea con su energía para ver cuánto se consume en espera y simula un modo standby automático tras un tiempo de inactividad.

Mantén los cálculos de escenarios en tus propios servicios o notebooks, leyendo el histórico de una base de datos de series temporales. El papel del broker es entregar los datos en vivo de forma fiable; no almacena histórico ni ejecuta modelos.

Lista de comprobación de implementación

  1. Dibuja el esquema unifilar y la topología de flujos de energía del emplazamiento antes de comprar contadores.
  2. Identifica los mayores consumidores y mídelos primero; la cola larga se puede estimar.
  3. Elige un intervalo de sondeo acorde con la pregunta: de 1 a 15 segundos para correlacionar con el proceso, un minuto para cargas del edificio.
  4. Publica los contadores acumulados además de la potencia.
  5. Publica el estado de producción en el mismo broker para poder calcular la energía por unidad y el consumo en espera.
  6. Persiste los datos con un suscriptor (Telegraf a InfluxDB o un script de Python a TimescaleDB).
  7. Añade una comprobación de balance por nodo de distribución y revisa las diferencias cada semana.
  8. Usa las reglas de alerta por umbral de ConnectMQ para límites sencillos, como una carga base nocturna inesperada.

Errores habituales

  • Unidades y factores de escala mezclados. Los registros Modbus suelen necesitar escalado. Valida las lecturas del gateway con la pantalla del contador.
  • Muestreo no sincronizado. Comparar un contador principal leído en el segundo 0 con subcontadores leídos en el segundo 40 genera diferencias falsas. Promedia en ventanas alineadas.
  • Medir solo la electricidad. El gas, el vapor y el aire comprimido suelen esconder los mayores ahorros.
  • Sin responsable. Un gemelo energético necesita a alguien que lo revise con regularidad y convierta los hallazgos en acciones.

El modelado energético combina bien con un gemelo digital de edificios para las cargas de HVAC y un gemelo digital de fábrica para las líneas de producción.

Transmite tus datos energéticos con ConnectMQ

ConnectMQ ofrece un broker MQTT gestionado y seguro como columna vertebral para gateways de contadores y servicios del gemelo, con TLS en el puerto 8883 y acceso por WebSocket para paneles en el navegador. Regístrate gratis en app.connectmq.com, sin tarjeta de crédito, crea un broker Serverless y conecta tu primer gateway de contadores en minutos.

Preguntas frecuentes

¿Qué es un gemelo digital energético?

Es un modelo vivo de las fuentes de energía, los activos de conversión, la distribución y los consumidores de un emplazamiento, alimentado con datos de contadores, que muestra adónde va la energía y permite probar cambios de eficiencia.

¿Con qué frecuencia deben publicar datos los contadores de energía?

Depende de la pregunta. Cada pocos segundos es adecuado para correlacionar con eventos del proceso, mientras que intervalos de un minuto suelen bastar para cargas de edificios y análisis de facturación.

¿Puedo conectar contadores de energía Modbus a MQTT?

Sí. Un gateway como Node-RED o Telegraf lee los registros Modbus y publica los valores en topics MQTT a los que se suscribe el gemelo.

¿El broker MQTT almacena mi histórico energético?

No. El broker entrega mensajes en vivo. Usa un suscriptor independiente para escribir los datos en una base de datos de series temporales para el histórico y el análisis de escenarios.

Artículos relacionados

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.