6 herramientas de domótica de código abierto


El Internet de las cosas no es sólo una palabra de moda, es una realidad que se ha expandido rápidamente desde la última vez que publicamos un artículo de revisión sobre las herramientas de domótica en 2016. En 2017, el 26,5% de los hogares estadounidenses ya tenían algún tipo de tecnología para hogares inteligentes en uso; en un plazo de cinco años, se espera que ese porcentaje se duplique.

Con un número cada vez mayor de dispositivos disponibles para ayudarle a automatizar, proteger y monitorear su hogar, nunca ha sido más fácil ni más tentador probar su mano en la automatización del hogar. Ya sea que esté buscando controlar su sistema HVAC de forma remota, integrar un cine en casa, proteger su hogar de robos, incendios u otras amenazas, reducir su consumo de energía o simplemente controlar algunas luces, hay innumerables dispositivos disponibles a su disposición.

Pero al mismo tiempo, muchos usuarios se preocupan por las implicaciones de seguridad y privacidad de traer nuevos dispositivos a sus hogares, una consideración muy real y seria. Quieren controlar quién tiene acceso a los sistemas vitales que controlan sus aparatos y registran cada momento de su vida cotidiana. Y es comprensible que en una época en la que incluso su refrigerador ahora sea un dispositivo inteligente, ¿no quiere saber si su refrigerador está llamando a casa? ¿No querría sin dudar en ello de que, incluso si concede permiso a un dispositivo para comunicarse externamente, solo es accesible para aquellos que están autorizados explícitamente?

Las preocupaciones de seguridad son algunas de las muchas razones por las que el código abierto será crítico para nuestro futuro con los dispositivos conectados. Ser capaz de comprender completamente los programas que controlan su hogar significa que puede ver, y si es necesario modificar, el código fuente que se ejecuta en los propios dispositivos.

Si bien los dispositivos conectados a menudo contienen componentes propietarios, un buen primer paso para incorporar código abierto a su sistema de domótica es asegurarse de que el dispositivo que une sus dispositivos y le presenta una interfaz para ellos (el «hub») está abierto Fuente. Afortunadamente, hay muchas opciones por ahí, con opciones para ejecutar en todo, desde su computadora personal siempre activa a una Raspberry Pi.

Estos son solo algunos ejemplos de plataformas disponibles

 

 

Calaos

Calaos es una solución completa para domótica. Primero fue un sistema desarrollado por una empresa francesa del mismo nombre. Cuando la compañía fue cerrada durante 2013, toda la base de código fue de código abierto y lanzado como GPL. Una pequeña comunidad comenzó en torno al proyecto para continuar el desarrollo. La comunidad está creciendo cada día, el wiki y el foro están aquí para compartir información y buenas idea

Calaos está diseñado como una plataforma de domótica de pila completa, que incluye una aplicación de servidor, interfaz de pantalla táctil, aplicación web, aplicaciones móviles nativas para iOS y Android, y un sistema operativo Linux preconfigurado para funcionar debajo. El proyecto Calaos surgió de una empresa francesa, por lo que sus foros de apoyo están principalmente en francés, aunque la mayor parte del material instructivo y la documentación han sido traducidos al inglés.

Algunos ejemplos de lo que se puede hacer:

  • Bienvenido a casa! Después de un largo día de trabajo, ¡relájese! Cuando se vaya a casa, Calaos preparará un ambiente dulce. Las persianas están cerradas, las luces atenuadas, la música favorita comienza a reproducirse.
  • Controla su música.Comparta toda Su música en toda la casa. No mire donde lo tiene, no  transfieras más, simplemente presionE play en la habitación que debe escuchar Sus listas de reproducción favoritas.
  • Crear escenario: Todos los artículos vinculados a Calaos se pueden automatizar por tiempo, ambiente o estado de ánimo. Su hogar se vuelve inteligente a partir de hoy. La creación de un escenario se realiza en unos pocos clics en la pantalla táctil.
  • Configurar :Tiene herramientas escritas que le permiten configurar fácilmente su casa directamente desde su computadora. ¿Desea agregar más elementos a su sistema? Sólo tiene que instalar Calaos Installer.

Calaos está licenciado bajo la versión 3 de la GPL y puede ver su fuente en GitHub.

 

Domoticz

Domoticz es un sistema domótico con una biblioteca bastante amplia de dispositivos compatibles, que van desde estaciones meteorológicas hasta detectores de humo y controles remotos, y un gran número de integraciones adicionales de terceros se documentan en el sitio web del proyecto. Está diseñado con un front-end HTML5, por lo que es accesible desde los navegadores de escritorio y la mayoría de los teléfonos inteligentes modernos, y es ligero, se ejecuta en muchos dispositivos de baja potencia como raspberry Pi.

 

