Revista 100% Verde

Interaccionar con FireBase desde Arduino

Por Soloelectronicos @soloelectronico

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 e l 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

Interaccionar  con  FireBase desde Arduino

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.
Interaccionar FireBase desde Arduino

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: p ushInt,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

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:

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:

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:

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:

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.

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

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:

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.

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:

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.

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ámetro path : 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ámetro path : la ruta al nodo que desea recuperar.

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

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

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.

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

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

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.

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.

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

bool success ( )

Devuelve si el último comando fue exitoso.

bool failed ( )

Devuelve si el último comando falló.

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

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.

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

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

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

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

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

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

String & error ( ) const

Devuelve un m ensaje de error si es verdadero.

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


Volver a la Portada de Logo Paperblog