Controlar un potenciometro con Arduino Iot Cloud


En este post vamos avanzar en las posibilidades de la placa MKR1000 (o MKR 1010) a la nube de Arduino IoT  de modo que podremos hacer cosas mas complejas mas allá de encender o apagar un led  a distancia ( como vimos en este post ). En esta ocasión como ejemplo de la gran potencia de de esta solución  vamos a   leer en remoto las posición de un potenciometro  a través de Internet utilizando el sitio web de Arduino IoT Cloud.

Si le  interesa  como hacerlo, vera que es muy sencillo,  pues como vamos a ver  casi todo esta hecho, pero antes, volvamos a  ver  las semejanzas   y diferencias de ambas placas,  y después veremos paso a paso como lograrlo.

Arduino MKR1000

Arduino MKR1000 es una placa diseñada para ofrecer una solución práctica y rentable para cualquiera que busque agregar conectividad WiFi a sus proyectos con una experiencia mínima en redes.  Su precio no es excesivo  teniendo en cuenta que integra la conectividad  wifi (unos 38€ en Amazon).

El diseño incluye un circuito de carga Li-Po que permite que el Arduino MKR1000 funcione con una  batería o 5V externos, cargando la batería Li-Po mientras funciona con energía externa: el cambio de una fuente a otra se realizara automáticamente  y por tanto no tendremos que preocuparnos de nada más.

El MKR1000 tiene un procesador Arm Cortex-M0 + de 32 bits  corriendo a 2.4ghz ,  y cuenta con  el rico conjunto habitual de interfaces de E / S . Sin duda uno de su punto fuertes  es que integra  WiFi de baja potencia con un chip criptográfico para una comunicación segura.

Una de las grandes ventajas  es que puede programarlo utilizando el software Arduino (IDE) al que estamos  todos familiarizados  siendo muy  fácil de usar.

Todas estas características hacen de esta placa la opción preferida para los proyectos emergentes que funcionan con baterías de IoT en un factor de forma compacto.

 

 Como   se puede  ver en la imagen de  mas abajo , los pines disponibles son casi los mismos que los que solemos tener en un Arduino convencional  : los pines A0  a A6   para entradas  y salidas analógicas , los pines 0 al 14  para entradas salidas binarias y los típicos de alimentación externa(VIN,VCC 5v y GND)   , la referencia (AREF )  y  RESET.

 

Si le interesa esta placa la puede comprar en Amazon por unos 38€

Arduino MKR1010

Hablamos ahora de una placa muy similar a la anterior   algo mas barata que la la Mkr1000 ( unos  33€  en Amazon , es decir unos 5€ mas barato que la MKR1000)

Esta placa  está compuesta por tres bloques principales:

  • Microchip ATSAMD21 MCU basado en un procesador Arm Cortex-M0 
  • Serie u-blox NINA-W10 de baja potencia 2.4GHz IEEE 802.11 b / g / n Wi-Fi ECC508 CryptoAuthentication
  • El diseño incluye un Li-Po Circuito de carga que permite que Arduino MKR WiFi 1010 funcione con batería o 5V externos, cargando la batería Li-Po mientras funciona con energía externa. El cambio de una fuente a otra se realiza automáticamente.

Como  vemos , la gran diferencia  es  el Microcontrolador que es menos potente  pues  cuenta con el  Microchip ATSAMD21 (procesador Arm Cortex-M0 +)  en contraste  con el Arm Cortex-M0 + de 32 bits  corriendo a 2.4ghz del MKR100.

Respecto a la conectividad,  es similar al  MKR1000  contando con WiFi u-blox NINA-W102 (ESP32)

La alimentación se puede hacer con una fuente de alimentación externa de 5v DC  bien por  USB  o bien por el pin VIN , pero  cuenta   además  con conexión para Batería compatible (*) Li-Po de celda única, 3,7 V, 700 mAh  siendo el voltaje mínimo de funcionamiento del circuito 3,3 V .

 

Como   se puede  ver en la imagen de  mas abajo , los pines disponibles son casi los mismos que los que solemos tener en un Arduino convencional  ( y los mismo que el  MKR100)   : los pines A0  a A6   para entradas  y salidas analógicas , los pines 0 al 14  para entradas salidas binarias y los típicos de alimentación externa(VIN,VCC 5v y GND)   , la referencia (AREF )  y  RESET.

Si le interesa esta placa la puede comprar en Amazon por unos 33€

Agregar un potenciómetro 

