Herramientas gratuitas para detectar una unidad USB falsa


Comprar una unidad USB falsa no es una pérdida total porque una buena parte es espacio de almacenamiento real. Digamos que el fabricante sólo ha tergiversado su verdadero espacio para atraerle a comprarlo, así que a pesar de que puede que nos podamos encontrar estafados, aun es posible recuperar al menos una parte de su valor .

En un post anterior usamos para detectar cual es la capacidad real de un pen-drive los programas aida64 o h2testw, pero en esta ocasión hablaremos de otros interesantes programas gratuitos como fakeflashtest, winsetupfromusb.

Otra forma de saber si un pendrive USB es falso es verificando que tenga la interfaz a la que realmente opera. Muchas unidades prometen ser 3.0 y al final se quedan en 2.0 o ni siquiera llegan a las velocidades prometidas. Con el software ChipGenius ya deberíamos de saber qué versión tiene nuestra unidad, ya que es una información que se lista en esta aplicación. Tambien la aplicación crystaldiskmark también nos ofrece de un modo muy rápido la velocidad de transferencia de esa unidad.

Además de los programas aida64 o h2testw, o los ya comentados, que usaremos para averiguar cual es la capacidad real del la unidad usb de almacenamiento externo, necesitaremos nuevamente usar algunos comandos de la utilidad de Windows diskpart para formatear dicha unidad con su capacidad real:

  • diskpart
  • list disk
  • select disk {number}
  • clean
  • create partition primary size={number of megabytes}
  • select partition 1
  • active
  • format fs=fat32 quick
  • assign
  • exit

FakeFlashTest

FakeFlashTest es una herramienta de detección de unidades flash falsificadas. Esta herramienta se utiliza para detectar unidades flash USB o tarjetas de memoria que han sido engañosamente etiquetadas con un tamaño de almacenamiento mayor al que realmente tienen. Por ejemplo es común que los fabricantes falsificados etiqueten una unidad flash de X GB como si tuviera 2XGB de almacenamiento, y esto puede causar problemas al intentar guardar archivos en la unidad.

FakeFlashTest verifica el tamaño real de almacenamiento de la unidad flash o la tarjeta de memoria y le informa al usuario si hay una diferencia entre el tamaño etiquetado y el tamaño real.

Este programa en efecto es de los más usados para comprobar los sectores de memoria de un dispositivo de almacenamiento como una microSD o un pendrive, pues verifica la capacidad real escribiendo bloques de datos de un tamaño correspondiente a la capacidad que dice tener el dispositivo, de este modo, si luego al leerlo de nuevo da fallos, entonces es que la unidad de almacenamiento esta formateado con una capacidad distinta a la real.

Si el programa ha dado error em algun sector, probablemente se pregunte como calcular cual es la verdadera capacidad del disco, pues afortunadamente existen conversores de sectores a GB, que nos pueden orientar a saber cual es la capacidad real del disco.

Es obvio advertir que antes de usar esta aplicación es importante hacer una copia de los archivos que tengamos en esa unidad, porque toda la información de la memoria o tarjeta queda sobreescrita y por tanto eliminada.

Ojo porque si la capacidad anunciada de la unidad USB es alta, este programa por sus características del método usado, tardara un buen rato ( o incluso en determinadas ocasiones puede que incluso pierda el control).

WinSetupFromUSB

WinSetupFromUSB es una herramienta gratuita que permite crear una unidad USB bootable para instalar diferentes versiones de Windows, así como otras distribuciones de Linux. Permite crear una unidad USB multiboot con varias versiones de Windows y también sistemas operativos Linux siendo ideal para crear una unidad USB de arranque para la instalación de sistemas operativos en varios equipos, ya que permite seleccionar varios sistemas operativos y llevarlos en una sola unidad USB.

Tras la descarga y descompresión, ejecutaremos la versión de 64 bits .Una vez la ejecutemos, descubriremos que realmente se trata de una aplicación que cuenta con otras tres implementadas. Y nosotros la que utilizaremos para saber si un pendrive USB es falso es la de RMPrepUSB, cuya utilidad real es la de crear un USB booteable.

Por tanto en la pantalla principal elegimos la opción RMPrepUSB para abrir esta aplicación que nos abrirá nueva ventana parecida a la siguiente de mas abajo donde en settings deberemos elegir que tome dispositivos de mas de 1GB y en drive seleccionar la unidad que queremos probar:

winsetupfromusb  funcionando

Una vez seleccionada la unidad extraible y pulsaremos «Quick Size Test» y con ello empezaremos la prueba de capacidad real de la unidad.

ChipGenius

ChipGenius es una sencilla aplicación creada para ayudar a los usuarios a extraer información sobre sus dispositivos USB, averiguando los detalles que necesitan para reparar unidades flash averiadas. Aunque puede utilizarse en cualquier situación, resulta especialmente útil cuando un dispositivo flash no está visible en el Explorador de archivos, sino sólo en la sección dedicada a «Dispositivos» del Panel de control.

Esta utilidad es menos atractiva visualmente pero igualmente competente no requiriendo instalación, por lo que la app puede iniciarse con un simple doble clic. Centrándose en la funcionalidad más que en la apariencia se mantiene todo al mínimo: su interfaz consiste en sólo dos áreas, una que muestra una lista completa de todos los dispositivos USB y controladores, y la otra que muestra detalles sobre el dispositivo seleccionado. No hay botones que pulsar, ni menús a los que acceder, ni otras opciones con las que lidiar.

Una vez iniciado la app recopila información sobre todas las unidades flash USB y otros dispositivos conectados a través de un cable USB, junto con el número de puertos abiertos. Al seleccionar cualquiera de los dispositivos descubiertos (pinchando sobre el signo mas), aparece un nuevo informe en el área «Información detallada». Puede comprobar el tipo de dispositivo y su descripción original, la versión del protocolo y la velocidad de procesamiento actual, los datos de identificación del dispositivo (VID – vendor ID, PID – product ID) y su número de serie. Además, muestra el modelo, el fabricante y el proveedor del dispositivo. Quizá la información que más le interese sea el proveedor del chip, el número de pieza (chip de la CPU) y el código de identificación de la memoria flash (el chip Flash que hay dentro de la unidad USB).

En la siguiente imagen podemos ver como nos da información sobre la unidad D donde tenemos un pen-drive que queremos testear:

chipsgenius funcionando


