Como buscar ficheros o carpetas de forma recursiva desde linea de comandos


A  veces  desde el interfaz de comandos   de windows , accesible mediante la ejecución de la orden «cmd»  desde todas las versiones ( en w10 incluso  desde Cortana ) , puede ser necesario buscar  ficheros o nombres de directorios que respondan a un cierto  patrón  y que   además estén   partir de un determinado directorio o carpeta hacia el interior.

Ejemplos  de  estas búsquedas puede  ser   sacar un listado de todas las fotos  que tenemos en una determinada ruta o unidad , saber cuantas fotografías con  un determinado patrón  tenemos almacenadas, cuantas canciones en mp3 tenemos  de un determinado título (por  ejemplo  con la palabra love :  *love*)  , o cuantos documentos excel existen que tengan que ver con determinado asunto.

Ambas casuísticas de  buscar  ficheros o directorios que respondan a un  patrón  determinado,  y que   además estén  dentro de de un determinado directorio , usando exclusivamente por   línea de comandos las resolveremos :

  • Mediante los comodines asteriscos  «*»o interrogaciones «?»:    con esto  buscaremos  ficheros o nombres de directorios que respondan a un cierto  patrón  
  • Con el parámetro de recursividad , es decir «/s»       :buscaremos  ficheros o nombres de directorios a   partir de un determinado directorio o carpeta hacia el interior

 

Photo by panumas nikhomkhai on Pexels.com

 

En efecto se  puede encontrar cualquier archivo en su pc  usando línea de comandos  simplemente  siempre que sepa el nombre   o parte del nombre del archivo usando los comodines :

  • El signo asterisco (*) , el cual  reemplaza cadenas de caracteres de longitud indeterminada. 
  • El signo   ? , el cual remplaza pero solo un carácter. Podemos especificar mas signos de interrogación. Con lo que si ponemos dir s???*.* Esto nos listaría los directorios y archivos con un nombre que empiecen por s y otras 3 letras cualquier mas unos carácter cualquiera, a continuación él.* que hace que se listen archivos con cualquier extensión.

Si no está seguro de dónde puede estar el archivo en su pc , puede lanzar la búsqueda desde  el directorio raíz de su pc, lo que significa que deberá  estar en C: \>( o en D:\ , E:\  en caso de tener varias particiones o  discos ). Una vez en el directorio raíz o el directorio en el que cree que se encuentra el archivo, simplemente   escriba dir  seguido  de  la mascara  y terminando el comando con el indicador de recursividad (/s).

Si, por ejemplo, supiera que el archivo que busca contenía la cadena «pepe»en algún lugar del archivo, escribiría:

       dir *pepe*.*  /s 

Como  vemos en el ejemplo anterior se  utiliza comodines (los asteriscos ) y además usamos  el modificador de comando «/ s»   para indicar al comando dir que busque el directorio actual y todos sus subdirectorios  ( es decir  que haga la búsqueda recursiva) .

Por ejemplo si no puede recordar ninguno de los nombres de los archivos, pero recuerda que se crearon en Microsoft Excel , podría, por ejemplo, escribir:

   dir *.xls /s 

En el ejemplo anterior, sabiendo que los archivos de Excel a menudo terminan con la extensión de archivo .xls, usamos el carácter de comodín  le indicamos a su pc  que busque cualquier archivo que termine con la extensión .xls.

 

Extensiones más comunes de archivos

Si no sabe cuál es la extensión de su archivo, hay docenas de diferentes formatos de archivo de audio , estándares y extensiones de archivo que se utilizan en la actualidad. A continuación se muestra una lista de las extensiones de archivo de audio más comunes:

  • .aif – archivo de audio AIF
  • .cda – CD de pista de audio
  • .mid o .midi – archivo de audio MIDI .
  • .mp3 – archivo de audio MP3
  • .mpa – archivo de audio MPEG-2
  • .ogg – archivo de audio Ogg Vorbis
  • .wav – archivo WAV
  • .wma – archivo de audio WMA
  • .wpl – Playlist de Windows Media Player

Extensiones de archivos comprimidos

