¿El cálculo del consumo de energía es incorrecto? ¿Incoherente?

Hola a todos,

Necesitaría un poco de ayuda para el seguimiento del consumo de energía.

Actualmente, tomo directamente del contador eléctrico de la casa el consumo extraído de la red en kW y transmito este valor a Gladys con cuatro decimales. Allí he creado un dispositivo virtual correspondiente, dotado de funciones de seguimiento de energía, he definido la tarifa de electricidad y lo he sincronizado todo.

Por lo tanto: Node-RED proporciona, mediante una consulta, el consumo actual en kW (por ejemplo, 0,345 kW) y transmite este valor cada 15 minutos a Gladys. Sin embargo, allí el cálculo parece completamente erróneo. Por ejemplo, ayer tuve un consumo de aproximadamente 3,75 kW. Gladys afirma que era de 15,69 kW… ¿Cómo se explican estas diferencias tan grandes?

Hola @ruegerth,

Gracias por este comentario detallado, nos ayudará a entender mejor :slightly_smiling_face:

Creo que el cálculo no está mal, pero que los datos enviados no son los que Gladys espera. Hay dos conceptos que hay que distinguir claramente:

  • kW = una potencia instantánea (lo que consumes en el instante T)
  • kWh = una energía (una potencia durante un período de tiempo)

Tu contador muestra 0,345 kW: es una potencia, no un consumo.

Cómo Gladys calcula el consumo

El seguimiento energético de Gladys se basa únicamente en funcionalidades de tipo
« Índice »
(el índice acumulado de tu contador, en kWh, aquel que solo aumenta).
Cada 30 minutos, Gladys hace la diferencia entre las lecturas sucesivas del
índice
para deducir el consumo del período, y luego aplica tu tarifa.

Las funcionalidades de tipo « Potencia » nunca se utilizan para este cálculo,
solo sirven para mostrar una curva.

Por lo tanto, si la potencia instantánea se envía a una funcionalidad de tipo
« Índice » (o « Energía »), Gladys hace la diferencia entre dos potencias y suma
todas las variaciones positivas. Ejemplo en un día:

0,3 → 1,2 → 0,4 → 2,1 → 0,5 …

Gladys cuenta +0,9, +1,7, etc. (las bajadas se ignoran, se interpretan
como un reinicio del contador). Rápidamente se obtiene un total 3 a 5 veces demasiado
grande — lo que coincide bien con tu 15,69 en lugar de 3,75.

Segundo detalle: la unidad kW no es una unidad de energía para Gladys (solo Wh,
kWh y MWh se convierten). Una funcionalidad declarada en kW se toma tal cual como
kWh en el momento del cálculo del costo, lo que también distorsiona la tarifa.

¿Puedes confirmar?

En tu dispositivo, ¿cuál es el tipo exacto de la funcionalidad alimentada por
Node-RED (« Índice », « Energía » o « Potencia ») y qué unidad está
seleccionada? Una captura del dispositivo en Gladys ayudaría a validar mi
hipótesis.

Cómo corregir

Solución ideal: enviar a Gladys el índice acumulado de tu contador en kWh (el
total que solo aumenta, no la potencia), en una funcionalidad de tipo
« Índice » con la unidad kWh. Allí, un envío cada 15 minutos es
perfectamente suficiente, y el cálculo será exacto.

Si tu lectura solo te da la potencia instantánea: debes construir el índice
tú mismo en Node-RED integrando la potencia en el tiempo. Un nodo function
antes del envío a Gladys:

const now = Date.now();
const powerKw = Number(msg.payload);              // potencia instantánea en kW
const last = context.get('last');

if (!last) {
  context.set('last', { t: now, power: powerKw, index: 0 });
  return null;                                     // esperamos la segunda lectura
}

const deltaHours = (now - last.t) / 3600000;
const index = last.index + last.power * deltaHours; // kWh acumulados

context.set('last', { t: now, power: powerKw, index });
msg.payload = Number(index.toFixed(4));
return msg;

Dos precauciones:

  • usa un contexto persistente (almacenamiento file en Node-RED), de lo contrario el índice
    se reinicia a cero en cada reinicio;
  • con una lectura cada 15 minutos, se supone que la potencia se mantuvo
    constante durante todo el intervalo: es muy aproximado. Si pasas por
    este método, muestra cada minuto (o 10-30 s), la precisión será mucho mejor. Por eso el índice del contador sigue siendo la mejor fuente.

Una vez hecha la corrección

  1. Elimina el historial erróneo de la funcionalidad concernida (o crea una
    funcionalidad limpia);
  2. Ve a Seguimiento de energía → Configuración y lanza « Recálculo del
    consumo »
    , luego « Calcular el costo desde el principio ». Puedes seguir
    el progreso en las tareas en segundo plano.

Dime qué dan el tipo y la unidad de tu funcionalidad, afinaremos si es necesario!

Muchas gracias por su rápida ayuda.
Ojalá hubiera prestado más atención en clase de física.
Siempre puedo empezar de cero, por ahora lo he borrado todo.
En mi contador eléctrico (en Alemania, el punto de entrega del proveedor de energía), puedo consultar el registro con precisión de segundo.
En Node-RED, ahora consulto este contador cada 15 minutos y envío los datos a Gladys a través de MQTT. Así es como se ve:

Traducido con DeepL.com (versión gratuita)

He configurado un dispositivo virtual en Gladys, he recuperado el tema MQTT y he establecido el monitoreo del consumo de energía a partir de ahí. Vamos a ver… Espero (por mí y por ustedes) haber entendido bien la diferencia entre la energía y la potencia. Saludos, Thomas

Lo siento, lo olvidé… Así es como se muestran los datos en Gladys. Por ahora es así, y luego cada 15 minutos:

Genial, ¿todo funciona ahora? :slight_smile:

Sí, muchas gracias (P.D.: Deep L es más potente y preciso para la traducción :wink: )

Para información, no sé si hablas inglés, pero el foro traduce automáticamente los mensajes a este idioma.

Si algún día tenemos muchos usuarios alemanes, ¡podría activar la traducción al alemán! (Aunque, bueno, yo pago las solicitudes de IA de traducción, así que se necesita una masa crítica de usuarios :smiley: )

Mais non, sobre todo no gastar dinero, DeepL lo hace muy bien (y además, de todos modos, nosotros, los alemanes, aprendemos francés, y ustedes, los franceses, aprenden alemán :grinning_face: :joy: :grinning_face:)