Mejorando un Asus mini PC


Imagine todas las funciones de un PC tradicional de sobremesa en una caja elegante y ultra compacta, con un tamaño ligeramente superior al de la caja de un DVD: eso es realmente un MiniPC . Y si piensa que un all -in-one es mejor opción que un minipc , quizás no sea del todo lo mas acertado, porque el día que se estropee la pantalla o simplemente quiera reemplazar esta por otra mas grande o de mejor calidad no tendremos ninguna opción, así que desde este blog animamos a al menos sospesar este tipo de mini-equipos que podemos colocar perfectamente detrás de nuestro monitor pareciendo prácticamente un all-in-one pero con la seguridad de que podemos colocarlo en la pantalla que deseemos gracias al standar VESA para fijar el mini-pc al monitor

En el caso de ASUS , tenemos el modelo VivoPV con la potencia de su procesador IntelCore i5 3337U y equipado con la tecnología SonicMaster, el VivoPC allana el camino para disfrutar de informática diaria completa y de una experiencia multimedia cinemática de gran realismo. Siéntate y disfruta con las altísimas velocidades de su conectividad Wi-Fi 802.11ac, hasta tres veces superiores a las velocidades wireless-N estándar, y navega por Internet, realiza streaming de contenido multimedia y juega a través de Internet con una estabilidad máxima.

El VivoPC desafía a las convenciones y redefine el diseño de un PC de sobremesa. Sencillo y elegante, su acabado en metal pulido encaja a la perfección en tu salón o en su oficina. No juzgues al VivoPC por su tamaño. Ofrece el mismo rendimiento que tu PC de sobremesa tradicional. El VivoPC permite realizar todo tipo de tareas con la fluidez que espera, desde trabajar con enormes hojas de cálculo hasta disfrutar de vídeos virales.Navegue por sus páginas favoritas o reproduzca películas y música desde bibliotecas en línea con la tecnología Wi-Fi 802.11ac de doble banda. La tecnología Wi-Fi GO! ofrece un control absoluto del VivoPC sin necesidad de levantarte del sofá. Ademas puede transforma su smartphone o tableta en un mando a distancia con la función escritorio remoto y el teclado y ratón virtuales.

El VivoPC hace que las ampliaciones del ordenador resulten sencillas. Su cubierta lateral deslizante permite acceder de un modo rápido y sencillo a los componentes internos, para que amplíe cuando quieras la memoria y el disco duro.

Este equipo incorpora numerosos puertos USB 2.0 y USB 3.0; estos últimos permiten cargar dispositivos externos más rápido y ofrecen velocidades de transferencia 10 veces más rápidas que el estándar USB anterior, para que pueda transferir y sincronizar dispositivos a toda velocidad. El VivoPC incorpora un puerto de salida SPDIF óptico para ofrecer compatibilidad con varios canales de audio. Igualmente, incluye tres salidas de audio e incorpora puertos de salida HDMI y VGA para conectar el ordenador a pantallas o televisores de alta definición.

Extensión del botón de acceso

Si tenemos un mini-pc probablemente anclado detrás de un monitor nos habremos dado cuenta de lo incomodo que puede resultar encenderlo.