La mayoría de los usuarios están familiarizados con los archivos comprimidos .zip, pero hay otros tipos de archivos comprimidos . A continuación se muestra una lista de las extensiones de archivo comprimidas más comunes:

  • .7z – archivo comprimido 7-Zip
  • .arj – archivo comprimido ARJ
  • .deb – archivo de paquete de software de Debian
  • .pkg – archivo de paquete
  • .rar – archivo RAR
  • .rpm – Administrador de paquetes de Red Hat
  • .tar.gz – archivo comprimido de tarball
  • .z – archivo comprimido Z
  • .zip – archivo comprimido en zip

Extensiones de disco y archivos multimedia.

Al crear una imagen de un disco u otro medio , todos los archivos contenidos se guardan en un archivo de imagen. A continuación se muestran las extensiones de archivo de imagen de disco más comunes:

  • .bin – Imagen de disco binario
  • .dmg – imagen de disco de macOS X
  • .iso – imagen de disco ISO
  • .toast – Toast imagen de disco
  • .vcd – CD virtual

Extensiones de archivos de datos y bases de datos

Un archivo de datos puede ser cualquier archivo, pero para el propósito de esta lista, hemos enumerado los archivos de datos más comunes que se relacionan con los datos utilizados para una base de datos, errores, información, importación y exportación:

  • .csv – archivo de valores separados por comas
  • .dat – archivo de datos
  • .db o .dbf – archivo de base de datos
  • .log – Archivo de registro
  • .mdb – archivo de base de datos de Microsoft Access
  • .sav – Guardar archivo (por ejemplo, guardar archivo de juego)
  • .sql – archivo de base de datos SQL
  • .tar – Archivo de archivos tarball de Linux / Unix
  • .xml – archivo XML

Extensiones de archivo ejecutables

El archivo ejecutable más común son los archivos que terminan con la extensión de archivo .exe. Sin embargo, otros archivos también pueden ejecutarse solos o con la ayuda de un intérprete :

  • .apk – archivo de paquete de Android
  • .bat – archivo por lotes
  • .bin – archivo binario
  • .cgi o .pl – archivo de script Perl
  • .com – Archivo de comandos de MS-DOS
  • .exe – archivo ejecutable
  • .gadget – gadget de Windows
  • .jar – Archivo Java Archive
  • .py – archivo de Python
  • .wsf – Archivo de Windows Script

Extensiones de archivo de fuente

A continuación se muestran las extensiones de archivo más comunes utilizadas con las fuentes :

  • .fnt – archivo de fuente de Windows
  • .fon – archivo de fuente genérico
  • .otf – archivo de fuente de tipo abierto
  • .ttf – archivo de fuente TrueType

Formatos de archivo de imagen por extensión de archivo

Hay docenas de diferentes tipos de imágenes y extensiones de archivos de imágenes que se pueden usar al crear y guardar imágenes en la computadora. A continuación se muestra una lista de las extensiones de archivo de imagen más comunes:

  • .ai – archivo de Adobe Illustrator
  • .bmp – Imagen de mapa de bits
  • .gif – imagen GIF
  • .ico – Archivo de iconos
  • .jpeg o .jpg – imagen JPEG
  • .png – imagen PNG
  • .ps – archivo PostScript
  • .psd – Imagen PSD
  • .svg – Archivo de gráficos vectoriales escalables
  • .tif o .tiff – imagen TIFF

Extensiones de archivos relacionados con Internet

Internet es el recurso más utilizado en un ordenador y debido a que los servidores web usan otros ordenadores para servir los archivos, se utilizan muchísimas  extensiones de archivo diferentes. A continuación, encontrará una lista de las extensiones de archivo más comunes que encontrará al navegar por la web.

Las extensiones de archivo de imagen , las extensiones de archivo de video y otras extensiones enumeradas en esta página también podrían incluirse con estas extensiones de archivo que se mencionan a continuación:

  • .asp y .aspx – Archivo de página Active Server  de Microsoft
  • .cer – certificado de seguridad de internet
  • .cfm – ColdFusion Markup file
  • .cgi o .pl – archivo de script Perl
  • .css – archivo de hoja de estilo en cascada
  • .htm y .html – archivo HTML
  • .js – archivo JavaScript
  • .jsp – Archivo de la página del servidor Java
  • .part – Archivo parcialmente descargado
  • .php – archivo PHP
  • .py – archivo de Python
  • .rss – archivo RSS
  • .xhtml – archivo XHTML

