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?

Envío de datos a la nube de Azure desde ESP8266 usando DHT11 o DHT22


 DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino o ESP8266.

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

 

Conectar el DHT11   o el DHT22  a  un Arduino o ESP82366  es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino. Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El esquema eléctrico queda como la siguiente imagen

arduino-dht11-dht22-esquema

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional mediante un único hilo , empleando señales temporizadas por lo que en general, lo normal es que empleemos una librería existente para simplificar el proceso.Por ejemplo podemos usar la librería de Adafruit disponible en este enlace.

Una vez  descargada e instalada  la librería  por ejemplo podemos capturar la información de un sensor DHT11  con este código :

#include “DHT.h”
#define DHTTYPE DHT11   // DHT 11
const int DHTPin = 5;     // conexion del pin digital
 
DHT dht(DHTPin, DHTTYPE);
 
void setup() {
   Serial.begin(9600);
   Serial.println(“DHTxx test!”);
 
   dht.begin();
}
 
void loop() {
   //esperar unos 2000ms
   delay(2000);
 
   // Leyendo temperatura  o humedad  toma  sobre unos 250 ms
   float h = dht.readHumidity();
   float t = dht.readTemperature();
 
   if (isnan(h) || isnan(t)) {
      Serial.println(“Fallo al leer el sensor DHT “);
      return;
   }
  
   Serial.print(“Humedad: “);
   Serial.print(h);
   Serial.print(” %\t”);
   Serial.print(“Temperatura: “);
   Serial.print(t);
   Serial.print(” *C “);
}

 

 

Conexión de un DHTXX a un  ESP8266 

Para resultados mas profesionales puede usar un DHT22 ( es el usado en el ejemplo ) , pero  como hemos comentado el DHT11  para fines experimentales  es también aceptable .

Las  simples conexiones  la puede utilizar  una  placa de pruebas, y  cables de puente o directamente con cablecillos  para realizar las conexiones de la siguiente manera:

referencia de conexiones

 

Para los pines  del sensor, usaremos el siguiente cableado:

Start (Sensor) Fin (Junta) Color del cable
VDD (Pin 27F) 3V (Pin 8A) cable rojo
DATOS (Pin 28F) GPIO 2 (Pin 9A) Cable blanco
GND (Pin 30F) GND (Pin 7J) Cable negro

 

 

Por  ultimo utilice un cable USB Micro USB a Tipo A para conectar Sparkfun ESP8266 Thing Dev a su ordenador 

Crear un centro de IoT

  1. Inicie sesión en el portal de Azure .
  2. Seleccione Crear un recurso > Internet de las cosas > IoT Hub .Captura de pantalla de la navegación del portal Azure al centro de IoT
  3. En el panel de hub de IoT , ingrese la siguiente información para su hub de IoT:
    • Nombre : crea un nombre para tu hub de IoT. Si el nombre que ingresa es válido, aparece una marca de verificación verde.

     

    • Nivel de precios y escala : para este tutorial, seleccione el nivel F1 – Gratuito .
    • Grupo de recursos : cree un grupo de recursos para alojar el concentrador de IoT o use uno existente.
    • Ubicación : Seleccione la ubicación más cercana para usted.
    • Fijar al tablero : marque esta opción para acceder fácilmente a su hub de IoT desde el tablero.Ventana del concentrador IoT
  4. Haga clic en Crear . Su hub de IoT puede tardar unos minutos en crearse. Puede controlar el progreso en el panel de notificaciones .

Ahora que ha creado un concentrador de IoT, ubique la información importante que usa para conectar dispositivos y aplicaciones a su hub de IoT.

  1. Después de crear su concentrador de IoT, haga clic en él en el tablero. Tome nota del nombre de host y luego haga clic en Directivas de acceso compartido .Obtenga el nombre de host de su centro de IoT
  2. En el panel Políticas de acceso compartido , haga clic en la política iothubowner , y luego copie y anote la cadena de conexión de su centro IoT.