Una unidad USB defectuosa no sólo es imposible de usar para transferir archivos, sino que puede causar la pérdida de información importante. Y si el Explorador de Windows no puede detectarla, tiene otras opciones para extraer los detalles de hardware que necesita para buscar una solución al problema, sea cual sea. ChipGenius muestra información sobre cada equipo conectado por USB, ya sea una unidad flash, una tarjeta, un teclado, un ratón o un dispositivo de almacenamiento externo. Además, con un solo clic con el botón derecho, todos los detalles se copian en el portapapeles, lo que facilita enormemente la creación de informes. Lamentablemente, por el momento no hay ninguna opción de exportación disponible.

NOTA: Algunas soluciones antivirus pueden identificar este software como malicioso. Se trata de falsas alertas positivas activadas por análisis heurísticos debido al comportamiento del programa (acceso a información de hardware). El archivo original proporcionado por el desarrollador está cifrado y requiere una contraseña para extraerlo. Esto sirve para evitar que los motores antivirus lo marquen como malicioso, pero los ficheros del archivo extraído seguirán siendo detectados y potencialmente puestos en cuarentena por su antivirus. Estamos alojando un archivo no cifrado de una versión ligeramente más antigua de ChipGenius que es marcada por menos motores antivirus y tiene una mejor oportunidad de ser utilizable sin tener que desactivar su antivirus o añadir excepciones.

Utilizando USB Device Tree Viewer

Pero si queremos estar aún mas seguros de ello, entonces vamos a utilizar USB Device Tree Viewer, la cual podremos descargar desde su página oficial. Este software muestra muchísima más información que el anterior, y está específicamente dedicado a mostrar las características nuestros puertos y dispositivos que hay conectados a él.

Pues bien, de entrada, el programa es un poco denso, pero fácilmente encontraremos el lugar a donde está conectada nuestra unidad USB si en la zona superior desplegamos Drive y buscamos nuestro USB.

Tras ser marcado en el árbol de puertos, pulsaremos sobre él y a la derecha se mostrará toda la información acerca de su interfaz. Nos fijaremos en la sección “USB Device” y dentro de esta, en las subsección “Connection Information V2”.

Aquí veremos una lista de protocolos soportados, los cuales irán marcándose en “yes” desde el más antiguo hasta el más reciente. En nuestro caso, la unidad soporta solamente USB 1.1 y USB 2.0.

Si efectuamos la misma prueba con una unidad que dice ser USB 3.0, pues tal y como se muestra, debería de aparecer un “yes” en dicha casilla.

CrystalDiskMark

CrystalDiskMark es un software de referencia gratuito que mide la velocidad de transferencia de los medios de almacenamiento de datos como HD, SSD, memoria USB, tarjeta SD y NAS. Tambien es una herramienta de benchmarking de disco duro y unidad de estado sólido (SSD) para medir el rendimiento de lectura y escritura de un disco.

Al ejecutar CrystalDiskMark, se realizan varios test de lectura y escritura en el disco seleccionado, y se genera un informe que muestra el rendimiento en términos de velocidad de lectura y escritura en MB/s. Esta herramienta es útil para medir el rendimiento de un disco y compararlo con otro, o para determinar si un disco está fallando o si hay algún problema de rendimiento.

Nada más abrir el programa podemos ver que tenemos cuatro opciones principales:

  • El primero número que va de 1 hasta 9 corresponde con el número de pasadas que va a realizar el programa. Si tiene prisa puedes seleccionar 1, pero tenga en cuenta que sus resultados pueden ser menos exactos. Un número adecuado suele ser 5.
  • El segundo parámetro hace referencia al tamaño de archivo de la prueba. Lo suyo es utilizar un tamaño de archivo parecido a los que manerajará en la realidad. 1 GiB está bien, pero si quiere reducir las posibilidades de que la caché esté alterando los resultados deberías elegir un tamaño mayor (32 GiB, por ejemplo)
  • El tercer parámetro es la letra de la unidad en la que se va a realizar el test
  • El último parámetro son las unidades de medida en las que queremos ver los resultados. Este parámetro se puede modificar antes y después de hacer el test. El resto de los parámetros hay que modificarlos antes de hacerlo.

Y una vez configurados los parámetros, solo tenemos que darle al botón All para que comience el test y esperar un poco. Ahora solo nos falta analizar los resultados. Lo primero que tenemos que entender es el significado de los parámetros de la izquierda:

  • SEQ o sequential: secuencial, acceso a datos ordenados, por ejemplo 1, 2, 3, 4, 5…
  • RDN o random: o aleatorio, acceso a datos no ordenador, por ejemplo 5, 1, 3, 6…
  • Q o queue: cola o cuántas peticiones tiene la unidad que procesar. Con un uso normal podemos tener un valor entre 1 y 4. Ordenadores con mucho uso del almacenamiento como servidores pueden tener una cola de entre 16 y 20.
  • T o threads: número de procesos que están intentando acceder a la unidad a la vez. Si tenemos cola grande y más procesos a la vez podemos aumentar la velocidad.

Por lo tanto:

  • SEQ1M Q8T1 hace referencia a muchas operaciones largas y secuenciales (copias de archivos, instalaciones, backups…).
  • SEQ1M Q1T1 ofrece el rendimiento de pocas secuenciales.
  • RND4K Q32T1 sirve para probar operaciones pequeñas aleatorias, pero muchas a la vez
  • RND4K Q1T1 sirve para probar operaciones pequeñas aleatorias de 1 en 1

Resultados

  • En general, en el caso de los discos duros magnéticos (HDD), las operaciones secuenciales suelen ser entre 10 y 100 veces más rápidas que en las operaciones aleatorias.
  • Para las unidades de estado sólido (SSD), la diferencia entre las operaciones secuenciales y aleatorias es bastante menor, aunque las secuenciales pueden ser entre 2 y 3 veces mayores. Si no hay diferencia, es probable que el SSD sea más rápido que el método de conexión (SATA I, SATA II, etc.).
  • Tenga en cuenta que la velocidad que suelen citar los proveedores son límites teóricos, y en la práctica, será cerca de un 5-10% inferior debido al rendimiento gastado en la gestión de los datos.
crystaldiskmark funcionado

DISKPART

Diskpart es una herramienta de línea de comandos de Microsoft que se utiliza para administrar discos duros y unidades de almacenamiento en un sistema operativo Windows. Con Diskpart, puede crear, eliminar y formatear particiones en un disco duro, así como asignar y quitar letras de unidad a las particiones. También se puede utilizar para establecer una partición como activa, limpiar un disco duro y cambiar el tamaño de las particiones.