Presentación de formatos de archivo por extensión de archivo.

Hoy en día, hay algunos programas que pueden crear una presentación.A continuación se muestra una lista de las extensiones de archivo más comunes asociadas con los programas de presentación:

  • .key – Presentación de Keynote
  • .odp – Archivo de presentación OpenOffice Impress
  • .pps – presentación de diapositivas de PowerPoint
  • .ppt – presentación de PowerPoint
  • .pptx – PowerPoint Open XML presentation

Programación de archivos por extensión de archivo.

Muchas extensiones de archivo se utilizan para programas antes de compilarse, así como secuencias de comandos de programación. A continuación se muestra una lista de las extensiones de archivo más comunes asociadas con la programación.

Muchas de las extensiones de archivo relacionadas con Internet también podrían incluirse con estas extensiones de archivo que se mencionan a continuación:

  • .c – archivo de código fuente C y C ++
  • .class – archivo de clase Java
  • .cpp – archivo de código fuente de C ++
  • .cs – Archivo de código fuente de Visual C #
  • .h : archivo de encabezado C, C ++ y Objective-C
  • .java – archivo de código fuente Java
  • .sh – Bash shell script
  • .swift – archivo de código fuente Swift
  • .vb – archivo de Visual Basic

Formatos de archivo de hoja de cálculo por extensión de archivo

A continuación se muestran las extensiones de archivo más comunes que se usan para guardar archivos de hojas de cálculo en un ordenador :

  • .ods – archivo de hoja de cálculo OpenOffice Calc
  • .xlr – archivo de hoja de cálculo de Microsoft Works
  • .xls – archivo de Microsoft Excel
  • .xlsx – Archivo de hoja de cálculo XML abierto de Microsoft Excel

Formatos de archivo y extensiones de archivo relacionados con el sistema

Como todos los demás programas, su sistema operativo usa archivos y tiene extensiones de archivo que son más comunes que otras. A continuación se muestra una lista de las extensiones de archivo más comunes utilizadas en los sistemas operativos.

Las extensiones de archivo ejecutables y todos los demás archivos también podrían incluirse en esta lista.

  • .bak – archivo de copia de seguridad
  • .cab – archivo de Windows Cabinet
  • .cfg – archivo de configuración
  • .cpl – archivo del panel de control de Windows
  • .cur – archivo de cursor de Windows
  • .dll – archivo de librería dinámica  de Microsoft DLL
  • .dmp – archivo de volcado
  • .drv – archivo de controlador de dispositivo
  • .icns – archivo de recursos del icono de macOS X
  • .ico – Archivo de iconos
  • .ini – archivo de inicialización
  • .lnk – archivo de acceso directo de Windows
  • .msi – paquete de instalación de Windows
  • .sys – archivo de sistema de Windows
  • .tmp – Archivo temporal

Formatos de archivo de vídeo por extensión de archivo

Hoy en día, hay docenas de tipos de archivos asociados con los archivos de video para agregar diferentes tipos de compresión , compatibilidad y DRM a los archivos de vídeo. A continuación se muestra una lista de las extensiones de archivo de vídeo más comunes:

  • .3g2 – archivo multimedia 3GPP2
  • .3gp – archivo multimedia 3GPP
  • .avi – archivo AVI
  • .flv – archivo de Adobe Flash
  • .h264 – archivo de video H.264
  • .m4v – archivo de video Apple MP4
  • .mkv – Contenedor Multimedia Matroska
  • .mov – archivo de película Apple QuickTime
  • .mp4 – archivo de video MPEG4
  • .mpg o .mpeg – archivo de video MPEG
  • .rm – archivo RealMedia
  • .swf – Shockwave flash file
  • .vob – DVD Video Object
  • .wmv – Archivo de Windows Media Video

Procesador de textos y formatos de archivo de texto por extensión de archivo.