Obtenga su cadena de conexión del hub de IoT

Registre un dispositivo en el hub de IoT para su dispositivo

  1. En el portal de Azure , abra su concentrador de IoT.
  2. Haga clic en Explorador de dispositivos  .
  3. En el panel Explorador de dispositivos, haga clic en Agregar para agregar un dispositivo a su centro de IdC. 
  4. Luego ingrese la ID del nuevo dispositivo en:ID del dispositivo ( Debe saber que los  ID de dispositivo son sensibles a mayúsculas y minúsculas)
  5. Tipo de autenticación : Seleccione la clave simétrica 
  6. Generar claves automáticamente : seleccione esta casilla de verificación.
  7. Conecte el dispositivo al Hub de IoT : haga clic en Habilitar .Agregue un dispositivo en el Explorador de dispositivos de su centro de IoT
  8. Haga clic en Guardar .
  9. Después de que se crea el dispositivo, abra el dispositivo en el panel Explorador de dispositivos .
  10. Tome nota de la clave principal de la cadena de conexión.Obtener la cadena de conexión del dispositivo

 

Reúna los datos del sensor y envíelos a su centro de IoT

En el ejemplo  se  implementa y ejecuta una aplicación de muestra en Sparkfun ESP8266 Thing Dev. La aplicación parpadea el LED en Sparkfun ESP8266 Thing Dev y envía los datos de temperatura y humedad recopilados del sensor DHT22 a su hub de IoT.

Obtenga la aplicación de muestra de GitHub

La aplicación de ejemplo está alojada en GitHub. Clone el repositorio de muestras que contiene la aplicación de muestra de GitHub. Para clonar el repositorio de muestras, siga estos pasos:

  1. Descargue e instale el programa Git ,por ejemplo desde https://gitforwindows.org/git
  2. Abra un símbolo del sistema o una ventana de terminal.
  3. Vaya a una carpeta donde desea que se almacene la aplicación de muestra.
  4. Ejecute el  Git
  5. Ahora desde el interfaz del Git en modo comando ejecute

 

Instale ahora el paquete para  el ESP8266 en Arduino IDE:

  1. Abra la carpeta donde se almacena la aplicación de muestra que descargo desde el comando git clone.
  2. Abra el archivo app.ino en la carpeta de la aplicación en Arduino IDE.
  3. En el IDE de Arduino, haga clic en Archivo > Preferencias .
  4. En el cuadro de diálogo Preferencias , haga clic en el icono que se encuentra junto al cuadro de texto Direcciones URL del administrador de tarjetas adicionales .
  5. En la ventana emergente, ingrese la siguiente URL http://arduino.esp8266.com/stable/package_esp8266com_index.json                                    señalar a un paquete url en arduino ide
  6. Haga  luego haga clic en Aceptar .
  7. En el cuadro de diálogo Preferencias , haga clic en Aceptar .
  8. Haga clic en Herramientas > Placa > Administrador de placas , y luego busque esp8266. Se debe instalar ESP8266 con una versión de 2.2.0 o posterior.En caso del ESP12E DEVKIT V2, seleccione NodeMCU 1.0(ESP-12E Module)

Instalación de  las bibliotecas necesarias

  1. En el IDE de Arduino, haga clic en Programa > Incluir libreria> Gestionar librerias .
  2. Busque los siguientes nombres de biblioteca una por una:
    • AzureIoTHub
    • AzureIoTUtility
    • AzureIoTProtocol_MQTT
    • ArduinoJson
    • DHT sensor library 
    • Adafruit Unified Sensor
  3. Para cada una de las bibliotecas que encuentre, haga clic en Instalar .

Implementar la aplicación de muestra  para ESP8266 

  1. En el IDE de Arduino, haga clic en Herramienta > Puerto , y luego haga clic en el puerto serie que le presente el interfaz de Arduino  para el  ESP8266(por ejemplo “COM3” )
  2. Haga clic en Programa > Subir para crear e implementar la aplicación de muestra en  ESP8266 .