Ahora que tenemos confirmación de todo lo que funciona ( como vimos en este post ), podemos agregar nuevas propiedades a nuestra Cosa. Vincularemos la nueva propiedad a un potenciómetro que necesita ser añadido al circuito. El potenciómetro está conectado a la alimentación y a tierra a través de sus respectivos pines y el pin de señal está conectado al Pin analógico A1 de la placa Arduino.

Adding an analog sensor to our breadboard

Para agregar una nueva propiedad vamos a proceder como lo hicimos anteriormente: mientras que en nuestra vista de propiedades de Thing, hagamos clic en el botón + y cree una propiedad denominada .

Establezca el tipo en Int con valor mínimo y valor máximo establecido en 0 y 270 respectivamente.

El permiso debe establecerse en Solo lectura y la propiedad debe actualizarse cuando cambie el valor;

Asimismo podemos establecer un valor Delta mayor que cero si queremos introducir alguna tolerancia para la actualización (por ejemplo: si establecemos Delta en 5, el valor de propiedad se actualizará a través de la nube solo cuando la diferencia entre el nuevo valor y el valor antiguo sea mayor que 5, de lo contrario se omitirá el cambio).

Al hacer clic en CREATE, se agregará la nueva propiedad a nuestra cosa y nos traerá de vuelta a la vista de edición de la propiedad.

Aunque no lo vemos, nuestro boceto se ha actualizado para reflejar los cambios, así que hagamos clic en EDIT CODE para volver al editor.

Mirando thingProperties.h, nos daremos cuenta de que se han añadido dos nuevas líneas:

int angle;

Esta linea declara la variable que representa la propiedad que acabamos de crear

ArduinoCloud.addProperty(angle, READ, ON_CHANGE, NULL, 5.000000);

Este código conecta la variable a su propiedad correspondiente, con permisos READ (es decir: no vamos a poder establecerla desde el panel). Debido al permiso de solo lectura, no se generará ninguna función de devolución de llamada y el penúltimo argumento del método se establece en . El último argumento representa el valor Delta descrito anteriormente.

Para hacer que el potenciómetro interactúe con la nube necesitamos definir el pin al que está conectado:

#define POTENTIOMETER_PIN A1

Luego, en la función, leemos la entrada analógica del potenciómetro y la mapeamos a la variable. De este modo, al girar el potenciómetro se refleja, se cambia el valor de propiedad correspondiente en el panel de la nube.

int angleSensor = analogRead(POTENTIOMETER_PIN);
angle = map(angleSensor, 0, 1023, 0, 270);

Vamos a subir nuestro boceto de nuevo y ver lo que sucede en el tablero de nuestra cosa cuando giramos la perilla del potenciómetro. Deberíamos ver el valor subiendo y bajando de 0 a 270 (esto puede variar con la calidad de construcción del potenciómetro).

Por último, vamos a agregar una última propiedad.  Esta nueva propiedad se asociará a un botón pulsador agregado al circuito anterior como se muestra en los esquemas siguientes: un pin del botón está conectado al riel de alimentación positivo (Vcc), el otro pin está conectado al pin digital 5 (a través del cable blanco) y a tierra a través de una resistencia desplegable de 10k.

Esta configuración fuerza un nivel lógico LOW en nuestro pin cuando el botón está en reposo, mientras que rutea Vcc a través cuando se presiona (nivel lógico HIGH).

Desde el editor, vaya a IOT CLOUD y cree una nueva propiedad denominada , con Tipo ON/OFF (Boolean),Solo lectura de permisos y Actualizar cuando cambie el valor. toggle

Una vez más EDIT CODE y volveremos al editor. Un vistazo rápido a thingProperties.h mostrará que una nueva variable se ha definido y asociado a su propiedad a través de .ToggleArduinoCloud.addProperty(...)

En nuestro archivo .ino definiremos el nuevo pin y dos variables relacionadas con el estado del botón : es decir el estad actual ( btnState) y el estado anterior(btnPrevState) .btnPrevState es necesario porque queremos que la propiedad se actualice solo una vez cuando se presiona el botón y no cuando se libera.

#define BUTTON_PIN 5
int btnState;
int btnPrevState = 0;

Entonces,es importante destacar   la linea que establece como entrada  este pin para

pinMode(BUTTON_PIN, INPUT);

Y finalmente añadimos estas líneas hacia el final de la loop()

btnState = digitalRead(BUTTON_PIN);
if (btnPrevState == 0 && btnState == 1) {
 toggle = !toggle;
}
btnPrevState = btnState;

Con este sencillo código  el botón actúa como un interruptor y al presionarlo debemos ver el interruptor en la nube cambiando en consecuencia alternando  entre ON y OFF.

