Interaccionar con FireBase desde Arduino


Como  podemos ver en este blog en numerosas  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 .

De hecho ,como ejemplo de lo  sencillo  y económico  que puede ser  la construcción de dispositivos   IoT desde un punto de vista más empírico , lo ideal es usar un o NodeMCU ESP-12E para   acceder a Firebase  

 

Picture of Bill of Materials

 NodeMCU ESP-12E  es muy barato (unos 6€)   ,  y al tener  wifi incorporado para conectarse a internet,  ya tenemos los elementos suficientes  para conectarnos a  bases de datos avanzada  en l anube como puede ser Firevase y   gracias a un hardware tan eficiente  (y por supuesto los servicios cloud de Firebase).

Precisamente  FirebaseArduino (abstracción completa de la API REST de Firebase expuesta a través de las llamadas de C ++ de una manera amigable con el cableado.)   es una biblioteca muy útil usada   para simplificar la conexión a la base de datos Firebase desde cualquier cliente Arduino .Esta biblioteca  como podemos imaginar  se encarga de todo el análisis de Json y puede realizar transacciones en tipos C / Arduino puros.

En un post anterior “Primeros pasos con NodeMCU y Firebase”  ya vimos un sencillo ejemplo de como ambos componentes pueden funcionar, Veamos a  a continuación  que podemos hacer c muchas mas cosas con esta famosa librería

 

class FirebaseArduino

Esta es la clase principal para que los clientes de Arduino interactúen con Firebase. Como es habitual con arduino  para referenciarla  y poderla usar necesitamos  introducir  esta libreria con un include  al principio del programa , como por ejemplo

 #include <FirebaseArduino.h>”

Esta implementación está diseñada para seguir las mejores prácticas de Arduino y favorecer la simplicidad sobre todo lo demás. Para casos de uso más complicados y más control, podemos usar la clase Firebase en Firebase.h.

Esta libreria debe ser llamada primero con void begin ( const String y host , const String y auth = “” )  , lo cual inicializa el cliente con el host y las credenciales de base de fuego dados.

Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);  //intentamos conectarnos a la base de datos Firebase con nuestras credenciales

Los parámetros son :

  • host : es decir el  host de base de datos de base de datos de Fierbase , normalmente X.firebaseio.com.
  • auth : credenciales  para la db  que pueden ser  una palabra  secreta o token.

 

Lo más sencillo  precisamente para pasar las credenciales de Firebase   a esta clase es usando  variables que  definiremos al principio del programa:

  • #define FIREBASE_HOST “xxxxxxxxxxxxxxx.firebaseio.com”
  • #define FIREBASE_AUTH “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”

 

Veamos algunas funciones que podemos usar con esta clase:  pushInt,pushFloat, pushBool,pushString,push,setInt, setFloat,setBool,setString,set ,getInt, getFloat,getBool,getString,get,   las relacionadas con Firebaseobject(get,readevent)  .   asi como remove,stream, available,read ,success, failed,error

 

 

String pushInt ( const String & path , int value )

Anexa el valor entero al nodo en la ruta.Equivalente al POST de la API REST. Debe comprobar  success()  después de llamar. Devuelve la clave única del nuevo nodo hijo.

Los parámetros que usa:

  • path : La ruta del nodo padre.
  • value : valor entero que desea agregar al nodo.

 

String pushFloat(const String &path, float value)

Esta función anexa el valor flotante al nodo en la ruta.  Es equivalente al POST de la API REST. Debe comprobar   success()   después de llamar. Devuelve la clave única del nuevo nodo hijo.

Los parámetros que usa:

  • path : La ruta del nodo padre.
  • value : valor flotante que desea agregar al nodo.

String pushBool(const String &path, bool value)

Esta función anexa el valor booleano al nodo en la ruta.  Es equivalente al POST de la API REST. Debe comprobar el resultado de salida con  success()  después de llamar a a funcion . Devuelve la clave única del nuevo nodo hijo.

Los parámetros que usa:

  • path : La ruta del nodo padre.
  • value : valor Booleano que desea agregar al nodo.

String pushString(const String &pathconst String &value)

Esta función anexa el valor de cadena al nodo en la ruta.Es equivalente al POST de la API REST. Debe comprobar el resultado de salida con  success()  después de llamar a a funcion. Devuelve la clave única del nuevo nodo hijo.

Los parámetros que usa:

  • path : La ruta del nodo padre.
  • value : valor de la  cadena que desea agregar al nodo.

 

String push(const String &pathconst JsonVariant &value)

Esta función anexa los datos JSON al nodo en la ruta.Equivalente al POST de la API REST.   Devuelve la clave única del nuevo nodo hijo.

Parámetros

  • path : La ruta del nodo padre.
  • value : los datos JSON que desea agregar al nodo.

 

void setInt(const String &path, int value)

Escribe el valor entero en el nodo ubicado en la ruta equivalente al PUT de la API REST. Debe comprobar el resultado de salida con  success()  después de llamar a a función

Parámetros que usa

  • path : la ruta dentro de su base de datos al nodo que desea actualizar.
  • value : valor entero que desea escribir.

void setFloat(const String &path, float value

Escribe un  valor en coma flotante en el nodo ubicado en la ruta equivalente al PUT de la API REST.Debe comprobar el resultado de salida con  success()  después de llamar a a función

Parámetros necesarios:

  • path : la ruta dentro de su base de datos al nodo que desea actualizar.
  • value : el valor flotante que desea escribir.

void setBool(const String &path, bool value)

Escribe el valor booleano  en el nodo ubicado en la ruta equivalente al PUT de la API REST.  Debe comprobar el resultado de salida con  success()  después de llamar a a función  

Parámetros que usa

  • path : la ruta dentro de su base de datos al nodo que desea actualizar.
  • value :  valor booleano  que desea escribir.

void setString(const String &pathconst String &value)

Escribe el valor de la cadena en el nodo ubicado en la ruta equivalente a la PUT de la API REST. Debe comprobar el resultado de salida con  success()  después de llamar a a función

Parámetros que requiere:

  • path : la ruta dentro de su base de datos al nodo que desea actualizar.
  • value : valor de la cadena que desea escribir.

 

void set(const String &pathconst JsonVariant &value)

Escribe los datos JSON en el nodo ubicado en la ruta.  Equivalente al PUT de la API REST.  Debe comprobar el resultado de salida con  success()  después de llamar a a función

Parámetros necesarios:

  • path : la ruta dentro de su base de datos al nodo que desea actualizar.
  • value : datos JSON que desea escribir.

 

int getInt(const String &path)

Obtiene el valor entero ubicado en la ruta. Debe comprobar el resultado de salida con  success()  después de llamar a a función   Devuelve el valor entero ubicado en esa ruta. Solo será poblado si  success()   es verdadero. Requiere un único  parámetro path : la ruta al nodo que desea recuperar.

 

float getFloat(const String &path)

Obtiene el valor flotante ubicado en la ruta. Debe comprobar el resultado de salida con  success()  después de llamar a a función. Devuelve  un valor flotante ubicado en ese camino. Solo será poblado si un success()  ) es verdadero.

Requiere un único  parámetropath : la ruta al nodo que desea recuperar.

 

String getString(const String &path)