Ingrese sus credenciales

Después de que la carga se complete con éxito, siga los pasos para ingresar sus credenciales:

  1. En el IDE de Arduino, haga clic en Herramientas > Monitor en serie .
  2. En la ventana del monitor de serie, observe las dos listas desplegables en la esquina inferior derecha.
  3. Seleccione Sin final de línea para la lista desplegable de la izquierda.
  4. Seleccione 115200 baudios para la lista desplegable de la derecha.
  5. En el cuadro de entrada ubicado en la parte superior de la ventana del monitor serie, ingrese la siguiente información si se le solicita que los proporcione y luego haga clic en Enviar .
    • Wi-Fi SSID
    • Contraseña de wifi
    • Cadena de conexión del dispositivo

 Nota:La información de credenciales se almacena en la EEPROM del ESP8266 Si hace clic en el botón de reinicio en la placa ESP8266 , la aplicación de muestra le pregunta si desea borrar la información. Ingrese Y para borrar la información y se le pedirá que proporcione la información nuevamente.

Verifique que la aplicación de muestra se esté ejecutando correctamente

Si ve la siguiente salida de la ventana del monitor serie y el LED parpadeante en  la placa ESP8266  la aplicación de muestra se está ejecutando correctamente.

com33.png

 

 

Nota:Si está utilizando otras placas ESP8266, puede seguir estos pasos para conectarlo a su hub de IoT. Según la placa ESP8266 que esté utilizando, es posible que necesite reconfigurar el LED_PIN . Por ejemplo, si está usando ESP8266 de AI-Thinker, puede cambiarlo de 0 a 2 .

 

 

 

Fuente  https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-sparkfun-esp8266-thing-dev-get-started

Control de GPIO de Raspberry Pi sobre MQTT usando ThingsBoard


ThingsBoard es una plataforma de servidor de código abierto que le permite monitorear y controlar dispositivos IoT. Es gratuita tanto para uso personal como comercial y puede implementarlo en cualquier lugar.

ThingsBoard es pues  una plataforma de IoT de código abierto que permite el desarrollo rápido, la gestión y la ampliación de los proyectos de IoT  de modo  que  puede:

  • Crear dispositivos de provisión y control.
  • Recopilar y visualizad datos de dispositivos.
  • Analizea datos del dispositivo y disparae alarmas.
  • Entregar datos del dispositivo a otros sistemas.
  • Habilitar las funciones específicas de casos de uso usando reglas y complementos personalizables.
  • Proporcionar la nube IoT lista para usar o ser la solución en las instalaciones que habilitará la infraestructura del lado del servidor para sus aplicaciones de IoT.

ThingsBoard es escalable pues es una plataforma escalable horizontalmente y compilación utilizando tecnologías líderes de código abierto, tolerante a errores  pues  no hay punto único de fallo ya que  cada nodo en el clúster es idéntico,es personalizable pues permite agregar nueva funcionalidad es fácil con widgets personalizables, motor de reglas y sistema de complementos, es s duradero  y es robusto y eficiente  pues  el nodo de servidor único puede manejar decenas o incluso cientos de miles de dispositivos según el caso de uso (un cluster ThingsBoard puede manejar millones de dispositivos). Asimismo también puede conectar dispositivos existentes a la plataforma usando ThingsBoard Gateway .

 

ThingsBoard le permite enviar llamadas de procedimiento remoto (RPC) desde aplicaciones del servidor a dispositivos y viceversa. Básicamente, esta característica le permite enviar comandos a dispositivos y recibir resultados de ejecución de comandos. Similarmente, puede ejecutar la solicitud desde el dispositivo, aplicar algunos cálculos u otra lógica del lado del servidor en el back-end y enviar la respuesta de regreso al dispositivo. Esta guía cubre las capacidades de ThingsBoard RPC. Después de leer esta guía, se familiarizará con los siguientes temas:

  • Tipos de llamadas RPC
  • Casos de uso de RPC básicos
  • Las API RPC del lado del cliente y del lado del servidor
  • Widgets RPC