Crear archivos de texto y usar un procesador de textos es una de las tareas más comunes en una computadora. A continuación se muestran las extensiones de archivo más comunes utilizadas con archivos de texto y documentos:

  • .doc y .docx – archivo de Microsoft Word
  • .odt – archivo de documento de OpenOffice Writer
  • .pdf – archivo PDF
  • .rtf – Formato de texto enriquecido
  • .tex – Un archivo de documento LaTeX
  • .txt – Archivo de texto plano
  • .wks y .wps – archivo de Microsoft Works
  • .wpd – documento de WordPerfect

 

 

Ejemplo  recopilatorio  final

Hemos visto que  una vez  tengamos  una pista del nombre  del fichero a buscar  y  sepamos el tipo de extensión del fichero , nos debería bastar  con usar los comodines   seguido del parámetro de recursividad /s  para  que el desde el intérprete de comandos podamos encontrar el o los archivos que lo cumplan teniendo en cuenta al mascar  así como el tipo de archivo de la  búsqueda

Además   podemos redirigir la salida estándar  por pantalla  por ejemplo a un fichero , lo cual haremos mediante el carácter de redirección  «>» seguida de la ruta del recurso en disco donde deseamos  salvar el resultado ( en el fichero  ejemplo.txt)  

A continuación se muestra un ejemplo de los resultados encontrados al buscar  de forma recursivos  de tipo log  (escribir dir  *. log  / S )   y ademas redirigiendo la salida a un fichero llamado ejemplo.txt en el disco d:

D:\temp>dir *.log /S > d:\ejemplo.txt


El volumen de la unidad D es DATOS
El número de serie del volumen es: 8256-F6F1

Directorio de D:\temp

30/04/2019 20:37 508 error.log
1 archivos 508 bytes

Directorio de D:\temp\_carga_xc_cc201903230706

23/03/2019 21:30 150 error.log
1 archivos 150 bytes

Directorio de D:\temp\_carga_ss_ccc201904112017

11/04/2019 21:34 100 error.log
1 archivos 100 bytes

Directorio de D:\temp\_carga_cce_ccde201904112017\carga_te_tde201904112017

12/04/2019 21:36 118.038 error.log
1 archivos 118.038 bytes

Directorio de D:\temp\_carga_xs_wer201904120910

26/04/2019 21:33 150 error.log
1 archivos 150 bytes

Directorio de D:\temp\_carga_qq_ddd201904231158_falta_matadatos

23/04/2019 20:33 100 error.log
1 archivos 100 bytes

Total de archivos en la lista:
6 archivos 119.046 bytes
0 dirs 262.141.583.360 bytes libres

D:\temp>

  El volumen en la unidad C no tiene etiqueta
 El número de serie del volumen es 214B-1DE8

Como se  puede ver en el ejemplo anterior, se encontraron varios archivos que contienen la extensión *log. Si recibe más de los resultados esperados, es posible si no redirige la salida a un fichero  ( es decir omita «> d:\ejemplo.txt»)  ,  que deba escribir / p después del comando pues usando / p mostrara  los resultados de una página a la vez. 

Primeros pasos con NodeMCU y Firebase


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-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 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  :

Archivo  > Preferencias >Gestor de URL’s Adicionales de Tarjetas : http://arduino.esp8266.com/stable/package_esp8266com_index.json

4. Seleccione la placa  pulsando en 

Herramientas > Placa >NodeMCU 1.0

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 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.
  • Aceptar las condiciones entre responsables del tratamiento de datos. Es obligatorio marcar esta casilla si vas a compartir tus datos de Analytics para mejorar los productos y servicios de Google. Más información


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  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.

 

El código empleado es el siguiente:

 

         // By CRN   mayo-2019

<ArduinoJson.h>

<ESP8266WiFi.h>  

<FirebaseArduino.h>

// Firebase

FIREBASE_HOST «xxxxxxxxxxxxxxx.firebaseio.com»

FIREBASE_AUTH «xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx»

// Wifi

WIFI_SSID «wwwwwwwwwwwww»

WIFI_PASSWORD «pppppppppppppppppppp»


void setup()

{

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 

 

Después  se definen cuatro variables de tipo constante para almacenar: 

  • WIFI_SSID «Nombre de Router Wifi» Cambiaremos en esa a línea  la red del router WiFi al que nos vayamos a conectar
  • WIFI_PASSWORD «Contraseña del Router» Cambiaremos en esa  línea contraseña de su router WiFi 
  • 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 
  • 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 …