Obtiene el valor de cadena ubicado en la ruta.Debe comprobar el resultado de salida con  success()  después de llamar a a función.   Devuelve el valor de cadena ubicado en esa ruta. Solo será poblado si el   success()   es verdadero.

Requiere un único  parámetropath : la ruta al nodo que desea recuperar.

 

bool getBool(const String &path)

Obtiene el valor booleano ubicado en la ruta.Debe comprobar el resultado de salida con  success()  después de llamar a a función. Devuelve el  valor booleano ubicado en esa ruta. Solo será poblado si el éxito () es verdadero. Requiere un único  parámetro  path : la ruta al nodo que desea recuperar.

Es muy usado para  activar o desactivar un  nivel  lógico  en los pines binarios  en la placa ,por ejemplo para activar una salida a nivel alto  o bajo 

Ejemplo

      bool isLedOn = Firebase.getBool(“led”); // recuperamos el valor del objeto led de la sesión firebase

 

 

FirebaseObjectget(const String &path)

Obtiene el valor del objeto json ubicado en la ruta.Debe comprobar el resultado de salida con  success()  después de llamar a a función. Devuelve el valor FirebaseObject ubicado en esa ruta. Solo será poblado si el éxito () es verdadero.Requiere un único  parámetro path : la ruta al nodo que desea recuperar.

FirebaseObjectreadEvent()

Lee el siguiente evento en una stream ( secuencia).Esto solo tiene sentido una vez que se ha llamado a  stream() 

A la salida FirebaseObject tendrá [“type”] que describe el tipo de evento, [“path”] que describe la ruta efectuada y [“data”] que se actualizaron.

 

 

 

void remove(const String &path)

Elimina el nodo, y posiblemente el árbol completo, ubicado en la ruta.Debe comprobar el resultado de salida con  success()  después de llamar a a funcion.Requiere un único  parámetro path : la ruta al nodo que desea eliminar, incluidos todos sus hijos.

void stream(const String &path)

Inicia la transmisión de los cambios realizados en el nodo ubicado en la ruta, incluido cualquiera de sus elementos secundarios.

Debe comprobar el resultado de salida con  success()  después de llamar a a funcion Esto cambia el estado de este objeto. Una vez que se llama a esto, puede comenzar a monitorear available () y llamar a readEvent () para obtener nuevos eventos.

Requiere un único  parámetro path : la ruta dentro de su db al nodo que desea monitorear.

bool available()

Comprueba si hay nuevos eventos disponibles.Esto solo tiene sentido una vez que se ha llamado a  stream()  .Devuelve si un nuevo evento está listo.

bool success ( ) 

Devuelve   si el último comando fue exitoso.

bool failed ( ) 

Devuelve si el último comando falló.

 

const String &error()

 Devuelve el  mensaje de error del último comando si  failed() es verdadero.

 

 

 

 

 

class FirebaseObject

 

Representa el valor almacenado en Firebase , puede ser un valor singular (nodo de tipo leaf) o una estructura de árbol.

Las  funciones publicas  definidas para esa clase son las siguientes:

 

FirebaseObject ( const char * data ) 

Construir a partir de json.  Requiere un único  parámetro data : cadena formateada JSON.

 

bool getBool ( const String & path = “” ) const

Devuelve el valor como un booleano. .Requiere un único  parámetro optional : ruta en el objeto JSON.

 

int getInt ( const String & path = “” ) const

 Devuelve el  resultado como un entero.Requiere un único  parámetro optional : ruta en el objeto JSON.

 

float getFloat ( const String & path = “” ) const

Devuelve el valor como un flotador..Requiere un único  parámetro optional : ruta en el objeto JSON.

 

String getString ( const String & path = “” ) const

Devuelve el valor como una cadena.Requiere un único  parámetro optional : ruta en el objeto JSON.

 

JsonVariant getJsonVariant ( const String & path = “” ) const

Devuelve el valor como JsonVariant.Requiere un único  parámetro optional : ruta en el objeto JSON.

bool success ( ) const

Devuelve si hubo un error en la descodificación o el acceso al objeto JSON.bool 

 

failed ( ) const

Devuelve si  hubo un error en la descodificación o el acceso al objeto JSON.const 

 

String & error ( ) const

 Devuelve un mensaje de error si  failed()  es verdadero.

 

 

Mas informacion en  https://firebase-arduino.readthedocs.io/en/latest/

Anuncios

Cómo añadir luces económicas al puente Philips Hue


Aunque actualmente existen  en el mercado  algunos modelos procedentes del mercado asiático de luces controlables por wifi  ,dada la dificultad de ofrecer un alcance mayor , por su gran versatilidad , destacan aquellas controlables por el famoso  standard Zigbee , el cual constituye  el nombre de la especificación de un conjunto de protocolos de alto nivel de comunicación inalámbrica para su utilización con radiodifusión digital de bajo consumo, basada en el estándar IEEE 802.15.4 de redes inalámbricas de área personal (wireless personal area network, WPAN) y opera en bandas sin licencia, incluyendo 2.4 GHz, 900 MHz y 868 MHz..

Algo muy destacable de zigbee frente a wifi es su topología de red en malla lo cual mejora muchísmo la cobertura  global   ya que cada dispositivo actúa  de repetidor mejorando el alcance de la red  .Ademas  destaca su bajo consumo  y  su fácil integración  en  otros dispositivos convencionales al requerir muy  poca electronica , lo cual lo hace ideal para aplicaciones domóticas , como por ejemplo el control de  luminarias.