En este código hay un pequeño problema  pues como puede adivinar no hay gestión de los rebotes (debounce en ingles  )  , es decir la cantidad de ruido ocurrido tras el flanco cuando actuamos sobre el pulsador(en esencia, en el rango de unos microsegundos la señal es puro ruido) . Todos esos picos pueden provocar disparos múltiples de una interrupción. Disponemos de dos formas de aplicar el rebote :añadiendo dispositivos electrónicos que filtren la señal o modificando nuestro código para eliminar el rebote 

 Vamos a ir más allá y simplificar nuestro código de administración de botones usando una biblioteca adicional.

 Usar una biblioteca de anti-rebotes

El código que hemos visto se basa en variables temporales porque necesitábamos almacenar el estado anterior del botón, lo que no hace que el boceto sea sencillo de implementar  , pero  la cosa se complica con los efectos de los rebotes  o la necesidad  de utilizar varios botones ( que añadiría muchas variables).

Una solución fácil es utilizar una biblioteca de rebote,y vamos a confiar en FTDebouncer que se puede instalar a través del Administrador de bibliotecas.

Simplemente vamos a Bibliotecas desde el menú de la barra lateral, ingresamos “FTDebouncer” en el campo de búsqueda en la parte superior y presionamos Intro: aparecerá la biblioteca y podemos añadirla a nuestro boceto pulsando el botón INCLUIR.

Esto agregará la siguiente línea a la pestaña seleccionada actualmente

#include <FTDebouncer.h>

Antes de esto podemos  reemplazar la definición de variables relacionadas con el estado del botónsetup()

int btnState;
int btnPrevState = 0;

con la declaración de una variableFTDebouncer

FTDebouncer buttons;

a continuación, reemplazar la línea donde inicializamos el pin del botón

pinMode(BUTTON_PIN, INPUT);

con las siguientes dos líneas

buttons.addPin(BUTTON_PIN, LOW);
buttons.init();

Al principio le podemos a añadimos este comando antes de loop()

buttons.update();

y eliminar todo el código escrito previamente relacionado con el botón

btnState = digitalRead(BUTTON_PIN);
if (btnPrevState == 0 && btnState == 1) {
    toggle = !toggle;
}
btnPrevState = btnState;

Finalmente, al final del boceto vamos a añadir una función

void onPinActivated(uint8_t pinNr){
	Serial.println(pinNr);
	toggle = !toggle;
}
void onPinDeactivated(uint8_t pinNr){
	Serial.println(pinNr);
}

Gracias a la biblioteca, se llamará a la función (sólo una vez) cuando se pulse el botón. Cuando esto suceda, le diremos a nuestra propiedad que cambie a su valor opuesto. Si es cierto, se volverá falso y viceversa. Esta acción la realiza el operador “!”,también conocido como LogicalNOToperator.FTDebounceronPinActivated()toggle

Si queremos que se ejecute algún código cuando se suelte el botón, la biblioteca llamará a la siguiente función cuando eso suceda. 

 

Hasta luego, Netduino; Que vivas en nuestros corazones.


Netduino ha sido  una plataforma abierta  Open sw   basada en  Microsoft.NET Micro Framework   ,la cual por desgracia   ha quedado discontinuida ( es decir no se van a fabricar mas placas )

La  plataforma Netduino ha  sido buena con nosotros y con la comunidad pues  .NET MicroFramework  de hecho fue una incursión bienvenida para permitir el desarrollo de .NET en dispositivos integrados, y sin su inspiración no tendriamos  Meadow ( digamos la  “evolucion” de Netduino).

Desde este blog nuestras  felicitaciones para el equipo original de .NET MicroFramework, Colin, Lorenzo, y todos los demás que lo construyeron y trabajaron en él. Y el corazón de todo el ecosistema de .NET MicroFramework. GHI, Mountaineer, MikroBus, IngenuityMicro, José y la gente de NanoFramework, ( Mark, Craig, Adrian, Frank, Jorge, Scott) asi como  tantos Y, por supuesto, el mayor abrazo a Chris Walker, el ingeniero original que creó Netduino.

Haciendo un poco de historia  Wilderness Labs adquirió Netduino en 2017 y lo usaron para ayudar a crear prototipos de nuestros esfuerzos de .NET de próxima generación en embebidos, así como para apoyar a la comunidad que construyó a su alrededor. Arreglaron errores antiguos  creando Netduino.Foundation (el precursor de Meadow.Foundation) para que se conectara y jugara con sensores.

Sin embargo, el progreso tecnológico de la humanidad avanza inevitablemente, y desde el primer día, Wilderness tubo  la visión de poner la bondad de la experiencia .NET en hardware embebido, como es el caso de . Meadow  que  da cuenta de esa visión, y ahí es donde van sus esfuerzos ahora.