Es libre  y Open Source   y ademas esta diseñado para funcionar en varios sistemas operativos(es compatible con dispositivos Linux ,windows   embebidos ). La interfaz de usuario es un front-end web HTML5 escalable y se adapta automáticamente para dispositivos de escritorio y móviles.
Es compatible con todos los navegadores aunque  para los usuarios de Internet Explorer se necesita la versión 10+.

Algunas características destacables:

  • Hardware: Transceptor RFXCOM, Z-Wave, P1 Smart Meter, YouLess Meter, Contadores de pulsos, 1-Wire, EnOcean, y mucho más….
  • Registro extendido
  • Notificaciones push de iPhone / Android
  • Sensores/interruptores de aprendizaje automático
  • Creación manual de códigos de conmutación
  • Compartir / Usar dispositivos externos
  • Diseñado para la simplicidad

Domoticz está escrito principalmente en C/C++ bajo la GPLv3, y su código fuente se puede examinar en GitHub.

 

Home Assistant

Home Assistant es una plataforma de domótica de código abierto diseñada para implementarse fácilmente en casi cualquier máquina que pueda ejecutar Python 3, desde una Raspberry Pi hasta un dispositivo de almacenamiento conectado a la red (NAS), e incluso se suministra con un contenedor Docker para realizar la implementación en otros sistemas una brisa. Se integra con un gran número de ofertas comerciales y de código abierto, lo que le permite vincular, por ejemplo, IFTTT, información meteorológica o su dispositivo Amazon Echo, para controlar el hardware desde bloqueos hasta luces.

 

Home Assistant se publica bajo una licencia mIT,y su fuente se puede descargar desde GitHub.

 

 

 

Misterhouse

MisterHouse ha ganado mucho terreno desde 2016, cuando era «otra opción a considerar» en esta lista. Utiliza scripts Perl para monitorear cualquier cosa que pueda ser consultada por un ordenador o controlar cualquier cosa capaz de ser controlada a distancia.

Responde a los comandos de voz, hora del día, clima, ubicación y otros eventos para encender las luces, despertarte, grabar tu programa de televisión favorito, anunciar a las personas que llaman, advertir que tu puerta principal está abierta, reportar cuánto tiempo ha estado tu hijo en línea, te dicen si tu el coche de su hija está acelerando, y mucho más. Se ejecuta en ordenadores Linux, macOS y Windows y puede leer/escribir desde una amplia variedad de dispositivos, incluidos sistemas de seguridad, estaciones meteorológicas, identificador de llamadas, enrutadores, sistemas de ubicación de vehículos y más

MisterHouse está licenciado bajo la GPLv2 y puede ver su código fuente en GitHub.

OpenHAB

OpenHAB (abreviatura de Open Home Automation Bus) es una de las herramientas de domótica más conocidas entre los entusiastas del código abierto, con una gran comunidad de usuarios y un buen número de dispositivos e integraciones compatibles.

Escrito en Java, openHAB es portátil en la mayoría de los principales sistemas operativos e incluso funciona muy bien en Raspberry Pi. Compatible con cientos de dispositivos, openHAB está diseñado para ser independiente del dispositivo, al tiempo que facilita a los desarrolladores agregar sus propios dispositivos o plugins al sistema. OpenHAB también incluye aplicaciones iOS y Android para el control de dispositivos, así como herramientas de diseño para que pueda crear su propia interfaz de usuario para su sistema doméstico.

Con su arquitectura conectable openHAB soporta más de 200 diferentes tecnologías y sistemas y miles de dispositivos permitiendo además  automatice con facilidad . POr ejemplo puede utilizar un motor potente y flexible para diseñar reglas,con disparadores basados en tiempo y eventos, scripts, acciones, notificaciones y control de voz.

El sw puede  correr  en todas partes :Linux, macOS, Windows, Raspberry Pi, PINE64, Docker, Synology… accediendo a él con aplicaciones para la web, iOS, Android y otros.

Por cierto openHAB se ejecuta en su hardware, no requiere ningún servicio en la nube para funcionar, mantiene sus datos de forma privada en casa y habla directamente con sus dispositivos locales siempre que sea posible. En el centro de sua filosofía es que siempre el usuario tiene el control  aunque es amigable con la nube pues las integraciones están disponibles para las plataformas de hogar inteligente basadas en la nube más populares, como Google Assistant, Amazon Alexa, Apple HomeKit e IFTTT. Utilice el conector openHAB Cloud con el servicio de myopenhab.org gratuito o hospede el suyo propio

 
Una opción deseable es probar  la imagen openHAB  proporcionada para Raspberry Pi, una opción de hardware ampliamente utilizada y recomendada. Flashee una tarjeta SD, arranque y disfrute de su configuración openHAB actualizada con ajustes del sistema y software convenientemente preconfigurados como Samba, Grafana y Eclipse Mosquitto.