Usando diskpart, ahora dividiremos el USB en su espacio real, para ello, en primer lugar, tenemos que identificar la unidad USB y seleccionarla. Asegúrese de verlo seleccionado en la lista de discos y que es el correcto (el asterisco indica que está seleccionado).

Microsoft DiskPart versión 10.0.22000.653

Copyright (C) Microsoft Corporation.
En el equipo: DESKTOP-NA97NGE

DISKPART> list disk

  Núm Disco  Estado      Tamaño   Disp     Din  Gpt
  ---------- ----------  -------  -------  ---  ---
  Disco 0    En línea        476 GB  2048 KB        *
  Disco 1    En línea       1943 GB      0 B

DISKPART>

Es muy importante asegurarse que disco vamos a gestionar , pues una vez limpiado, se eliminan todos los archivos y particiones. En el ejemplo el disco falso es el disco 1, así que lo seleccionaremos y lo listaremos para asegurarnos que esta activo.


DISKPART> select disk 1

El disco 1 es ahora el disco seleccionado.

DISKPART> list disk

  Núm Disco  Estado      Tamaño   Disp     Din  Gpt
  ---------- ----------  -------  -------  ---  ---
  Disco 0    En línea        476 GB  2048 KB        *
* Disco 1    En línea       1943 GB      0 B

Como el disco falso esta activo, podemos proceder a limpiarlo con el comando clean.

DISKPART> clean

DiskPart ha limpiado el disco satisfactoriamente.

Ahora crearemos una partición basada en el resultado del escaneo que teníamos. En nuestro caso en el ejemplo nos daba 61GB , que en MB es 61*1024=62.464Mb, que es el tamaño que elegiremos.


DISKPART> create partition primary size=62464

DiskPart ha creado satisfactoriamente la partición especificada.

En lugar de los falsos 2TB en el ejemplo , ahora tenemos 61 Gigabytes de verdadero espacio escribible. Esto asegurará que todos los archivos escritos en el USB no estén corruptos.

DISKPART> list partition

  Núm Partición  Tipo              Tamaño   Desplazamiento
  -------------  ----------------  -------  ---------------
* Partición 1    Principal           61 GB  1024 KB

DISKPART>

Active la nueva partición pues de ese modo podremos formatearla normalmente.

DISKPART> select partition 1

La partición 1 es ahora la partición seleccionada.


Ahora el USB falso vuelve a ser auténtico.

DISKPART> active

DiskPart marca la partición actual como activa.

DISKPART>

En este momento Windows lo reconocerá como disco , y nos pedirá que procedamos a formatearlo

Es interesante destacar que podemos formatear ya en NTFS y no en FAT extendida como suelen venir. Tras unos instantes veremos que el disco es correctamente formateado a su capacidad real.

Anuncio publicitario

Detector de sonido con sensor de humedad y temperatura con IoT


Una vez vamos a ver como hacer un  simple proyecto de IOT a  traves de la nube de Cayenne, pero esta vez vamos a mostrar como usar un microcontrolador algo menos habitual: el ESP8266 ESP-01.

Es necesario antes de empezar dado la actual tendencia de usar el ESP32 como solución ideal para proyectos de IoT, es necesario  hablar del  ESP01  de ESP32 y ESP8266 , dos dispositivos basados en chips de Espressif Systems que se utilizan comúnmente en proyectos de IoT (Internet de las cosas) y automatización. Ambos dispositivos son populares debido a su bajo costo, baja potencia y alto rendimiento. Sin embargo, hay algunas diferencias importantes entre ellos:.

  • El ESP8266 es un chip WiFi de baja potencia que se utiliza principalmente para aplicaciones de control remoto y automatización. Tiene una interfaz de comunicación serie y solo unos pocos pines disponibles para conectarse a otros dispositivos. Es una opción popular para proyectos pequeños debido a su tamaño y bajo costo.
  • El ESP32, por otro lado, es un chip WiFi y Bluetooth de baja potencia que se utiliza para aplicaciones de IoT y automatización. Tiene una interfaz de comunicación serie y una serie de pines disponibles para conectarse a otros dispositivos y sensores. Además, cuenta con un microcontrolador integrado, una memoria flash y una interfaz USB. También cuenta con una serie de periféricos adicionales como sensores de movimiento, micrófonos, cámaras, etc. Es una opción popular para proyectos más grandes y complejos debido a su mayor flexibilidad y características adicionales.

En resumen, el ESP8266 es un chip WiFi de baja potencia para proyectos pequeños y económicos, mientras que el ESP32 es un chip WiFi y Bluetooth de baja potencia con características adicionales para proyectos más grandes y complejos.

Por otro lados ESP8266 ESP-01 y ESP8266 NodeMCU son dos dispositivos basados en el chip ESP8266 de Espressif Systems. Ambos dispositivos utilizan el mismo chip y tienen muchas características similares, pero también hay algunas diferencias importantes entre ellos:

  • El ESP8266 ESP-01 es un módulo WiFi con un solo chip que se utiliza principalmente para aplicaciones de control remoto y automatización. Tiene una interfaz de comunicación serie y solo unos pocos pines disponibles para conectarse a otros dispositivos, siendo por tanto  una opción popular para proyectos pequeños debido a su tamaño y bajo costo.
  • El ESP8266 NodeMCU, por otro lado, es una placa de desarrollo basada en el chip ESP8266. Tiene una interfaz de comunicación serie y una serie de pines disponibles para conectarse a otros dispositivos y sensores. Además, cuenta con una serie de características adicionales como un microcontrolador integrado, una memoria flash y una interfaz USB. Es una opción popular para proyectos más grandes y complejos debido a su mayor flexibilidad y características adicionales.

En resumen, el ESP8266 ESP-01 es un módulo WiFi pequeño y barato para proyectos pequeños, mientras que el ESP8266 NodeMCU es una placa de desarrollo más completa con características adicionales para proyectos más grandes y complejos.

Por otro lado Cayenne es una plataforma de Internet de las cosas (IoT) desarrollada por MyDevices. Permite a los usuarios conectar y controlar dispositivos IoT mediante una interfaz web fácil de usar. Con Cayenne, los usuarios pueden crear reglas y automatizaciones para sus dispositivos, visualizar datos en tiempo real y recibir alertas cuando ocurra algo inusual. También permite a los desarrolladores crear aplicaciones IoT personalizadas mediante una API.