A diferencia de las  luces con wifi , integrado , para conformar una red basada en Zigbee  se  requieren tres actores:

  • ZC( Zigbee Coordinator) o coordinador Zigbee , es el es dispositivo mas completo pues solo debe existir  uno por red . Sus funciones son las de encargarse de controlar la red y los caminos que deben seguir los dispositivos para conectarse entre ellos.ed.
  • ZR ((Zigbee Router) o router Zigbee,  Interconecta dispositivos separados en la topología de la red, además de ofrecer un nivel de aplicación para la ejecución de código de usuario.Suele ir intgrado en ZC
  • ZED (Zigbee End Device)  o dispositivo final Posee la funcionalidad necesaria para comunicarse con su nodo padre (el coordinador o un router), pero no puede transmitir información destinada a otros dispositivos, así este tipo de nodo puede estar dormido la mayor parte del tiempo, consumiendo muy poco  .Ademas tiene requerimientos mínimos de memoria y es por tanto significativamente más barato lo cual lo hace ideal para integrarlo  en las propias luminarias.

Aunque existen muchos modelos de redes basadas en Zigbee , lo cierto es que el sistema Philips Hue prácticamente se ha convertido   el modelo de referencia del mercado  , siendo el  Huvb elte controlador que integra el coordinador y el router Zigbee en un único dispositivo , que permite conectar hasta 50 bombillas Hue además de 10 accesorios para poder ampliarlo

 

El puente de Philips Hue es pues la herramienta que permite la conexión y manejo de bombillas LED  compatibles con Zigbee , necesitando  tan solo conéctarlo a un router  por cable ethernet y descárgar  la aplicación Hue  para disfrutar de todas las ventajas disponibles,

Precisamente con la app  “Philips Hue ” disponible en Google  Play s puede programar y personalizar la iluminación de una  casa  permitiendo organizar fácilmente la iluminación por habitaciones. Se  puede encender o apagar todas las luces de las habitaciones o cambiar el color o el brillo en todas las bombillas según tu estado de ánimo o actividad lo cual es una tarea fácil de controlar, con independencia de la cantidad de bombillas.

Estas son algunas de su posibilidades:

  • Transformar la iluminación en una experiencia extraordinaria eligiendo  entre 16 millones de colores o cualquier tono de luz blanca.
  •  Activar sus mañanas, fomentando la concentración o cambiandoa una configuración más relajante al final del día, ya sea para leer un libro, relajarse después de la cena o prepararse para dormir.
  • Disfrutar de un atardecer en Honolulu o de una noche de fiesta en el Soho en Londres. Basta con pulsar la escena para transformar su habitación. La aplicación Philips Hue dispone de más de 30 escenas seleccionadas por nuestros diseñadores de iluminación.
  • Con un  algoritmo transformar su fotografía favorita en una escena personal Philips Hue. El algoritmos extrae los colores relevantes y los aplica de forma inteligente a las bombillas. Ahora puede utilizar tus bombillas Hue para revivir tus recuerdos utilizando tus propias fotografías.
  • Automatizar las luces como quiera: empieze a una hora concreta o a la puesta de sol, enciende y apague las luces o active una escena. Incluso puede simular que está en casa reproduciendo la rutina aleatoriamente.
  • Configurar y olvídarse gracias al conocimiento de la ubicación de la aplicación, las luces se encenderán automáticamente cuando llegue a la puerta de entrada o se apagarán al salir de casa.
  • Configurar las luces para que le ayuden a dormir por la noche y despertar revitalizado creando sus propias rutinas de sueño personalizadas para atenuar automáticamente las luces por la noche o para despertarle suavemente por la mañana.
  • Sorprender a sus amigos o dejar de preocuparse si tiene que andar por la casa a oscuras con las manos ocupadas. Tanto si desea encender o apagar las luces o cambiar el brillo de una habitación, puede hacer muchas cosas con la voz por ejemplo mediante el asistente de voz Movistar Home . Si tiene instaladas luces inteligentes (Phillips Hue), podrá controlar el apagado y encendido de las luces del salón a través del comando de voz, “OK Aura, enciende las luces” u “OK Aura, apaga las luces”, así como elegir el color o la intensidad de la iluminación de forma táctil en la pantalla de su Movistar Home.

 

Aunque en realidad  el hub de Philips Hue  tiene un precio razonable de unos 49€  , el precio de las luminarias  Philips  Hue compatibles con Hue no  lo es tanto(a partir de 25€ por luminaria)  ,lo cual hace que muchas personas se cuestionen la viabilidad del sistema Hue

Afortunadamente   aparte de la bombillas Philips Hue  existen varios fabricantes  como Ikea o la marca Holandesa Inn  que están fabricando bombillas compatibles con el Hub de Philips Hue  mucho mas económicas ( casi el 50% según los casos) , y que por supuesto  son controlables tanto con la aplicación móvil como por los asistentes de Voz

Veamos ahora  como conectar al puente de Philips Hue las luminarias económicas Inn que por cierto también  son compatibles con Alexa ,Google Home y Movistar Home ( pero lamentablemente no funciona con Apple HomeKit o el modo Entretenimiento.)

El procedimiento para  conectar  este  tipo de bombillas basadas en Zigbee  con el Hub de Philips Hue  en realidad no es complicado:

  1. Inicie la aplicación Hue en su smartphone,
  2. Vaya a Configuración y seleccione ‘Configuración de la lámpara‘.
  3. Luego elija “+” en la parte inferior derecha y luego “Buscar“.
  4.  Luego apague la lámpara interior y vuelva a encenderla. La lámpara parpadeará 2x, lo que indica que se puede conectar.
  5.  Cuando el puente haya encontrado la lámpara (esto es cuestión de segundos), la lámpara nuevamente parpadeara 1x para confirmar que está conectada al puente.
  6.  Un poco más tarde, la lámpara estará visible en la aplicación Hue y podrá controlarla. ¡Esto puede tardar un rato! Si la lámpara interna no coincide, verifique estas instrucciones paso a paso en la sección de descargas o póngase en contacto con el Servicio al Cliente.

Si no le funciona el prendimiento  anterior , puede hacerle un RESET a la propia lampara Inn  siguiendo los siguintes pasos

  • Encienda la lámpara por un mínimo de 5 segundos y luego apáguela y enciéndala 6 veces con intervalos de alrededor de 0,5 segundos.
  • Se puede apagar y encender con el interruptor (de pared) o apagando y encendiendo manualmente la lámpara en el zócalo de la luminaria.
  • Después de la sexta vez, la lámpara parpadeará breve mente dos veces para indicar que está nuevamente en el estado “nuevo de fábrica” ​​y se puede volver a acoplar.

 

Es importante destacar que este tipo de luces  deben estar acopladas a su puente para garantizar que solo usted pueda controlar sus luces, y no su vecino (y viceversa). Mientras las luces no estén acopladas a un puente, parpadearán brevemente cuando se enciendan.

Para acoplar las luces al puente, use la aplicación para hacer que el puente busque las luces, y luego encienda las luces una por una. Cada luz parpadeará brevemente cuando se encienda porque aún no está acoplada en ese momento, luego se encuentra dentro de los 4 segundos y luego vuelve a parpadear para indicar que ahora está acoplada.

*

Convierta su calentador eléctrico en inteligente


Todo el mundo quiere  ahorrar en su  factura eléctrica  no solo por reducir la cuantía económica  de su importe: también porque  cada KW/H  que consigamos ahorrar  representa un pequeño gesto para el planeta  en términos básicamente de emisiones de co2 emitidas  en la atmósfera , dada la procedencia de la energía  que en términos generales procede de centrales térmicas)

En este sentido para disminuir nuestro consumo eléctrico se nos ocurren  diferentes estrategias:

  • Ajustar la  temperatura del aire acondicionado en invierno  (bajando la temp)   y/o en verano subiendo esta
  • Sustituir todas  las luminarias por luces led
  • Adquirir o cambiar nuestros  electrodomésticos  por aquellos con la etiqueta  A+ o mejor A+++
  • Invertir  en aislamiento térmico de la vivienda  por ejemplo en ventanas con doble  cristal
  • Bajar la temperatura del calentador 
  • Tender la ropa en el exterior en lugar de  usar secadora
  • Evitar planchar la ropa 
  • Descongelar los alimentos dentro de la  nevera
  • Regular mejor el frigorífico en función de la temperatura
  • Utilizar interruptores de corte en la mayo ria de equipos electrónicos para eliminar el consumo de los equipos que  están en stand-bye ( el famoso consumo fantástico)
  • etc

Bien , y si cumplimos todas la directrices anteriores   dado que las tarifas eléctricas han alcanzado sus máximos históricos   ¿cree  que se puede ahorrar mas ? Pues  en efecto siempre se puede y se debería intentar , por ejemplo centrándonos en  un  electrodoméstico que esta siempre conectado y por lo tanto  susceptible de optimizar  : el calentador eléctrico,