Con este diseño 3D simple alargaremos el botón principal para poder encenderlo de un modo mas cómodo para lo cual necesitaremos 2 piezas impresas en 3D ( descargables gratuitamente desde https://www.thingiverse.com/thing:5027079 ) y un muelle (reciclado por ejemplo de un bolígrafo gastado).

Como podemos ver en la imagen el soporte impreso en 3D se fija al monitor con cinta de doble cara de buena calidad a la distancia deseada y luego se introduce la verilla por el orificio intercalando un muelle reciclado .

El diseño esta ajustado para un Asus vivoPV pero puede adaptarse fácilmente a cualquier otro PC

Mejorando la refrigeración

Otro punto que puede mejorarse de estos minipc es el apartado de la refrigeración, pue scon el tiempo tienden a calentarse para lo cual podemos quitarle la tapa y fijarle al chasis inferior un ventilador vertical de los usados en ordenadores portatiles dado que sus medidas son compatibles y el ruido será inapreciable.

El ventilador lo podemos comprar o reciclar de un viejo portátil. Para fijar el ventilador al chasis interno usaremos silicona térmica y un buen adhesivo de de montaje para los laterales . Para las conexiones ignoraremos los cables del sensor de temperatura ( suelen ser cables de color amarillo uy azul ) conectando los otros dos cables rojo y negro a un conector USB: de este modo cuando encendamos el pc se encenderá el ventilador ( y del mismo modo se apagara cuando apaguemos el ordenador).

Nótese que normalmente estos ventiladores suelen funcionar a 12V DC por lo que alimentarlos a 5V DC no lo perjudicara , haciendo así mucho menos ruido pero girando lo suficiente fuerte para que el ordenador siempre esté siempre bien refrigerado sin que lleguemos a notar que este funcionando

Una vez fijado el ventilador podemos pegar la tapa con cinta de doble cara al otro lado del ventilador y bien podemos dejar los laterales libres ( excepto el de salida de aire) o colocar una pieza en 3d que cubra esa parte.

Otras mejoras

Dado que ya entraríamos en otros aspectos mas comerciales, sin duda aumentar el disco (suelen usar discos mini-ssd) o la memoria( llevan memorias de portátil) son otros aspectos que podemos considerar

Instalacion NILMTK con Anaconda 2021


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 .

Las organizaciones utilizan HDF5 para diversas necesidades de datos, acceso, informática y redes.

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.
Una ilustración de una estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados
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í:

La ilustración HDF5 de arriba, pero los grupos son sitios NEON y los tipos de sensores y conjuntos de datos se incluyen en los tipos de sensores.
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.

Una ilustración de una estructura de archivos HDF5 con un grupo que contiene dos conjuntos de datos y todos los metadatos asociados
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 MatlabIDL. Los datos espaciales que se almacenan en formato HDF5 se pueden utilizar en los programas de SIG y de imagen que incluyen QGISArcGISENVI.

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.

Felicidades, acaba de instalar Conda.

Opcional: para instalar PyCharm para Anaconda, haga clic en el enlace a https://www.anaconda.com/pycharm .

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:

conda create --name nilmtk-env 
conda activate nilmtk-env

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:

python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"

Prueba de la instalación

Ha llegado el momento de comprobar su instalación. Antes que nada, cree una nueva carpeta y descargue el conjunto de prueba aleatorio de Github:

123md nilmtk_testcd nilmtk_test  wget https://raw.githubusercontent.com/nilmtk/nilmtk/master/data/random.h5

Como puede comprobar random.h5 es el fichero de de datos en en formato hdf5 .A continuación, levante Jupyter:

1notebook jupyter

Para probar su instalación, intente importar el conjunto de datos aleatorio usando NILMTK y trazar todos los medidores:https://klemenjak.medium.com/media/9ba2be16d331653a7b4093a0fe412434

La salida debe ser:

1MeterGroup (metros =   ElecMeter (instancia = 1, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 2, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 3, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 4, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 5, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = []) )

¡Felicitaciones! Lo ha logrado. ¡NILMTK parece funcionar según lo previsto! 

La imagen tiene un atributo ALT vacío; su nombre de archivo es pexels-photo-5036278.jpeg

Como subir un proyecto local a github.


Ver las imágenes de origen

GitHub es una plataforma de desarrollo colaborativo para alojar proyectos utilizando el sistema de control de versiones Git. Se utiliza principalmente para la creación de código fuente de programas de ordenador. El software que opera GitHub fue escrito en Ruby on Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc. Anteriormente era conocida como Logical Awesome LLC. El código de los proyectos alojados en GitHub se almacena típicamente de forma pública.

El 4 de junio de 2018 Microsoft compró GitHub por la cantidad de 7500 millones de dólares,​ al inicio el cambio de propietario generó preocupaciones y la salida de algunos proyectos de este repositorio, sin embargo no fueron representativos. GitHub continúa siendo la plataforma más importante de colaboración para proyectos Open Source

Para crear un proyecto desde Github hay al menos dos formas de hacerlo

  • Desde el propio site de Gitub
  • Desde linea de comandos

Crear un proyecto desde la web de github

Creamos un nuevo repositorio en https://github.com. Le damos nombre, descripción, seleccionamos si va a ser un proyecto publico o privado si es el caso, y dejamos el check de crear README sin marcar. Le damos a crear repositorio y con esto ya tenemos el repositorio donde alojaremos nuestro proyecto.

Crear un proyecto desde la terminal del equipo donde esta el proyecto que queremos subir a github

Nos vamos a la carpeta del proyecto y ejecutamos estos comandos.

git init

git add .

git commit -m "first commit"

git remote add origin https://github.com/NOMBRE_USUARIO/NOMBRE_PROYECTO.git

git push -u origin master


Ver las imágenes de origen

Trucos

para eliminar ficheros al hacer push en vez de
git add .
usar
git add -u

para deshacer un git add .
git reset
si seguido de git commit ...
git reset HEAD~
para deshacer varios commit locales que no han sido pushedados:
git reset --hard <codigo del commit>
para obtener el codigo hacer:
git log
para salir del log pulsa q

ERRORES

Ese error que te arroja se refiere a que tu rama remota -alojada en github- posee contenido que tu rama local no contiene.

Si quieres ir un paso más allá y no deseas que se cree ese commit merge automático, existe un método parecido que te crea una estructura de ramas ligeramente diferente, lineal. (Pierdes la trazabilidad de las fusiones de ramas, así que no se recomienda en exceso cuando es trabajo colaborativo… vamos, que hay que saber utilizarlo).

git fetch
git rebase origin/master
git push

Fetch: te trae todos los cambios sin integrarlos (pull los integra, fetch sólo da constancia a tu repositorio local de que en la rama oculta origin/master existe determinado commit). Ósea, digamos que abres ese árbol pero en local, y tu rama de trabajo sigue apuntando a tu commit local y la rama origin/master a los contenidos bajados del remoto. En tu rama de trabajo local no tendrás integrados esos contenidos remotos que sí existen en la rama origin/master.
rebase origin/master : apuntas a origin como nuevo punto inicial para tu rama e integras los cambios de tu commit local. (Si existen conflictos, tendrás que resolverlos)
push : subes esa integración. No se sube tu commit local original, sino la mezcla de ambos.

Dejando una estructura similar a esta, todos al mismo nivel:

º Commit X (previo commit al error)
º Commit 1 (el que existe en remoto y no tienes en local)
º Commit 3 (el merge de commit 1 + tu commit local)

image

Con el ejemplo del gráfico, tu local es el color verde; has seguido desarrollando, mientras paralelamente en la rama azul (remoto) existen otros cambios que no posees.

Como indica el error, te sugiere que primero integres esos cambios en tu rama local, haciendo un git pull.
Si integras los cambios y si no existen conflictos a corregir, se creará automáticamente un último commit con el merge de ambas ramas. Si existen conflictos -te lo indicará- deberás resolverlos antes y luego se creará el commit de merge. Tras ello podrás hacer un git push sin problema.

Eso dejará una estructura de ramas similar a esto (imagínate el commit X abriéndose en 2 y volviéndose a cerrar al llegar al commit merge).

º Commit X (previo commit al error)
ºº Commit 1 (el que existe en remoto y no tienes en local)
ºº Commit 2 (el que existe en local y contiene commit X, pero no commit 1)
º Commit 3 (el merge de commit 1 + commit 2)

image