Esta es la lista de componente usados en este proyecto:

  1. ESP8266 ESP-01 WiFi módulo
  2. FTDI Breakout Board + Mini cable USB
  3. ESP8266 ESP-01 Breakout Board (opcional)
  4. Módulo relé de 1 canal
  5. DHT11 Sensor de humedad y temperatura
  6. Sensor de sonido
  7. Breadboards (utilizaré breadboards pequeños 2)
  8. 5V a 3.3V paso descendente módulo de Buck (opcional)
  9. Un montón de cables de puente

En primer lugar, debemos estudiar las conexiones de estos componentes. Aquí están los módulos principales que vamos a utilizar para este proyecto (es posible que tenga una variante diferente de los componentes, así que por favor tome nota de las etiquetas de pin)

img_4629

El modulo ESP8266 ESP-01

ESP8266 ESP-01

Tenemos que tener cuidado ya que esta placa funciona en un 3, 3V lógica. El pin VCC (aunque intente alimentar con 5V y no pase nada) debe conectarse a 3.3V. Lo mismo ocurre con el pin que  va a CH_PD. El pin RX debe conectarse a TX de la placa de arranque FTDI, a través de un divisor de tensión. Puede establecer el puente en su módulo FTDI de 3.3V si lo tiene (hay módulos FTDI que  dan la opción de elegir entre 5V y 3.3V). En caso de que la fuente de alimentación sólo proporcione 5V, consulte el divisor de tensión a continuación (usted deberá elegir las resistencias correctas para proporcionar energía suficiente a su módulo de ESP8266).img_4636-1

Módulo relé de 1 canal

El módulo de relé habitual tiene tres pines diferentes para la energía y señal. Para la energía, pin etiquetas son VCC y GND. Para activar o desactivar el relé, se utiliza el pin como IN. Muchos de estos módulos pueden funcionar muy bien con un 3,3 v, pero deberá asegurarse que lo tolera porque de lo contrario no responderá 

DHT11 Sensor de humedad y temperatura

Se trata de los sensores DHT11. Lee la temperatura y humedad del lugar donde está el sensor. Tiene dos pines para alimentación («-» para la tierra, el pin central es VCC). El pin con la etiqueta «S» es la entrada de pin. Las lecturas se reciben a través de este pin.

Sensor de sonido

Los sensores de los sonidos suelen también tener 3 pines: VCC, GND y OUT. El pin de salida envía el nivel de sonido en el lugar donde el sensor. También puede controlar su sensibilidad girando el potenciómetro en él (cuadro azul con blanco del «engranaje» dentro).

FTDI USB a TTL convertidor de serie

En la imagen vemos  un típico  convertidor de USB a TTL serie. Utilizamos esta placa para cargar nuestros bocetos en el módulo de WiFi de ESP8266 ESP-01. También puede utilizarse para programar microcontroladores diferentes. La placa generalmente tiene 6 pines (aunque se puede soldar más pins de encabezado en ambos lados de la placa): DTR, RX, TX, VCC, CTS y GND. CTS generalmente no se utiliza. Para nuestra actividad, son necesarios solamente 4 pines: VCC, RX, TX y GND.

FTDI USB to TTL Serial ConverterEn la siguiente imagen, vemos  el módulo FTDI configurado para 3.3V mediante  su puente correspondiente:

img_4767

Cuando están conectados los pines 1 y 2, el módulo FTDI proporciona una potencia de 5 voltios (mismo va con el pin de TX también). Cuando se conectan los pines 2 y 3, proporcionará energía 3.3-vols (lo mismo con el pin de TX también).

Conversor de 5V a 3.3V  (opcional)

5V to 3.3V Stepdown Power Supply Buck Module
Esto  placa es opcional a menos que la placa breakout FTDI no de la opción de cambiar el voltaje (generalmente entre estos dos: 3.3V y 5V). La fuente Buck módulo de alimentación de paso descendente 5V a 3.3V  se utiliza para «convertir» 5V a 3.3V. Como su nombre lo indica este modulo es muy útil para los módulos que  usan lógica de  3.3V.

El código

Antes de proceder con la codificación, necesitamos tener la siguiente configuración en el IDE de Arduino. Para las bibliotecas, descargarlos desde el enlace proporcionado para cada biblioteca (véase abajo) en Github.

  1. ESP8266 Tableros – para obtener instrucciones paso a paso, por favor véase la sección siguiente.
  2. SimpleDHT bibliotecas – bibliotecas de SimpleDHT pueden ser descargado aquí.
  3. SimpleTimer bibliotecas – bibliotecas Simple pueden ser descargado aquí.

Creación de las placas de ESP8266 es muy fácil. Por favor siga los siguientes pasos:

  1. Abra el IDE de Arduino.
  2. Ir a archivo > Preferencias.
    ArduinoIDE_File_Preference
  3. De las URLs de Gerente tableros adicionales texto de campo, colocar esta URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Haga clic en aceptar luego.
    ArduinoIDE_PreferencesWindow
  4. Ahora, vaya a Herramientas > Placas > Gestor de placas.
    ArduinoIDE_File_Tools_Board_BoardManager
  5. En Administrador de tablas, buscar esp8266 e instalar el esp8266 por ESP8266 comunidad versión x.x.x. Cierre la ventana del administrador de tablas.
    ArduinoIDE_BoardsManager
  6. Ir a Herramientas > Placa Desplácese por la lista hasta encontrar Módulo genérico de ESP8266.
    ArduinoIDE_Select_BoardsManager