Como sabemos los calentadores eléctricos convencionales mas usados son los del tipo acumulador, lo cual obliga a estar conectados  por medio de un termostato en serie que acciona el elemento calefactor. Cuando por  disminución del caudal  de agua caliente  o simplemente por perdidas en el aislamiento (muchos afirman que las  pérdidas en 24 horas puede  llegar a  ser  1,39 KWh al día, lo cual al año  serian  1,39 x 30 x12 = 500,4 KWh ) , baja la temperatura en el interior de la cuba   se  activa automáticamente la resistencia hasta recuperar la temperatura al valor  preestablecido. Este mecanismo tan simple ha demostrado ser eficaz durante muchos años tanto es así que su diseño no ha variado sustancialmente  hasta llegar a nuestros tiempos, pues  se debería poder mejorar  mediante la función “Smart”,

En efecto los  nuevos termos con función  Smart  estos adecuan automáticamente  su activación   en función de los hábitos de utilización del usuario, consiguiendo una temperatura precisa en función de la demanda de agua caliente real de cada usuario  “aprendiendo” por tanto de los hábitos de sus  usuarios  convirtiendo esto  en un patrón que  luego se recrea de forma repetitiva en ciclos de una semana.

Por ejemplo imaginemos una familia compuesta por 2 adultos con 3 hijos cuyos hábitos de consumo de agua caliente son los siguientes:

  • Los  niños se bañan a las 8 de la tarde de lunes a jueves  y luego el domingo.
  • Los 2 adultos se duchan por la noche a las 10  todos los días 
  • Por la tardes se utiliza el agua caliente de forma ocasional.

En este casi  vemos  que  si  el termo aprende ese  patrón de hábitos   puede prever cuándo va a necesitar agua caliente sanitaria y, por tanto, adecuar la activación de la resistencia con tiempo  de forma precisa según  las necesidades de la familia en cuestión ( en el ejemplo  activando la resistencia en los horarios en los que más se necesita   por la tarde y noche  por la tardes manteniendo el agua a 45º C el resto del día por si hubiera una necesidad puntual.)   

De esta manera, se consigue el máximo confort con el mínimo consumo, logrando ahorros de hasta un 20% en el consumo eléctrico.

Para los usuarios más exigentes, que buscan la mayor eficiencia y comodidad,  también existe una solución excelente: los programadores digitales ( dimensionados al consumo del calentador)  , ya que actualmente incorporan un avanzado sistema que permite realizar precisas programaciones temporales de su funcionamiento:

  •  Programación diaria/semanal.
  •  Posibilidad de programar diariamente el funcionamiento del termo durante 3 diferentes intervalos de tiempo.
  •  Encendido automático del termo con la justa antelación para conseguir la temperatura deseada en la hora programada.

Lo normal es que un termo eléctrico tarde sobre 2 o 2,5 horas en calentar el agua. Para saberlo con exactitud lo recomendable es mirarlo en el manual de usuario del aparato. Con estos datos y los horarios de las duchas establecidos podemos programarlos encendidos del calentador el tiempo suficiente para que caliente el agua. Una vez antes de comenzar la primera ducha es aconsejable desconectarlo. Con la idea de que no siga calentando agua que no vamos a utilizar.

 

Aunque como vemos es factible  si no  dispone de un termo con la función Smart  usar un temporizador semanal  programado manualmente  a  la demanda , en los tiempos actuales es mucho mas sencillo e  igualmente  económico optar por un enchufe inteligente  , que nos hará las veces de temporizador programando cómodamente desde la app los  intervalos que necesitemos y ademas  con varios añadidos adicionales;

  • Se puede activar o desactivar a distancia (por ejemplo si esta de viaje y desea activarlo unas horas antes de llegar)
  • Se puede programar activación por días  y franjas horarias
  • Permite monitorizar en tiempo real el consumo en kw/h 
  • Registro histórico del  consumo  ,lo cual permite comprobar si las reglas definidas son correctas y nos están permitiendo ahorrar energía ( o no)
  • Permite automatización de procesos por medio de otros dispositivos inteligentes ( por ejemplo, piense en un detector de presencia conectado en el baño que desconectase automáticamente al entrar en el baño )

 

El modelo que hemos probado es  el modelo  MSS310   que puede controlar una carga  hasta 15 Amperios  desde cualquier lugar , gracias a la aplicación Meross (IOS 9 y superior, Android 4.1 y superior )  permitiendo encender y apagar dispositivos conectados a este enchufe así como establecer  horarios o temporizadores para satisfacer sus necesidades diarias.

Después del emparejamiento del modelo  MSS310    con Alexa o el Asistente de Google IFTTT, los usuarios simplemente pueden controlar los dispositivos conectados a los comandos de voz  . Las funcionalidades que podemos implementar mediante Google Home, Amazon  Alexa o IFTTT, se limitan a encender y apagar el aparato, nada más. No es posible acceder al consumo  desde los citados asistentes pero tampoco al estado de encendido o apagado del aparato lo cual si estaría bien ( de hecho otros interruptores, como los de SonOff, bastante mas caros por cierto , tampoco parece que tengan acceso directo al consumo, pero sí que permiten establecer alertas sobre el consumo, mediante límites, o saber si el interruptor está encendido o apagado al menos con IFTTT).

Asimismo es posible con el  modelo  MSS310    analizar el consumo de energía histórico desde la propia app del vendedor aunque tiene unas limitaciones pues aunque podemos ver la energía que consume la carga conectada al aparato de forma instantánea, el único historial que se guarda es el consumo medio diario, es decir, la mínima resolución de registro temporal es de 1 día 

 

App de control

Meross es un proveedor global de dispositivos y servicios sobre Wi-Fi productos   que  fue establecido por un grupo de expertos experimentados que solían trabajar para grandes nombres como Microsoft, MTK, Cisco, TP-LINK y etc. Dada su relación sólida y excelente con los proveedores de upstream en la industria, meross ha atraído varias ofertas de inversión y se está expandiendo rápidamente   y como ejemplo destaca modelo enchufe inteligente   controlado mediante la app Meross, disponible en Google Play  ( Android 4.1 y superior ) y también en Apple Stores ( IOS 9 y superior)

Como se puede imaginar el lector , Meross se centra principalmente en aparatos de automatización del hogar pues son conscientes del potencial  en el mercado asi que los clientes pueden conectar sus dispositivos electrónicos en dichos dispositivos  y luego utilizar el Meross aplicación para administrar fácilmente por debajo de características.

Como  hemos adelantado esta app una vez sincronizada en el móvil con la wifi ,permite  las siguientes acciones:

1. Encender o apagar los dispositivos electrónicos  desde cualquier lugar .
2. Crear horarios de encendido / apagado  asi como  normas de apagado automático para trabajar automáticamente.
3. Comprobar  los dispositivos conectados estan encendidos  o  apagados desde cualquier lugar para su tranquilidad  contratando ademas en tiempo real su consumo.

 