Tipos de llamadas RPC

La característica de RPC de Thinsboard se puede dividir en dos tipos según el originador: llamadas RPC originadas en el dispositivo y originadas en el servidor. Para utilizar nombres más conocidos, denominaremos llamadas RPC originadas en el dispositivo como llamadas RPC del lado del cliente y llamadas RPC originadas en el servidor como llamadas RPC del lado del servidor .

imagen

Las llamadas RPC del lado del servidor se pueden dividir en un solo sentido y bidireccional:

  • La solicitud RPC unidireccional se envía al dispositivo sin confirmación de entrega y, obviamente, no proporciona ninguna respuesta del dispositivo. La llamada RPC puede fallar solo si no hay una conexión activa con el dispositivo objetivo dentro de un período de tiempo de espera configurable.imagen
  • La solicitud de RPC bidireccional se envía al dispositivo y espera recibir una respuesta del dispositivo dentro del tiempo de espera determinado. La solicitud del lado del servidor está bloqueada hasta que el dispositivo de destino responda a la solicitud.imagen

Vamos  a  ver una  aplicación de ejemplo    que  permitirá controlar GPIO de su dispositivo Raspberry Pi utilizando la interfaz de usuario web de ThingsBoard y observaremos el control de GPIO utilizando  un Led conectado a uno de los pines. El propósito de esta aplicación es demostrar las capacidades de ThingsBoard RPC .

Dispositivo RPC API

ThingsBoard está diseñado para ejecutarse y utilizarse en la mayoría del hardware, desde Raspberry PI local hasta potentes servidores en la nube. Las formas de configurar un cluster de ThingsBoard soporta los  siguientes sistemas operativos:

  • Windows : instale el clúster Thingboard en cualquier máquina preexistente que ejecute Windows.
  • Linux (Ubuntu y CentOS) : instala el clúster Thingboard en cualquier máquina preexistente que ejecute Linux.
  • Raspberry Pi 3 Modelo B (Raspbian Jessie) : instala el servidor Cassandra y Thingboard en una Raspberry Pi 3 modelo B.
  • Docker (Linux o Mac OS) : instala un clúster ThingsBoard de un nodo en tu máquina Linux o Mac OS para su desarrollo y prueba.
  • Docker (Windows) : instala un clúster ThingsBoard de un nodo en tu máquina con Windows para su desarrollo y prueba.
  • Instalación de AWC EC2 utilizando AMI : instale un clúster ThingsBoard de nodo único con AWI AMI público.

Asimismo , sin instalar nada ,también si esta es su primera experiencia con la plataforma, puede usar una demostración en vivo para ahorrar tiempo en la instalación (vea la página de documentación de demostración en vivo para más detalles).Ejempl

 

Ejemplo  control de un  led

En  este ejemplo  “hello world”   orientado a controlar un led usaremos  una   Raspberry Pi con una aplicación simple escrita en Python , que se conectará al servidor ThingsBoard a través de MQTT y escuchará los comandos RPC.

El estado GPIO actual y el widget de control GPIO se visualizaran utilizando el panel de control incorporado personalizable.

Por tanto tendrá que tener el servidor ThingsBoard en funcionamiento. Use Live Demo o la Guía de instalación para instalar ThingsBoard.

Lista de hardware y pinouts

  • Raspberry Pi : utilizaremos Raspberry Pi 3 Model B pero puede usar cualquier otro modelo.
  • Led y resistencia correspondiente
  • 2 cables de puente hembra a macho

Dado que nuestra aplicación permitirá controlar el estado de todos los pines GPIO disponibles, recomendamos conectar algunos LED a esos pines para mayor visibilidad. Puede usar culquier  instrucción básica u otra para cablear algunos LED.

Instalación de la biblioteca MQTT

El siguiente comando instalará la biblioteca MQTT Python:

sudo pip install paho-mqtt