Agregar las bibliotecas requeridas

  1. Ir al link proporcionado arriba para las bibliotecas necesarias 2 dos (SimpleDHT y SimpleTimer.
  2. Para cada vínculo, haga clic en clonar o descargar. Aparece una pequeña ventana, haga clic en Descargar Zip. Se refieren a las imágenes que se muestra a continuación:SimpleDHTLibraryDownload.pngSimpleTimerLibraryDownload
  3. Guarde el archivo ZIP para cada biblioteca.
  4. En el IDE de Arduino, vaya a Sketch > Biblioteca incluyen > Agregar. Cierre biblioteca.
  5. Busque y agregue a cada biblioteca (uno a la vez).
    ArduinoIDE_SelectLibs

Agregar las bibliotecas de Cayenne

Bibliotecas de Cayenne se puede instalar el IDE de Arduino mediante el administrador de biblioteca. Para ello, siga los siguientes pasos:

  1. En el IDE de Arduino, vaya a Sketch > Biblioteca incluyen. Haga clic en administrar bibliotecas.
    ArduinoIDE_Goto_LibraryManager
  2. En la ventana que aparecerá, escriba Cayenne en el campo de búsqueda. Instale el Cayenne por myDevices versión x.x.x y CayenneMQTTpor myDevices versión x.x.x. Cierre la ventana después. Estas bibliotecas están también disponibles en Github (bibliotecas deCayenne y CayenneMQTT ).ArduinoIDE_LibraryManager

Modo de programación

Inicialmente, tenemos que configurar nuestro ESP8266 ESP-01 al modo de programación. No necesitamos conectar nuestros componentes, sin embargo, como conectar les pueden causar la carga de los bocetos al fracaso. La siguiente tabla detalla qué pines están conectados uno al otro entre el módulo de ESP8266 ESP-01 WiFi y el convertidor serie FTDI  USB a TTL.

Program Mode Connections

Es necesario establecer el puente del módulo FTDI para 3.3V. Esta manera, nosotros no necesitando cualquier divisor del voltaje o el paso hacia abajo módulo de buck. El convertidor USB a Serial podría tener asignaciones de pines diferentes. La descripción anterior se demuestra en el siguiente esquema:

ESP8266 Project 3v3 Program Mode_bb

¡Eso es todo! Ahora estamos listos para configurar nuestra consola y subir los bocetos:
Upload the sketch

Crear el tablero de mandos de Cayenne

  1. Inicie sesión en su cuenta de Cayenne (registro gratis si usted no tiene uno pero al Cayenne registro página):
    Cayenne USB Serial - 01 Logon
  2. Una vez identificado, el siguiente paso sería elegir el dispositivo que vamos a usar . Si este es el primer dispositivo en tu panel de control, elija todos los dispositivos:
    1 - All Devices , Seleccione ESP8266 genérico en microcontroladores:
    2 - ESP8266               Si tiene añadidos previamente en los dispositivos existentes, necesitará agregar un dispositivo haciendo clic en el menú de añadir dispositivos/Widget:
    Cayenne USB Serial - 02 Add New Device
    A continuación, elija ESP8266 ya que esta es nuestra tabla de desarrollo:
    ESP8266MQTT
  3. En la página siguiente, se muestra con el nombre de usuario de MQTT, MQTT contraseña e ID de cliente. Necesitamos estos datos en el código más adelante. También aparecerá en la parte inferior de la página que está esperando el dispositivo a conectar.
    CayenneCredentials
  4. Ahora, procedemos con el código. Abra el IDE de Arduino. Ir a archivo > ejemplos > Cayenne-MQTT-ESP8266 > ESP8266. Este esbozo será nuestro boceto base.MQTT Sketch
  5. Volver al Portal de Cayenne. Tomar nota de lo siguiente, porque vamos a utilizarlo en nuestro código:
    • MQTT USERNAME
    • MQTT CONTRASEÑA
    • ID DE CLIENTE
  6. Ahora, vuelve al IDE de Arduino. Pegue los valores en la sección resaltada en la captura de pantalla siguiente:
    MQTT Creds Section
  7. También, proveer el nombre de Wi-Fi (SSID) y la contraseña en esta sección del código:
    Wifi creds
  8. Por cierto, tenemos que incluir las librerías necesarias: SimpleDHT y SimpleTimer. La SimpleDHT nos permite usar la temperatura de la DHT. El SimpleTimer nos permitirá ejecutar métodos fuera el método loop():
    Additional Libraries
  9. Ahora tenemos que declarar las clavijas para ser usado por los sensores.
    • DHT11 Pin = Pin 2 (GPIO2 ESP8266 ESP-01)
    • Pin de sonido = Pin 3 (GPIO3 ESP8266 ESP-01)
    • Pin de relé = Pin 1 (GPIO1 ESP8266 ESP-01)
      Sensor declaration
  10. Puesto que vamos a enviar datos a la plataforma del Cayenne IoT usando MQTT API, tenemos que pasar el valor de sensores a los pines virtuales. Los pines virtuales se utilizará por los widgets en nuestro escritorio. No vamos a utilizar V1, porque establecimos esto como una salida (para controlar el relé – usado en los widgets de dashboard de Cayenne):
    • V2 – humedad (datos de DHT11)
    • V3 – temperatura (datos de DHT11)
    • V4 – sonido (datos del Sensor de sonido)
  11. Subir el boceto a la Placa de ESP8266 ESP-01. Asegúrese de que el elegido es Genérico módulo ESP8266:ESp8266 board on board

Código completo

// This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data.
// Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling.

//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>

#include <SimpleTimer.h> // Download from https://github.com/jfturcot/SimpleTimer
#include <SimpleDHT.h> // Download from https://github.com/adafruit/DHT-sensor-library

// WiFi network info.
char ssid[] = "<your ssid/wifi name>";
char wifiPassword[] = ""<your ssid/wifi password>"";

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "<your MQTT Username>";
char password[] = "<your MQTT Password>";
char clientID[] = "<your client id>";

// DHT11 Pin
int pinDHT11 = 2;
SimpleDHT11 dht11;

// Sound Pin
int soundPin = 3;

// Relay Pin
int relayPin = 1;

// Timer
SimpleTimer timer;

void setup() {
 Serial.begin(9600);
 Cayenne.begin(username, password, clientID, ssid, wifiPassword);
 pinMode(relayPin, OUTPUT); // Relay
 digitalWrite(relayPin, HIGH);
 pinMode(soundPin, INPUT); // Sound
 timer.setInterval(200L, transmitData); // Method to execute every 200ms
}

void loop() {
 Cayenne.loop();
 timer.run();
}

CAYENNE_IN(relayPin) {
 if (getValue.asInt() == 1) { // NOTE: Channel = Virtual Pin
 digitalWrite(relayPin, LOW);
 }
 else {
 digitalWrite(relayPin, HIGH);
 }
}

void transmitData()
{
 byte temperature = 0;
 byte humidity = 0;
 int err = SimpleDHTErrSuccess;

if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
 Cayenne.virtualWrite(V4, 0);
 Cayenne.virtualWrite(V2, 0);
 }
 else {
 Cayenne.virtualWrite(V4, (int)temperature);
 Cayenne.virtualWrite(V2, (int)humidity);
 }

if (digitalRead(soundPin) == HIGH) {
 Cayenne.virtualWrite(V3, HIGH);
 }
 else {
 Cayenne.virtualWrite(V3, LOW);
 }
}