Los  pasos a seguir para usar el enchufe inteligente

  1. Descargar la app Meross, disponible en Google Play 
  2. Abrir la aplicación
  3. En primer lugar necesitamos registrarnos en la aplicación para lo cual solo nos pedirá una cuenta de correo electrónico   y una password  “fuerte” ( debe contener letras y números)                                                                                                                                                                                                                                                                            
  4. Enseguida nos pedirá autorización para habilitar los servicios de ubicación para  poder usar estos  en los automatismos, lo cual por el momento con solo enchufe inteligente  NO  nos va ser necesario                                                                                                                                                                                                                                                       
  5. Ahora toca seleccionar el dispositivo con el que nos conectaremos , que en nuestro caso ,  precisamente es el primero : Smart Plug                                           
  6. Lo siguiente  es proporcionar la clave wifi al dispositivo para que se pueda ser accesible desde la aplicación y que este tenga conectividad independientemente del smartphone                                                                                                                                                                                                                                                                                                 
  7. Ahora  ya si podemos enchufar el enchufe inteligente   cerca del router wifi   del hogar para que notenga problemas de cobertura a la hora de la primera configuración                                                                                                                                                                                                                                                                                                               
  8.  Nos toca ahora esperar el emparejamiento con nuestra red wifi  momento en el que  el led del propio enchufe pasara a lucir verde ,    Es de destacar que en esta primera configuración ambos enchufe inteligente   y smartphone deben estar en la  misma red , por lo que si el smatphone no esta conectado pedirá habilitar la red wifi y la clave en caso de no estar informadas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  9.  Una vez ya sincronizado por wifi nos pedirá un nombre para identificar al enchufe inteligente   así como un icono dentro de un abanico de imágenes que nos presenta.                                                                                                                                                                                                                                                                                                                                       
  10.  Ahora ya solo queda configurar el dispositivo , por ejemplo si queremos encender el led del enchufe inteligente  , asignar una ubicación , etc.

 

Es  muy interesante que el aparato va registrando en un gráfico de forma diaria el valor acumulado del consumo diario, de modo que si tenemos un contador inteligente instalado por el suministrador ,  podemos saber el consumo global del resto de dispositivos eliminando el calentador   , restando ambas cantidades mejorando con esto el conocimiento del consumo diario del resto de dispositivos del hogar  por si tal vez tenemos que añadir mas  enchufe inteligente  ( por ejemplo vitroceramica,horno , etc)

 

En resumen,  es muy interesante poder ahorrar con estos aparatos inteligente , pues solo tenemos que modificar nuestros hábitos y costumbres diarias.Con el ahorro obtenido en menos de tres años, podemos  llegar a  amortizar por ejemplo  la compra del termo eléctrico   !y eso solo con no tener el termo eléctrico enchufado todo el día!.

 

Un paso más hacia el coche autónomo


Telefónica ha presentado esta semana en Talavera de la Reina(Toledo )  el primer caso de uso de 5G con un minibús eléctrico EZ10 de conducción autónoma, lo que supone el hito inicial del proyecto Ciudades Tecnológicas 5G .

En efecto gracias  a la cobertura 5G de una unidad móvil de Telefónica ,donde se ha desplegado una antena 5G de Ericsson  que usa  la banda 3,5 GHz,  se ha podido  demostrar  eel funcionamiento de     un vehículo eléctrico autónomo  sin conductor  de la compañía EasyMile en el que se ha instalado un terminal 5G de Ericsson

easymile

EasyMile EZ10  es un autobús eléctrico autónomo alimentadado  por una batería de 8 kWh Litio LiFePO4 en 48V de tensión  continua que le ofrece unas 14 horas de autonomia .

Este vehículo es bastante pequeño pues tiene unas medidas de 4mt de longitud por 2 metros de ancho  y unos 2.75mt de alto  con 2.8mt de distancia entre ejes pero aun asi tiene capacidad para hasta ocho personas y permite que otros siete pasajeros viajen de pie o puedan acomodar una silla de ruedas, con el objetivo de ayudar a recorrer el primer trayecto a de un viaje como por ejemplo de conexión entre la linea de metro y una terminal de aviación .

Este modelo EZ10  ya se ha desplegado en más de 100 ciudades y 29 países.

El  vehículo eléctrico de EasyMile cuenta con la tecnología más avanzada en conducción autónoma, integrando numerosos sensores :

  • LIDAR
  • GPS
  • Videocámaras
  • Sensores de poroximidad
  • etc

Todos estos , permiten analizar el entorno y crear un mapa tridimensional del mismo.

Este  vehículo autónomo, al estar permanentemente conectado, puede gestionarse remotamente gracias a la tecnología 5G permitiendo el acceso en tiempo real a sus datos de telemetría internos (sensores, localización extremadamente precisa, velocidad, rango de giro, etc)  de modo que se puede actuar sobre él en cualquier instante.Para que nos hagamos una idea del volumen de datos de la información recogida por los sensores puede llegar hasta 4TB de información diaria por lo que se requiere de un gran ancho de banda para transferir estos datos en tiempo real al borde de la red y de una latencia extremadamente baja. Todo ello de cara a procesar conjuntamente los datos recibidos por los vehículos de una determinada área y proceder a la toma de decisiones, aumentado de este modo la seguridad en entornos  donde cobiven  vehiculos y peatoness.

Con esta demostración, dislumbramos  lo que puede ser al futuro mostrando cómo las capacidades del 5G pueden beneficiar a la conducción autónoma, un ejemplo del gran abanico de nuevas posibilidades del 5G, permitiendo a Ericsson y Telefónica posicionarse como líderes en la transformación de España hacia 5G.

Estimaciones indican que en 2022 existirán unos 10 millones de vehículos autónomos, muchos de ellos recogiendo pasajeros 24 horas al día  asi que etste vehiculo es un buen puento de partdia

Lanzadera de EZ10

EasyMile es pues una empresa pionera en tecnología de vehículos autónomos y soluciones inteligentes de movilidad que desarrolla software para automatizar las plataformas de transporte sin necesidad de infraestructura dedicada .Fundada en junio de 2014, EasyMile SAS desarrolla y comercializa vehículos autónomos.

Fue formalmente una empresa conjunta formada por Ligier y Robosoft Technology PTE Ltd (Francia).

EZ10 se desarrolló con la ayuda del proyecto CityMobil2 cofinanciado por el Séptimo Programa Marco de la Unión Europea para investigación y desarrollo tecnológico

En enero de 2017, se anunció que Alstom había invertido € 14 millones en Easymile y las dos compañías habían firmado un acuerdo de asociación comercial.

En julio de 2017, Continental también anunció una inversión en EasyMile.
EasyMile es una de las empresas líderes que se especializa en tecnología de vehículos autónomos y tiene un alcance global con oficinas centrales en Toulouse (Francia) y oficinas regionales en Denver (EE. UU.), Berlín (Alemania), Melbourne (Australia) y Singapur.

Con más de 100 empleados altamente capacitados y apasionados con experiencia en robótica, visión artificial y dinámica de vehículos, EasyMile suministra soluciones de movilidad inteligente y tecnologías autónomas para vehículos sin conductor: desarrollo de software que permite la automatización de diversas plataformas de transporte, una poderosa gestión interna de flotas solución para vehículos autónomos, y suministro de soluciones de movilidad inteligentes para transportar pasajeros o logística en sitios privados, urbanos, suburbanos o rurales en diversos entornos.