La aplicación consiste en un único script python que está bien documentado. Tendrá que modificar la constante THINGSBOARD_HOST para que coincida con su dirección IP de instalación del servidor ThingsBoard o nombre de host. Utilice “demo.thingsboard.io” si está utilizando el servidor de demostración en vivo .

El valor de la constante ACCESS_TOKEN corresponde al dispositivo Raspberry Pi de muestra en datos de demostración preaprovisionados . Si está utilizando un servidor de demostración en vivo , obtenga el token de acceso para el “Dispositivo de demostración Raspberry Pi preaprovisionado”.

 

resources/gpio.py 
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import json

THINGSBOARD_HOST = 'YOUR_THINGSBOARD_IP_OR_HOSTNAME'
ACCESS_TOKEN = 'RASPBERRY_PI_DEMO_TOKEN'

# We assume that all GPIOs are LOW
gpio_state = {7: False, 11: False, 12: False, 13: False, 15: False, 16: False, 18: False, 22: False, 29: False,
              31: False, 32: False, 33: False, 35: False, 36: False, 37: False, 38: False, 40: False}


# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc, *extra_params):
    print('Connected with result code ' + str(rc))
    # Subscribing to receive RPC requests
    client.subscribe('v1/devices/me/rpc/request/+')
    # Sending current GPIO status
    client.publish('v1/devices/me/attributes', get_gpio_status(), 1)


# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print 'Topic: ' + msg.topic + '\nMessage: ' + str(msg.payload)
    # Decode JSON request
    data = json.loads(msg.payload)
    # Check request method
    if data['method'] == 'getGpioStatus':
        # Reply with GPIO status
        client.publish(msg.topic.replace('request', 'response'), get_gpio_status(), 1)
    elif data['method'] == 'setGpioStatus':
        # Update GPIO status and reply
        set_gpio_status(data['params']['pin'], data['params']['enabled'])
        client.publish(msg.topic.replace('request', 'response'), get_gpio_status(), 1)
        client.publish('v1/devices/me/attributes', get_gpio_status(), 1)


def get_gpio_status():
    # Encode GPIOs state to json
    return json.dumps(gpio_state)


def set_gpio_status(pin, status):
    # Output GPIOs state
    GPIO.output(pin, GPIO.HIGH if status else GPIO.LOW)
    # Update GPIOs state
    gpio_state[pin] = status


# Using board GPIO layout
GPIO.setmode(GPIO.BOARD)
for pin in gpio_state:
    # Set output mode for all GPIO pins
    GPIO.setup(pin, GPIO.OUT)

client = mqtt.Client()
# Register connect callback
client.on_connect = on_connect
# Registed publish message callback
client.on_message = on_message
# Set access token
client.username_pw_set(ACCESS_TOKEN)
# Connect to ThingsBoard using default MQTT port and 60 seconds keepalive interval
client.connect(THINGSBOARD_HOST, 1883, 60)

try:
    client.loop_forever()
except KeyboardInterrupt:
    GPIO.cleanup()

Este simple comando lanzará la aplicación:   python gpio.py

Visualización de datos

Para simplificar esta guía, en  “Raspberry PI GPIO Demo Dashboard” vemos los datos de demostración que están disponibles en cada instalación Thingboard. Aún puede modificar este panel: sintonizar, agregar, eliminar widgets, etc. Puede acceder a este panel iniciando sesión como administrador de inquilinos.

Utilizar en caso de instalación local de ThingsBoard.

 

Una vez que haya iniciado sesión, abra la página Dashboards-> Raspberry PI GPIO Demo Dashboard . Debe observar el tablero de demostración con el panel de control y estado de GPIO para su dispositivo. Ahora puede cambiar el estado de los GPIO usando el panel de control. Como resultado, verá que el estado de los LED cambia en el dispositivo y en el panel de estado.

A continuación se muestra la captura de pantalla del “Tablero Demo de Raspberry PI GPIO”.

imagen

 

 

El vídeo a continuación  resume  todo el proceso  citado llegando  hasta el resultado final :.