Conexión de los sensores y módulos

En esta etapa, debería poder subir tu dibujo con éxito. Ahora, saque la placa de potencia. También, eliminar la conexión GND de GPIO0. No necesitamos GPIO0 conectado a la tierra, a menos que vamos a actualizar el código. Refiérase a las tablas para cada sensor y el módulo siguiente:

Sensor and Modules Connections

Fuentes de alimentación de todos estos componentes están conectadas a la tensión de salida del paso por módulo, lo que significa que están alimentados a través de 3, 3V. La fuente de alimentación principal es la tabla de desglose FTDI. El esquema a continuación muestra las conexiones completas, después de cargar exitosamente el código:

ESP8266 Project 3v3_ no rx and tx connection

Nota: Los pines RX y TX del módulo FTDI no están conectados a los pines TX y RX del módulo wifi, y es tan GPIO0 (de tierra).

La imagen de abajo es el conjunto real de los esquemas que se muestra arriba:
img_4805img_4807

¡Eso es todo! Hemos terminado con estas configuraciones: placas, las bibliotecas y componentes. Ahora estamos listos para configurar nuestro proyecto con pimienta usando MQTT. Por cierto, MQTT está parado para el transporte de telemetría de MQ. Simplemente hablando, es un protocolo de mensajes entre las máquinas y la Internet de las cosas! Más sobre este tema en Docs de Cayenne.

La energía de las placas una vez más: el módulo de Wifi ESP8266 ESP-01 debe ser capaz de conectarse a su Wifi. Ahora, vuelve al portal de Cayenne. Usted debe ser capaz de ver el tablero de instrumentos widgets inicial rellena previamente que puede Agregar a la consola. Ahora puede personalizar el tablero de instrumentos.

Inicialmente, esto es como el tablero de instrumentos cuando el módulo de ESP8266 ESP-01 WiFi comienza a enviar datos a la consola de Cayenne (bajo el dispositivo configurado allí):

Initial Dashboard - Cayenne

Añadir los widgets iniciales que se muestra arriba, haga clic en el icono «+» en la esquina superior derecha de cada widget inicial:
Add widgets

Una vez añadido, ahora personalizaremos cada widget. Esto es cómo se ve como cuando se agregan estos widgets iniciales:
added widgets

Para personalizar cada widget, haga clic en el icono de la derecha, luego seleccione Ajustes. Consulte captura de pantalla siguiente:
Customize Widget

Una ventana emergente aparece y nos permitirá cambiar el nombre del Widget, canal, Widget icono y número de lugares decimales. Dejaremos el canal como es. No cambie el valor de la canal, puesto que el valor es el Virtual Pin (V0, V1, V2…) utilizados en el código de este widget. Virtual Pin 4 (V4) es la temperatura Virtual Pin 2 (V2) es la humedad y Virtual Pin 3 (V3) es el valor del sensor de sonido (0/1).

A continuación se muestran la configuración de cada widget inicial:

Config - HumidityConfig - Sound DetectedConfig - Temperature

Aquí es cómo verá después:
Config - Finished Initial

Ahora, todavía tenemos que añadir un widget más. Este widget es para que el relé para activar/desactivar. En la parte izquierda del tablero de instrumentos (superior izquierda), haga clic en Agregar nuevoy, a continuación, haz clic en el Dispositivo/Widget:
Cayenne USB Serial - 02 Add New Device

Desplácese hacia abajo más abajo y buscar Widgets personalizados. Seleccione el botón:
Custom Widgets - Button

Tenemos que cambiar la configuración del widget de botón:

  • Nombre = interruptor de relé
  • Dispositivo = ESP8266 genéricos (o el dispositivo llamado si ya tienes)
  • Datos = actuador Digital
  • Unidad = Digital (0/1)
  • Canal = 1 (esto es GPIO1 del módulo WiFi ESP8266 ESP-01 – código de revisión)
  • Elija el icono = botón (puede elegir qué icono que desee)

Abajo se encuentra la captura de pantalla de los ajustes del botón. Haga clic en agregar Widget luego:
Add Button Widget

El tablero final ahora este aspecto:
Final Dashboard

Y hemos terminado! Ahora, pruebe a activar/desactivar el relé del interruptor. El relé conectado a la ESP8266 ESP-01 WiFi módulo se activar o desactivar, oirá sonidos de clic. Trate de hacer algo de ruido. El widget de sonido registrará 1 (si se detecta ruido, 0 si no). Trate de observando los widgets de temperatura y humedad – estos valores el cambio según lo que se «intuye» de donde es el módulo DHT11.

Sólo hemos utilizado la API de Cayenne MQTT para conectar nuestro dispositivo con componentes conectados a él.

https://mydevices.com/article/cayenne-mqtt-standalone-esp8266-esp-01/

Sistema de domótica con módulo WiFi ESP8266 y Cayenee


La domótica se vuelve cada vez muy popular pues proporciona comodidad y confort en los hogares permitiendo por ejemplo controles centralizados de calefacción, ventilación, aire acondicionado e iluminación, etc. contribuyendo con todo ello a una reducción general de costos por el ahorro energía (el tema principal en la actualidad) y con ello una reducción de emisión de gases de efecto invernadero dada la procedencia en su mayor parte de combustibles fósiles .

Los sistemas existentes y bien establecidos se basan en la comunicación por cable (alámbrico): este sistema no ha enfrentado ningún problema siempre que se planifique antes de la construcción física de estos en las viviendas . Pero en un edificio completo cuando hay un requisito de extensión, el sistema de cableado requiere mucho esfuerzo y costo así que tenemos que buscar sistemas inalámbricos o de automatización. En los últimos años, los sistemas inalámbricos alcanzaron su gran avance utilizándose en todas partes como por ejemplo cámaras de seguridad inalámbricas, alarmas inalámbricas, electrodomésticos inalámbricos, etc.

En este post vamos a ver un sistema domótico utilizando Arduino y nuevamente el módulo ESP8266 NodeMCU, el cual es algo más económico que el ESP32, y es mas que suficiente para esta aplicación que únicamente trata de operar 4 electrodomésticos, aunque pueden modificarse según sus necesidades. Para los relés de control, utilizamos interruptores manuales y teléfonos inteligentes. El circuito puede detectar la luz solar y la temperatura ambiente para encender y apagar luces y ventiladores automáticamente usando el middleware del que hemos hablado en numerosas veces en este blog de Cayenne

