Si solo puede realizar mediciones en momentos discretos, la única forma posible es sumar y dividir por el tiempo entre mediciones: la integral
$$ E_ \ text {total} = \ int \ limits_ {T_ \ text {start}} ^ {T_ \ text {end}} P (t) dt $$
realmente se derrumba en una suma, \ $ P (t) \ $ solo se conoce por conjunto de puntos. Por ejemplo, suponga que el valor de potencia es constante por el tiempo que pasa entre sus \ $ N \ $ mediciones individuales, llamémoslo a \ $ T_ \ text {muestra} \ $, luego
$$ \ begin {align}
\ tilde E & = \ sum \ limits_ {n = 0} ^ {N-1} T_ \ text {muestra} \ cdot P (nT) \\
& = T_ \ text {muestra} \ sum \ limits_ {n = 0} ^ {N-1} P (nT) \\
\ end {align} $$
Ahora, dices
un conjunto de puntos que realmente no tiene ninguna rima o razón
Bueno, eso es un problema. ¿Qué pasa si la potencia aumenta entre dos puntos de medición y resulta que es baja cada vez que realmente tomas nota?
La respuesta a este problema es Nyquist-Shannon Tepling de muestreo , que es bastante útil en muchas aplicaciones de procesamiento de señales, pero en este caso significa:
Si tiene una señal real (aquí: sus mediciones de potencia) cuya frecuencia más alta es \ $ f_ \ text {max} \ $, entonces deberá mirarla dos veces esa frecuencia para asegurarse de no perder nada. , es decir, \ $ f_ \ text {muestra} \ ge 2f_ \ text {max} \ $.
Frecuencia aquí significa la cantidad de tiempo entre dos eventos consecutivos. Eso significa que si puede decir "la fluctuación de potencia más corta que debo considerar es \ $ T \ $ larga (por ejemplo, 5 segundos)", entonces su señal de frecuencia más alta \ $ f_ \ text {max} = \ frac1T \ $ (es decir, 0.2 Hz en el caso de 5s), y tendrá que muestrear dos veces esa frecuencia, por lo que \ $ f_ \ text {sample} \ ge 2f_ \ text {max} = \ frac2T \ $, o considerando el intervalo de muestreo \ $ T_ \ text {muestra} = \ frac1 {f_ \ text {muestra}} \ le \ frac12 T \ $.
Si realiza una muestra más lenta que eso, su medida no es representativa de lo observado (a menos que tenga otro modelo restringido de la forma en que fluctúa el consumo de energía, que no parece tener), y no se puede extraer ninguna declaración de su conjunto de puntos de medición.
Si luego tiene las mediciones en un intervalo de tiempo sensible y constante, simplemente sumándolas y multiplicando el resultado con ese intervalo, obtendrá su lectura de energía total. No necesita ningún módulo especial de Python para eso, es decir, simplemente
### assuming "powers" is a list / iterable of your power measurements in Watt,
### and "T" contains the sample interval in seconds
total_power = sum(powers) / 1000 * T / 3600
le dará su kWh.
Ahora, podría decir "¿cómo debo saber qué tan rápido se encienden y apagan mis aparatos?"
En muchos escenarios, puede poner un límite razonable a la fluctuación de potencia. Por ejemplo, seguro, las luces pueden encenderse y en fracciones de segundo, pero la cantidad de energía consumida por las luces apagadas rápidamente (por ejemplo, el uso del inodoro, encender, 60 s, apagar) es probablemente insignificante,
mientras que las cosas que realmente importan (nevera, calentador de agua, lavadora, horno) tienden a cambiar relativamente lento en un escenario de uso doméstico típico.