Netduino Foundation

Wildeerness Lab    en este contexto creó Netduino.Foundation,, una plataforma que toma gran parte de la complejidad del desarrollo de hardware y permite una experiencia de desarrollo lista donde se pueden crear soluciones de hardware sofisticado utilizando C#.

Usando  Xamarin,se pueden crear aplicaciones móviles que hablan y controlan cosas conectadas asi como escribir soluciones de extremo a extremo en. net,

El ecosistema Netduino

Haciendo un poco de historia  la versión  Plus se diferenciaba  por el interfaz Ethernet integrado, así como el apoyo de una ranura para microSD en la misma tarjeta  , pero además existía una version avanzada con adaptador wifi integrado

Esta placa contaba con un  potente microcontrolador de 32 bits integrado Cortex-M que ejecuta .NET Micro Framework (NETMF) v4.3  y  con un entorno de desarrollo estándar que está disponible gratuitamente a través de Microsoft (Visual Studio 2010).

Recuerde  que Microsoft. NET Micro Framework combina la facilidad de un lenguaje de programación de alto nivel (C #) con las características de los microcontroladores permitiendo la depuración de programación basada en eventos, multi-threading, línea por línea,puntos de interrupción y mucho más.   Ademas ..,se pueden añadir  mas accesorios ofreciendo funcionalidades extra ( por ejemplo la ubicación GPS, el control de servos ,displays  de todo tipo).

Una característica ademas muy  interesante es que el desarrollo es multiplataforma  por lo que  se puede hacer tanto en Windows, con Visual Studio, o con Xamarin Studio en Mac OS X.

La plataforma permitía una fácil interconexión con switches, sensores, LEDs, dispositivos de serie, y mucho más pues  Netduino combina 20 GPIO con SPI, I2C, UART 2 (1 RTS / CTS), 4 y 6canales de PWM ADC ,los  cuales son compatibles con pin / puerto con los escudos Arduino, abriendo asi mucha mas posibilidades de ampliacion.

Características de la placa original , mantenida en las siguientes versiones Netduino 2 y Netduino 3 (esta ultima  con interfaz wifi) :

● all 20 digital and analog pins: GPIO
● digital pins 0-1: UART 1 RX, TX
● digital pins 2-3: UART 2 RX, TX
● digital pins 5-6: PWM, PWM
● digital pins 7-8: UART 2 RTS, CTS
● digital pins 9-10: PWM, PWM
● digital pins 11-13: SPI MOSI, MISO, SPCK
● analog pins 4-5: I2C SDA, SCL

● ethernet: 100 mbps (solo versiones con ethernet en v1, v2, v3) con  network stack via  lwIP

● micro sd (up to 2 GB)
● auto card detect

 

Y  ahora  hablemos de las variantes de esta placa :

Netduino 3 :Era la ultima evolución de esta placa. Contaba con procesador  168Mhz Cortex-M4 (STM32F4) con o 1,408 KB of almacenamiento para código  y  164 KB de RAM.

Existía comercialmente en tres variantes:

    • N3  :384 KB Code Flash Storage,SIn ethenert  ni wifi
    • N3 Ethernet: 1,408 KB Code Flash Storage,10/100 Mbps Ethernet, Micro SD  Slot (up to 2GB),Con ethernet
    • N3 WiFi : 1,408 KB Code Flash Storage ,802.11b/g/n WiFi ,Micro SD Slot (up to 2GB) ,Con adaptador WiFI
Vista ISO del modelo WiFi Netduino 3

Netduino 2 :Es una de las versiones mas antiguas basada en Cortez M2   y M4. Existían únicamente dos  versiones:

      • N2 ; Cortex-M3 @ 120Mhz ,192 KB Code Flash Storage 60KB Ram ,SIn ethenert  ni wifi
      • N2 Plus : Cortex-M4 @ 168Mhz ,384 KB Code Flash Storage ,100 KB RAM ,10 Mbps Ethernet ,Micro SD Slot (up to 2GB) ,Con interfaz Ethernet

 

Como ya se ha comentado  Netduino en todas sus valientes se descontinuó  siendo reemplazado por  Meadow por completo.

 

 

Netduino es por tanto  100% de código abierto:

Puede encontrar la documentación de Netduino en developer.wildernesslabs.co/Netduino/  asi como detalles del hardware en  https://github.com/WildernessLabs/Netduino_Hardware

 

 

!Te recordaremos Netduino durante mucho tiempo con cariño  y deseamos mucha suerte para Meadow!

 

 

 

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?