En plena crisis energética, el consumo eléctrico supone una importante fuente de gasto, tanto para las empresas, como para los ciudadanos podríamos haber reducido las emisiones de 32,23 Megatoneladas de Co2.
Para intentar optimizar el consumo eléctrico de cualquier entidad, es necesario previamente medir éste de la forma más fiel posible, pues no se puede optimizar nada que no se pueda medir, siendo lo ideal monitorizarlo en tiempo, con objeto de generar alarmas, registrar eventos y crear informes de análisis de calidad de energía.
Algunas de las utilidades de monitorizar el consumo eléctrico:
Estudiar los hábitos de consumo en función de las franjas horarias con objeto de promover políticas destinadas a su reducción.
Detectar picos indebidos de consumo en horas de baja actividad con objeto de detectar “consumos fantasmas” y consumos indebidos.
Racionalizar el gasto energético consumiendo sólo lo necesario evitando derroches superfluos, contribuyendo de esta manera a luchar contra el cambio climático.
Predecir el consumo energético estudiando el histórico.
Trasladar los picos de consumo, cuando sea posible, a otras franjas horarias con objeto de no sobrecargar la red.
Detectar cortes de suministro con objeto de generar alarmas o tomar medidas correctivas.
Diagnosticar posibles fallos tanto en las instalaciones como en los aparatos eléctricos.
Servicios relacionados con AAL (Ambient Assisted Living), es decir servicios para la independencia de las personas mayores .
Detectar consumos indebidos causados por sabotajes de las instalaciones.
Optimización de la demanda contratada.
Usando técnicas de monitorización según muchos expertos se puede ahorrar desde un 15% hasta 20%. Y no solo esto va de ahorro económico pues por ejemplo en España en 2020 podríamos haber reducido las emisiones de 32,23 Megatoneladas de Co2.
En este contexto, contamos con el OpenZMeter, un medidor monofásico de energía eléctrica, que es además también analizador de calidad de la energía. Este dispositivo, es de código abierto, cuenta con capacidades de IoT y permite medir una amplia gama de variables eléctricas a una elevada frecuencia de muestreo (15625Hz).
Este nuevo código intenta completar las capacidades del OZM adaptando para ello la herramienta de desagregación de la demanda NILMTK, mediante la ampliación del uso de TimeStamp de 13 dígitos, la creación de dos nuevos convertidores y conversores con el soporte de transitorios hasta el orden 50 de tensión , corriente y potencia, la generación de dos nuevos DS y el desarrollo del nuevo código abierto para la desagregación.
Para ello, el entrenamiento contempla el uso de dos de los algoritmos de desagregación más conocidos, como son el de Optimización Combinatoria (CO) y el Modelo de Markovv Factorial Oculto (FHMM).
OZM requiere para la desagregación un periodo bastante más pequeño de unos 30” en contraposición con los requeridos con otros DS públicos que suele estar en torno a los 15’.
Tras el entrenamiento, los datos agregados pueden introducirse en el modelo para su desagregación y posterior análisis de los resultados obtenidos obteniéndose un error que no supera el 1%.
Gracias a que NILMTK proporciona funciones para calcular las métricas de los resultados de cada algoritmo de desagregación, en este estudio podemos comparar resultados obtenidos con diferentes métodos, periodos de muestreo, algoritmos y DS.
Resultados DEPS
RESULTADOS OZM
Destaca el error mínimo en la desagregación así como las métricas MNEAP y RMSE cuyo comportamiento son bastante superiores en OZM frente a otros DS públicos
Conclusiones
El uso de componentes armónicos se demuestra que mejora el resultado de casi todas las métricas dependiendo mucho del tipo del dispositivo eléctrico.
El comportamiento del nuevo DS supera en tiempos de muestreo y métricas a otros DS públicos.
Se entrega código abierto funcional que permite desagregar por completo una instalación convencional.
En un horizonte futuro, como continuación de este trabajo, se propone obtener un mecanismo automatizado para desplegar en una instalación convencional para hacer posible mostrar en tiempo real la desagregación del consumo energético de los diferentes aparatos eléctricos que lo constituyen.
Video resumen
En el siguiente video podemos ver un resumen en video de los conceptos y resultados mas importantes que hemos visto en este post:
EL NILM o Non-Intrusive Load Monitoring, es decir la desagregación no intrusiva de la demanda . es una técnica computacional para la estimación del consumo individual de diversos dispositivos utilizando para ello la lectura agregada de un único medidor de energía (Smart Meter, SM).Gracias a las ventajas en cuanto instalación , coste e implementación, éste concepto ha tomado relevancia en los últimos años en el ámbito de las Smart Grids, al aportar una estimación de los hábitos de consumo de los clientes sin la necesidad de un despliegue masivo de contadores inteligentes en cada punto de consumo.
En este contexto vamos a ver una herramienta o toolkit open software llamado NILMTK que nos va a ayudar a comparar algoritmos para implementar la desagregación ( además particularmente no contempla un uso diferente a este)
Para el análisis de la desagregación , necesitamos recolectar datos del consumo centralizado , lo cual nos va permitir a creación de un nuevo dataset el cual puede ser analizado usando las funciones de NILMTK lo que permite, por ejemplo, visualizar los datos de potencia en un determinado periodo u obtener estadísticas de energía del dataset.
Posteriormente, en la etapa de preprocesamiento se toman decisiones en línea con los análisis realizados, con el objetivo de preparar correctamente los datos para del entrenamiento de los modelos de desagregación. Básicamente, el entrenamiento de un modelo consiste en enseñarle a reconocer por separado las características de los dispositivos para luego identificarlos dentro de una señal agregada. El entrenamiento contempla el uso de los algoritmos Combinatorial Optimization (CO) y Factorial Hidden Markov Model (FHMM).
El formato de almacenamiento de datos HDF5
HDF5 es un formato de datos jerárquico que se usar en el NILMTK como fuente datos basado en HDF4 y NetCDF (otros dos formatos de datos jerárquicos).El formato de datos jerárquico, versión 5 (HDF5), es un formato de archivo de código abierto que admite datos grandes, complejos y heterogéneos. HDF5 utiliza una estructura similar a un “directorio de archivos” que le permite organizar los datos dentro del archivo de muchas formas estructuradas diferentes, como lo haría con los archivos en su computadora. El formato HDF5 también permite la incrustación de metadatos, lo que lo hace autodescriptivo .
Estructura jerárquica: un directorio de archivos dentro de un archivo
El formato HDF5 se puede considerar como un sistema de archivos contenido y descrito en un solo archivo. Piense en los archivos y carpetas almacenados en su computadora. Es posible que tenga un directorio de datos con algunos datos de temperatura para varios sitios de campo. Estos datos de temperatura se recopilan cada minuto y se resumen cada hora, día y semana. Dentro de un archivo HDF5, puede almacenar un conjunto de datos similar organizado de la misma manera que podría organizar archivos y carpetas en su computadora. Sin embargo, en un archivo HDF5, lo que llamamos “directorios” o “carpetas” en nuestras computadoras, se llaman groupsy lo que llamamos archivos en nuestra computadora datasets.
2 Términos importantes de HDF5
Grupo: un elemento similar a una carpeta dentro de un archivo HDF5 que puede contener otros grupos O conjuntos de datos dentro de él.
Conjunto de datos: los datos reales contenidos en el archivo HDF5. Los conjuntos de datos se almacenan a menudo (pero no es necesario) dentro de grupos en el archivo.
Un ejemplo de estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados.
Un archivo HDF5 que contiene conjuntos de datos podría estructurarse así:
Un ejemplo de estructura de archivo HDF5 que contiene datos para varios sitios de campo y también contiene varios conjuntos de datos (promediados en diferentes intervalos de tiempo).
HDF5 es un formato autodescriptivo
El formato HDF5 es autodescriptivo. Esto significa que cada archivo, grupo y conjunto de datos puede tener metadatos asociados que describen exactamente cuáles son los datos. Siguiendo el ejemplo anterior, podemos incrustar información sobre cada sitio en el archivo, como por ejemplo:
El nombre completo y la ubicación X, Y del sitio.
Descripción del sitio.
Cualquier documentación de interés.
De manera similar, podríamos agregar información sobre cómo se recopilaron los datos en el conjunto de datos, como descripciones del sensor utilizado para recopilar los datos de temperatura. También podemos adjuntar información, a cada conjunto de datos dentro del grupo de sitios, sobre cómo se realizó el promedio y durante qué período de tiempo están disponibles los datos.
Un beneficio clave de tener metadatos adjuntos a cada archivo, grupo y conjunto de datos es que esto facilita la automatización sin la necesidad de un documento de metadatos separado (y adicional). Usando un lenguaje de programación, como R o Python, podemos obtener información de los metadatos que ya están asociados con el conjunto de datos y que podríamos necesitar para procesar el conjunto de datos.
Los archivos HDF5 son autodescriptivos, lo que significa que todos los elementos (el archivo en sí, los grupos y los conjuntos de datos) pueden tener metadatos asociados que describen la información contenida en el elemento.
Subconjunto comprimido y eficiente
El formato HDF5 es un formato comprimido. El tamaño de todos los datos contenidos en HDF5 está optimizado, lo que reduce el tamaño general del archivo. Sin embargo, incluso cuando están comprimidos, los archivos HDF5 a menudo contienen grandes volúmenes de datos y, por lo tanto, pueden ser bastante grandes. Un atributo poderoso de HDF5 es data slicingmediante el cual se puede extraer un subconjunto particular de un conjunto de datos para su procesamiento. Esto significa que no es necesario leer el conjunto de datos completo en la memoria (RAM); muy útil para permitirnos trabajar de manera más eficiente con conjuntos de datos muy grandes (gigabytes o más).
Almacenamiento de datos heterogéneos
Los archivos HDF5 pueden almacenar muchos tipos diferentes de datos dentro del mismo archivo. Por ejemplo, un grupo puede contener un conjunto de conjuntos de datos para contener datos enteros (numéricos) y de texto (cadenas). O bien, un conjunto de datos puede contener tipos de datos heterogéneos (por ejemplo, tanto texto como datos numéricos en un conjunto de datos). Esto significa que HDF5 puede almacenar cualquiera de los siguientes (y más) en un archivo:
Datos de temperatura, precipitación y PAR (radiación fotosintética activa) para un sitio o para muchos sitios
Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial específica, todo en el mismo archivo)
Un conjunto de datos espaciales multi o hiperespectral que contiene cientos de bandas.
Datos de campo para varios sitios que caracterizan insectos, mamíferos, vegetación y clima.
Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial única)
¡Y mucho más!
Formato abierto
El formato HDF5 es abierto y de uso gratuito. Las bibliotecas de apoyo (y un visor gratuito) se pueden descargar desde el sitio web de HDF Group . Como tal, HDF5 es ampliamente compatible con una gran cantidad de programas, incluidos lenguajes de programación de código abierto como R y Python, y herramientas de programación comerciales como Matlaby IDL. Los datos espaciales que se almacenan en formato HDF5 se pueden utilizar en los programas de SIG y de imagen que incluyen QGIS, ArcGISy ENVI.
Beneficios de HDF5
Autodescripción Los conjuntos de datos con un archivo HDF5 son autodescriptivos. Esto nos permite extraer metadatos de manera eficiente sin necesidad de un documento de metadatos adicional.
Admite datos heterogéneos : un archivo HDF5 puede contener diferentes tipos de conjuntos de datos.
Admite datos grandes y complejos : HDF5 es un formato comprimido que está diseñado para admitir conjuntos de datos grandes, heterogéneos y complejos.
Admite la división de datos: la “división de datos”, o la extracción de partes del conjunto de datos según sea necesario para el análisis, significa que los archivos grandes no necesitan leerse por completo en la memoria o RAM de la computadora.
Formato abierto: soporte amplio en las muchas herramientas : debido a que el formato HDF5 es abierto, es compatible con una gran cantidad de lenguajes y herramientas de programación, incluidos lenguajes de código abierto como R y Pythonherramientas SIG abiertas como QGIS.E
Instalación del NILTK
Básicamente aunque NILMTK se puede instalar muy fácilmente en sistemas basados en Linux , es posible instalarlo también desde Windows 11 . Resumidamente necesitaremos instalar Anaconda ( y Git si no lo tiene instalado ) y realizar la identificación de la carga, encontrar el paquete de instalación de NILMTK y registrar el proceso deliberadamente.
Veamos mas en detalle los pasos a seguir:
Instalación de GIT Windows
Hay varias maneras de instalar Git en Windows. La forma más oficial está disponible para ser descargada en el sitio web de Git. Solo tiene que visitar http://git-scm.com/download/win y la descarga empezará automáticamente. Observe que éste proyecto conocido como Git para Windows (también llamado msysGit), es diferente de Git “normal”. Para más información acerca de este proyecto visita http://msysgit.github.io/.
Otra forma de obtener Git fácilmente es mediante la instalación de GitHub para Windows. El instalador incluye la versión de línea de comandos y la interfaz de usuario de Git. Además funciona bien con Powershell y establece correctamente “caching” de credenciales y configuración CRLF adecuada. Puede descargar este instalador del sitio web de GitHub para Windows en http://windows.github.com.
Descarga e instalación de Anaconda
Los entornos virtuales hacen que la organización de paquetes de Python sea pan comido. Además, el proyecto NILMTK ofrece varias versiones de Conda Forge. Primero, consiga Anaconda aquí.
Seguidamente nos pedira qeu nos registremos Enseguida empezara la descarga, por lo que nos iremos a la carpeta de Descargas y ejecutaremos el instalador
Ahora deberemos aceptar la licencia para poder proseguir la instalacion
Seleccione una instalación para “Solo yo” a menos que esté instalando para todos los usuarios (lo que requiere privilegios de administrador de Windows) y haga clic en Siguiente.
Seleccione una carpeta de destino para instalar Anaconda y haga clic en el botón Siguiente. Nota: Instale Anaconda en una ruta de directorio que no contenga espacios ni caracteres Unicode..No lo instale como administrador a menos que se requieran privilegios de administrador.
Ahora nos toca Registrar Anaconda3 y mantener por defecto Python 3.8.
A menos que planee instalar y ejecutar múltiples versiones de Anaconda o múltiples versiones de Python, acepte el valor predeterminado y deje esta casilla marcada.
Haga clic en el botón Instalar. Si desea ver los paquetes que está instalando Anaconda, haga clic en Mostrar detalle
Enseguida enseguida empezara la instalacion , lo cual llevarás unos cinco minutos o menos segun el equipo donde este instalando.
O para instalar Anaconda sin PyCharm, haga clic en el botón Siguiente.
Después de una instalación exitosa, verá el cuadro de diálogo “Gracias por instalar Anaconda”:
Si desea leer más sobre Anaconda.org y cómo comenzar con Anaconda, marque las casillas “Tutorial de Anaconda Edición Individual” y “Aprenda más sobre Anaconda”. Haga clic en el botón Finalizar.
Verifique su instalación .Nota: Si está detrás de un proxy de la empresa, es posible que deba realizar una configuración adicional.
Abra una ventana de terminal de conda, crearemos un nuevo entorno de Conda y lo activaremos con los comandos:
Si aún no está presente en su instalación de Conda, agregue el conda-forge a la lista de canales:
conda config --add channels conda-forge
Finalmente, instale la última versión de NILMTK de conda-forge:
conda install -c nilmtk nilmtk=0.4.3
Observe que el signo igual no lleva espacios(piense estamos usando Python). La ejecución del comando puede tardar un rato. Mientras tanto, consulte otros paquetes en Forge de NILMTK .
Como puede experimentar algunos problemas posteriores a la instalación con NILMTK y Matplotlib., para solucionarlos, aplique el comando:
conda install matplotlib
Verificar la instalación Para verificar que Matplotlib está instalado, intente invocar la versión de Matplotlib en Python REPL. Use desde el interprete Python los comandos a continuación que incluyen llamar a .__ version__, un atributo común a la mayoría de los paquetes de Python.
>>> import matplotlib
>>> matplotlib.__version__
Ejemplo de salida:
(nilmtk-env) C:\Users\carlo>python Python 3.6.13 (default, Sep 7 2021, 06:39:02) [MSC v.1916 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information.
import matplotlib matplotlib.version ‘3.1.3’
Agregar un kernel de Jupyter
Básicamente, NILMTK ahora está instalado en su ordenador. El siguiente paso involucra los cuadernos de Jupyter. Trabajar con Jupyter abre muchas posibilidades y se dice que es una herramienta imprescindible. Por lo tanto, agregue el entorno NILMTK a Jupyter:
Debe estar conectado para enviar un comentario.