Puede encontrar el código fuente de openHAB en GitHub con licencia bajo la licencia pública Eclipse.

OpenMotics

OpenMotics es un sistema domótico con hardware y software bajo licencias de código abierto. Está diseñado para proporcionar un sistema completo para controlar dispositivos, en lugar de unir muchos dispositivos de diferentes proveedores. A diferencia de muchos de los otros sistemas diseñados principalmente para un fácil reacondicionamiento, OpenMotics se centra en una solución cableada. 

La plataforma de OpenMotics combina hardware de código abierto asequible con soluciones modernas en la nube. La plataforma intuitiva aprende de su comportamiento y puede expandirse a sus necesidades personales suscribiéndose a servicios adicionales.

Tambien openMotics  esta disponible para profesionales :Smart Homes ofrece beneficios significativos durante las fases de planificación, diseño y construcción de cualquier nuevo hogar, oficina u otro edificio.

El código fuente de OpenMotics está licenciado bajo la GPLv2 y está disponible para su descarga en GitHub.

 

 


Estas no son las únicas opciones disponibles, por supuesto. Muchos entusiastas de la domótica van con una solución diferente, o incluso deciden rodar la suya propia. Otros usuarios eligen utilizar dispositivos domésticos inteligentes individuales sin integrarlos en un único sistema integral.

Si las soluciones anteriores no satisfacen sus necesidades, estas son algunas alternativas potenciales a tener en cuenta:

  • EventGhost es una herramienta de automatización de cine en casa de código abierto (GPL v2) que funciona solo en equipos Microsoft Windows. Permite a los usuarios controlar los EQUIPOS multimedia y el hardware adjunto mediante el uso de plugins que activan macros o mediante la escritura de scripts de Python personalizados.
  • ioBroker es una plataforma IoT basada en JavaScript que puede controlar luces, cerraduras, termostatos, medios, webcams y más. Se ejecutará en cualquier hardware que ejecute Node.js, incluidos Windows, Linux y macOS, y sea de código abierto bajo la licencia MIT.
  • Jeedom es una plataforma de domótica compuesta por software de código abierto (GPL v2) para controlar luces, cerraduras, medios y más. Incluye una aplicación móvil (Android e iOS) y funciona en PC Linux; la compañía también vende centros que, según según él, proporcionan una solución lista para usar para configurar la automatización del hogar.
  • LinuxMCE se presenta a sí mismo como el «pegamento digital» entre sus medios y todos sus aparatos eléctricos.» Se ejecuta en Linux (incluyendo Raspberry Pi), se lanza bajo la licenciade código abierto Pluto, y se puede utilizar para la seguridad del hogar, telecomunicaciones (VoIP y correo de voz), equipos audiovisuales, domótica, y, de forma única, para jugar videojuegos.
  • OpenNetHome,al igual que las otras soluciones de esta categoría, es un software de código abierto para el control de luces, alarmas, electrodomésticos, etc. Se basa en Java y Apache Maven, funciona en Windows, macOS y Linux, incluyendo Raspberry Pi, y se lanza bajo GPLv3.
  • Smarthomatic es un marco de domótica de código abierto que se concentra en dispositivos de hardware y software, en lugar de interfaces de usuario. Licenciado bajo GPLv3,se utiliza para cosas como controlar luces, electrodomésticos y humedad del aire, medir la temperatura ambiente y recordar regar sus plantas.

 

 

 

 

 

Ahora es su turno: ¿Ya tiene un sistema de domótica de código abierto en su lugar? O tal vez usted está investigando las opciones para crear uno. ¿Qué consejo tendría para un recién llegado a la domótica y qué sistema o sistemas recomendaría?

¿Que se puede hacer para mejorar el rendimiento de las consultas en Oracle 11?


Tradicionalmente para mejorar el rendimiento de las consultas en SQL contra una BBDD Oracle , una vez optimizada la consulta con técnicas  de Tuneling ( por ejemplo usando Hints si procede) ,   siempre pasamos a dos técnicas clásicas :

  • Reconstruyendo los  índices existente en base de datos ,para lo cual previamente comprobaremos si esos índices deberían de ser reconstruidos  
  • Actualizando estadísticas sobre las tablas que realizamos las consultas.

Veamos mas despacio de que estamos hablando: 

 

Reconstrucción de indices

El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla por lo que se suelen usar sobre aquellos campos sobre los cuales se vayan a realizar búsquedas frecuentes dado que su  funcionamiento es similar al índice de un libro: guardando duplas de elemento que se desea indexar junyo a su posición en la base de datos, de modo que para buscar un elemento que esté indexado, sólo necesitamos que buscar en el índice de dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.

Los índices pueden ser creados usando una o más columnas, preparando la base de datos tanto para búsquedas rápidas al azar como para ordenaciones eficientes de los registros.

Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.

El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de parte de una tabla.

