Grafana es un software libre basado en licencia de Apache 2.0, que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB y OpenTSDB Originalmente comenzó como un componente de Kibana y que luego le fue realizado una bifurcación.
Lanzado en 2013 por Grafana Labs,Grafana es una de las soluciones de monitoreo de más rápido crecimiento en uso en 2019. Es multiplataforma sin ninguna dependencia y también se puede implementar con Docker. Está escrito en lenguaje Go y tiene un HTTP API completo. Además de administrar cuadros de mando clásicos (adiciones, eliminaciones, favoritos), Grafana ofrece compartir un cuadro de mando actual mediante la creación de un enlace o una instantánea estática del mismo.
Todos los paneles de control y las fuentes de datos están vinculados a una organización, y los usuarios de la aplicación están vinculados a organizaciones a través de roles.Evita que los usuarios sobrescriban accidentalmente un panel de control. Existe una protección similar cuando se crea un nuevo panel de control cuyo nombre ya existe. La herramienta tambien ofrece la posibilidad de configurar alertas.
Es una solución de dashboarding que conecta a una amplia variedad de orígenes de datos (la mayoría de las bases de datos de series temporales) con el fin de visualizar datos casi en tiempo real siendo uilizada por muchas grandes empresas como el CERN,Digital Ocean o PayPal,Grafana también se utiliza en pequeñas y medianas corporaciones dispuestas a tener retroalimentación sobre la salud de su infraestructura.
Descarga del archivo Grafana desde el sitio web oficial
En Grafana, las credenciales predeterminadas son admin (como nombre de usuario) y admin (como contraseña) de forma predeterminada.
En la siguiente ventana, se le pedirá que cambie su contraseña. Elija una contraseña segura para evitar brechas de seguridad.
Cuando lo haya hecho pulsar en “Save“.
Ahora debería ver la pantalla predeterminada para Grafana v6.3 en Windows.
Antes de crear sus propios paneles, hay algunos pasos de configuración que debe realizar para una nueva instancia.
Definición de su propio archivo de configuración
En las últimas distribuciones grafana para Windows, el servicio es lanzado por NSSM (que es un administrador de servicios para Windows).
De forma predeterminada, Grafana se basa en los archivos de configuración ubicados en la carpeta conf del directorio de instalación.
Mine se encuentra en C:\Program Files\GrafanaLabs\grafana como ejemplo.
Este es el contenido de la carpeta conf.
De forma predeterminada, Grafana va a usar el contenido del archivo .ini predeterminado, pero vamos a sobrescribir eso para tener nuestro propio archivo de configuración personalizado.
En caso de que estemos teniendo algunos problemas con nuestro propio archivo de configuración, podemos volver al archivo predeterminado fácilmente.
Haga una copia del archivo predeterminado y asígnele el nombre «custom.ini»
Al ejecutar la instalación MSI, Grafana va a almacenar un ejecutable de NSSM en la carpeta GrafanaLabs de la carpeta de instalación.
Abra una instancia de Powershell en el equipo como administradory vaya a esta carpeta.
No olvide las comillas alrededor de la ruta de acceso, de lo contrario obtendrá una excepción de Powershell.
$ cd "C:\Program Files\GrafanaLabs"
$ .\nssm.exe edit grafana
Se debe abrir una ventana similar a esta.
Al final de la variable path, agregue una marca –config con el nombre del archivo de configuración que acabamos de crear.
Argumentos: --config conf\custom.ini
pulsar en “Edit Service” y debderia ver el siguinte mensajesuccess message.
Reinicie el servicio y asegúrese de que Grafana sigue ejecutándose correctamente (http://localhost:3000)
Avtivar sign-up en Grafana
De forma predeterminada, la creación de la cuenta se encuentra en http://localhost:3000/signup en la instancia de Grafana.
En Grafana v6.3, el registro de la cuenta está deshabilitado de forma predeterminada.
Sin embargo, es posible que desee habilitar esta opción en su servidor Grafana, si autoriza a los invitados a tener una cuenta para mostrar algunos paneles especiales.
Para habilitar el registro, diríjase al archivo de configuración personalizado.ini (ubicado en la carpeta conf) y vaya a la sección [usuarios] del archivo.
Haga clic en «Registrarse» y debe ser redirigido a la página principal.
Activar acceso anonimo
De forma predeterminada, el acceso anónimo está deshabilitado en Grafana.
El acceso anónimo significa que cualquier usuario no autenticado puede examinar la instancia de Grafana, al menos para la organización predeterminada que se les ha asignado.
Si va http://localhost:3000, se le redirigirá a la pantalla de inicio de sesión si es un usuario anónimo.
Para cambiar eso, edite el archivo de configuración personalizado.ini y edite la sección [auth.anonymous].
Reinicie el servicio Grafana y busque http://localhost:3000 como usuario anónimo (en modo privado, por ejemplo).
Ahora debe tener un permiso viewer para los paneles permitidos.
Aquí hay una selección de artículos que debe leer para mejorar con Grafana :
El término Internet de las Cosas, en inglés Internet of Things ,hace referencia a la digitalización de todo tipo de dispositivos:
Sensores y actuadores
Objetos comunes como vehículos
Cámaras de grabación
implantes médicos, ropa, etc.
La conectividad digital de estos dispositivos permite enviar y recibir información para realizar tareas que hasta no hace mucho podrían parecer imposibles como monitorizar el estado de una flota de vehículos ,ver las cámaras de seguridad de la empresa desde un Smartphone, controlar cualquier electrodoméstico de forma remota, etc.
Crecimiento
La consultora Gartner pronostica que para el año 2021 habrá unos 25 mil millones de dispositivos IoT conectados en sectores tan dispares como:
Domótica
Salud
Transporte y logística
Seguridad y vigilancia
Se podría decir que con el IoT se inicia una revolución en la forma en que vivimos y trabajamos.Sus aplicaciones son muy diversas: monitorización salud , domótica en edificios y ciudades, aplicaciones en industria 4.0.
El acceso a la tecnología ha democratizado el IoT reduciendo los costes y con capacidades avanzadas
REDUCIDOS COSTES: Los chips para dar inteligencia a los objetos Los módulos para dar conectividad a los objetos Los entorno de desarrollo para programarlo Los costes de hacer un prototipo
CAPACIDADES AVANZADAS Soluciones de gran capacidad a bajos coste Infinidad de tecnologías de comunicación Enorme comunidad desarrolladora
El problema viene con algunas aplicaciones de IOT donde nos cuestionamos hasta que punto los riesgos son mayores que las ventajas y marabillas en el uso de esta tecnologías: es decir Seguridad vs Confort o lo que es lo mismo RIESGO VS RECOMPENSA
Estas son algunas brechas que debemos superar:
Interacción humana de baja fricción
Identificación única de dispositivos
Autenticación de dispositivos
Asociación dispositivos-usuarios
Naturaleza de los datos
Ademas por si fuera poco, tenemos grandes retos y desfios
Capacidades limitadas de encriptación
Recursos limitados (RAM/ROM)
Limitada sincronización
El fw debe ser actualizado tiempo al tiempo
Como vemos en la grafica de abajo pues una de las grandes barreras para adaptar el IOT es la seguridad:
Y es que el mal nunca descansa , como lo demuestran los innumerables ejemplos de ataques:
Caso Mirai La botnet Mirai ha sido utilizada en algunos de los ataques del tipo DDoS más grandes y bruscos de la historia, dentro de los que se incluyen el realizado al sitio web de Brian Krebs , y al proveedor Dyn en octubre de 2016.
Mirai es un malware de la familia de las botnets destinada a infectar los equipos conformantes del IoT. El objetivo principal de este malware es la infección de routers y cámaras IP, usando estos para realizar ataques de tipo DDoS
Amenazas para el propio dispositivo Los dispositivos IoT pueden ser una presa fácil para los ciberdelincuentes que buscan este tipo de dispositivos como punto de entrada a las redes de las empresas o a otros puntos que se encuentran más protegidos.
Además, los propios dispositivos IoT no son inmunes a las amenazas pues los ciberdelincuentes pueden enfocar sus esfuerzos en atacar su funcionalidad, siendo la denegación de servicio uno de los principales peligros, dejándolos inoperativos o no accesibles.
Amenazas para el propio dispositivo Las amenazas a los dispositivos IoT no se reducen a las derivadas de su conectividad a Internet. Muchos de estos aparatos cuentan también con capacidades de conexión inalámbrica como wifi, Bluetooth o Zigbee, lo que puede suponer otro vector de ataque para ciberdelincuentes si se encuentran dentro de su rango de acción
+Amenazas para el dispositivo
Consecuencias graves para la seguridad como:
Infectarlos para formar parte de una red zombi que los utilicen para realizar ciberataques, por ejemplo, de denegación de servicio distribuida o DDoS
Utilizarlos como puente o punto de entrada para atacar otros equipos de la misma red, para robar información o comprometer servidores o para realizar otras acciones delictivas
Reconfigurarlos para inhabilitarlos o cambiar sus condiciones de utilización
Como resumen , estos algunos de los vectores de ataque para los dispositivos IoT:
Fallos en la implementación
Interceptar datos de tránsito(ataque Man in the Middle)
Acceso a la plataforma de administración
Vulnerabilidad en el software
Configuraciones por defecto
Acceso físico al dispositivo
Los propios usuarios por ingeniería social
Medidas de seguridad
En los dispositivos IoT no se suelen utilizar las soluciones habituales de ciberseguridad como antivirus o cortafuegos; por ello, las siguientes medidas de seguridad están destinadas a proteger el propio dispositivo y, por consiguiente, toda la organización:
Acceso seguro al dispositivo (evitar conf. por defecto)
Comunicaciones seguras
Actualizaciones de seguridad
Dispositivos de seguridad perimetral
Seguridad física ( ej.: puertos, usb,sd, etc)
Concienciación en seguridad de los usuarios
Y estas son algunas recomendaciones de seguridad:
Se comprobará cada cierto tiempo la visibilidad de los dispositivos IoT en Internet con herramientas específicas como Shodan.
Si el dispositivo lo permite se habilitará un registro de logs que guarde los eventos que se producen como accesos, cambios de contraseña, actualizaciones, etc.
En caso de ser posible, se ha de habilitar algún mecanismo de notificación cuando se produce un evento que pueda afectar a la seguridad del dispositivo.
Se monitorizarán de forma centralizada los dispositivos IoT para comprobar su correcto funcionamiento y que no se producen eventos que puedan afectar a su seguridad o a la de la empresa.
Se comprobará regularmente la web del fabricante en busca de nuevas actualizaciones de seguridad tanto de firmware como de software siempre que no exista un método alternativo que avise sobre ello
Minimizar el uso de dispositivos IoT especialmente en empresas utilizando únicamente los que sean estrictamente necesarios.
No usar, en la medida de lo posible, dispositivos IoT que transmitan información o cuya gestión se realice desde servidores externos aunque sea del fabricante.
Comprobar las configuraciones por defecto del dispositivo, especialmente antes de permitir su acceso desde Internet y, de ser posible, elegir aquellos dispositivos que permitan un elevado nivel de seguridad.
Si no es posible establecer configuraciones de seguridad robustas no se permitirá el acceso al dispositivo desde Internet y preferiblemente tampoco desde la red local.
Establecer siempre contraseñas de acceso y administración robustas. Siempre que sea posible se forzará su uso.
Establecer siempre contraseñas de acceso y administración robustas. Siempre que sea posible se forzará su uso.
Mantener actualizado el dispositivo a la última versión.
Mantener abiertos a Internet únicamente aquellos servicios que sean necesarios para su administración remota y los que no lo sean se deben deshabilitar. También hay que cambiar los puertos de los servicios cuando sea posible.
Utilizar dispositivos de seguridad perimetral como cortafuegos para proteger la seguridad del dispositivo IoT. DECALOGO SOBRE RECOMENDACIONES DE SEGURIDAD
Emplear mecanismos que permitan asegurar la autenticidad,integridad y confidencialidad de las comunicaciones especialmente si estas se realizan vía wifi.
Auditar periódicamente los dispositivos IoT.
Concienciar especialmente a los empleados sobre la importancia de la ciberseguridad en el día a día de su trabajo y en la administración y uso de este tipo de dispositivos.
Comprobar la seguridad física del dispositivo y aplicar las medidas necesarias que eviten manipulaciones de terceros DECALOGO SOBRE RECOMENDACIONES DE SEGURIDAD
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.
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.
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.
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
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.
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()
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
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.
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
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 hará un seguimiento del estado de todos los dispositivos de tu hogar, para que no tenga que hacerlo. Es compatible con gran cantidad tanto de software como de hardware:
Permite controlar todos sus dispositivos desde una única interfaz compatible con dispositivos móviles.Ademas Home Assistant le permite controlar todos sus dispositivos sin almacenar ninguno de sus datos en la nube asegurando asi mantener su privacidad privada.
Por supuesto permite automatizar configurandi reglas avanzadas para controlar los dispositivos y llevar su hogar con vida.
Algunos de los ejemplos
tener las luces encendidas cuando se pone el sol y usted está en casa
tener las luces encendidas cuando alguien vuelve a casa y está oscuro
atenuar las luces cuando empiezas a ver una película en tu Chromecast
recibir un mensaje cuando las luces se encienden mientras usted no está en casa
etc
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.
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?
En efecto gracias al nivel de integración alcanzado , cada vez hay soluciones más «sencillas» a problemas de computación en tiempo real que tradicionalmente han sido muy complejos como por ejemplo puede ser el reconocimiento y detección de imágenes en tiempo real .
Como muestra de este tipo de soluciones vamos a ver la placa ESP-EYE , una pequeña placa de desarrollo del fabricante chino Espressif centrada en el reconocimiento de imágenes con procesamiento de audio en aplicaciones AIoT
Realmente esta solución se basa en dos componentes claramente diferenciados:
El hardware : esta solución es soportable por muy diferentes propuesta pero el hw más sencillo y del que vamos a ver en este post el ESP-EYE , una placa de desarrollo de menos de 30€ para el reconocimiento de imágenes y el procesamiento de audio, que se puede utilizar en varias aplicaciones AIoT. Cuenta con un chip ESP32, una cámara de 2 megapíxeles y un micrófono. ESP-EYE ofrece mucho almacenamiento, con una PSRAM de 8 Mbyte y un flash de 4 Mbyte. También es compatible con la transmisión de imágenes a través de Wi-Fi y depuración a través de un puerto Micro-USB. Aunque el ESP-EYE es una opción en kit muy asequible, el fabricante también ofrece una opción más potente :Esp-Wrover-Kit
El software : ESP-WHO, que es un marco de desarrollo de detección y reconocimiento de rostros diseñado para aplicaciones AIoT. Puede usarse con la placa de desarrollo ESP-EYE, el ESP-WROVER-KIT calificado por Amazon FreeRTOS u otras placas de desarrollo basadas en ESP32. Luego, al agregar solo unos pocos periféricos, como cámaras y pantallas, puede crear fácilmente aplicaciones AIoT completas. Para ejecutar ESP-WHO, debe tener una placa de desarrollo que integre un módulo ESP32 que tenga suficientes pines GPIO y más de 4 MB de RAM externa SP como la placa anteriormente comentada (ESP-EYE ), aunque no obstante ESP-WROVER-KIT también pueden ser otra opción como placa de pruebas.
Espressif ESP-EYE
Como hemos comentados hablado estamos ante una Placa de desarrollo de Espressif para reconocimiento de imágenes y procesamiento de audio en aplicaciones AIoT.
Espressif , el fabricante ofrece una solución AIoT completa que combina ESP32 con un marco de desarrollo de inteligencia artificial (AI). Esta solución incluye la placa de desarrollo ESP-EYE, junto con los marcos de desarrollo IoT y AI de Espressif, también conocidos como ESP-IDF y ESP-WHO, respectivamente.
ESP-EYE es una placa de desarrollo para el reconocimiento de imágenes y el procesamiento de audio, que se puede utilizar en varias aplicaciones AIoT. Cuenta con un chip ESP32, una cámara de 2 megapíxeles y un micrófono, todo ello integrado en una minúscula placa de 8 x4 cm (mas o menos como un pen-drive USB).
ESP-EYE ofrece mucho almacenamiento, con una PSRAM de 8 Mbyte y un flash de 4 Mbyte. También es compatible con la transmisión de imágenes a través de Wi-Fi y depuración a través de un puerto Micro-USB.
Aunque el sl fabricante ha dejado disponible en Github su sw , también puede apoyarse en otras soluciones del mismo fabricante como el ESP-WROVER-KIT-VB que f ofrece una solución integrada AIoT completa que combina un ESP32 con un marco de desarrollo de inteligencia artificial y además incluye la placa de desarrollo ESP-EYE, junto con los marcos de desarrollo IoT y AI de Espressif, también conocidos como ESP-IDF y ESP-WHO, respectivamente.
ESP-WROVER-KIT-VB
Es una placa de desarrollo de ultra bajo consumo altamente integrada que incluye Flash y PSRAM agregando una interfaz USB, una pantalla LCD de 3.2 «, una interfaz de cámara OV7670 y una ranura para tarjeta micro SD.Alcanza un gran rendimiento con una RAM de 4.5 MB y una CPU de doble núcleo de 240 MHz permitiendo creer cámaras de Internet, pantallas inteligentes o radios de Internet conectando pantallas LCD, micrófonos y códecs ) , todo ello a un precio relativamente competitivo ( unos 62€)
Esta placa Esp-Wrover-Kit también del mismo fabricante Expressif es otra opción que puede soportar el software ESP-WHO , En este caso es una una placa de desarrollo calificada por AWS( Amazon Web Services ) . Además del ESP-IDF SDK de Espressif, puede usar Amazon FreeRTOS en ESP-WROVER-KIT-VB. Amazon FreeRTOS proporciona conectividad lista para usar con AWS IoT, AWS Greengrass y otros servicios de AWS.
Aunque ESP32 admite la depuración JTAG, este modulo ESP-WROVER-KIT-VB integra un depurador USB también, lo cual hace que la depuración y el rastreo de aplicaciones complejas sea muy fácil, sin la necesidad de ningún hardware adicional.
ESP-WROVER-KIT-VB es pues la versión mejorada del ESP-WROVER-KIT ( de hecho cuesta casi el doble que la version anterior) . Su PSRAM en l aversion 2 aumenta a 8 MBytes, mientras que esta placa de desarrollo también cuenta con una interfaz de tarjeta Micro-SD de alta velocidad, una interfaz de cámara VGA, un panel LCD SPI de 3.2 ”y capacidades de expansión de E / S. Asimismo cuenta con un procesador de doble núcleo, radios Bluetooth y WiFi, y 520 KB de SRAM.
Ultimamente estan distribuyendo la versión 3 que contiene 32 Mbit adicionales de PSRAM siendo el ESP32 s compatible con SPI, I2C, serie, etc.
Espressif admite dos cadenas de herramientas:
El entorno de lenguaje C nativo que se ejecuta bajo el sistema operativo en tiempo real FreeRTOS
El entorno Arduino C / C ++. Los programas desarrollados usando el entorno Arduino en realidad se ejecutan como una tarea en FreeRTOS y pueden usar las bibliotecas FreeRTOS.
Puede ser preocupante el soporte para el controlador LCD ya que las versiones 2 y 3 de la placa utilizan un controlador ST7789V pero la placa de la versión 1 utiliza un controlador ILI9341. La última versión de la demostración TFT simple en ESP32 SDK llamada spi_master se puede configurar para ejecutarse en cualquiera de los ESP32-WROVER-KIT. No obstante «Loboris» en github tiene una biblioteca TFT con todas las funciones con opción de configuración para construir la biblioteca y el programa de demostración para la versión 3 WROVER-KIT. Incluso con SPI, la actualización de la pantalla es muy rápida.
No se incluye documentación con la placa, pero hay mucha documentación en la web, y el SDK nativo viene con una serie de ejemplos útiles. La desventaja es que el ESP32 es relativamente nuevo, parte del software está cambiando y faltan algunas bibliotecas de Arduino.
Sin dua el ESP32-WROVER-KIT es una gran pieza de hardware, aunque su uso requiere cierta experiencia con microcontroladores y cierta tenacidad para examinar la documentación en línea y el código de ejemplo , pero quizás valga la pena el esfuerzo por toda la potencia que le brinda esta placa.
EL software
El sw necesario se compone del marco de desarrollo IoT ( también llamado ESP-IDF ) y la AI de Espressif ( también conocidos como ESP-WHO ).
Para ejecutar ESP-WHO, debe tener una placa de desarrollo que integre un módulo ESP32 generico que tenga suficientes pines GPIO y más de 4 MB de RAM externa SPI y una cámara CCD . Lo mas sencillo es usar el ESP-WROVER-KIT o el recomndado por el fabricante: el ESP-EYE que hemos visto integra el ESP32 y la cámara integrado en una solución de bajo coste
ESP-WHO es pues la utilidad de detección, reconocimiento e imagen son el núcleo de la plataforma constando en realidad de los siguientes módulos:
Image Utility ofrece API de procesamiento de imágenes fundamentales.
La detección toma imágenes como entrada y proporciona la posición de la cara si hay una cara. Se implementa con el modelo MTMN, que se refiere a MTCNN y MobileNets .
El reconocimiento es identificar a la persona en particular y necesita los resultados de la detección. Se implementa con el modelo MobileFace.
La optimización consiste principalmente en aumentar la precisión de la inferencia y acelerar todo el proceso. Pero también podría cambiar la estructura de la red, actualizar los coeficientes, refactorizar el código, etc.
Tanto la entrada como la salida son flexibles porque las fuentes de imagen pueden ingresarse a través de la cámara ( aunque sin embargo, no proporcionan muchos controladores en este momento, ya que los de otros módulos de cámara se lanzarán en el futuro) y porque los resultados se pueden mostrar a través de la línea de comando, un LCD o incluso el sitio web a través del servicio de Wi-Fi http.
Para saber cómo configurar el módulo ESP32 para sus aplicaciones, puede consultar el archivo README.md de cada ejemplo del respositorio de github ( https://github.com/espressif/esp-who )
Preparación de software
La resolución recomendada de la imagen de entrada es QVGA (320×240) . En cuanto a elegir la cámara si no usa el citado modulo recomendado ESP-EYE el módulo ESP32 usado deberá tener libre los pines específicos según la cámara que use Por ahora el sw proporcionado soporta el controlador de OV2640 y OV3660 , que son muy recomendables para comenzar.
Veamos como instalar los dos módulos sw necesarios:
ESP-WHO
Asegúrese de clonar el proyecto de forma recursiva usando el siguiente comando:
Si clona un proyecto sin --recursive ( es decir usando el indicador --recursive), vaya al directorio esp-who y ejecute el comando git submodule update --init antes de hacer nada.
En este caso, tomamos ESP-IDF v3.2 como la versión de prueba.Si ya ha configurado ESP-IDF antes y no desea cambiar el existente, puede señalar IDF_PATH al ESP-IDF que se encuentra en ESP-WHO.
Otros componentes sw
Otros componentes sw necesarios lo constituye el marco principal del SDK, con algunos controladores y algunos algoritmos dentro.
Cámara : El componente de cámara contiene controladores para dispositivos de cámara de ESP32.
Face de esp: El componente esp-face contiene las API de las redes neuronales ESP-WHO, incluido el marco de detección y reconocimiento de rostros.
Ejemplos
La carpeta de /examples/ del respositorio de github ( https://github.com/espressif/esp-who ) contiene ejemplos de aplicaciones que demuestran las características API de ESP-WHO.
Una buena muestra es la detección de rostros , para lo cual habría que seguir los siguientes pasos:
esp-who/examples/single_chip/detection_with_command_line a una carpeta de ejemplo esp-who/examples/single_chip/detection_with_command_line .
cd esp-who/examples/single_chip/detection_with_command_line
Compila y actualiza el proyecto. idf.py build idf.py flash -p [PORT]
Los usuarios avanzados pueden modificar algunas opciones mediante el comando idf.py menuconfig .
En el siguiente , podemos ver cómo hacer su propio proyecto de seguridad para el hogar en solo 5 minutos utilizando la placa ESP-EYE y una Raspberry Pi para visualizar el resultado aunque puede usarse un pc portatil ,tableta , etc en su lugar . Este proyecto además es plug and play pues apenas requiere ningún conocimiento de codificación o hardware.
Para hacer su propio dispositivo de transmisión inalámbrica por tanto sólo usaremos una a pantalla LCD táctil conectada a la Raspberry pi . Como normalmente el fabricante del LCD suele incluir las instrucciones necesarias para conectar esta a la Raspberry Pi y que sea funcional en la demo no se requiere ninguna codificación y tampoco ningún circuito ya que nos bastará conectar estos dispositivos y empezar a transmitir
En primer lugar necesitaremos encender este ESP alimentando con 5v DC por medio del puerto microUSB . En el inicio del LED rojo se enciende en el ESP ,pero el LED rojo comenzará a parpadear que revela que este dispositivo se despierta y ha creado su punto de acceso propio al que se puede conectar todos los dispositivos .
En este ejemplo como se usa Raspberry Pi para ver los datos que vienen del CSPI ,encenderemos la placa Raspberry Pi . Para la primera vez que se conecte es recomendable tener teclado y ratón conectados a la Raspberry Pi , pero esto sólo será para la primera vez pues después el ajuste se guardará en esta Raspberry Pi y no necesitará teclado y ratón ,ya que se puede utilizar la pantalla táctil
Cómo está abierto el punto de acceso ,sólo necesitamos para conectar a través de este punto , abrir el navegador web y conectarnos a esta dirección IP( doble barra oblicua ,dos puntos y la ip del módulo y podremos ver la imagen que esta transmitiendo la cámara .
Para la segunda vez no hay necesidad de utilizar este tipo de teclado porque una Raspberry Pi automáticamente se conectara con este punto de acceso particular y en el navegador puede usar esta dirección IP ,la cual se guardará en el historial para que pueda tocar la dirección IP en el historial y acceder directamente
En este video, pues hemos visto cómo hacer su propio proyecto de seguridad para el hogar en solo 5 minutos utilizando el tablero ESP-EYE y Raspberry Pi, proyecto por cierto que como hemos visto es plug and play , y no requiere ningún conocimiento de codificación o hardware.
!Este módulo sin duda es una versátil aliado para múltiples retos que se nos presente!
Después de varios meses de espera en efecto ya esta disponible en Amazon España la nueva Raspberry Pi 4 a 59,99 €, siendo compatible con el envío gratuito, si bien por el momento no hay disponible ningún descuento, el precio de la placa es lo suficientemente bajo ( solo unos 20€ mas por la version anterior ) como para atreverse con la compra, aunque debería ser consciente de que en principio tarde en llegar a su hogar (algunos usuarios hablan de entre dos a cinco semanas ) ,pero en todo caso, si acaban entrando unidades durante los próximos días, probablemente Amazoon la podría enviar antes de dicho plazo.
Estas son algunas de las características mas destacables de esta nueva placa:
CPU ARM Cortex-A72 de cuatro núcleos y 1,5 GHz de 64 bits (rendimiento ~ 3) .Recordad que Raspberry Pi 3, contaba un procesador bastante inferior del fabricante BroadCom quad-core de 64 bits con 1,4 GHz
4 GB de SDRAM LPDDR4 frente a 1GB de RAM máxima admitida en la Raspberry pi 3
Gigabit Ethernet de rendimiento completo
Redes inalámbricas de doble banda 802.11ac. La LAN inalámbrica de doble banda viene con certificación de cumplimiento modular, lo que permite que la placa se diseñe en productos finales con pruebas de cumplimiento de LAN inalámbrica significativamente reducidas, lo que mejora tanto el costo como el tiempo de comercialización.
Bluetooth 5.0
Dos puertos USB 3.0 y dos puertos USB 2.0
Gráficos VideoCore VI, compatibles con OpenGL ES 3.x Decodificación de hardware 4Kp60 de video HEVC
Compatibilidad completa con productos Raspberry Pi anteriores
La Raspberry Pi 4 NO mantiene la misma huella mecánica que la Raspberry Pi 2 Model B y la Raspberry Pi 3 Model B. Además de ser más potente, es algo más grande ,lo que queda patente en las cajas que no servirán de los modelos Pi 3 Model B+o anteriores,
Se mantiene el conector ethernet y los 4 conectores USB ( dos de tipo 3.3) ,cabecera GPIO estándar de 40 pines de Raspberry Pi, el Puerto de pantalla MIPI DSI de 2 carriles, el puerto de cámara MIPI CSI de 2 carriles, el puerto de audio compuesto y vídeo compuesto de 4 hilos de 3 1/2″
Soporte de monitor dual, a resoluciones de hasta 4K motivo por el que se ha sustituido la salida de vídeo por dos conectores puertos micro-HDMI (hasta 4kp60 compatibles ) para conectar hasta dos monitores ,
Ranura para tarjeta micro SD para cargar el sistema operativo y el almacenamiento de datos
Alimentación via 5 V CC a través del conector USB-C (mínimo 3 A *) , 5V DC a través del encabezado GPIO (mínimo 3A *)o alimentación a través de Ethernet (PoE)
Esta placa no solo tiene un procesador mas potente( hasta tres veces más potencia de procesamiento que su antecesor) y mas RAM, tambien es más rápida tanto por Ethernet ( que por cierto no seta limitado, como la version anterior, por lo que tenemos una conexión Gigabit en la que no entra en juego el cuello de botella del procesador y del propio RJ45), como por Wi-Fi+ y en los puertos USB. Por ejemplo, gracias a los USB 3.0 , podemos conectar un SSD externo y aprovechar el ancho de banda perfectamente para transferir datos.
Igualmente el puerto para la tarjeta microSD también es más rápido que en anteriores versiones.
Lo mas destacable es su rendimiento , pues su análisis, según Halfacree la capacidad de cálculo de la placa, así como el ancho de banda de la memoria LPDDR4 es muy superior frente a la LPDDC2 de la Raspberry Pi 3 Model B+.
Utilidades
Lo de hackear la NASA con una Raspberry Pi es totalmente cierto, algo que se ha descubierto hace poco, pero además de para eso, sirve para mucho más. Es una excelente herramienta en entornos educativos, un »juguete» para enseñar a programar, se puede usar para desarrollar proyectos de IA y robótica, para crear tablets y portátiles y hasta como consola, además de como ordenador de sobremesa, claro
Aquí algunas ideas para sacarle el máximo partido:
Aplicaciones a la enseñanza y a la educación: Programación de software, robótica, arte inteligente, diseño de electrónica, juegos – desarrollo de aplicaciones, computación en la nube, redes neuronales – AI.
Aplicaciones relacionadas con la domotica (a casa inteligente):Control de calefacción – iluminación, detección ambiental, cámara IP – CCTV, transmisión de audio – video, asistente digital -Alexa, Google, puntos de acceso inalámbrico, radio definida por software, conectividad en la nube, juguetes – robots interactivos.
Aplicaciones en vehículos conectados: entretenmiento en el automóvil, drones autónomos, seguimiento – navegación GPS, detección ambiental, cámara IP, asistente digital – Alexa, Google, puntos de acceso inalámbrico, radio definida por software, conectividad en la nube, redes neuronales / AI
Aplicación en edificios y a la industria 4.0: Control de calefacción – iluminación, detección ambiental, cámara IP – CCTV, señalización – publicidad digital, puntos de acceso inalámbrico, transmisión de audio – video, punto de venta electrónico, conectividad en la nube, LoRaWan y SigFox, redes neuronales – AI, máquinas conectadas, radio definida por software, prueba automatizada, control del motor, montaje robótico.
Cluster de procesadores: hay personas que estan lanzando a construir un Cluster dado que la versión más nueva es más rápida , mayor cantidad de RAM y ademas pensando en la capacidad de computo resultante es mas asequible que cualquier otra solución
Como vemos , a pesar del ruido generado especialmente por su mayor calentamiento frente a las versiones anteriores ( en parte debido a su cpu que proporciona hasta tres veces más potencia de procesamiento que su antecesor ) ,se trata de la Raspberry Pi más potente lanzada hasta la fecha, que no solo se queda ahí pues incluso es capaz de soportar dos monitores 4K independientes de manera simultánea y mejores comunicaciones a todos los niveles . ..
En la era de IoT, nuestra vida está cada vez más integrada con la tecnología gracias a la capacidad de los dispositivos de consumo cotidiano, las máquinas industriales, los vehículos y los electrodomésticos para interactuar entre sí mediante la conectividad de Internet integrada ha hecho la vida más fácil y eficiente.
Microsoft ha desarrollado Azure Sphere para el desarrollo de dispositivos de microcontroladores (MCU) altamente seguros compatibles con implementaciones de IoT , intentando asegurarse de que los dispositivos innovadores puedan continuar alterando el status quo y mejorando nuestras vidas sin sacrificar el importante aspecto de nuestra seguridad, aspecto de los mas crucial para que el IoT pueda seguir evolucionando.
En este senctido Microsoft ha hecho una llamada a todos los ingenieros y desarrolladores de todo el mundo para crear proyectos altamente seguros, impulsados por MCU utilizando Azure Sphere, diseñando formas creativas para asegurar lo que más lo necesita: ¡todo!
Asegurar sus datos es importante en una gran cantidad de industrias. Aquí hay algunas ideas para comenzar:
Integrar Azure Sphere en dispositivos perimetrales de IoT nuevos o existentes
Asegurar sus proyectos de electrónica de consumo .
Innovaciones en torno al comercio seguro e inteligente
Construccion de soluciones robustas y seguras para edificios y domótica.
Diseñar soluciones seguras de fábrica.
Crear soluciones de energías renovables
La idea pues es crear un nuevo proyecto en torno al concepto de seguridad o simplemente mejore la seguridad de sus proyectos existentes con su nuevo kit de Azure Sphere contandoles detalles urante la experiencia. ¿La mejor parte? ¡Avnet está regalando hasta 20,000 Kits de Esfera Azure gratis para que podamos comenzar!
¿Qué es Microsoft Azure Sphere?
Azure Sphere consta de tres capas de seguridad: en el sistema operativo, en la nube y en la MCU.
Seguridad en el sistema operativo:Un SO creado a propósito reepecto a aspectos como la seguridad y agilidad para crear una plataforma confiable para nuevas experiencias de IoT. Un sistema operativo seguro construye innovaciones de seguridad pioneras en Windows en un HLOS lo suficientemente pequeño para los MCU.
Seguridad en la MCU:Asegurado desde y hasta el silicio Esta nueva clase cruzada de MCU ahora combina procesadores de aplicaciones y en tiempo real con tecnología de seguridad y conectividad de Microsoft incorporadas.
Seguridad en la nube: Protege los dispositivos con una nube construida para la seguridad de IoT. El servicio de seguridad de Azure Sphere renueva la seguridad del dispositivo, identifica las amenazas emergentes y la confianza de los intermediarios entre el dispositivo, la nube y otros puntos finales.
El hardware
Especificaciones del Carrier Board
Dos zócalos de expansión MikroE Click board
Conector de expansión Grove (I2C)
Sensores a bordo: acelerómetro de 3 ejes, giroscopio de 3 ejes, temperatura, presión / barométrica, luz ambiental
Interfaz para pantalla OLED 128×64 opcional
Interfaz USB
Soporta depuración, servicio y recuperación
UARTs, y JTAG
Interruptores pulsadores de usuario y LEDs.
Regulación de potencia de 5V a 3.3V
Entrada de alimentación de CC: USB 5V desde la computadora central y huellas de terminales para suministros externos de 5V DC y VBAT
Módulo Azure Sphere MT3620
MediaTek MT3620AN SoC
3 interfaces ISU configuradas para UART, SPI, I2C
ADC / GPIO: 3x entradas de ADC de 12 bits (o 3 GPIOs)
PWM / GPIO: 9x salidas PWM (o hasta 24 GPIOs)
RTC (requiere suministro VBAT)
Wi-Fi de banda dual 2.4 / 5GHz 802.11 a / b / g / n
Antena chip de doble banda 2.4 / 5GHz
El software
Tenga en cuenta los escenarios del mundo real: su solución segura deberá tener una transmisión de comunicación diaria con la Nube de Azure para garantizar una conexión protegida continua. Use su kit de desarrollo de Azure Sphere para aprovechar los servicios en la nube de Microsoft..
Concurso
Puede regístrese para obtener su kit gratuito , eso si deberemos pagar los costes de envío y los impuestos o aranceles aduaneros de su país. !Incluso aún puede participar si su país no es elegible para los kits gratuitos pues si su país no está en la lista, consulte con frecuencia a medida que amplian el alcance!.(vea todos los países elegibles. )
La seguridad es sumamente importante, pero la consistencia en entornos seguros es lo que nos mantiene en línea por ello buscan que se pueda mostrar el kit de Azure Sphere como puede permanecer en línea durante 30 días consecutivos y de esta modo será elegible para ganar los mejores premios.
Una vez que tenga su kit en la mano, conéctelo y regístrelo descargando la pequeña aplicación de Windows para la sincronización diaria con el servidor de concursos.( Por favor revise las instrucciones de registro ) .Más detalles se pueden encontrar en las reglas oficiales.
SoftWeb Solutions han construido un increíble «mapa de calor» para ver dónde se han conectado nuestros 20,000 kits de Azure Sphere en todo el mundo. Estaremos representado cada vez que realizemos la sincronización diaria y se convierta en parte de la presencia global de Azure Sphere. Échele un vistazo en el Mapa de Calor de Azure Sphere.
Este concurso es parte de una campaña más grande de comunidades de Avnet. Vea el desafío Sensing the World de element14, seminarios web, talleres virtuales y más recursos en secureeverything.avnet.com .
Premios
¡Estan regalando miles de dólares en premios a los 510 mejores proyectos! Un premio por persona: ninguna persona puede ganar el premio total de $ 35,000. Los jueces elegirán los mejores proyectos calificados según los criterios de evaluación descritos en la sección de reglas. Los premios de Nivel 3 se entregan únicamente en función de los requisitos de elegibilidad.
Tier 1
Para los proyectos que se separan claramente del resto y demostraron creatividad y uso ejemplar de Azure Sphere. Para ser considerado para los premios de Nivel 1, debe hacer ping a la Nube de Azure una vez al día durante 30 días consecutivos.
El mejor proyecto de su clase y el diseño de referencia definitivo para Microsoft Azure Sphere.
El nivel 2
Para los proyectos que se separan claramente del resto y demostraron creatividad y uso ejemplar de Azure Sphere. Para ser considerado para los premios de Nivel 2, debe hacer ping a la Nube de Azure una vez al día durante 15 días consecutivos.
7 ganadores de Surface Laptop valoradas en $ 1,000
Nivel 3
Para ser elegible para el premio Tier 3, su proyecto debe usar el kit de desarrollo de Azure Sphere. ¡Los proyectos ganarán automáticamente una nueva Raspberry Pi 4! Eche un vistazo a nuestros requisitos de calificación en la pestaña de reglas.
El ganador recibirá lo siguiente: – una tarjeta de regalo de $ 250; – una tarjeta de regalo Adafruit de $ 100 (premio especial para el concurso Secure Everything); – una suscripción de 12 meses a Patchr Premium (valor de $ 180); – Por último, pero no menos importante, se presentarán en una entrevista en video con el único y único Alex Glow de Hackster.
En efecto hoy en día hay soluciones muy económicas debido a su gran escala comercial que son susceptibles de ser mejoradas para complementar con notoriedad sus prestaciones y lo mas interesante !sin coste alguno!.
En el ejemplo de hoy vamos a ver como de hecho una modesta lámpara con sensor de movimiento para uso en exteriores ideal (almacén, garaje, clóset, etc …,con un bajo consumo de sólo 10 vatios ( aunque existen de muchas potencias más elevadas ) ,y 900 lúmenes de luz garantizados puede usarse además de su cometido principal de encenderse cuando el sensor detecta movimiento en el exterior , que también envíe una alarma hacia el interior, para que tengamos constancia si no nos hemos percatados por la activación de la luminara de que puede que haya personas , animales o cosas merodeando por el exterior .
Además hay un aspecto interesante, en esta simple modificación pues mantendremos el diseño moderno y compacto de la luminaria , ya que vamos a hacer una sencilla modificación que apenas ocupa más espacio ( únicamente necesitaremos añadir una regleta ) y que además no inhabilita su protección impermeable (IP66), una característica fundamental para aquellos que desean montar esta luminaria en el exterior.
Respecto al interior de la luminaria , esta se aleja de las convencionales halógenas al incorporar uno de los últimos 30 chips súper brillantes de LED que reemplazan a los anteriores, ofreciendo una iluminación más brillante (900 LM, blanco frío de 6000 Kelvin ) , con un gran ahorro en la factura de la luz y una gran durabilidad (los LED tienen una vida media de 50000 horas).
El foco integra un sensor PIR y la electronica necesaria para activar la luminaria , la cual por cierto va integrada en el propio receptor del PIR
En est emodelos , se puede ajustar la iluminación utilizando los 3 botones de configuración de la parte de atrás del propio modulo del PIR
Los ajuste son los siguientes:
HORA ;sirve para establecer la duración de la iluminación (6-360 s);
SENS; sirve para ajustar el rango de detección (1-12m);
LUX :ajuste la fotosensibilidad (día y noche)
Aparte de ajustar el sensor de movimiento ajustable hasta 10 metros, un ajuste especialmente interesante es el ajuste LUX pues no puede permitir que el foco ( y por tanto la alarma ) no se active de día ,pudiéndose accionar automáticamente solo de noche , que es cuando la mayoría de las ocasiones los dueños de lo ajeno merodean por los exteriores de los inmuebles
Con la doble función de iluminación sorpresiva ( que el producto ya lo contempla ) y la alarma sonora ( que vamos añadir tanto interior como exterior ) la idea que se busca con esta mejora es una detección anticipada que localizar los intentos de intrusión y antes de que el intruso haya conseguido entrar : así, decidimos antes a los intrusos y, ademas tenemos un señal audible de que ha sucedido , señal que por cierto podemos contemplar con otros sistemas como camaras, alarmas remotas , etc
La idea de este post es mejorar un asequible foco del fabricante CLY para poder usarlo para activar otras cargas ( no solo la de la propia luminaria) , para lo cual tendremos que abrirlo con cuidad para capturar la señal de salida y devolverlo al exterior . Desgraciadamente manipulaciones del producto nos hará perderas la garantia , pero por el precio que tiene creemos merece la pena puesto que nos puede ser muy útil desde el interur saber si se ha activado el foco o por ejemplo para enviar a una central de alarma
Empieza la acción: Paso a paso
Empezaremos antes de desmontar el producto probando la luminaria pues cualquier cambio de esta en su configuración nos hará perder la garantia, asi que es nuestra última oportunidad para probar de que funciona perfectamente este.
Bien si funciona ok , desmontamos los 4 tornillos de la parte posterior y sacaremos con cuidado el cristal protector y luego con cuidado de no toca los leds los otros dos tornillos del reflector
Como se observa en la imagen de más abajo hay dos bloques , diferentes : el chip compuesto por leds( en el centro ) y el convertidor ac/dc para este ( a la derecha)
Además se observan claramente tres conexiones que van al módulo PIR :
Cable marrón; uno de los polos de la red para dar alimentación permanente al módulo PIR
Cable azul : otro de los polos de la red para dar alimentación permanente al módulo PIR
Cable rojo ; el cable de detección del PIR que permite alimentar al convertidor ac/dc
Hemos visto que nuestro objetivo es cable rojo de salida del módulo de PIR que permite alimentar al convertidor ac/dc de la luminaria , y que por tanto nos permite obtener la salida del rele interno del modulo PIR ,así que intentaremos capturar este hilo para lo cual descubriremos el protector plástico del empalme
Es muy poco ortodoxo , pero como no queremos que el módulo pierda la estanqueidad , y normalmente para luces exteriores las instalación no suelen contar con este cableado, utilizaremos el cable amarillo de masa del cable de salida ( más adelante si nos interesa podemos exteriormente fijarle un tornillo al chasis y volverlo a conectar)
Ahora solo nos queda usar una ficha de empalme para conectar el cable amarillo de la manguera exterior con en emplame rojo-blanco procedente de la salida del modulo PIR hacia el convertidor ac/dc
Ahora ya cerraremos con cuidado la luminaria : primero el reflector y luego la junta de estanqueidad , el cristal y finalmente la tapa . Ahora ya podemos conectar la c. a. al extremo de la manguera del foco , pero con la importante diferencia que en el cable amarillo ya no conectaremos la masa sino por ejemplo un zumbador o un testigo que alojaremos en el interior de la vivienda para tener constancia visual o sonora de que el foco luz se ha encendido por movimiento de objetos extraños próximos al PIR . Por cierto si se pregunta donde conectar el otro extremos del zumbador o luz auxiliar este irá conectado al cable marrón de la manguera .
En el esquema anterior, como se puede apreciar ,se complementa con un interruptor para anular el zumbador en caso de que sea demasiado molesto .Asimismo se recomienda otro interruptor a la entrada de ca si este va estar conectado permanentemente a la red de ca.
Hay muchas opciones de uso para esta salida de CA , el cual por cierto no debemos cargar con mucha potencia pues corremos el riesgo de estropear lso contactos del relé interno del modulo PIR
Algunos ejemplos de lo que podemos hacer con esta salida «extra»;
Un relé de potencia con bobinado de 220v de CA para conectar cargas mayores
Un segundo relé de 220V pero para utilizar los contactos para alarmas
Bueno ,como hemos visto quizás sean una idea un tanto atrevida , que no todo el mundo esté dispuesto a realizar, pero desde luego !la posibilidad está ahí ! y eso sin casi ningún coste adicional !¿se le ocurre alguna mejora adicional ? si es así no dude en compartirla con toda la comunidad ..!!GRACIAS!!
NOTA;Como hemos recibido consultas , en este nueva imagen creemos que se describe mejor la modificación que pasa por soltar el cable amarillo de masa y unirlo con una regleta o un empalme con la conexión marcada como salida del relé
Hoy en día muchos dispositivos que usamos día a día se conectan a internet como la televisión, altavoces inteligentes, refrigeradores, Aires Acondicionados , etc …, dispositivos que extienden sus funciones primarias permitiéndoles interactuar con otros dispositivos en internet siendo de este modo posible controlar estos remotamente.
Como podemos ver en este blog en numeras entradas que hablamos de dispositivos de IoT, es relativamente sencillo construir nuestros propios dispositivos de IoT con algunos sensores y microcontroladores como Arduino, NodeMCU, Raspberry Pi, etcétera , lo cual le permitirán automatizar su hogar apoyándose en estos dispositivos como por ejemplo usando el servicio de Cayenne .
Como ejemplo de lo sencillo que puede ser la construcción de dispositivos IoT desde un punto de vista más empírico , vamos a ver como usando NodeMCU ESP-12E podemos acceder a Firebase para encender y apagar un LED remoto.
NodeMCU ESP-12Ees muy barato (unos 6€) , y al tener wifi incorporado para conectarse a internet, ya tenemos los elementos suficientes para conectarnos a bases de datos avanzadas gracias a un hardware tan eficiente y por supuesto los servicios de Firebase.
En esta ocasión aunque NodeMCU ESP-12E cuenta con un puerto analogico denominado A0 y 13 pines digitales numerados del D0 al D12, vamos a usar un puerto interno al que esta conectado el led interno denominado LED_BUILTIN y de este modo no hace falta usar ningún componte externo
NodeMCU
ESP12E está basado en Arduino pero cuenta también conectividad wifi integrando la propia antena en la placa de circuito impreso en unas dimensiones de 25.6mm x 34.2mm . Además, por motivos de reducción de espacio . las versiones más antiguas de esta placa no integraban conexión usb ( para lo cual necesitaremos un USB FTDI para programarlo o un controlador Setup CH340g).
Las características principales son las siguientes:
Incorpora una MCU de 32-bit de bajo consumo (Tensilica L106)
Módulo WiFi de 2.4 GHz
RAM de unos 50 kB
1 entrada analógica de 10-bit (ADC)
17 pines de entrada y salida GPIO (de propósito general)
Dentro de los diferentes módulos del ESP8266,(ESP01,ESP03,ESP04,ESP05,…ESP12) destaca el ESP-12 o el ESP-12E, módulo que utiliza usando NodeMCU ESP-12E para procesar la información.
Básicamente estos módulos incorpora la memoria Flash para almacenar los programas o sketchs y la antena estando internamente los pines del ESP8266 cableados hasta los pines del módulo ESP-12 siendo así más fácil su acceso.
En todo caso, esta familia de placas todas cuentan con 11 pines digitales de entrada / salida, todos los pines tienen interruptor / pwm / I2C / 1-wire siendo su chip principal el ESP8266 CH340G , siendo una gran diferencia con una placa Arduino es que sólo cuenta con 1 entrada analógica (entrada máxima de 3,3 V)
Respecto al firmware necesitará subir el código a NodeMCU, pera el cual debería programar el NodeMCU con el IDE de Arduino,
Veamos con mas detalles como conseguimos configurar entorno de desarrollo tanto de Arduino como Firebase para que ambos puedan interaccionar entre si
Configuracion IDE de Arduino
1. Vamos a usar Arduino IDE para escribir el código . Si no lo tiene instalado puede descargar la última versión del IDE aquí.
2. Puesto que estamos usando NodeMCU que no es oficialmente compatible con IDE de Arduino, tenemos que agregar el archivo JSON del dispositivo. En el IDE de Arduino añadir esta URL en :
4. Para utilizar la base de datos bases avanzadas en NodeMCU puede descargar la biblioteca de bases avanzadas-arduino que abstrae la API REST de las bases avanzadas por los qeu necesitamos descargar la librería de Firebase desde github aquí.
5. Incluir el archivo zip descargado (firebase-arduino-master.zip) en el IDE de Arduino.
Programa > Incluir Libreria > Añadir .zip > Seleccionar archivo .zip descargado en el paso anterior
6. También necesitará instalar la biblioteca de ArduinoJson que puede descargarse desde el IDE de Arduino así mismo. Tenga en cuenta que la versión de la biblioteca no debe 6.x.x por lo que debe utilizar la última 5.x.x
Programa > Incluir Libreria > Añadir biblioteca .zip >Buscar ArduinoJson por Benoit Blanchon
Creación de una base de datos Firebase
7. Cree un nuevo proyecto de Firebase desde la consola (necesitará tener cuenta de google para crear proyecto de FireBase) y diríjase hacia la sección de base de datos. Seleccione la base de datos en tiempo real de bases avanzadas (firebase real-time database).
8. Necesitamos copiarnos el código secreto de la base de datos para la autenticación desde el Panel de configuración > Cuentas de servicio.>Mostrar
Una vez copiado la clave secreta ( que colocaremos en el código de arduino en #define FIREBASE_AUTH «XXXXXXXXXXX»), nos iremos a la opción de DataBase, y Realtime Database
9.Ahora debemos agregar un nodo asociado a la base de datos de firebase. Tenemos que seleccionar Realtime Database y pulsar el botón de + añadiendo el campo led . POsteriormente como veremos mas adelante, el valor de este campo decidirá si activar o desactivar el LED.
El tipo de dato es booleano ya que según lo pongamos a true o false esto accionará el led en el NodeMCU ESP-12E
Debemos actualizar la configuración de uso compartido de datos del proyecto NodeMCU.
Usar la configuración predeterminada para compartir datos de Google Analytics for Firebase , lo cual tendrá las siguientes consecuencias :
Compartir tus datos de Analytics con todas las funciones de Firebase
Comparte tus datos de Analytics con nosotros para ayudarnos a mejorar nuestros productos y servicios.
Comparte tus datos de Analytics con nosotros para habilitar el servicio de asistencia técnica.
Comparte tus datos de Analytics con nosotros para habilitar las comparativas.
Comparte tus datos de Analytics con los especialistas en cuentas de Google.
Asimismo tenemos dos opciones de modo de uso de la BBDD:en modo bloqueo o en modo de prueba para el caso que nos corresponde para probar la funcionalidad
Por último apuntaremos la instancia de firebase de acceso que luego insertamos en el código de Arduino en #define FIREBASE_HOST «xxxxxxxxxx.firebaseio.com/»
Configurar el IDE de Arduino y base de datos de Firebase a trabajar juntos
Ahora que hemos realizado todos los procedimientos de configuración, vamos a comenzar la codificación del código que ejecutaremos en nuestro módulo NodeMCU
Para simplificar, vamos a escribir un código sencillo para encender y apagar el LED interno del NodeMCU aunque realmente seria exactamente el mismo código si decidimos usar alguno de los 17 pines de entrada y salida GPIO (de propósito general), pues simplemente tendremos que conectar un led entre masa y uno de los pines , cambiando la constante LED_BUILTIN por un valor entero del 0 al 16 correspondiente al número del puerto al que hayamos conectado el led.
Serial.begin(115200); //inicializa el puerto de salida a 115200
pinMode(LED_BUILTIN, OUTPUT); //configurar el puerto interno como salida digitalWrite(LED_BUILTIN, HIGH); //enciende el led interno
// conectando a la red wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //conexión a la red wifi
delay(2000); //espera la conexión
Serial.println(«Conectando…»);
while (WiFi.status() != WL_CONNECTED) //bucle para esperar la conexión
{
Serial.println(«.»); //mientras pintamos un puntito que sacamos por consola
delay(3000);
}
Serial.println(«Conectado»); // ya hemos conseguido conectar por wifi
Serial.println(WiFi.localIP()); // pintamos la ip asignada
// Configurando conexión a firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); //intentamos conectarnos a la base de datos Firebase con nuestras credenciales
//fin configuración
}
void loop() //bucle principal
{
//leer estado en Firebase el valor del registro led y observar que el valor recuperado al ser booleano se asigna directamente a la variables es booleana
bool isLedOn = Firebase.getBool(«led»); // recuperamos el valor del objeto led de la sesión firebase
if (isLedOn) // condicional para decidir en función del valor recuperado de firebase si se enciende o no el led
{
digitalWrite(LED_BUILTIN, HIGH); //encendemos el led Serial.println(«LED ON «); delay(2000);
}
else
{
digitalWrite(LED_BUILTIN, LOW); //apagamos el led Serial.println(«LED OFF»); delay(2000);
}
}
En el código anterior en primer lugar se incluyen las librerías necesarias para hacer toda gestión de conexión con Fireabase, así como las comunes de arduino para gestionar json y las propias del ESP8266
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
Después se definen cuatro variables de tipo constante para almacenar:
#define WIFI_SSID «Nombre de Router Wifi» Cambiaremos en esa a línea la red del router WiFi al que nos vayamos a conectar
#define WIFI_PASSWORD «Contraseña del Router» Cambiaremos en esa línea contraseña de su router WiFi
#define FIREBASE_HOST «xxxxxxxxx.firebaseio.com» Insertaremos quie elnombre de la instancia de Firebase asociada a su usuario, para ello haremos clic en base de datos ahora se verá el nombre de host .Pulsamos Mostrar en imagen.Copiar el nombre sin el http en el código de Arduino
#define FIREBASE_AUTH «xxxxxxxxxxxxxxxxxxxxxxxxxxx»Insertaremos la palabra secreta de Forebase ,para ello iremos a Configuración > configuración del proyecto > cuentas de servicio > base de datos secreta .Copiar y pegar la palabra secreta en el código
Ahora toca inicializa el puerto de salida a 115200, ,configurar el puerto interno como salida enciende el led interno
Asimismo es necesario conectar la red wifi, que hacemos con un bucle para esperar la conexión mientras pintamos un puntito que sacamos por consola
La última parte del bloque de configuración es la conexión a firebase donde intentamos conectarnos a la base de datos Firebase con nuestras credenciales
LLegamos ahora al cuerpo principal (loop ) donde leeremos el estado en Firebase el valor del objeto led y actuaremos según su valor en el estado lógico de un pin del GPIO donde es interesante observar que el valor recuperado al ser booleano se asigna directamente a la variables que también es booleana.
La magia se hace justo con esta línea «bool isLedOn = Firebase.getBool(«led»); « donde recuperamos el valor del objeto led de la sesión firebase
Finalmente mediante condicional decidiremos en función del valor recuperado de firebase si se enciende o no el led
Este código , donde incluiremos nuestras credenciales del Firebase y de nuestra red wifi, lo subiremos desde el IDE de Arduino Programas > Subir y en seguida deberíamos ver el led interno luciendo o apagado en función del estado del objeto led en su base de datos Febase
Ahora intente cambiar el valor del objeto led en la base de datos a verdadero y falso. El led debería encenderse o apagarse en función del valor que hayamos seleccionado en el objeto led en Firebase .
Por supuesto puede ampliar este proyecto si decidimos cualquiera de los 17 pines de entrada y salida GPIO (de propósito general) asi como manejar estos mediante la creación de una aplicación web o móvil que accionará los puertos en lugar de cambiar manualmente el valor de la base de datos Firebase.
Además en este articulo hemos hablado de leer un objeto de Firebase desde un NodeMCU pero también es posible enviar datos desde la placa para salvarlos en Firebase y luego leer estos mediante una aplicación móvil o web, Sin duda el limite esta en nuestra imaginación …
Node.js framework fue creado por Bocoup para controlar placas de desarrollo en una configuración de host-cliente aunque realmente su uso mayoritario sea como plataforma web siendo Johnny-Five la plataforma open source de Robótica e IoT de JavaScript
En realidad existen diferentes plataformas donde se puede ejecutar el programa Johnny-Five :
En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2
En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
En una máquina host que se comunica por wifi al cliente: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,
Johnny-Five como vemos hacer un énfasis especial en la robótica, pero tambien puede hacer muchas cosas diferentes con el software.De hecho ha existido durante hacer más tiempo que la mayoría de los marcos de JavaScript para hardware . Ademas iene una API clara y «fresca» ,ambas cosas ideales para los principiantes de hardware.
Lanzado porBocoup en 2012, Johnny-Five esta mantenido por una comunidad de desarrolladores de software apasionados e ingenieros de hardware. De hecho más de 75 desarrolladores han hecho contribuciones para construir un ecosistema robusto, extensible y muy versatil.
Hola Mundo!
A los microcontroladores y las plataformas SoC nos gusta decir «Hola mundo» con un simple LED parpadeante, así que veamos en primer lugar un ejemplo como lo hariamos usando el Ide clásico de Arduino
Como vemos en la imagen ,conectaremos un led entre el pin 13 y masa , respetando la polaridad (el ánodo al pin13 y el cátodo o pin corto a masa )
Para hacer destellear el citado led, estos son los pasos básicos que tenemos que seguir en nuestro sketch programandolo desde el IDE de Arduino:
Configurar el pin 13 (con LED incorporado) como una SALIDA
Establecer el pin 13 ALTO para encender el LED
Esperamos 500 ms (medio segundo)
Establecer el pin 13 BAJO para apagar el LED
Y este es el código completo para ejecutar desde el Ide de Arduino:
Y ahora vamos a ver el mismo ejemplo , pero ejecutandolo en Javascript por medio de node-js,
Desgraciadamente si usamos un Arduino o alguno de sus variantes (Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,) necesitaremos que el programa JavaScript se ejecute en una máquina host que ejecute Node.js. de modo que el programa transmitirá instrucciones básicas de E / S a la placa a través de una interfaz serie USB , que actuara como un cliente ligero .
El método host-cliente implica la comunicación a través de una API común entre el host y el cliente. El marco Node.js usado con Arduino y placas similares , Johnny-Five, se comunica (de forma predeterminada) con las placas utilizando un protocolo llamado Firmata, protocolo que permite que los hosts (computadoras) y los clientes (microcontroladores) intercambien mensajes de ida y vuelta en un formato basado en mensajes MIDI. El protocolo Firmata especifica cómo deben ser esos mensajes de comando y datos. La implementación de Firmata de Arduino proporciona el firmware real que puede poner en su tablero para hacer que «hable» Firmata. Toma la forma de un boceto de Arduino que sube al tablero.
Firmata es lo suficientemente popular como para que los bocetos de Firmata que necesita vengan empaquetados con el IDE de Arduino asi que bastara con subir este a Arduino una única vez ya que el código javascript correra en el host usando node.js.
Puede seguir estos pasos para cargar el interfaz correcto de Firmata en su Arduino para que se pueda utilizar como cliente en una configuración de host-cliente:
Resumidamente estos son los pasos previos para ejecutar el mismo ejemplo del led parpadeante que hemos visto pero en javascript en una placa Arduino;
En primer lugar conectar su Arduino mediante USB a su ordenador
Lanzar el IDE de Arduino.
Asegurarse que esta configurada la version de su placa, así como el puerto COM virtual al que esta conectado
Acceda al menú Archivo> Ejemplos> Firmata
Seleccione StandardFirmataPlus de la lista y despliegue este sw sobre su Arduino
Ahora Instale Node.js en su pc . Funciona con ultima version 11.3.0 de 64 bit que incluye npm 6.4 (no olvidar de chequear que se instalen otros componentes )Este es el link de descarga https://nodejs.org/en/download/
En la instalación de Node.js, repetimo no debemos olvidar de chequear que se instalen otros componentes pues con ellos se instalara automáticamente
Visual Studio Express 2010 de 32 bits (con las dependencias de C ++)
El comando npm
Alternativamente si dispusiésemos de npm podríamos instalar ambos entornos con npm --add-python-to-path install --global --production windows-build-tools
Este pasos anterior ( instalacion de componentes ) es innecesario si chequeamos en la instalación de node.js pues se instalaran esos componentes automáticamente
Ya puede crear su primer proyecto Johnny-Five, por lo que en primer lugar cree un directorio para él e instale el paquete framework npm, como se muestra en la siguiente lista:
< mkdir hello-world
< cd hello-world
< npm install johnny-five
Ejecute el comando «npm install johnny-five» desde la carpeta del proyecto
Ya por fin podemos crear el fichero javascript con su editor de texto que contendrá el código en javascript .
Realmente estos son los pasos que tenemos que seguir:
Requerir el paquete johnny-five
Inicializar un nuevo objeto Board que represente a su placa .
Esperar a que el tablero dispare el evento listo
Crear una instancia de un objeto LED en el pin 13 (el pin LED incorporado de Uno)
Hacer que el LED parpadee cada 500 ms
Este es el código en js :
const five = require(‘johnny-five’); const board = new five.Board(); board.on(‘ready’, () => { const led = new five.Led(13); led.blink(500); });
Guarde el archivo como hello-world.js y conecte su Arduino a un puerto USB en su ordenador si aún no está conectado.
En una terminal de windows vaya al directorio del proyecto y ejecute este comando:
<node hello-world.js
Verá una salida como la siguiente en su terminal ejecutando hello-world.js en una terminal
Si el LED incorporado parpadea ,!enhorabuena ! !acaba de controlar una placa Arduino con JavaScript! ¿a que es realmente sencillo?.
Aunque en el caso de la familia Arduino tiene la innegable penalización de necesitar un host para operar , la ventajas de este modelo son evidentes pues no tenemos que estar constantemente compilando y subiendo el sketch con el ide de Arduino ya que el programa corre en host . Ademas podemos usar un simple editor de texto para cambiar el código en javascript fácilmente
Asimismo el lenguaje javascript ha ido evolucionando hasta un ritmo que no podemos imaginar incluyendo muchas características que no son soportadas de forma directa desde Arduino
Por ultimo mencionar la autentica potabilidad del código , pues el código que hemos visto en el ejemplo podremos usarlos en múltiples plataformas tan diferentes como Raspberry pi, Intel Edison , etc usando siempre el mismo código fuente aun siendo soportado por placas muy diferentes ¿ a que es interesante?
Placas soportadas
Johnny-Five ha sido probado con una variedad de tableros compatibles con Arduino .
Para los proyectos que no están basados en Arduino, los complementos de IO específicos de la plataforma están disponibles. Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware en cualquier idioma que la plataforma hable.
Como comentábamos existen diferentes formas de ejecutar el programa Johnny-Five segun la placa:
En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2) , Es facil adivinar qeu este es el mabiente ideal pues dentro de la placa se oprtan tanto el host como el cliente por lo qeu no ncesitamos conectarnos con otro dispositivo
En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
En una máquina host que se comunica por wifi al cliente.: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.
Los pines digitales 26-41 y los pines analógicos A6-A11 actualmente no son compatibles con StandardFirmataPlus, a la espera de una actualización de la definición de pines en Boards.h
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tetehering.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Plataforma específica
Admite la extensión PING_READ , cuando se usa con PingFirmata .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Plataforma específica
Requiere una conexión WiFi conectada a Internet y está sujeto a la limitación de la tasa de solicitud por parte del servidor de Electric Imp API.
El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Plataforma específica
El hardware es capaz de soportar solo 4 salidas PWM. Como resultado, los enlaces nativos no admiten PWM en los pines 10 y 11.
Aunque Galileo-io / Edison-io / Joule-io todavía no admite comunicaciones en serie, puede enlazar a / dev / ttyFMD1 en la placa Edison Arduino usando el módulo serialport .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Plataforma específica
Los temporizadores se comparten en grupos: Temporizador 2: A0 , A1 , Temporizador 3: A4 , A5 , A6 , A7 , Temporizador 4: D0 , D1
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Es realmente sorprendente hasta donde podemos llegar con una Raspberry Pi , donde probablemente la única limitación la pongamos nosotros mismos, pues esta versátil placa esta muy capacitada para tareas tan complejas , las cuales hacen tan solo unos años hubiera sido impensables que se pudieran realizar en un hw como el de esta placa.
Como ejemplo de multi-procesamiento vamos a ver en este post cómo Bob Bam Mantell , montó un monitor de bebé con una Raspberry Pi recogiendor los datos en Splunk, mediante un lector de registro y una herramienta de análisis, programando los datos de una manera significativa . Como resultado de este trabajo tendremos todas las medidas en un único tablero de mandos donde podremos controlar los patrones del sueño, temperatura y humedad.
Un servidor de host Splunk – para el tablero de informes, Linux Centos, pero se puede ejecutar en Windows para Mac, así
El software Splunk Universal promotor para Raspberry Pi
Con cierta supervisión y alertas deberíamos ser capaces de mantener la comodidad óptima del bebé, pero antes debemos instalar Raspbian. Esta versión se descarga a partir de una nueva imagen descargada a partir del sitio oficial Raspbian ,
En la url de descarga podrá apreciar en la imagen de abajo , se mantienen tanto la imagen de la versión previa mínima (Lite) o la nueva versión Stretch para escritorio:
Lógicamente si la SD es suficiente grande , lo interesante es descargar la primera en lugar de la versión mínima
Una vez decidida, descargue la imagen correspondiente en su ordenador y siga los siguientes pasos:
Inserte la tarjeta SD en el lector de tarjetas SD de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
Haga clic en Escribir y esperar a que la escritura se complete.
Salir del administrador de archivos y expulsar la tarjeta SD.
Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los conectores USB, conectar la con un cable ethernet al router conectividad a Internet y finalmente conectar la alimentación para comprobar que la Raspberry arranca con la nueva imagen
La versión previa basada en Raspbian Jessie ( Debian8 ) ya incluía características y aplicaciones bastante interesantes así como algunos cambios más sutiles en el diseño del sistema, como por ejemplo,al iniciar ahora su Raspberry Pi que la pantalla inicial cambiara mostrando una imagen mas moderna .También incluía algunas aplicaciones como un navegador integrado , el software de RealVNC, para acceder a la Pi desde un escritorio remoto , wallpapers nuevos para decorar el fondo de escritorio de su Raspberry Pi,etc .
Ahora lo mas importante de esta nueva actualización es sin duda la subida de versión hacia Debian 9 ( recordemos que la versión anterior era Debian 8) trayendo ademas un gran número de cambios y mejoras internas respecto a Debian 8 destacando quizás ademas de la subida de version el incluir un nuevo asistente de configuración que será mostrado en el primer inicio, lo cual ayudará a los recién llegados a configurar el sistema Raspbian a su gusto sin tener que buscar los distintos paneles de ajustes.Por supuesto este asistente de configuración se ejecutará de forma automática en el primer inicio del sistema, permitiendo que los usuarios escojan su país, lenguaje, huso horario, configuren un perfil con contraseña, agreguen una red Wi-Fi e incluso instalen actualizaciones disponibles.
“
Una vez hayamos arrancado la Rasberry Pi con Raspbian, como vemos en las pantallas anteriores seguiremos el asistente de inicio donde configuramos la red wifi a la que nos conectaremos desde la Raspberry Pi.
Asimismo necesitamos permitir tanto los pines de GPIO como el de la cámara nativa
Además debemos confirmar que puede conectar mediante el programa SSH para acceder remotamente una vez instalado
Por ultimo actualizaremos el so ejecutando el comando de actualización:
sudo apt-get update
Una vez hecho esto, ya tendremos un sistema operativo base por lo que empezaremos instalando la camara NoIR
Camara NoIr
El NoIR de Pi, es la versión de visión nocturna de la cámara, que NO tiene filtro ( es decir ‘Sin Infra rojo’) , lo que significa, si usted tiene una fuente de luz infrarroja, por la noche, la cámara puede ver en la oscuridad. Puesto que los bebés suelen descansar por la noche (con suerte), ese el motivo de necesitar una cámara infrarroja para no despertarlo por lo que si usted quiere imágenes en color o prevea usar la cámara con luz normal no utilice esta cámara. El modulo de cámara de Pi de infrarrojos tiene un mayor rendimiento que las cámaras USB, por lo que lo ideal es usar cámaras del tipo compatibles con Raspberry Pi con interfaz .
Abra la Herramienta de configuración de frambuesa Pi desde el menú principal
Asegúrese de que está activado el software de la cámara
:
Si no está activado, habilítelo y reinicie su Pi para comenzar. Es decir resumidamente; con la Raspberry Pi apagada, debe conectar el módulo de la cámara al puerto de la cámara de la Raspberry Pi, ahora encienda el Pi y asegúrese de que se activa el software.
Seleccione entrar, cuando haya terminado, le pedirá que reinicie siguiendo las instrucciones.
Conexión de un sensor 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
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 DHT22 a una Raspberry Pi es sencillo, simplemente alimentamos al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital . Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output , tarea que suele hacerse mediante un jumper en la propia placa del sensor
En resumen estas son las conexiones:
Conecte el NARANJA( masa) al Pin 6 de las RP (GND)
Conecte el ROJO(vcc) al Pin 1 dela Rp
Conecte el MARRON(output) al Pin 22 de la Rp ( GPIO25 )
Los sensores 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. Para escribir el software, que puede leer el sensor, vamos a necesitar un par de cosas. Primero asegúrese de que el compilador ya está instalado con el común:
sudo apt-get install git-core
Necesitaremos clonar desde el git el modulo WiringPi con el comando
git clone git://git.drogon.net/wiringPi
Ahora vaya al directorio creado y compilaremos este modulo
cd wiringPi
git pull origin
cd wiringPi
./build
Leer datos desde el sensor DHT22
Utilizado este sitio como una guía para escribir el software que será capaz de leer el Sensor. Aconsejaron que necesitamos utilizar un programa en C para asegurar que siempre lee el sensor. El código original has ido modificado por Bam Bam Mantell para evitar bucles y mejorar el formato de las lecturas mejores para lectura en Splunk pues a Splunk le gusta el formato nombre_variable = valor para identificar fácilmente en el registro del log
Abra su editor de texto favorito linux y cree un archivo dat.c
Inserte este código en ella el archivo dht.c
<p>/*<br> * dht.c:
* read temperature and humidity from DHT11 or DHT22 sensor
*/
#include
#include
#include
#include
#define MAX_TIMINGS 85
#define DHT_PIN 3 /* GPIO-22 */
int data[5] = { 0, 0, 0, 0, 0 };
void read_dht_data()
{
uint8_t laststate = HIGH;
uint8_t counter = 0;
uint8_t j = 0, i;
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
/* pull pin down for 18 milliseconds */
pinMode( DHT_PIN, OUTPUT );
digitalWrite( DHT_PIN, LOW );
delay( 18 );
/* prepare to read the pin */
pinMode( DHT_PIN, INPUT );
/* detect change and read data */
for ( i = 0; i < MAX_TIMINGS; i++ )
{
counter = 0;
while ( digitalRead( DHT_PIN ) == laststate )
{
counter++;
delayMicroseconds( 1 );
if ( counter == 255 )
{
break;
}
}
laststate = digitalRead( DHT_PIN );
if ( counter == 255 )
break;
/* ignore first 3 transitions */
if ( (i >= 4) && (i % 2 == 0) )
{
/* shove each bit into the storage bytes */
data[j / 8] <<= 1;
if ( counter > 16 )
data[j / 8] |= 1;
j++;
}
}
/*
* check we read 40 bits (8bit x 5 ) + verify checksum in the last byte
* print it out if data is good
*/
if ( (j >= 40) &&
(data[4] == ( (data[0] + data[1] + data[2] + data[3]) & 0xFF) ) )
{
float h = (float)((data[0] << 8) + data[1]) / 10;
if ( h > 100 )
{
h = data[0]; // for DHT11
}
float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10;
if ( c > 125 )
{
c = data[2]; // for DHT11
}
if ( data[2] & 0x80 )
{
c = -c;
}
float f = c * 1.8f + 32;
printf( "Humidity=%.1f Temperature=%.1f\n", h, c );
}else {
printf( "Data not good, skip\n" );
}
}
int main( void )
{
if ( wiringPiSetup() == -1 )
exit( 1 );
read_dht_data();
return(0);
}</p>
El código anterior del archivo dot.c ahora necesita ser compilado, para ello escriba el comando
cc -Wall dht.c -o dht -lwiringPi
A continuación, puede ejecutar el programa con el comando
sudo ./dat
Usted debe ver algunas salida, lo cual sólo funcionará si el sensor está conectado correctamente y el código está trabajando. Se le mostrará una salida similar a la siguiente:
Humidity=66.9 Temperature=18.3 ........
Necesitamos llegar a utilizar Splunk para que lea archivos de registro. Así que los datos que estamos recogiendo de los sensores vamos a escribirlos en un archivo de registro, para que Splunk pueda monitorear los cambios.
Primero vamos a crear un directorio en la carpeta de inicio pi, llamada registros, para almacenar los archivos :
mkdir /home/pi/logs
Ahora, en el directorio cree un archivo script de bash
touch /home/pi/temperature_script.sh
Editar el archivo anterior con su editor de texto favorito ( vi ) e inserte este código:
#! /bin/bash
log="/home/pi/logs/"
#run the client
"/home/pi/dht" > temperature.txt
OUTPUT=`cat temperature.txt`
# Write values to the screen
TEMPERATURE=`echo "$OUTPUT"`
# Output data to a log file
echo "$(date +"%Y-%m-%d %T" ): ""$TEMPERATURE" >>"$log"temperature.log
Para automtizar la ejecución de este script vamos a utilizar Cron en la Raspberry Pi para ejecutar el trabajo, lo cual nos dará la flexibilidad de tiempo ejecutar cada uno de nuestros scripts
El sensor de temperatura requiere acceso de sudo (raíz) para ejecutarlos, así que tenemos que ejecutar el sudo crontab, para ello escriba el comando
sudo crontab -e
Agregue la línea en el archivo;
*/5 * * * * /home/pi/temperature_script.sh
Esto ejecutará el programa de temperatura cada cinco minutos.
A partir de este momento ,su registro debe empezar a mostrarse como en la siguiente imagen:.
Usted puede comprobar en el archivo de registro como se escriben nuevos datos con el comando
cat /home/pi/logs/temperature.log
Configurar la cámara web
Hemos habilitado anteriormente la cámara pero ahora vamos a instalar algun software para usarlo realmente , isa que vamos a configurar la cámara web.
El software se llama motion, y puede ejecutar un servidor web, para su visualización, detección de movimiento y marcos de registro y fotos. En esta configuración, se ve apagar pues no se cuenta con un montón de espacio para archivos de vídeo, así que se ejecutara para el control y utilizaremos el registro para el seguimiento de movimientos de sueño.
La instalación por defecto de movimiento no tiene soporte para la cámara de Pi. Así que estamos usando una compilación especial para trabajar con él. La guía completa está aquí.
Abra el archivo config del movimiento mmalcam.conf con su editor de texto favorito y actualize algunos de los ajustes, daemon para que se ejecute en background, aumento de altura video y video de calidad, el archivo de registro a nuestra ubicación y aumentar el nivel de registro para eventos.
daemon on
width=1280
height=720
logfile /home/pi/logs/motion.log
log_level 7
Apague el host local para que puede conectarse a él remotamente.
stream_localhost off
Text_Left es el texto que sale en el feed_
text_left Baby's Room %t
Hay una opción para nombre de usuario y contraseña para validarse si se conecta desde internet. De lo contrario dejarlo como está.
Guarde el archivo y empiece a detectar el movimiento con el comando
sudo ./motion -c motion-mmalcam.conf
Ahora podrá conectarse a la corriente de la web de la cámara
El navegador web, preferentemente Chrome o Firefox en
Y debe recibir un alimento vivo. También puede comprobar el registro de movimiento y ver si se registran eventos.
cat /home/pi/logs/motion.log
Estos eventos de movimiento son lo que vamos a contar para detectar movimientos de sueño.
Si desea apagar el LED rojo, hacer más discreta la cámara, editar la configuración de arranque
sudo vim /boot/config.txt
Agregue estas líneas, y después de reiniciar no vino en.
# Turn off camera Red LED
disable_camera_led=1
Instalar Splunk y promotor Universal
No vamos a entrar en mucho detalles sobre el servidor de Splunk. Se puede instalar en cualquier sistema operativo que se desee (Mac OSX , Linux,etc ). Tan sólo tiene que seguir la Guía de Splunk. Una vez tenga instalado Splunk, asegurase que se consiguió al menos una conexión receptora. El puerto predeterminado es 9997. Una vez que esto se realiza, y suponiendo que no hay cortafuegos bloqueará, puede configurar un promotor Universal para enviar datos.
Ir a Splunk y obtener el promotor universal para Linux. Necesita para obtener la versión para ARM .Siga las instrucciones en Splunk.
Ejecute al instalador de Splunk cuando tenga el archivo
tar xvzf splunkforwarder-<…>-Linux-arm.tgz -C /opt
Configurar el promotor para apuntar a su servidor de Splunk.
Editar el archivo en
sudo vim opt/splunkforwarder/etc/system/local/outputs.conf
Si su servidor es 192.168.0.10. tendrá que poner:
[tcpout:default-autolb-group]
server = 192.168.0.10:9997
Guardar y cerrar, ya puede comenzar a promotor de splunk
Nuestro promotor de Splunk ahora debe comenzar a recoger registros en ese directorio. Usted puede comprobar el registro de transportista de Splunk si su no va a verificar los problemas de
Ahora inicie sesión en el servidor de Splunk y confirmar si los datos está llegando.
Realizar una búsqueda de eventos
index=main source="/home/pi/logs/temperature.log"
Si se cambia a modo detallado de Splunk, deben identificar las variables de temperatura y humedad. Ahora usted puede ver a través de una búsqueda de Splunk, como;
Si el registro de movimiento es ingresado con éxito debemos tener eventos para él en Splunk ahora. Si buscamos eventos detectados, nos deberíamos volver resultados
index=main detected
Si tenemos resultados las podemos ver. Vamos a ver el volumen de eventos. Esto nos mostrará cuánto movimiento se detectó en el tiempo.
La consulta se ve así
index=main detected | timechart count span=5min
Combinando estas búsquedas y agregar a un panel de control podemos construir una gran cantidad de métricas útiles en interior y las temperaturas exteriores y movimientos del bebé.
La consulta para el interior y temperatura exterior juntos se ve así:
index=main source="/home/pi/logs/outside_weather.log" OR source="/home/pi/logs/temperature.log" | timechart max(Temperature) AS "Baby's Room" max(Outside_Weather) AS "Outside" span=30min
La potencia consumida , es la potencia capaz de transformar la energía eléctrica en trabajo dado que los diferentes dispositivos eléctricos existentes convierten la energía eléctrica en otras formas de energía(mecánica, lumínica, térmica, química, etc) .Esta potencia se designa con la letra P y se mide en vatios —watt— o kilovatios —kilowatt— (kW). De acuerdo con su expresión, la ley de Ohm y el triángulo de impedancias:
Debido a la gran importancia de la potencia eléctrica sobre las características del suministro eléctrico , hay algunos casos en los que puede ser conveniente cambiar la potencia contratada pues en la practica nos limitara o permitirá usar un determinado numero de dispositivos eléctricos simultáneamente
En este sentido, deberíamos estudiar si necesitamos un aumento o una reducción de la potencia contratada pues según la potencia que tengamos contratada con nuestra compañía suministradora pagaremos mas o menos en nuestra factura mensual en concepto de potencia contratada ademas de los kw/h que consumamos.
Precisamente para controlar este termino surge.el Interruptor Controlador de Potencia o llamado también ICP que corta el suministro cuando detecta que la instalación eléctrica de la vivienda está haciendo uso de más cantidad de energía de la que tiene contratada obligando a desconectar aparatos y volver a subir el interruptor. Tradicionalmente estos dispositivos se instalaban la derecha del cuadro de distribución de ca sellándose el acceso a este en un compartimiento aparte, pero actualmente van integrados en los llamados contadores inteligentes , los cuales incluso pueden ser programados para aumentar o reducir la potencia contratada sin tener que cambiar físicamente el dispositivo
Si el limitador sea del modelo que sea salta continuamente significa que hay menos potencia de la necesaria por lo que habrá que solicitar un aumento ( y tendremos que pagar un poco mas en concepto de potencia contratada ) pero, si no es así ,y se quiere ahorrar en las facturas de luz se puede solicitar una reducción de la potencia contratada , !pero ojo si realmente se ha comprobado que hay más potencia contratada de la que se necesita ! ( por ejemplo instalando en casa un watimtro como vamos a ver)
Precisamente para concienciarnos de lo que consumimos en nuestra vivienda en tiempo real para poder tomar medidas correctoras o para contratar mayor o menor potencia , existen unos sencillos comprobadores multifuncionales , que nos pueden aportar esa información instantáneamente de un modo bastante sencillo y económico , pues el modelo que vamos a verKKmoon AC 80-260 V 100A es muy económico ofreciéndonos en tiempo real la siguiente información:
Tensión de entrada de ca de la red de ca en voltios
Intensidad de entrada expresada en amperios
Potencia activa expresada en watios
Potencia acumulada en Watios/Hora
Alarma en caso de sobrepasar un determinado umbral de potencia activa programada previamente
Este modelo con gran pantalla retroiluminada y persistente (almacena los datos cuando cesa el suministro ) , como vemos se aleja de los anticuados instrumentos de aguja no solo ofreciendo mas información integrada en un único aparato,pues también incluye al función de alarma de sobrecarga pudiéndose programar la potencia a partir de la cual dará un aviso visual cuando se superan el valor por defecto.
Este instrumento se controla con un solo pulsador que esta a la izquierda de la pantalla permitiendo controlar la pantalla, energía, límite de alarma activada por defecto de energía de la nueva colocación.
Estos son los tres modos de operación actuando sobre ese pulsador:
RETROILUMINACION:Mediante una pulsación corta se activa o desactiva la retroiluminación estando por defecto encendida. En caso de programar alarma de umbral solo se enciende unos instantes
RESET;Mediante una pulsación larga de 5 segundos hasta que el numero en el display empiece a parpadear entonces liberar ,pulsar otra vez y entonces el valor de la energía se borrara y dejara de parpadear ( sino quiere esto vuelva a pulsar por 5 segundos hasta que el numero deje de parpadear lo que significara que el el valor de energía no se ha borrado y saldrá del estado de reset
PROGRAMACIÓN DEL UMBRAL:Pulsando hasta que aparezca SET CLr y después liberando entramos en modo programación del umbral de la alarma. En la pantalla se visualizara el valor de la alarma y el ultimo dígito parpadeando, entonces si pulsa cambiara el valor ,pero si no se pulsa en tres segundos cambiara al siguiente dígito automáticamente y así sucesivamente. Se finaliza la programación si pulsamos mas de 5 segundos lo cual automáticamente salvara el umbral y quedara configurado ese valor.
Instalación
Realmente es bastante sencillo de instalar ese dispositivo kkmon pues funciona de manera parecida a una pinza amperimetrica y solo necesita que pase por el interior de l a bobina que suministran SOLO uno de los cables que alimenta la vivienda para poder dar las medidas.
En primer lugar habrá que decidir el lugar donde ubicarlo , siendo lo mas aconsejable que este cerca del cuadro de distribución de ca pues necesitamos atravesar uno de los cables de la distribución de ca (no importa que sea la fase o el neutro) por la bobina del instrumento
En el esquema de mas abajo de una instalación típica de una vivienda podemos ver algunos de los puntos donde podríamos intercalar la bobina ( solo debe pasar un cable por la bobina de medición)
Recordamos que como hay que soltar el cable en los puntos mencionados ,hacer pasar por el cable la bobina y volverlo a colocar en su lugar el citado cable , debe extremar las medidas de seguridad para evitar exposición a la c.a. asi que si no tiene experiencia, rogamos solicite la ayuda de un profesional.
En todo caso ,antes de desconectar algunos de los cables propuestos en alguno de estos puntos, desconecte el interruptor general ( en el dibujo es el magnetotérmico que esta mas a la izquierda)y compruebe con un buscapolos o un multimetro que efectivamente no hay tensión en el cable a desconectar . Hecho este desconecte , intercale la bobina entre el cable , vuelva a conectar en el original y ya puede volver a conectar la ca
Una vez decido el punto donde intercalar la bobina, soltaremos ,pasaremos el cable y volveremos a conectar y luego si estaba protegido con cinta volveremos a cubrir la conexión con este
En el montaje hemos decidido instalar en la vieja caja ict , ya que al contar con contador inteligente el ict esta integrado en este, así que practicaremos un agujero de d 89,6 x 49,6 aprox. en el frontal de dicha caja
Opcionalmente se puede colocar otros elementos como por ejemplo un cargador usb para alimentar en un futuro algún dispositivo que envié las mediciones para poder ser consultadas remotamente.
Ahora ya insertaremos el medidor en el frontal de la caja ict
La iluminación de la pantalla es genial y permite ver en todo momento con claridad.
Nos queda conectar también el aparato de medición a la ca , bien a una toma de ca con un enchufe , o bien , ya que estamos en el cuadro de distribución de ca, a la salida de alguno de los magnetotérmicos de salida de los circuitos de la vivienda.
RECODAMOS TENGA MUCHA PRECAUCIÓN A LA HORA DE MANIPULAR LOS CABLES DE CA
Probaremos como va antes de atornillar la tapa a la caja
!Trabajo finalizado! Con esto concluimo la instalacion del dispositivo
Ajustes finales
Mediante una pulsación corta de 5 segundos del pulsador de la izquierda del instrumento se activa o desactiva la retroiluminación estando por defecto encendida. En caso de programar alarma de umbral solo se enciende unos instantes
Mediante una pulsación larga de 5 segundos del mismo pulsador hasta que el numero en el display empiece a parpadear entonces liberar ,pulsar otra vez y entonces el valor de la energía se borrara y dejara de parpadear ( sino quiere esto vuelva a pulsar por 5 segundos hasta que el numero deje de parpadear lo que significara que el el valor de energía no se ha borrado y saldrá del estado de reset
Pulsando hasta que aparezca SET CLr y después liberando entramos en modo programación del umbral de la alarma. En la pantalla se visualizara el valor de la alarma y el ultimo dígito parpadeando, entonces si pulsa cambiara el valor ,pero si no se pulsa en tres segundos cambiara al siguiente dígito automáticamente y así sucesivamente. Se finaliza la programación si pulsamos mas de 5 segundos lo cual automáticamente salvara el umbral y quedara configurado ese valor.
ThingSpeak™ es un servicio web gratuito muy veterano y del que hemos hablado en este blog en numerosas ocasiones que permite recopilar y almacenar datos de sensores conectados a Rasberry Pi, Arduino ,Netduino entre otros para enviarlos hacia un servicio de datalogger en la nube.
Asimismo también sirve para desarrollar aplicaciones de Internet de las cosas como por ejemplo desencadenar ciertas acciones ante determinados cambios en las medidas , tal y como vamos a ver en este caso desencadenando envíos de tweets con el motivo de la alerta.
El servicio de web de ThingSpeak es uno de los servicios mas veteranos en la red proporcionando aplicaciones que le permiten analizar y visualizar los datos en MATLAB®y luego actuar sobre los cambios en esos datos desencadenando acciones.
Los datos de los sensores pueden enviarse a ThingSpeak desde un Arduino®, Raspberry Pi™, BeagleBone Black asi como desde Netduino+ entre otras plataformas
En este post vamos a intentar ver cómo se puede enviar un tweet cuando los datos de punto de rocío superan un umbral usando dos aplicaciones como son ThingTweet y React :
ThingTweet sirve para vincular una cuenta Twitter® a su cuenta ThingSpeak. Sus dispositivos pueden enviar alertas a través de Twitter utilizando la API de TweetContol. Por ejemplo, puede hacer que un dispositivo tuitee cuando la temperatura de su invernadero disminuya o cuando las baterías de un dispositivo se estén agotando. Los pasos son sencillos : entraremos c en Link Twitter Account para vincular una cuenta de Twitter a su cuenta ThingSpeak y cuando se le pida que autorice a ThingTweet a usar su cuenta ingresaremos el nombre de usuario y contraseña de Twitter marcando la casilla Recordarme para guardar en caché las credenciales de Twitter en su pc y por supuesto haciendo clic en Autorizar aplicación
React funciona con las aplicaciones ThingHTTP, ThingTweet y MATLAB Analysis para realizar acciones cuando los datos del canal cumplen una determinada condición. Por ejemplo se puede hacer que una aplicación móvil informe su latitud y longitud a un canal ThingSpeak, de modo que cuando su posición esté dentro de una cierta distancia de su casa, ThingHTTP encienda las luces de su sala.
Como pasos previos para poder usar ambos servicios se requiere que ya han realizado estos pasos:
Crear una cuenta de Twitter® .
Iniciar sesión a su cuenta de MathWorks® o la cuenta de ThingSpeak™ , o crear una nueva cuenta de MathWorks .
Crear un canal como el canal calculados del punto de rocío.
Leer los datos de estación meteorológica( por ejemplo desde una placa Netduino) en su canal y calcular el punto de rocío como vimos en el post anterior
Nota : En este ejemplo vamos a utilizar una medida intermedia que es calculada en función de la humedad y temperatura , pero lógicamente los desencadenantes se pueden lanzar desde medidas sencillas que no requieran un calculo intermedio .
Vincular la cuenta de Twitter a ThingSpeak
Para empezar tenemos que vincular una cuenta de twitter a nuestra cuenta de thingspeak . Para ello puede seguir lo siguintes pasos:
Validese en su cuenta de ThinSpeak
Ir a aplicaciones(Apps) > ThingTweet.
En la página ThingTweet, haga clic en (enlace decuenta de Twitter (Link Twitter Account ) para vincular su cuenta de Twitter a tu cuenta de ThingSpeak.
Tiene que autorizar el acceso a su cuenta de twitter desde ThingSpeak
Introduzca su nombre de usuario de Twitter y contraseña y haga clic en Autorizar la aplicación.
En la página de autorización , haga clic en volver a ThingTweet(back to ThingSpeak). Nos avisara de que su cuenta de Twitter está relacionada con ThingSpeak devolviendonos el valor del APIKEY , el cual por cierto podemos fiorzar a cambiar gracis al boton Regenerate API Key.
Si queremos deshacer este cambio simplemente pulsaremos sobre el botón desenlazar cuenta («Unlink Account»)
Reaccionar al cambio en el punto de rocío
Una vez vinculada su cuenta de twitter a thingspeak ya podemos indicar a React que envie un tweet cada vez que el nivel de punto de rocío supere un valor va sobre 15ªC , testeando el canal cada 10 minutos.
Estos son los pasos para hacerlo:
Ir a aplicaciones > react hacera clic en Reaccionar de nuevo.
Nombre este react por ejemplo como «Tweet de punto de rocío.»
Defina el tiponumérico.
Ajuste la Frecuencia de la prueba a cada 10 minutos.
Establecer la condición cuando el valor de la humedad en su canal alcanza o supera los 60:
Si canal: seleccione el canal de medición de punto de rocío.
campo: seleccione 3 (punto de rocío).
Para el tipo de condición, seleccione es mayor o igual a.
El valor de condición, entre 60 (se refiere a grados Fahrenheit)
Ajuste acción en ThingTweet.
Entrar en esta cadena en tweet a continuación:
Turn off that humidifier! It's above 60F
Seleccione su cuenta de Twitter con la cuenta de Twitter.
En Opciones, elija Ejecutar acción cada vez que la condición se cumple.
Click Save React.
El tweet se envíara cada vez que el nivel de humedad supere los 15,5ºC o 60 ° F.
Es evidente que esta facilidad de ThingSpeak ,que sinsisteimo es soportado por un amplio abanico de hardware (como Raspberrry, Arduino o el propio Netduino), tiene una utilidad indudable para infinidad de condiciones que nos pueden facilitar la vida como por ejemplo apertura de puertas o ventanas, temperaturas anómalas , caídas de tensión , y un largo etcétera.
Este ejemplo muestra cómo leer datos de temperatura y humedad de ThingSpeak ( del canal 12397) , que recoge datos meteorológicos de un dispositivo de Iot que perfectamente puede ser una placa Arduino , Raspbery Pi o incluso un Netduino.La idea es enviar a los datos de temperatura y humedad en el canal de medición de punto de rocío, y calcular con arreglo a estos datos el punto de rocío utilizando ThingSpeak™ para visualizar los resultados en su canal.
El punto de rocío o temperatura de rocío es la más alta temperatura a la que se condensa el vapor de agua contenido en el aire, produciendo rocío, neblina, cualquier tipo de nube o, en caso de que la temperatura sea lo suficientemente baja, escarcha.
Este ejemplo requiere que ya han realizado estos pasos:
Iniciar sesión a su cuenta de MathWorks® o en la cuenta de ThingSpeak o crear una nueva cuenta de MathWorks .
Crear un canal como el canal de medición de punto de rocío.
Leer datos de un canal
Leer la temperatura y humedad en el canal público de WeatherStation campos 3 y 4 y escribir los datos en campos 2 y 1, respectivamente, de su canal de medición de punto de rocío. Punto de rocío es calculado y escrito a campo 3.
Para usar el análisis de MATLAB® para leer, calcular y escribir los datos siga los siguientes pasos:
Ir a la pestaña de aplicaciones y haga clic en Análisis de MATLAB.
Haga clic en nuevo. Seleccione la plantilla personalizada y haga clic en crear.
En el campo nombre , escriba.Dew Point Calculation
En el campo de código MATLAB, introduzca las siguientes líneas de código.
Guardar la estación pública canal ID y tu ID de canal de medición de punto de rocío a las variables.
readChId = 12397;
writeChId = 677; % replace with your channel number
Guardar su clave de API de escribir en una variable.
writeKey = 'F6CSCVKX42WFZN9Y'; % Replace with your channel write key
Para encontrar su canal ID y Write API Key, consulte información del canal en la pestaña de Mis canales .
Leer los últimos 20 puntos de datos de temperatura con las marcas de tiempo y la humedad en el canal público de la estación meteorológica en las variables.
% Enter your MATLAB Code below
readChId = 12397;
writeChId = ZZZZZ; % Replace with your channel number
writeKey = 'XXXXXXXXXXXXXXXX'; % Replace with your channel write key
[temp,time] = thingSpeakRead(readChId,'Fields',4,'NumPoints',20);
humidity = thingSpeakRead(readChId,'Fields',3,'NumPoints',20);
tempC = (5/9)*(temp-32);
b = 17.62;
c = 243.5;
gamma = log(humidity/100) + b*tempC./(c+tempC);
dewPoint = c*gamma./(b-gamma)
dewPointF = (dewPoint*1.8) + 32;
thingSpeakWrite(writeChId,[temp,humidity,dewPointF],'Fields',[1,2,3],...
'TimeStamps',time,'Writekey',writeKey);
Haga clic en Guardar y ejecutar para validar y procesar el código.Cualquier error en el código se indica en el campo de salida .
A ver si el código funcionó con éxito, haga clic en su enlace de canal de Medición de punto de rocío en el panel de Información del canal .
El canal de medición de punto de rocío ahora muestra gráficos con datos de un canal de cada campo.
Código del calendario
Utilizaremos la aplicación TimeControl para programar el cálculo del punto de rocío en el código de analisis MATLAB programando este para leer los datos de la estación cada 30 minutos y calcular el punto de rocío
Estos son los pasos a seguir:
Desplácese hasta la parte inferior de la página de MATLAB análisis cálculo de punto de rocío. Haga clic en TimeControl para abrir la aplicación MATLAB análisis pre-seleccion en el campo de acciones y el cálculo del punto de rocío como la ejecución de código.
Nombre de su nuevo TimeControl Dew Point TC
Elegir recurrentes en el campo de frecuencia .
Elegir el minuto en el campo de la repetición .
Seleccione 30 en el cada — minutos campo.
Mantener el Tiempo de inicio en el valor predeterminado.
Verificar que la acción es, y el código a ejecutar es el.MATLAB AnalysisDew Point Calculation
Haga clic en Guardar TimeControl
Nota:Configurar un TimeControl para escribir datos en el canal utiliza mensajes disponibles en su cuenta de ThingSpeak. Esta acción puede agotar eventualmente mensajes disponibles, que se traduce en rechazo del canal de alimentación de actualizaciones. Asegúrese de que los datos que escribes a un canal de no se superponen en el dominio del tiempo como hace uso innecesario de los mensajes.
Visualizar medida de punto de rocío
Se puede utilizar la aplicación visualizaciones de MATLAB para visualizar los datos de punto de rocío medido, la temperatura y la humedad de tu canal de medición de punto de rocío. Este ejemplo utiliza la función Mostrar todos los puntos de tres datos en una única visualización.thingSpeakPlot
Ir a aplicaciones > MATLAB visualizacionesy haga clic en nueva para crear una visualización.
Alternativamente, usted puede hacer clic en Visualización de MATLAB en su punto de vista del canal de medición de punto de rocío.
Seleccione la plantilla personalizada y haga clic en crear.
Nombre de la visualización «Punto de rocío.»
Crear variables para su ID de canal de medición de punto de rocío y su clave de API de lectura. Sustituya los valores en el código con tu canal ID y la clave de API de lectura.
readChId = 677
readKey = '36LPYCQ19U37ANLE'
Leer datos de los campos de canal y obtener los últimos 100 puntos de datos para:
Gracias a la plataforma de Cayenne , de la que hemos hablado en este blog en numerosas ocasiones es bastante sencillo monitorizar cualquier variable física de un modo realmente sencillo simplemente haciendo drug &drop desde el panel de control de Cayenne
En este ejemplo vamos a ver lo facil que es crear monitor temperatura con Cayenne , el cual utilizando internet sin tener conocimientos de programación conseguir controlar o monitorizar lo que quiera en tan solo unos minutos
En efecto gracias a un framework genérico desarrollado por myDevices IO Project Builder llamado Cayenne , los desarrolladores , fabricantes y también aficionados pueden construir rápidamente prototipos y proyectos que requieran controlar o monitorizar cualquier cosa conectada a una placa con conectividad , permitiendo con una sóla cuenta gratuita de Cayenne, crear un número ilimitado de proyectos mediante una solución muy sencilla basada en arrastrar y soltar
Obviamente el punto fuerte de cayenne son las capacidades de IO para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos de GPIO con almacenamiento ilimitado de datos recogidos por los componentes de hardware, triggers y alertas, que proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. Ademas también puede crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.
Resumidamente algunas características clave de esta novedosa plataforma son las siguientes:
Una aplicación móvil para configurar, el monitor y los dispositivos de control y sensores desde cualquier lugar.
Fácil instalación que conecta rápidamente los dispositivos, sensores, actuadores, y las extensiones en cuestión de minutos.
Motor de reglas para desencadenar acciones a través de dispositivos.
Panel personalizable con widgets de visualización de arrastrar y soltar.
Programación de las luces, motores y actuadores
Control de puertos que se pueden configurar desde una aplicación móvil o desde un navegador
Acceso remoto instantáneo desde su smartphone o con un ordenador
Para construir un proyecto de la IO a partir de cero se ha logrado el objetivo de proporcionar un Proyecto Generador de IO que reduce el tiempo de desarrollo de horas en lugar de meses.
Como veremos , hablamos de un constructor de sitio web fácil de usar, pero para proyectos de IOT, así que veamos los pasos para crear un proyecto de IoT con esta potente herramienta usando en esta ocasión un clon de Arduino con wifi : el ESP8266
Hardware y Software
El hardware y software a que necesitaremos es el que siguiente:
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:
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.
Conexión de DHT22 a ESP12E
El ESP12E esta basado en Arduino pero cuenta también conectividad wifi integrando la propia antena en la placa de circuito impreso en unas dimensiones de 25.6mm x 34.2mm . Además, por motivos de reducción de espacio esta placa no integra conexión usb , para lo cual necesitaremos un USB FTDI para programarlo o un controlador Setup CH340g.
Esta placa cuenta con 11 pines digitales de entrada / salida, todos los pines tienen interruptor / pwm / I2C / 1-wire siendo su chip principal el ESP8266 CH340G
Una gran diferencia con una placa Arduino es que solo cuenta con 1 entrada analógica (entrada máxima de 3,3 V)
Como vemos el circuito para conectar al ESP12E un sensor de temperatura no puede ser más sencillo, pues simplemente alimentaremos con 3.3v DC tanto el DHT22 como el ESP12E en sus pines correspondiente sin olvidar que la salida de datos del DH22(pin datos ) tenemos que conectarla al pin 5 del GPIO
Programar el ESP12E
Para probar Cayenne con el ESP12E necesitamos programar su ESP-12E para conectarse a su punto de acceso wifi . El código fuente a subir se puede descargar desde https://codebender.cc/embed/sketch:398516
Básicamente el código a subir al ESP12E usa 5 librerías: tres de Cayenne donde tendremos que definir el SSID y la pwd de la red wifi asi como las credenciales de Cayenne , una cuarta de temporización para enviar muestras a intervalos prefijados ( que obviamente podemos cambiar ) y por último la mencionada para la gestión del DTHXX
Es de destacar la creación de dos puertos virtuales para capturar los valores en tiempo real de la temperatura y la humedad tomadas ambas del DHTXX , lo cual nos van a permitir comunicarnos con el API de Cayenne
#include "CayenneDefines.h"#include "CayenneWiFi.h"#include "CayenneWiFiClient.h"#include <SimpleTimer.h>#include "DHT.h"#define CAYANNE_DEBUG#define CAYANNE_PRINT Serial#define DHTPIN 5#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.// Change the value of token, ssid, and pwd to yourschar token[] = "xxxxxx";char ssid[] = "xxxxxx";char pwd[] = "xxxxx";DHT dht(DHTPIN, DHTTYPE);void setup() {// put your setup code here, to run once:Serial.begin(115200);Cayenne.begin(token, ssid, pwd);dht.begin();}CAYENNE_OUT(V0){float t = dht.readTemperature();Cayenne.virtualWrite(V0, t); //virtual pin}CAYENNE_OUT(V1){float h = dht.readHumidity();Cayenne.virtualWrite(V1, h); //virtual pin}void loop() {Cayenne.run();}
Importante: Necesitaremos actualizar en el código anterior cambiando el valor de ssid, contraseña configurandola para la red wifi de su hogar y también no olvidar registrar el token de Cayenne que previamente habrá solicitado desde la propia web de cayenne.
Configuración Cayenne Dashboard
Hemos hablado en muchas ocasiones de Cayenne pues en realidad está concebido para que su manejo sea realmente sencillo de configurar
Tras registrarnos nos iremos al panel de control ,clicamos en Add new y seleccionamos generic ESP8266
A continuación nos ofrece la API key que deberemos añadir al sw del ESP12E y tras reiniciarlo ya debería poderse comunicar con el node de Cayenne
Si la placa pues está configurada con el MQTT ( username /pwd) asi como con conectividad wifi , ya debería de poder conectarse al framework de Cayenne y podemos seguir hacia adelante añadiendo sensores que deberan estar de acuerdo con el sw instalado en el ESP12E
En este caso como hemos definido dos puertos virtuales para temperatura y humedad el firmware del ESP12E , necesitamos añadir dos widgets asociados a esos dos canales:
Para la temperatura no olvidar que habíamos asignado el primer puerto virtual, el cual ue debemos asignar al widget:
Para la humedad no olvidar que habíamos asignado el segundo puerto virtual, el cual ue debemos asignar al widget:
Finalmente al asignar los dos widgets , si esta la placa conectada , debería mostrar un panel similar al siguiente en el que se jha añadido un widget nuevo asociado al puerto analogico
Configuración de su primer trigger
Los triggers o disparadores en Cayenne son una forma de hacer que su placa reaccione a un cambio de un sensor conectado a él.Esto podría ser algo tan simple como un valor de temperatura superior a un cierto valor o incluso sólo si el ESP12E pierde la conexión, lo cual como se podría imaginar puede ser muy potente en la creación de dispositivos inteligentes que reaccionan a los alrededores ( como por ejemplo, si la habitación se pone demasiado fría, encienda un calefactor, etc ).
El proceso de agregar un disparador es muy sencillo como vamos a ver a continuacion:
Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
Seleccionar un trigger desde el cuadro de abajo.
El nombre de su trigger, voy a llamar a la mía “demasiado caliente”.
Ahora arrastrar y soltar su ESP12E desde la esquina izquierda en el caso de la caja.
Por debajo de esto seleccionar el sensor de temperatura y tienen casilla junto a “por encima de la temperatura” seleccionado.(Si las opciones del dispositivo no se muestran simplemente actualizar la página)
Ahora en el cuadro de selección a continuación, notificación y agregar una dirección de correo electrónico o número de teléfono de un mensaje de texto (puede agregar ambos).Asegúrese de marcar las casillas de verificación también.
Ahora haga clic en “Save trigger”.
Ahora se debe guardar y le enviará una alerta cada vez que el sensor de temperatura es más de 40 grados Celsius.
También puede arrastrar el ESP12E en el cuadro a continuación, y tienen que hacer muchas cosas, incluyendo el control de los dispositivos de salida.Por ejemplo, puede añadir un LED que se activará cuando la temperatura supere los 40 grados Celsius.
Para hacer clic en el gatillo de disparo LED de nueva situada en la parte superior de la página.Nombre esta activar el gatillo LED.
Ahora arrastrar el Pi en el caso de la caja y luego seleccione el sensor de temperatura de nuevo con 40 grados centígrados por encima.
Ahora arrastrar el ESP12E en cuadro a continuación.Seleccione nuestra salida digital y marque la casilla de verificación activada.
Ahora haga clic en Save trigger.
Ahora, cada vez que nuestro sensor de temperatura conectado al Pi informe una temperatura superior a 40 grados Celsius, enviará un correo electrónico y encenderá el LED.También necesitará agregar otro disparador para apagar el LED cuando caiga por debajo de los 40
Sin duda hay infinitas posibilidades como el lector puede imaginar
Tadoº es una empresa, acelerada por los fondos Amérigo, que ha desarrollado un original termostato de climatización inteligente así como un termostato inteligente ,que a gran diferencia de otros equipos que requieren intercalar electrónica en el sistema de calefacción o climatización , con este nuevo sistema simplemente se envían las órdenes por infrarrojos correspondientes al equipo climatizador que se tenga en el caso del sistema de climatización inteligente o bien se coloca directamente sobre las válvulas de los radiadores en el caso de los termostatos inteligentes.
En el caso de climatización , el dispositivo funciona con casi todos los aires acondicionados pues es compatible con aquellos que se controlen con un mando a distancia por infrarrojos que muestre los ajustes actuales del aire acondicionado :por ejemplo, el modo, la temperatura de consigna y la velocidad del ventilador, puesto que la instalación se hace con el mando a distancia de modo muy fácil.
Con el modo de aprendizaje, tado° puede aprender los comandos desde su viejo mando a distancia y a partir de ahí ya se podría controlar desde el mando del dispositivo o desde la app dado que el dispositivo se conecta a internet a través de Wi-Fi.
Este equipo a diferencia de los convencionales, los cuales se limitan a programar unas horas y temperaturas, tiene en cuenta la ubicación de sus usuarios para determinar si es necesario adelantar el encendido de la calefacción o el sistema de climatización o si puede demorarlo para no gastar dinero innecesariamente.
Gracias a la ubicación de una App en el teléfono del usuario, tado° ajusta el aire acondicionado de manera automática, es decir, pre-enfría antes de llegar a casa y apaga el aire al estar ausente, lo que permite ahorrar hasta un 40% en los costes de la factura de energía sin sacrificar el bienestar y el confort
Los dispositivos pueden ser controlados de forma remota a través de una unidad de control central. Por ejemplo, un teléfono móvil puede establecer la conexión a través de internet en cualquier momento y en cualquier lugar. Con la app móvil de tadoº, es posible controlar y regular el sistema de aire acondicionado de forma flexible informando desde la app de la temperatura actual de tu hogar, los ahorros que esto supone y permitiendo controlar su aparato de aire acondicionado de forma remota desde cualquier lugar.
Utiliza control por geolocalización: para maximizar el ahorro, tado° usa la ubicación de los residentes para asegurarse de que el aire acondicionado se apaga automáticamente cuando la última persona salga de casa, y empezará a enfriar de nuevo cuando detecte a la primera persona volver permitiendo ahorrar de este modo hasta un 40% en gastos de energía.
Gracias al internet de las cosas, las familias y las empresas pueden reducir los costes de energía de manera significativa por ejemplo según sus creadores afirman con el control inteligente es posible ahorrar hasta un 31% en los costes de energía.
Además de ahorrar en los costes, el IoT garantiza la reducción del consumo de energía y el uso de recursos eficientemente puesto que el sistema apaga la climatización de forma automática cuando el último residente sale del edificio y la vuelve a encender justo cuando detecta a la primera persona volver.
La conexión de los dispositivos, ofrece un incremento de calidad de vida y más confort,pues estos sistemas regulan su sistema de calefacción o aire acondicionado automáticamente sin tener que realizar ninguna modificación adiciona simplificando la vida de las personas que lo usan.
Por ultimo en el el caso de Tado este sistema de Climatización Inteligente ofrece distintas posibilidades de integración, como Google Home, Amazon Echo para controlar tu calefacción con comandos de voz o crear Applets con IFTTT para conectar con otras aplicaciones y dispositivos inteligentes.
En post anteriores hemos visto la potencia de Microsft Azure en torno al Universo del Edge Iot Computing mostrando de una forma clara como es posible con una Raspeberry Pi 3 o un ESP8266 empezar a utilizar con muy buenos resultados dicha plataforma, pues bien como no podía ser de otra forma Google también ha desarrollado su propia plataforma denominada Google Cloud Iot Core
Cloud IoT Core es un servicio completamente administrado que le permite conectar, administrar e ingerir datos de manera fácil y segura desde millones de dispositivos dispersos a nivel mundial. Cloud IoT Core, en combinación con otros servicios en la plataforma Google Cloud IoT, proporciona una solución completa para recopilar, procesar, analizar y visualizar datos de IoT en tiempo real para admitir una mejor eficiencia operativa.
loud IoT Core, que utiliza Cloud Pub / Sub debajo, puede agregar datos de dispositivos dispersos en un solo sistema global que se integra perfectamente con los servicios de análisis de datos de Google Cloud. Por ejemplo puede usarse el flujo de datos de IoT para análisis avanzados, visualizaciones, aprendizaje automático y más para ayudarlo a mejorar la eficiencia operativa, anticipar problemas y crear modelos completos que describan y optimicen mejor su negocio.
Cloud IoT Core es compatible con los protocolos estándar MQTT y HTTP, por lo que se pueden usar dispositivos existentes con mínimos cambios de firmware.AsimismoGoogle Cloud IoT Core se ejecuta en la infraestructura sin servidores de Google, que se amplía automáticamente en respuesta a los cambios en tiempo real y se adhiere a los estrictos protocolos de seguridad estándar de la industria que protegen los datos de su empresa
En este post veremos Google Cloud Platform Console para crear un registro de dispositivos Cloud IoT Core y registrar un dispositivo. También veremos cómo conectar un dispositivo y publicar eventos de telemetría del dispositivo.
Como siempre antes de empezar se requiere cumplir ciertos requisitos:
Inicie sesión en su cuenta de Google. (si aún no tiene uno, regístrese para obtener una cuenta nueva) .
Habilite las API Cloud IoT Core y Cloud Pub / Sub.Habilita las API
Configure Google Cloud SDK y gcloud
Instale Google Cloud SDK . Cloud IoT Core requiere la versión 173.0.0 o superior del SDK.
Ejecute el siguiente comando para actualizar la CLI de gcloud que se incluye en el SDK:
gcloud components update
Si está utilizando una máquina virtual de Compute Engine con la instalación predeterminada de gcloud, no podrá actualizar los componentes. Para habilitar Cloud IoT Core en una máquina virtual de Compute Engine, reinstale gcloud ejecutando los siguientes comandos:
Para obtener más detalles, consulte la documentación de referencia de los comandos de gcloud iot .
Introducción al Cloud IoT Core
Registro del dispositivo
Para que un dispositivo se conecte, primero debe registrarse con Cloud IoT Core. El registro consiste en agregar un dispositivo a una colección (el registro) y definir algunas propiedades esenciales. Puede registrar un dispositivo con Cloud Platform Console, comandos gcloud o la API REST-style. En conjunto, las funciones que le permiten registrar, monitorear y configurar dispositivos se llaman administrador de dispositivos.
Protocolos (MQTT y HTTP)
Cloud IoT Core admite dos protocolos para la conexión y comunicación del dispositivo: MQTT y HTTP. Los dispositivos se comunican con Cloud IoT Core a través de un «puente», ya sea el puente MQTT o el puente HTTP. Cuando crea un registro de dispositivo, selecciona protocolos para habilitar: MQTT, HTTP o ambos.
MQTT es un protocolo de publicación / suscripción estándar que los dispositivos integrados usan y soportan con frecuencia, y también es común en las interacciones máquina a máquina.
HTTP es un protocolo «sin conexión»: con el puente HTTP, los dispositivos no mantienen una conexión con el Núcleo Cloud IoT. En cambio, envían solicitudes y reciben respuestas.
Autenticación de dispositivo
Cloud IoT Core utiliza autenticación de clave pública (o asimétrica):
El dispositivo usa una clave privada para firmar un JSON Web Token (JWT) . El token se pasa al Cloud IoT Core como prueba de la identidad del dispositivo.
El servicio utiliza la clave pública del dispositivo (cargada antes de que se envíe el JWT) para verificar la identidad del dispositivo.
Control del dispositivo desde la nube
Con Cloud IoT Core, puede controlar un dispositivo modificando su configuración. Una configuración de dispositivo es una acumulación arbitraria de datos definidos por el usuario que pueden estructurarse o no. Si sus dispositivos usan MQTT, las configuraciones se propagan automáticamente a ellos. Si sus dispositivos se conectan a través de HTTP, deben solicitar configuraciones explícitamente.
Configurando dispositivos
Con Cloud IoT Core, puede controlar un dispositivo modificando su configuración. La configuración de un dispositivo es una burbuja de datos arbitraria y definida por el usuario. Después de que se haya aplicado una configuración a un dispositivo, el dispositivo puede informar su estado a Cloud IoT Core.
La configuración del dispositivo funciona de manera diferente en los puentes MQTT y HTTP. Ver abajo para más detalles.
Límites
Las actualizaciones de configuración están limitadas a 1 actualización por segundo,por dispositivo. Sin embargo, para obtener los mejores resultados, la configuración del dispositivo debe actualizarse con mucha menos frecuencia, como máximo, una vez cada 10 segundos.
La tasa de actualización se calcula como el tiempo entre el acuse de recibo más reciente del servidor y la próxima solicitud de actualización.
Diferencias de protocolo
MQTT
Los dispositivos que usan MQTT pueden suscribirse a un tema especial de MQTT para actualizaciones de configuración:
/ devices / {device-id} / config
Cuando un dispositivo se suscribe al tema de configuración, el puente MQTT responde con un mensaje SUBACK MQTT, que contiene la QoS concedida para el tema de configuración (0 o 1) o 128 si se produce un error.
Después de suscribirse inicialmente, el dispositivo recibe la configuración más reciente en la carga útil de un mensaje y recibirá actualizaciones de configuración adicionales a medida que se envíen a Cloud IoT Core.
Las siguientes muestras ilustran cómo recuperar las actualizaciones de configuración en un dispositivo a través de MQTT usando Python:
def get_client(
project_id, cloud_region, registry_id, device_id, private_key_file,
algorithm, ca_certs, mqtt_bridge_hostname, mqtt_bridge_port): «»»Create our MQTT client. The client_id is a unique string that identifies
this device. For Google Cloud IoT Core, it must be in the format below.»»»
client = mqtt.Client(
client_id=(‘projects/{}/locations/{}/registries/{}/devices/{}’ .format(
project_id,
cloud_region,
registry_id,
device_id)))
# With Google Cloud IoT Core, the username field is ignored, and the # password field is used to transmit a JWT to authorize the device.
client.username_pw_set(
username=‘unused’,
password=create_jwt(
project_id, private_key_file, algorithm))
# Register message callbacks. https://eclipse.org/paho/clients/python/docs/ # describes additional callbacks that Paho supports. In this example, the # callbacks just print to standard out.
client.on_connect = on_connect
client.on_publish = on_publish
client.on_disconnect = on_disconnect
client.on_message = on_message
# Connect to the Google MQTT bridge.
client.connect(mqtt_bridge_hostname, mqtt_bridge_port)
# This is the topic that the device will receive configuration updates on. mqtt_config_topic =‘/devices/{}/config’.format(device_id) # Subscribe to the config topic. client.subscribe(mqtt_config_topic, qos=1)
return client
HTTP
Si está utilizando el puente HTTP , los dispositivos deben solicitar explícitamente nuevas configuraciones .
El siguiente ejemplo en python ilustran cómo recuperar las actualizaciones de configuración en un dispositivo a través de HTTP:
Los dispositivos se actualizarán de acuerdo con el protocolo que usan .
Usando Cloud iot Core API
Para actualizar la configuración del dispositivo a través de la API, use el método Device modifyCloudToDeviceConfig , especificando la nueva configuración en el campo config . También puede especificar una configuración al crear un dispositivo y luego usar modifyCloudToDeviceConfig para cambiarla más tarde.
El siguiente ejemplo en Pythoon ilustran cómo actualizar la configuración de un dispositivo:
Por ultimo tambien uede revisar las últimas 10 versiones de la configuración de un dispositivo mediante Cloud Platform Console, la API o gcloud.
Consola
Vaya a la página Registros del dispositivo en la Consola GCP.
Haga clic en el ID del registro que contiene el dispositivo cuya configuración desea actualizar.
En la página de detalles del registro , haga clic en el ID del dispositivo cuya configuración desea actualizar.
Haga clic en Configuración e historial de estado.
Utilice las casillas de verificación para controlar si se muestra el historial de configuración o el historial de estado, o ambos. Haga clic en Comparar para ver si la configuración y el estado coinciden como espera.
Azure Logic Apps proporciona una forma de automatizar procesos como una serie de pasos. Una aplicación lógica se puede conectar a través de varios servicios y protocolos. Comienza con un activador como ‘Cuando se agrega una cuenta’, y luego una combinación de acciones, una como ‘enviar una notificación de inserción’. Esta característica hace que Logic Apps sea una solución de IoT perfecta para la monitorización de dispositivos IoT, como por ejemplo para alerta ante anomalías, entre otros escenarios de uso.
Resumidamente estas son las cosas que necesitaremos hacer par lograr nuestro objetivo:
Crear un espacio de nombres del autobús de servicio y añadir una cola a él.
Añadir un punto final y una regla de enrutamiento a su hub de IoT.
Crear, configurar y probar una aplicación de la lógica.
Crear espacio de nombres de Servicio del Bus y añadirle una cola
Crear un espacio de nombres del bus de servicio
En el portal de Azure, haga clic en crear un recurso >Enterprise Integration(Integración empresarial )> Service Bus.
Proporcione la siguiente información:Nombre: el nombre del bus de servicios.Pricing tier déjelo en Standard .
En suscripción dejelo en Evaluación gratuitaGrupo de recursos: utilizar el mismo grupo de recursos que utiliza el hub de IoT.
Ubicación: utilizar la misma ubicación que utiliza el hub de IoT.
Pinchar Anclar al panel
Haga clic en crear.
Añadir una cola de autobús de servicio
Abrir el espacio de nombres del Bus de servicio y haga clic en + Quue(cola.)
Introduzca un nombre para la cola y haga clic en crear.
Abrir la cola del Bus de servicio(entities-Queues-el nombre del la nueva cola ) y haga clic en CONFIGURACION –Shared access policies (directivas de acceso compartido) > + añadir.
Introduzca un nombre para la política de controlar administrar y haga clic en create (crear).
Añadir un punto final y una regla de enrutamiento a su hub de IoT
Añadir un punto final
Abrir su centro de IoT, haga clic en Mensajeria—Puntos de conexión > + Añadir.
Introduzca la siguiente información: Nombre: el nombre del extremo.Tipo de punto final: seleccione Cola de autobús servicio.Espacio de nombres del servicio de bús: seleccionar el espacio de nombres que creó.
Cola de Service Bus: seleccione la cola creada.
Haga clic en Aceptar.
Agregar una regla de enrutamiento
En su centro de Internet, haga clic en MENSAJERIA – rutas > + añadir.
Introduzca la siguiente información:Nombre: el nombre de la regla de enrutamiento.Fuente de datos: seleccionar DeviceMessages.Punto final: seleccione el punto final de ha creado.
Cadena de consulta: entrar.temperatureAlert = "true"
Haga clic en Guardar.
Crear y configurar una aplicación de lógica
Crear una aplicación de lógica
En el portal de Azure, haga clic en crear un recurso >Enterprise Integration( Integración empresarial )> Lógic app.
Introduzca la siguiente información:Nombre: el nombre de la aplicación de la lógica.Grupo de recursos: utilizar el mismo grupo de recursos que utiliza el hub de IoT.Ubicación: utilizar la misma ubicación que utiliza el hub de IoT.
Haga clic en crear.
Configurar la aplicación de la lógica
Abra la lógica de la aplicación que se abre en el diseñador de aplicaciones de la lógica.
En el diseñador de aplicaciones de lógica, haga clic en BlanK Logic App
Haga clic en Service Bus.
Haga clic en el Servicio de Bus cuando uno o varios mensajes en una cola (Autocompletar).
Crear una conexión de bus de servicio.
Introduzca un nombre de conexión.
Haga clic en el espacio de nombres de servicio bus > la política de autobús servicio > crear.
Haga clic en continuar después de la conexión de bus de servicio.
Seleccione la cola que creó e introduzca para recuento de mensajes máximo175
Haga clic en «Guardar» el botón para guardar los cambios.
Crear una conexión de servicio de SMTP.
Haga clic en nuevo paso > Agregar una acción.
Tipo, haga clic en el servicio SMTP en el resultado de la búsqueda y haga clic en SMTP – envíe correo electrónico.SMTP
Introduzca la información de SMTP del buzón y haga clic en crear.Obtenga la información de SMTP para Hotmail/Outlook.com, Gmaily Yahoo Mail. ( Nota :Su proveedor de servicios de correo electrónico necesitará verificar la identidad de remitente para asegurarse de que eres tú quien envía el correo electrónico9.
Introduzca su dirección de correo electrónico para de y ay para asunto y el cuerpo.High temperature detected
Haga clic en Guardar.
La aplicación de la lógica estará en orden de funcionamiento en cuanto se guarde así que ya podemos probar su funcionalidad así que :
Aumentar la temperatura del ambiente alrededor del Sensor por encima de 30 C.(por ejemplo, encendiendo una vela cerca del sensor ).
Usted debe recibir una notificación por correo electrónico enviada por la aplicación .
Hemos visto lo relativamente sencillo que es crear una aplicación lógica que conecta el hub de IoT y buzón para monitorizar temperatura y enviar notificaciones.
La Extensión de la IoT para Azure CLI 2.0 es una nueva extensión para IoT en código abierto que añade a las capacidades de Azure CLI 2.0, la cual como vamos a ver incluye comandos para interactuar con el administrador de recursos Azure como por ejemplo, puede utilizar Azure CLI 2.0 para crear una VM de Azure o un IoT Hub.
Una extensión CLI permite un servicio de Azure incrementar el Azure CLI dando acceso a funciones adicionales específicas de servicio como vamos a ver.
La extensión de IoT da IoT permite a los desarrolladores y aficionados acceso desde línea de comandos a todos los IoT Hub, IoT Edge, y las capacidades de IoT Hub Device Provisioning Service
Algunos ejemplos de posibilidades que ofrece esta extension:
Opción de manejo
Tarea
Métodos directos
Hacer un dispositivo actuar como arrancar o parar el envío de mensajes o reiniciar el dispositivo.
Propiedades de dos deseadas
Poner un dispositivo en algunos estados, tales como poner establecer un LED a verde o establecer el intervalo de enviar telemetría cada 30 minutos.
Doble registrados propiedades
Obtener el estado que informó un dispositivo. Por ejemplo, el dispositivo informa que el LED parpadea ahora.
Etiquetas de doble funcion
Almacenar metadatos específicos del dispositivo en la nube. Por ejemplo, la situación de la implementación de una máquina expendedora.
Consultas de doble dispositivo
Consulta todos los gemelos de dispositivo para recuperarlas condiciones arbitrarias, tales como identificar los dispositivos que están disponibles para su uso.
Device twins (Gemelos de dispositivo) son documentos JSON que almacenan información de estado del dispositivo (metadatos, configuraciones y condiciones). Eje de IoT persiste a una doble dispositivo de cada dispositivo que se conecta a él.
Extensión de IoT para Azure CLI 2.0
Vamos a ver usar la extensión de IoT para Azure CLI 2.0 con varias opciones de manejo en nuestra máquina de desarrollo ejecutando Azure CLI 2.0 y la extensión de IoT para Azure CLI 2.0 con varias opciones de gestión.
Para poder usar esta extensión necesitaremos haber configurado el dispositivo completo de Iot cubriendo los siguientes requisitos:
Una suscripción activa de Azure.
Un centro de Azure IoT bajo su suscripción.
Una aplicación de cliente que envíe mensajes a su hub de IoT de Azure.
Debemos asegurarnos de que el dispositivo se está ejecutando con la aplicación de cliente .Por ejemplo un método muy cómodo de comprobarlo es usando la herramienta Microsoft Azure Storage siempre que hayamos vinculado nuestro Hub de Iot a Azure Storage (como vimos es este post) ,pues desde esta herramienta podremos ver fácilmente el contenido de los mensajes enviados por el dispositivo
Microsoft Azure IoT Extension for Azure CLI 2.0 proporciona nuevos y emocionantes comandos y capacidades de IoT centrados en los servicios IoT Hub y IoT Device Provisioning. La funcionalidad se proporciona como un paquete de extensión CLI de Azure para una integración perfecta con la funcionalidad de línea de comandos existente.
La extensión aumenta el Azure CLI IoT de Azure agregando o modificando el espacio de comando existente. La extensión incluye capacidades en las siguientes categorías:
IoT Hub
IoT Edge
IoT Device Provisioning Service (DPS)
Instalación
Paso1; Instalación de Python.
Como requisito previo se necesita instalar Python en el equipo de desarrollo. Podemos instalar Python 2.7 x o Python 3.x. Python 3.65 es la ultima version disponible y que podemos instalar. Simplemente ir a https://www.python.org/downloads/ pinchar sobre enlace para descargar la ultima version y después ejecutar el instalable para lanzar la instalación.
Paso 3:Instalar Azure CLI 2.0
Tambien necesitamos instalar el cliente de Azure CLI 2.0 para agregar despuesla extensión IoT. Podemos instalar directamente con un instalador desde Windows el cliente CLI , para ello descargaremos MSI y luego lo instalaremos en nuestro equipo de desarrollo
Como mínimo, la versión Azure CLI 2.0 debe ser 2.0.24 o superior. Esta versión admite los comandos de extensión az e introduce el marco de comandos knack, es por eso que podemos utilizar para comprobarlo el comando desde linea de comandos (cmd):
az --version.
Por ejemplo este el resultado de la ejecución de este comando con la ultima version instalada (2.0.31) del cliente de Azure:
Python (Windows) 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
Legal docs and information: aka.ms/AzureCliLegal
También puede seguir las instrucciones de instalación en Microsoft Docs configurar Azure CLI 2.0 en su entorno.
Paso 4: Instalación de la extensión de cliente de Azureo pare IoTI
Finalmente también tenemos que instalar la extensión de la IoT ahora que tiene una extensión de cliente de Azure compatible instalado.
Cuando se instala una extensión, cualquier dependencia adicional de Python requerida se descarga y se instala automáticamente.
Hay múltiples opciones para la instalación. Después de instalar la extensión, puede usar una lista de extensiones az para validar las extensiones instaladas actualmente o la extensión az show – nombre azure-cli-iot-ext para ver detalles sobre la extensión IoT.
En todos los casos, asegúrese de que la extensión IoT sea la versión 0.3.2 o superior.
La extensión está diseñada para ser plug-and-play con Azure CLI. Incluso si tiene Azure CLI instalado, asegúrese de que esté actualizado.La forma más sencilla es ejecutar el siguiente comando.
az extension add --name azure-cli-iot-ext
Puede usar el comando az list list-available para ver todas las extensiones disponibles en el índice y es posible tambien actualizar una extensión en su lugar utilizando la extensión az update –name, AsimismoEl IoT extensión archivo Léame describe varias maneras de instalar la extensión.
Paso 5:Inicie sesión en Azure
Inicie sesión su cuenta Azure ejecutando el siguiente comando:
az login
Ahora vaya a la pagina https://microsoft.com/devicelogin e introduzca el código que devuelve el comando en la pagina anterior para validarse.
Una vez aceptada en la página nos pide nuestro login de la cuenta de Azure y tras aceptarse ya no es necesario continuar en el navegador y a partir de aqui ya estan disponible los comandos posibles de Azure CLI
Una validado nos dará un mensaje de finalizacioó
Ahora desde linea de comando tenemos muchas posibilidades :
Hub
Command group: az iot hub
az iot hub query
az iot hub generate-sas-token az iot hub show-connection-string
az iot hub apply-configuration
az iot hub invoke-device-method az iot hub invoke-module-method
Hub Device Identity
Command group: az iot hub device-identity
az iot hub device-identity create az iot hub device-identity show az iot hub device-identity list az iot hub device-identity update az iot hub device-identity delete
az iot hub device-identity show-connection-string
az iot hub device-identity import az iot hub device-identity export
Hub Device Twin
Command group: az iot hub device-twin
az iot hub device-twin show az iot hub device-twin replace az iot hub device-twin update
Hub Module Identity
Command group: az iot hub module-identity
az iot hub module-identity create az iot hub module-identity show az iot hub module-identity list az iot hub module-identity update az iot hub module-identity delete
az iot hub module-identity show-connection-string
Hub Module Twin
Command group: az iot hub module-twin
az iot hub module-twin show az iot hub module-twin replace az iot hub module-twin update
Edge Deployment
Command group: az iot edge deployment
az iot edge deployment create az iot edge deployment show az iot edge deployment list az iot edge deployment update az iot edge deployment delete
Device
Command group: az iot device
az iot device send-d2c-message az iot device simulate az iot device upload-file
Device c2d-message
Command group: az iot device c2d-message
az iot device c2d-message receive
az iot device c2d-message complete az iot device c2d-message abandon az iot device c2d-message reject
DPS Enrollment
Command group: az iot dps enrollment
az iot dps enrollment create az iot dps enrollment show az iot dps enrollment list az iot dps enrollment update az iot dps enrollment delete
DPS Enrollment Group
Command group: az iot dps enrollment-group
az iot dps enrollment-group create az iot dps enrollment-group show az iot dps enrollment-group list az iot dps enrollment-group update az iot dps enrollment-group delete
DPS Registration
Command group: az iot dps registration
az iot dps registration show az iot dps registration list az iot dps registration delete
Importante:
Añada –help o -h a un grupo de comandos o comando para obtener más información.
Para grupos de comandos, esto revelará los comandos del grupo objetivo
Para los comandos, esto revelará información sobre los parámetros y puede incluir ejemplos de uso.
Algunos ejemplos de uso prácticos:
Metodos directos : Se puede invocar directamente desde linea de comandos: az iot hub invoke-device-method –device-id –hub-name –method-name –method-payload
Propiedades del dispositivo gemelo deseado: Por ejemplo se puede establecer una propiedad de intervalo = 3000 ejecutando el siguiente comando: az iot hub device-twin update -n -d –set properties.desired.interval = 3000 Esta propiedad puede ser leída tamnbien desde su dispositivo.
Propiedades del doble dispositivo registrados : se pueden obtener las propiedades divulgadas del dispositivo ejecutando el siguiente comando: az iot hub device-twin update -n -d –set properties.reported.interval = 3000 . Una de las propiedades es $metadata. $lastUpdated que muestra la última vez que este dispositivo envía o recibe un mensaje.
Etiquetas de doble dispositivo: Se pueden mostrar las etiquetas y propiedades del dispositivo ejecutando el siguiente comando: az iot hub device-twin show –hub-name –device-id Agregar una función de campo = temperatura & humedad al dispositivo ejecutando el siguiente comando:az iot hub device-twin update –hub-name –device-id –set tags = ‘{«role»:»temperature&humidity»}}’
Consultas de doble dispositivo :Consulta de dispositivos con una etiqueta de papel = ‘temperatura & humedad’ ejecutando el siguiente comando:az iot hub query –hub-name –query-command «SELECT * FROM devices WHERE tags.role = ‘temperature&humidity’«
Consulta todos los dispositivos excepto los que tienen una etiqueta de papel = ‘temperatura & humedad’ ejecutando el siguiente comando:az iot hub query –hub-name –query-command «SELECT * FROM devices WHERE tags.role != ‘temperature&humidity'»
Hemos visto por tanto cómo controlar mensajes de dispositivo a nube y enviar mensajes de dispositivo de nube entre su dispositivo de IoT y Azure IoT Hub.
Debe estar conectado para enviar un comentario.