La lanzadera sin conductor EZ10 ya se ha desplegado en 20 países de Asia-Pací fi co, Medio Oriente, América del Norte y Europa. Además de los fundadores, Alstom y Continental también son accionistas de EasyMile.

Por su parte, CarMedia Solutions es una startup española creada con la visión de que el coche conectado y autónomo revolucionará la movilidad y se convertirá en esta Quinta Pantalla.

Un resumen estas son algunas de las características del vehiculos:

  •  100% vehículo eléctrico driverless
  •  Viaja hasta 45 km/H
  •  LLeva hasta 15 pasajeros
  •  Rampa de acceso incorporada para pasajeros con movilidad reducida
  • Opera en rutas fijas o bajo demanda
  •  Supervisado por el software de gestión de flotas EASYMILE
  •  Opera en carreteras existentes sin necesidad de infraestructura adicional

El caso de uso en Talavera de la Reina se enmarca en el proyecto Ciudades Tecnológicas 5G, puesto en marcha por Telefónica el pasado mes de enero, para convertir Talavera de la Reina y Segovia en laboratorios vivos 5G donde realizar en paralelo tanto el despliegue tecnológico como los casos de uso que permitan poner en valor las capacidades del 5G.

Fuente https://www.telefonica.com/es/web/sala-de-prensa/-/telefonica-presenta-el-primer-caso-de-uso-5g-con-conduccion-autonoma-y-consumo-de-contenidos

Cómo visualizar datos de sensores en tiempo real desde su hub de IoT Azure


Vimos  en  un post anterior  cómo es  posible usar Power BI de Azure  para visualizar datos de los sensores en tiempo real desde Azure IoT, pues bien,  existe otra posibilidad para  visualizar datos de los sensores en tiempo real que el hub de IoT recibe , que es  ejecutando una aplicación web que está alojada en la nube de Azure .

Para  cumplir con nuestro propósito de ver los datos de telemetría de nuestro dispositivo de Iot conectado a la nube de Iot Azure Edge ,    veremos como crear una aplicación web en el portal de  Azure preparando su hub de IoT para acceso a datos mediante la adición de un grupo de consumidores. Hecho esto configuraremos una aplicación web para leer datos del sensor de su hub de IoT y subiremos  esta aplicación web  a la nube de Azure ,la cual  nos permitirá  ver desde un navegador los datos de telemetría enviados  desde su hub de IoT ¿le interesa el tema? pues si es así empezemos.

Antes de empezar   deberíamos   tener configurado  un dispositivo Iot de Azure como por ejemplo  algunos que hemos visto como puede ser una Raspberry Pi 3  , un ESP8266  o incluso un dispositivo simulado.  Como hemos comentado en otros  posts todos esos  dispositivos de Azure IoT  hub  deben implementar una aplicación de ejemplo la cual  enviará  datos que  los sensores recogen del mundo físico ( humedad , temperatura, presencia, etc  ) a su hub de IoT.

Asimismo  teniendo dispositivos IoT enviando mensajes  de telemetría a la nube de Azure Iot Edge, para lograr persistencia en la nube de Azure  necesitamos una cuenta de Azure storage  así como  una aplicación Azure  para poder almacenar los mensajes de hub de IoT en el almacenamiento blob  como hemos visto en otros posts