Este proyecto tiene las siguientes características:

pruebas previas con cayenne

Principio del proyecto de automatización del hogar utilizando Cayenee

Este sistema tiene dos partes principales. La primera parte es el servidor, que presenta el núcleo del sistema. Administra, controla y monitorea los hogares de los usuarios.

La segunda parte es el módulo de hardware, que proporciona una interfaz adecuada para los sensores y actuadores del sistema domótico. Pero la mayor parte del sistema de automatización disponible en el mercado es escalable en el sentido de que un servidor puede administrar muchos módulos de hardware. Porque existen en la cobertura de la red WiFi.

esp8266 por arriba

Como corazón del circuito, tenemos la placa AZDelivery NodeMCU Amica V2 es la clásica placa de desarrollo ESP caracterizándose por su sencillo uso (se maneja fácilmente desde el IDE de Arduino) contando con un potente procesador ESP8266-12F de Espressif y una WLAN integrada, por lo que este controlador ofrece una sencilla introducción al desarrollo del IoT. Hay disponibles varias versiones de firmware del fabricante, que se pueden flashear cómodamente a través del puerto micro-USB.A diferencia de modelos anteriores, si usa el chipset CP2102 modificado (por ejemplo la azdelivery) se permite una mayor velocidad de transferencia. Además, este modulo cuenta con una relativa gran memoria y también con una reserva de potencia del procesador.

Este es el resumen de las características mas significativos:

Voltaje de alimentación (USB)5V DC
Voltaje de Entrada/Salida3.3V DC
Frecuencia de reloj80MHz / 160MHz
Instrucción RAM32kB
Datos RAM96kB
UART2
Pines digitales GPIO17 (configurable como PWM a 3,3V)
Pin analógico ADC(el rango de voltaje es: 0 – 1V)
Memoria flash externa4MB

Un sistema IoT se construye con algunos componentes básicos. Los componentes son sensores, actuadores, sistemas integrados, redes, interfaces de usuario y almacenamiento de datos.

Sensores

En este proyecto se utilizan dos tipos de sensores. El primero es un LDR o resistencia dependiente de la luz para detectar la intensidad de la luz. El segundo es DHT11 para detectar temperatura y humedad.

Actuadores

Los pines de salida están conectados a los relés y se utilizan como actuadores. Las cargas eléctricas como luces y ventiladores están conectadas a los contactos de los relés. Estos relés se controlan de forma remota a través de una aplicación móvil.

Sistema Integrado

El módulo Wifi ESP8266 se utiliza aquí como un controlador integrado programado por Arduino. El Arduino se utiliza para manejar datos analógicos o digitales recibidos de sensores y para transmitir a través de la web. En este momento acepta comandos de la web y activa los dispositivos o actuadores conectados.

Red

Internet se utiliza como enlace para conectar el sistema integrado a los demás.

Interfaz de usuario

Para la comunicación, la plataforma Cayenne es compatible con MQTT o el protocolo de transporte de telemetría de cola de mensajes. Este protocolo es un protocolo de mensajería ligero para el uso del protocolo IP. Está diseñado para dispositivos de bajo consumo y bajo ancho de banda.

La plataforma de Cayenne es muy simple de usar. Esto ahorra tiempo y esfuerzo en la programación de la interfaz de usuario.

Almacenamiento de datos

El almacenamiento de datos también lo crea la plataforma Cayenne. El almacenamiento de big data es básicamente una gran cantidad de datos que se recopilan de todos los dispositivos. Este tipo de datos varía de dispositivo a dispositivo y la velocidad de flujo de datos es muy alta. 

Este el resumen de los componentes usados:

  • Módulo ESP8266 NodeMCU
  • Acoplador óptico 4N33 (x2)
  • Sensor de temperatura y humedad DHT11
  • Resistencia dependiente de la luz (LDR)
  • Relé de cambio único de 12 V (x2)
  • Transistor BC547 npn (x2)
  • LED de 5 mm (x2)
  • Diodos IN4007 (x2)
  • Condensador 100uF/25V
  • Condensador de 0.1uF
  • Resistencia 1K (x5)
  • Resistencias de 10k, 3.3K, 4.7K
  • Encender / apagar)
  • conector de 4 pines
  • Conector terminal de 2 pines para batería

Principio de funcionamiento del sistema de automatización del hogar con Cayenee

El sistema de automatización del hogar basado en ESP8266 se basa en el módulo Wifi ESP8266, LDR, sensor DHT11, optoacopladores 4N33 y dos relés.

Este circuito tiene dos partes. La primera parte es una entrada analógica para medir la intensidad de la luz a través de LDR1. La segunda parte es una entrada digital para leer valores de temperatura y humedad a través de DHT11. Para medir una amplia gama de temperatura y humedad, puede usar DHT22 como reemplazo de DHT11.

Para alimentar este circuito necesitamos un suministro de 12 V CC, ya que necesita controlar los relés. Luego tenemos que alimentar el módulo ESP8266, pero requiere 5V. IC 7805 proporciona los 5V al módulo.

NodeMCU V1.0 o ESP8266 tiene 11 pines GPIO y un pin ADC con resolución de 10 bits. En la figura, explicamos la configuración de pines de esp8266. Este módulo tiene un regulador de voltaje incorporado de 3.3V. También tiene un convertidor de USB a serie basado en CP2102 que brinda una interfaz fácil con la PC para cargar el código Arduino en el módulo.

ESP8266 tiene un cabezal macho de 30 pines. Componentes soldados en la PCB.

El LDR se usa aquí para detectar la intensidad de la luz a su alrededor. Se muestra como un formulario de porcentaje en el panel de Cayenne. Está conectado al pin A0 del módulo ESP8266 para leer el voltaje analógico según la luz ambiental.

esquema del circuito

El sensor DHT11 se usa aquí para leer la temperatura y la humedad a través del pin de entrada digital D4. Los datos dados se dividen en temperatura y humedad por DHT11 a través del mismo pin de entrada.

Dos transistores BC547 conducen esos relés a través del optoacoplador 4N33. Cada relé puede impulsar la carga de CA/CC a través de los cabezales de terminales conectados a él.