La siguiente consulta SQL mostrará el tamaño en megabytes de un índice determinado, en nuestro caso del índice PK_FACTURACION_CODIGO perteneciente a la tabla FACTURACION y el campo CODIGO del ejemplo. La consulta SQL para mostrar el tamaño ocupado por un índice es la siguiente:

select segment_name, sum(bytes)/1024/1024 MB
from dba_extents
where segment_name = ‘INDICE DE EJEMPLO’
group by segment_name

 

 

Es importante periódicamente examinar y determinar qué índices son susceptibles de ser reconstruidos. Cuando un índice está descompensado puede ser porque algunas partes de éste han sido accedidas con mayor frecuencia que otras dando como resultado problemas de contención de disco o cuellos de botella en el sistema.

Normalmente reconstruimos un índice con el comando ALTER INDEX  (esta sentencia se utiliza para cambiar o reconstruir un índice existente en la base de datos).

Para poder ejecutar este comando el índice debe de estar en el propio esquema donde intentes ejecutarlo o deberías de tener el privilegio alter any index. También tenemos que tener en cuenta que para realizar la reconstrucción de un índice deberíamos de tener cuota suficiente sobre el tablespace que lo lanzamos.

Para reconstruir un índice bastaría con lazar la siguiente sentencia

ALTER INDEX <index_name> REBUILD;

Para reconstruir una partición de un índice podríamos hacer lo siguiente

ALTER INDEX <index_name> REBUILD PARTITION <nb_partition> NOLOGGING;

Nota: En algunos casos cuando alguno de los índices tiene algún tipo de corrupción no es posible reconstruirlo. La solución en este caso es borrar el índice y recrearlo

 

 

 

Actualización de estadísticas

Cuando una base de datos Oracle recibe una sentencia “SQL” para resolver una consulta, se llevan a cabo diversas acciones para lograr la entrega del resultado.

Dentro de los diversos pasos uno de los más importantes es el llevado a cabo por el optimizador basado en costos “Cost Based Optimizer o CBO”. Para que el “CBO” pueda determinar de forma exacta el plan de ejecución de para un “SQL Query” debe disponer de la información de las estadísticas de las tablas e índices que participan en el “SQL Query”, esta información comúnmente es conocida como «Optimizer statistics» “Estadisticas del optimizador”, la misma describe como esta compuesto y distribuido internamente el objeto.

Estas estadísticas son utilizadas por el optimizador para elegir el mejor plan de ejecución para cada instrucción SQL.

El tiempo necesario para colectar las estadísticas en algunos casos puede ser de gran medida. En el manejador se pueden utilizar diversos métodos para tratar de reducir el tiempo de esta tarea en la mayor proporción posible.

 

Es importante tener por tanto actualizadas las estadísticas de la base de datos. Para saber si las estadísticas se están lanzando correctamente podemos hacer una consulta sobre la tabla ALL_INDEXES en oracle 11  (en Oracle 10  es  dba_indexes )y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese índice las estadísticas.

Nota: la columna “LAST_ANALYZED” la cual puede ser encontrada en vistas tales como: “DBA_TABLES”, “DBA_INDEXES”, “DBA_TAB_COL_STATISTICS” indica la fecha en que fue calculada la estadística para dicho objeto por ultima vez.

 

Como ejemplo  , si queremos  saber cuando fue la ultima vez que se ejecutaron estadísticas sobre todas las tablas perteneciente a un determinado esquema de BBDD  lanzaremos la siguiente consulta:

SELECT LAST_ANALYZED,table_name FROM ALL_INDEXES ;

 

 

Como vemos con las fechas podemos  hacernos una idea , de lo actualizado que están las estadisticas   sobre cada tabla   

Para actualizar las estadísticas de forma global para  un  esquema de BBDD,  podemos utilizar  el paquete DBM_STATS  de la la siguiente forma:

Execute DBMS_STATS.gather_schema_stats(‘Esquema’);

 

Una vez actualizadas las estadísticas de los índices de la base de datos lanzamos la siguiente consulta:

SELECT LAST_ANALYZED,table_name FROM ALL_INDEXES ;
SELECT index_name, blevel,
DECODE(blevel,0,'OK BLEVEL',1,'OK BLEVEL',2,
'OK BLEVEL',3,'OK BLEVEL',4,'OK BLEVEL','BLEVEL HIGH') OK
FROM dba_indexes where table_owner='DBPROD08';

 

Con esta sentencia obtendremos el nombre nombre del índice, el blevel y si es correcto este indice.

Los índices que deberíamos de reconstruir son los que en la columna ok aparecen como BLEVEL HIGH.

Blevel (branch level) es parte del formato del B-tree del índice e indica el número de veces que ORACLE ha tenido que reducir la búsqueda en ese índice. Si este valor está por encima de 4 el índice debería de ser reconstruido.

.