Crear una aplicación web

  1. En el portal de Azure, haga clic en Crear un recurso > Web y móvilAplicación Web > Aplicación web
  2. Escriba un nombre único para la aplicacion  y anotar pues nos sera util para acceder a esta
  3. Verificar la suscripción  que para este ejmeplo pude ser “Evaluacion gratuita” si no dispone de otro recurso de este tipo
  4. Especifique un grupo de recursos  pinchando en Usar existente y  pinchando en el disponible
  5. Finalmente  seleccione Anclar al  panel y a continuación, haga clic en Crear.hestiaweb.PNG
  6. Este proceso puede tardar varios minutos dada la complejidad de  su realización ( localizar una máquina virtual disponible , obtener permisos , crear la instancia web ,etc)
  7. En este momento  , copie vaya nuevamente al servidor web –>introducción y copie el valor del campo URL ( sera del tipo   https://xxxx.azurewebsites.net/)    de modo que como debería estar  corriendo  su web se obtendrá una respuesta  parecida  la siguiente si copiamos dicha url en un navegador:azureweb.PNG

 

Añadir un grupo de consumidores a su hub de IoT

Los grupos de consumidores son utilizados por las aplicaciones para extraer datos desde Azure IoT, por ello necesitamos crear un grupo de consumidores para ser utilizado por un servicio de Azure para  leer los  datos de su centro de IoT.

Para agregar un grupo de consumidores a su hub de IoT, siga estos pasos:

  1. En el portal de Azure, abra su hub de IoT.
  2. En el panel izquierdo  casi en la parte más inferior en el apartado Mensajería , seleccione Puntos de conexión y  haga clic en este.
  3. Seleccione en el panel central  events  , introduzca un nombre en grupos de consumidores en el panel derecho y haga clic en Guardar.stream.PNG

Configurar la aplicación web para leer datos de su centro de IoT

  1. Abra en Azure la aplicación web que ha aprovisionado.
  2. Haga clic en el marco izquierdo casi  al final en CONFIGURACION->Configuración de la aplicación, y luego en configuración de la aplicación, agregue los siguientes pares clave/valor:
    Clave Valor
    Azure.IoT.IoTHub.ConnectionString Obtenidos desde el explorador de iothub  en  Azure IOT HUB >xx – Explorador de dispositivos–>OD del Dispositivo xxx –>cadena de conexion clave principal
    Azure.IoT.IoTHub.ConsumerGroup El nombre del grupo de consumidores que se agrega a su hub de IoT cumplimentado en el  apartado anterior

    hestiaweb_configuracion.PNG

  3. Haga clic en configuración de la aplicación, debajo de configuración General, activar la opción de  Web  Sockets  ( esta desactivado por defecto ) y a continuación, haga clic en Guardar.

Subir una aplicación web

En GitHub, Microsoft ha puesto a nuestra disposición muchas aplicaciones web de ejemplo para desplegar en Azure . Nos interesa  el código en node.js  de una aplicación  web completa que puede mostrar los  datos de telemetría  en tiempo real desde su hub de IoT .

Todo lo que se  necesita hacer es configurar la aplicación web para trabajar con un repositorio Git, descargar la aplicación web de GitHub y luego subir a Azure de la aplicación web al host.

El repositorio web-apps-node-iot-hub-data-visualization contiene el código en node para desplegar una aplicación web en la nube de Azure, que puede leer los datos de temperatura y humedad del IoT hub y mostrar los datos en tiempo real en un gráfico de líneas en una página web.

Los navegadores compatibles son

Navegador La menor versión
Internet Explorer 10
Borde 14
Firefox 50
Cromo 49
Safari 10
Ópera 43
iOS Safari 9.3
mini Opera TODAS
Navegador de Android 4.3
Chrome para Android 56

Los pasos  a seguir para desplegar esta aplicación son los siguientes:

  1. En la aplicación web, haga clic en IMPLEMENTACION ->Opciones de implementación > Elegir origen > Repositorio de Git Local y haga clic en Aceptar.Configure your web app deployment to use the local Git repository
  2. Tenga en cuenta que para modificar o eliminar  el origen de implementación  que acaba de crear is fuera el caso , primero necesitara desconectar este origen   por lo si lo hace tendrá  que volver a  ir a  IMPLEMENTACION ->Opciones de implementación   y volver a empezar con el proceso
  3. Haga clic en Credenciales de implementación, crear un nombre de usuario y contraseña para conectarse con el repositorio de Git en Azure y a continuación, haga clic en Guardar.
  4. Haga clic en Introducción y anote el valor de Git clone url (a la izquierda justo debajo de Git/nombre de usuario de implementación).Get the Git clone URL of your web app
  5. Abra una ventana de terminal en el equipo local o un comando.
  6. Descargar la aplicación web de GitHub y subirlo a Azure de la aplicación web al host. Para ello, ejecute los siguientes comandos:

giti clone.PNG

  • cd web-apps-node-iot-hub-data-visualization
  • git remote add webapp uri  (uri es la url del repositorio Git obtenida  en la página de Resumen de la aplicación web que se obtiene al pulsar Introducción).
  • git push webapp master:master  (se pedirán las credenciales  de Git que introdujo en en el apartado anterior en  la página de Overview , tenga en cuenta la Git clone url .)gitmanager
  • En resumen  estos son todos los comandos desde el interfaz  delñinea de comandos (cmd)    lanzados asi como la salida de esta:
C:\Users\Carlos>git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git
Cloning into ‘web-apps-node-iot-hub-data-visualization’…
remote: Counting objects: 35, done.
remote: Total 35 (delta 0), reused 0 (delta 0), pack-reused 35
Unpacking objects: 100% (35/35), done.
C:\Users\Carlos>cd web-apps-node-iot-hub-data-visualization
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>git remote add webapp https://[email protected]:443/Webestia.git
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>git push webapp master:master
Counting objects: 35, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (30/30), done.
Writing objects: 100% (35/35), 77.64 KiB | 3.23 MiB/s, done.
Total 35 (delta 6), reused 0 (delta 0)
remote: Updating branch ‘master’.
remote: Updating submodules.
remote: Preparing deployment for commit id ‘4b9c09be9b’.
remote: Generating deployment script.
remote: Generating deployment script for node.js Web Site
remote: Generated deployment script files
remote: Running deployment command…
remote: Handling node.js deployment.
remote: KuduSync.NET from: ‘D:\home\site\repository’ to: ‘D:\home\site\wwwroot’
remote: Deleting file: ‘hostingstart.html’
remote: Copying file: ‘.eslintignore’
remote: Copying file: ‘.eslintrc’
remote: Copying file: ‘.gitignore’
remote: Copying file: ‘.travis.yml’
remote: Copying file: ‘LICENSE’
remote: Copying file: ‘package.json’
remote: Copying file: ‘README.md’
remote: Copying file: ‘server.js’
remote: Copying file: ‘IoThub\iot-hub.js’
remote: Copying file: ‘public\index.html’
remote: Copying file: ‘public\javascripts\Chart.min.js’
remote: Copying file: ‘public\javascripts\index.js’
remote: Copying file: ‘public\javascripts\jquery-2.1.4.min.js’
remote: Copying file: ‘public\stylesheets\style.css’
remote: Using start-up script server.js from package.json.
remote: Generated web.config.
remote: The package.json file does not specify node.js engine version constraints.
remote: The node.js application will run with the default node.js version 6.9.1.
remote: Selected npm version 3.10.8
remote: ….
remote: npm WARN deprecated [email protected]: This package is no longer supported. It’s now a built-in Node module. If you’ve depended on crypto, you should switch to the one that’s built-in.
remote: …………………………………………..
remote: [email protected] D:\home\site\wwwroot
remote: +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | `– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | `– [email protected]
remote: +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | `– [email protected]
remote: +– [email protected]
remote: `– [email protected]
remote: +– [email protected]
remote: `– [email protected]
remote:
remote: Finished successfully.
remote: Running post deployment command(s)…
remote: Deployment successful.
To https://webestia.scm.azurewebsites.net:443/Webestia.git
* [new branch] master -> master
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>
  • Ahora  ya puede abrir la aplicación web para ver los datos de temperatura y humedad en tiempo real desde su hub de IoT. En este momento  ,  vaya nuevamente al servidor web –>introducción y copie el valor del campo URL ( sera del tipo   https://xxxx.azurewebsites.net/)    de modo que como debería estar  corriendo  su web se obtendrá una respuesta  parecida  la siguiente si copiamos dicha url en un navegador:

 

En la página de su aplicación web, haga clic en la URL para abrir la aplicación web.

Get the URL of your web app

Debería ver los datos de temperatura y humedad en tiempo real desde su hub de IoT.

Web app page showing real-time temperature and humidity

Metodo alternativo sin usar los servicios web de Azure

Se necesita tener el  servidor node.js instalado.

  • Necesitara  dos  valores: valor1 y valor2:
    • El valor1 para  Azure.IoT.IoTHub.ConnectionString  se  obtiene  desde el explorador de iothub  en  Azure IOT HUB >CONFIGURACION -Directivas  de acceso compartido  –>cadena de conexión clave principal
    • El valor2 para  Azure.IoT.IoTHub.ConsumerGroup  se obtiene de del nombre del grupo de consumidores que se agrega a su hub de IoT cumplimentado en el  apartado anterior
  • Vaya al interfaz de comandos  , situase en el directorio donde descargo el ejemplo  y ejecute los siguintes comandos:
    • set Azure.IoT.IoTHub.ConnectionString=  valor1
    • set Azure.IoT.IoTHub.ConsumerGroup= valor 2
    • npm install
    • npm start​nodejsiothub
  • En este momento  ,simplemente acceda al fichero html y ejecútelos  de modo que como debería estar  corriendo el servidor node,js  se obtendrá  respuesta en un navegador similar a la anterior

 

 

.

 

Fuente :  https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps

Como desactivar temporalmente un terminal conectado por wifi


En efecto si es cliente de  Movistar de fibra o  cobre gracias a la  aplicación Movistar Smart WiFi,  disponible en Google Play  (versiones 4.4 y 7.0) y App Store(entre las versiones 7 y 10.3.1)       se puede  desactivar temporalmente cualquier equipo o terminal que esté conectado a la red wifi de su hogar si cuenta con algunos de los siguientes routers :
  • Router Smart WiFi Fibra (HGU Askey RTF3505VW).
  • Router Smart WiFi Fibra (HGU Askey RTF3507VW HPNA).
  • Router Smart WiFi Fibra (HGU Mitrastar GPT2541GNAC).
  • Router Smart WiFi Cobre (XDSL Mitrastar DSL2401HNT1C).
  • Router Smart WiFi Cobre (XDSL Askey RTV9015VW).
  • Router Smart WiFi Cobre (XDSL Light Plus Mitrastar DSL2401HNAT1C

Por el momento, las funcionalidades de la aplicación Movistar Smart WiFi están disponibles solo para el Router Smart WiFi Fibra y el Router Smart WiFi Cobre, pero en caso de ser cliente de  Movistar y no posea un router compatible, se  puede cambiar el actual  por otro  compatible    (es decir alguno  de los anteriores)

Esta app  ademas también permite  otras funcionalidades mas , como por ejemplo;.

  • Cambiar el nombre y la clave de su WiFi.
  • Activar un WiFi exclusivo para sus invitados, sin compartir tu clave.
  • Organizar la conexión de sus hijos o eliminar a intrusos conectados.
  • Bloquear y desbloquear la conexión a WiFi de cualquier dispositivo
  • Optimizar la velocidad de tu conexión con un solo click
Los  pasos para  desconectar o  conectar un equipo o terminal a  su red  en realidad son muy sencillos:

1-Descargue la app

Compruebe que el sistema operativo de su terminal sea compatible con la aplicación  Smart  Wifi, que para Android son las versiones 4.4 y 7.0 y para IOS entre las versiones 7 y 10.3.1.

En función  de que el terminal sea Android o IOs descargue  e instale la aplicación Movistar Smart  Wifi  desde Google Play o desde  la App Store

App Movistar Base Google Play  App Movistar Base App Store

2- Asocie la aplicación Movistar Smart WiFi con el Router Smart WiFi

Asegúrese de que su terminal se encuentra conectado al WiFi del router desde el cual intentamos activar o desactivar el acceso .

Ahora solo tiene que buscar la clave de acceso al router  , la cual  es diferente de la clave de Wifi.

Para Routers Smart WiFi Fibra (es decir el HGU) la clave de 8 dígitos  aparece en el sticker pegado en la parte inferior del router. Para Routers Smart WiFi Cobre (ADSL/VDSL)la clave que viene por defecto en el manual del router“admin” ,pero si la ha cambiado y no la recuerda basta pinchar con un alfiler el agujerito de reset para que vuelva a tomar la pwd por defecto

 Screenshot_2018-04-03-16-19-37-458_com.movistar.base[1]

Ejecute la aplicación  e introduzca    la contraseña del router y empezara la app a recolectar datos de router

Screenshot_2018-04-03-16-21-29-474_com.movistar.base[1]

Una vez concluido el proceso de inicializacion primera , nos dará la bienvenida a la la app:

Screenshot_2018-04-03-16-21-43-317_com.movistar.base[1]

Lo primero que nos sugiere es cambiar la clave de la WIFI , paso que podemos saltar o inlcluso retomar en otra ocasion:

Screenshot_2018-04-03-16-21-55-322_com.movistar.base[1].png

 

Ahora puede pulsar “Sigamos adelante”

3-Bloqueo de un dispositivo:

Una vez ya dentro de la aplicación  Smart WiFi   vera el mapa de dispositivos coenctado a su red  ( también puede  pulsar  la pestaña inferior “Dispositivos” para verlo en forma de lista)

 

Screenshot_2018-04-03-16-22-11-127_com.movistar.base[1].png

Observe que aparecen los equipos  clasificados por tecnologia y tipologia

Si deseamos bloquear un terminal móvil pinche en el icono del movil

Screenshot_2018-04-03-16-22-40-527_com.movistar.base[1]

Seleccione ahora  de la lista presentada el dispositivo que quiere bloquear y presione el botón “Bloquear Dispositivo”

 

Screenshot_2018-04-03-22-18-20-902_com.movistar.base[1]

Al pulsar el botón de bloquear dispositivo se informara en verde de que se ha realizado la operación correctamente:

Screenshot_2018-04-03-22-18-31-962_com.movistar.base[1]

Como es obvio enseguida el terminal  sera desconectado apareciendo en la lista de dispositivos bloqueados.
Screenshot_2018-04-03-22-36-35-199_com.movistar.base[1].png

Puede bloquear y desbloquear cualquier  dispositivo en cualquier momento. Cuando un dispositivo esté bloqueado, no podrá acceder a la WiFi hasta que sea desbloqueado.

Para desbloquearlo ir nuevamente al dispositivo sobre el , pulsar el botón de desbloqueo y enseguida tendrá acceso nuevamente a la red

 

Screenshot_2018-04-03-22-36-39-613_com.movistar.base[1]

4- Otras funcionalidades interesantes

Ademas de desactivar una coenxion , se pueden hacer cosas muy interesantes como desactivar el wifi de inviatdos , compartir la clave o hace un dianostico:

Activar o desactivar el WiFi de invitados

En la app Smart WiFi  pinche el ícono “+” en la pantalla de inicio. Seleccione WiFi Invitados y elijae una clave que no le importe compartir. Una vez habilitada la red de invitados, permanecerá activa hasta que decida desactivarla. Los dispositivos que accedan a esta red, solo accederán a internet, pero no tendrán acceso a su red interna 

Compartir la clave de mi WiFi

En la app  Smart WiFi  pinche el ícono de router “M” (Mi Red). En la sección “Gestiona tu red” elija la red que quiere compartir. Toque la contraseña para copiar el texto o utilize el ícono “compartir” para enviarla por Whatsapp, Correo Electrónico, SMS, Bluetooth, etc.).

Diagnóstico de la conectividad de mi red:

Acceda desde el ícono del router “M” (Mi Red) en su aplicación Smart WiFi ,seleccione “Movistar Base” y pinche el ícono de una herramienta. Una vez seleccionada esta opción, se ejecutará el diagnóstico. Si encontrara alguna incidencia, podrá resolverla apretando el botón “optimizar” o revisando los tips de ayuda.

Cambiar el nombre o la foto asociada a un dispositivo.

Se puede cambiar la imagen que aparece junto al dispositivo,para ello desde la pantalla de inicio de su aplicación  Smart WiFi,seleccione la pestaña “Dispositivos”,elija el dispositivo que quiere personalizar,elija una fotografía para asociarla al dispositivo (puede tomarse  con la cámara  o bien elegir una imagen de la galería de fotos) .También en el campo “Tipo de dispositivo”, puede elegir la categoría a la cual quieres asociar ese dispositivo (Smartphone, Tablet, Smart TV, etc.).

 

Cambiar el nombre y/o la clave de su WiFi

Desde la app pinche el ícono de router. En la sección “Gestiona tu red” elija la red que quiera modificar, tocando su nombre.Puede personalizar el nombre y contraseña de cada red WiFi (WiFi, WiFi Plus o WiFi Invitados) en cualquier momento.

Si cambia el nombre o la clave de la red, los dispositivos que tuviese conectados perderán la conexión automáticamente y tendrá que volver a conectarlos con los nuevos parámetros.

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


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

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

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

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

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

 

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

El esquema eléctrico queda como la siguiente imagen

arduino-dht11-dht22-esquema

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

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

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

 

 

Conexión de un DHTXX a un  ESP8266 

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

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

referencia de conexiones

 

Para los pines  del sensor, usaremos el siguiente cableado:

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

 

 

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

Crear un centro de IoT

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

     

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

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

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

Obtenga su cadena de conexión del hub de IoT

Registre un dispositivo en el hub de IoT para su dispositivo

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

 

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

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

Obtenga la aplicación de muestra de GitHub

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

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

 

Instale ahora el paquete para  el ESP8266 en Arduino IDE:

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

Instalación de  las bibliotecas necesarias

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

Implementar la aplicación de muestra  para ESP8266 

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

Ingrese sus credenciales

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

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

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

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

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

com33.png

 

 

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

 

 

 

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