Software

Esta comunicación entre la plataforma cayenne y el dispositivo, es construida por este cuando se conecta a la red.

Usando este software Arduino IDE:

  1. Abra el software Arduino IDE
  2. Vaya a Archivo y seleccione Preferencias y pegue el enlace » https://arduino.esp8266.com/stable/package_esp8266com_index.json » en las URL de Administrador de placa adicional para agregar la placa ESp8266. Abra Boards Manager desde el menú Herramientas y escriba esp8266 para instalar la plataforma esp8266.
  3. Para programar el módulo ESP8266, se requieren tres identidades únicas del sitio web de cayenne. Estos son nombre, nombre de usuario de MQTT, contraseña de MQTT e ID de cliente. Después de conectarse a una red, estas ID ayudan a comunicar el dispositivo con ella.
  4. Para conectarse a la red WiFi local se requiere WiFi SSID y contraseña.
  5. Antes de compilar y cargar el código en este módulo, debemos instalar la biblioteca de sensores Adafruit, la biblioteca Cayenne -MQTT-ESP8266 y la biblioteca DHT .

Para agregar estas bibliotecas al IDE de Arduino, vaya a Sketch – Incluir biblioteca – Agregar biblioteca .zip – busque e instale archivos.

Biblioteca Cayenne-MQTT-ESP8266

Esto permite la comunicación de los dispositivos en la plataforma Cayenne.

biblioteca DHT

Esta biblioteca se utiliza para el sensor DHT11. Esta biblioteca comunica el módulo ESP8266 al sensor. Para usarlo, busque unificado en Library Manager e instale Adafruit Unified Sensor.

Creación del tablero del sistema de automatización del hogar con Cayenne IoT

Abra el sitio web oficial de Cayenne y cree una cuenta para usted. Haga clic en Trae tu propia cosa.

Sistema de domótica mediante software cayenee

La página siguiente mostrará tres opciones: Nombre de usuario de MQTT, Contraseña de MQTT e ID de cliente. Copie estas cadenas y péguelas en los campos apropiados del código Arduino ESP8266. Después de eso, cargue el código IDE de Arduino en el módulo NodeMCU y espere un tiempo para conectarse con el dispositivo en la red.

Sistema de domótica utilizando el software cayenee 2

Una vez que el módulo NodeMCU esté en el WiFi, la página web avanzará a la siguiente pantalla donde su dispositivo necesita un nombre que se puede cambiar después.

Ahora haga clic en el botón (+) en el ícono de cada canal para agregar el canal deseado al tablero. Obtendrá los canales agregados a la izquierda en Agregar nueva página.

Haga clic en la configuración de cada canal uno tras otro y cambie el nombre de su widget a su nombre deseado.

Primero configure el nombre del «Canal 0» en Luminosidad y haga clic en Elegir icono y seleccione Luminosidad y haga clic en Guardar. Esta función muestra la luz alrededor de LDR en porcentaje.

De manera similar, cambie los nombres de «Canal 1» y «Canal 2» a Temperatura y Humedad respectivamente. Cambie la configuración requerida como se establece en «Channel 0».

Ahora tenemos que configurar el «Canal 3» y el «Canal 4» para controlar ambos relés. Para eso, haga clic en Agregar nuevo widget de dispositivo y luego seleccione el botón Widgets personalizados. Complete el campo requerido para el «Canal 3» para la carga. Haga clic nuevamente en Agregar widget y repita de manera similar la configuración para el «Canal 4».

Sistema de domótica utilizando el software cayenee 3

Finalmente, el tablero se muestra en la figura anterior. Ahora está listo para controlar el «Canal 3» y el «Canal 4» y también el nivel de Luminosidad, Temperatura y Humedad de un lugar determinado.

A continuación, debemos descargar la aplicación Cayenne e iniciar sesión con la misma identificación de credencial para iniciar el sistema de automatización del hogar desde cualquier parte del mundo a través de Internet.

Código NodeMCU

A continuación podemos ver u posible código para desplegar en el ESP8266. No olvide que este código deberá personalizarlo con el nombre de su red wifi, la password de acceso dicha red así como las credenciales de Cayenne ( usuario MQTT, identidad de cliente y contraseña de Cayenne).

#include <Adafruit_Sensor.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiAP.h>
#include <ESP8266WiFiGeneric.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WiFiScan.h>
#include <ESP8266WiFiSTA.h>
#include <ESP8266WiFiType.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <WiFiServer.h>
#include <WiFiUdp.h>
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
char ssid[] = "Wifi Name";
char wifiPassword[] = "Password";
char username[] = "e2g58968-d026-11eb-8779-7d56e82df461";
      //Replace by your MQTT user name
char password[] = "3f2b61c76836fc5t489605346e4b110f80785ca";  //Replace by your MQTT password
char clientID[] = "73f369dr-d4f5-39da-8779-7d56e82df461";      //Replace by your Client ID
unsigned long lastMillis = 0;
#include "DHT.h"
#define DHTPIN D4     
#define DHTTYPE DHT11  
DHT dht(DHTPIN, DHTTYPE);
float h,t,f,hic,hif;
void setup()
{
dht.begin();
Serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
pinMode(D0,OUTPUT);
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
}
void loop()
{
Cayenne.loop();
if (millis() - lastMillis > 10000)
{
lastMillis = millis();
Cayenne.virtualWrite(0, h);
Cayenne.virtualWrite(1, t);
Cayenne.virtualWrite(2, hic);
}
h = dht.readHumidity();
t = dht.readTemperature();
f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
hif = dht.computeHeatIndex(f, h);
hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
CAYENNE_IN(3)
{
int currentValue=getValue.asInt();
if(currentValue==1){digitalWrite(D0,LOW);}
else{digitalWrite(D0,HIGH);}
}
CAYENNE_IN(4)
{
int currentValue=getValue.asInt();
if(currentValue==1){digitalWrite(D1,LOW);}
else{digitalWrite(D1,HIGH);}
}
CAYENNE_IN(5)
{
int currentValue=getValue.asInt();
if(currentValue==1){digitalWrite(D2,LOW);}
else{digitalWrite(D2,HIGH);}
}
CAYENNE_IN(6)
{
int currentValue=getValue.asInt();
if(currentValue==1){digitalWrite(D3,LOW);}
else{digitalWrite(D3,HIGH);}
}





Fuente https://circuitdiagrams.in/home-automation-system-using-esp8266/