Primeros pasos con la nube de Arduino


Los dispositivos conectados en todo el mundo aumentan en miles de millones cada año. Arduino IoT Cloud es una plataforma que permite a cualquier persona crear proyectos IoT, con una interfaz fácil de usar y una solución todo en uno para configuración, escritura de código, carga y visualización.

En este post, veremos algunos componentes diferentes de Arduino IoT Cloud y brindaremos una descripción general porque además hay basta información en Arduino IoT Cloud, ya que tiene varias páginas de documentación disponibles. A continuación encontrará una lista de algunas páginas populares:

  • Para encontrar todos los tutoriales y artículos , visite la página de documentación de Arduino IoT Cloud .
  • Para obtener una descripción técnica, una lista de características y una guía de API , visite la hoja de trucos de Arduino IoT Cloud .
  • Para la documentación de API y SDK , visite la referencia para desarrolladores enArduino IoT Cloud API.

A continuación se muestra una lista de las funciones de Arduino IoT Cloud.

  • Monitoreo de datos : aprenda cómo monitorear fácilmente los valores del sensor de su Arduino a través de un tablero.
  • Sincronización de variables: la sincronización de variables le permite sincronizar variables entre dispositivos, lo que permite la comunicación entre dispositivos con una codificación mínima.
  • Programador : programe trabajos para que se activen o desactiven durante un período de tiempo específico (segundos, minutos, horas).
  • Cargas por aire (OTA) : cargue el código en dispositivos que no estén conectados a su computadora.
  • Webhooks : integre su proyecto con otro servicio, como IFTTT.
  • Soporte de Amazon Alexa : haga que su proyecto sea controlado por voz con la integración de Amazon Alexa.
  • Uso compartido del panel : comparta sus datos con otras personas de todo el mundo.

Hardware compatible

Para usar Arduino IoT Cloud, se requiere una placa compatible con la nube . Se puede elegir entre utilizar una placa Arduino oficial, o una placa basada en el microcontrolador ESP32/ESP8266. Además Arduino IoT Cloud actualmente admite la conexión a través de Wi-Fi, LoRaWAN® (a través de The Things Network) y redes móviles.

Todas las placas Arduino compatibles con la nube vienen con un elemento seguro de hardware (como el criptochip ECC508 ), donde puede almacenar sus claves de seguridad.

Wifi

Las placas Arduino oficiales solo admiten la banda de frecuencia de 2,4 GHz para transmitir datos. Las siguientes placas se conectan a Arduino IoT Cloud a través de Wi-Fi.

  • MKR 1000 Wi-Fi :Arduino MKR1000 ha sido diseñado para ofrecer una solución práctica y rentable para cualquiera que busque añadir conectividad WiFi a sus proyectos con una mínima experiencia en redes. El diseño incluye un circuito de carga Li-Po que permite al Arduino MKR1000 funcionar con alimentación de batería o 5V externos, cargando la batería Li-Po mientras funciona con alimentación externa. El cambio de una fuente a otra se realiza automáticamente. El MKR1000 tiene un procesador Arm Cortex-M0+ de 32 bits, el habitual rico conjunto de interfaces de E/S, y WiFi de bajo consumo con un chip criptográfico para una comunicación segura. Se puede programar utilizando el conocido y fácil de usar software Arduino (IDE). Todas estas características hacen de esta placa la opción preferida para los emergentes proyectos IoT alimentados por batería en un factor de forma compacto. Su precio ronda los 60€ en Amazon.
MKR 1000 Wi-Fi :
  • MKR Wi-Fi 1010 :MKR 1010 simplifica la creación de prototipos de aplicaciones IoT basadas en WiFi, fácil de conectar y configurar a otros productos de Arduino. El módulo híbrido de conectividad WiFi / BLE tiene un modo de bajo consumo de energía, mejorando la vida útil de las baterías .Ideal para principiantes y profesionales en IoT para la construcción de redes de sensores inalámbricos en minutos o dispositivos de control remoto. La placa puede conectarse a cualquier tipo de red WiFi existente o puedes usarla para crear tu propio Punto de Acceso Arduino. También es posible conectar su placa a diferentes servicios de la Nube, ¡incluyendo Arduino IoT Cloud! Fácil de alimentar con un cable USB o una batería Li-Po externa de 3.7V. Recarga la batería a través del puerto USB. Cuesta unos 40€ en Amazon
MKR 1010
  • Conexión Nano RP2040 : La placa Raspberry Pi Pico incorpora el chip microcontrolador RP2040 propio de Raspberry Pi, con procesador Arm Cortex M0+ de doble núcleo que funciona a 133 MHz, 264 KB de SRAM y 2 MB de memoria Flash integrados, así como 26 pines GPIO multifunción .Es una placa microcontroladora de bajo coste y alto rendimiento con interfaces digitales flexibles con Pre-Soldered Header, es más conveniente para los ingenieros a utilizar. Para el desarrollo de software, está disponible el SDK C/C++ de Raspberry Pi, o el MicroPython. También hay recursos completos de desarrollo y tutoriales para ayudarle a empezar fácilmente, e integrarlo en los productos finales rápidamente. Esta placa es mas económica rondando los 16€ en Amazon.
Raspberry Pi Pico
  • Nano 33 Internet de las Cosas :Diseñado para interacciones de corta distancia de BT y proyectos de ahorro de energía. Esta placa es pequeña (48mm x 18mm) y robusta estando construida alrededor del módulo NINA B306, basado en el nRF 52840 nórdico y que contiene un poderoso Cortex M4F.La arquitectura de la placa es totalmente compatible con Arduino IDE Online y Offline; tiene un sensor inercial de 9 ejes (IMU) y un bajo consumo de energía en comparación con otras placas del mismo tamaño.Clock 64MHz, Flask 1MB, RAM 256KB.Dos conectores de 15 pines, uno a cada lado de la placa. Cuesta unos 28€ en Amazon

nano-33
  • Portenta H7 : es una placa que permite ejecutar simultáneamente código de alto nivel junto con tareas en tiempo real. El diseño incluye dos procesadores que pueden ejecutar tareas en paralelo. Por ejemplo, es posible ejecutar código compilado de Arduino junto con uno de MicroPython, y tener ambos núcleos para comunicarse entre sí. La funcionalidad de Portenta es doble, puede ejecutarse como cualquier otra placa de microcontrolador integrada o como el procesador principal de una computadora integrada. Portenta puede ejecutar fácilmente procesos creados con TensorFlow™ Lite, podría tener uno de los núcleos que calcula un algoritmo de visión por computadora sobre la marcha, mientras que el otro podría realizar operaciones de bajo nivel como controlar un motor o actuar como una interfaz de usuario.Utilice Portenta cuando el rendimiento sea clave, entre otros casos, lo imaginamos como parte de:Maquinaria industrial de alta gama, Equipo de laboratorio,Visión por computador, PLC,Interfaces de usuario preparadas para la industria, Controlador de robótica , Dispositivos de misión crítica,Computadora estacionaria dedicada,Cálculo de arranque de alta velocidad (ms). Cuesta unso 100€ en la pagina oficial de Arduino
portenta-h7
  • Portenta H7 Lite conectado :El Portenta H7 Lite Connected está diseñado para proporcionar la potencia computacional del Portenta H7 para aplicaciones de IA y soluciones de control de baja latencia, con un módulo que se vuelve más rentable al eliminar la función de interfaz de video de alta resolución. Llena la brecha entre las versiones H7 completa y H7 Lite al integrar conectividad inalámbrica, agregando otra opción para que los clientes de Arduino Pro construyan la solución perfecta con la combinación correcta de rendimiento y simplicidad. El Portenta H7 Lite Connected ejecuta simultáneamente código de alto nivel y tareas en tiempo real gracias a sus dos procesadores. Por ejemplo, puede ejecutar código compilado por Arduino y MicroPython al mismo tiempo, y hacer que los dos núcleos se comuniquen a través de un mecanismo de llamada de procedimiento remoto que permite llamar a funciones en el otro procesador sin problemas para realizar múltiples tareas reales. Sus algoritmos de aprendizaje automático ahora pueden ejecutarse simultáneamente junto con la interacción de sensor/actuador de baja latencia. Cuesta unos 89€ en la tienda oficial
  • Control de la máquina Portenta: Portenta Machine Control es una unidad de control industrial totalmente centralizada y de bajo consumo capaz de controlar equipos y maquinaria. Se puede programar utilizando el marco Arduino u otras plataformas de desarrollo integradas.Gracias a su poder de cómputo, Portenta Machine Control permite una amplia gama de casos de uso de inteligencia artificial y mantenimiento predictivo. Permite la recopilación de datos en tiempo real desde la planta de producción y admite el control remoto de equipos, incluso desde la nube, cuando se desee. Cuesta unos 300€ en la tienda de Arduino.
portenta-induistrial
  • Nicla Visión : combina un potente procesador IC STM32H747AII6 Dual ARM® Cortex® M7/M4 con una cámara a color de 2 MP compatible con TinyML, así como un sensor de movimiento inteligente de 6 ejes, un micrófono integrado y un sensor de distancia. Puede incluirlo fácilmente en cualquier proyecto porque está diseñado para ser compatible con todos los productos Arduino Portenta y MKR, se integra completamente con OpenMV, es compatible con MicroPython y también ofrece conectividad WiFi y Bluetooth® Low Energy. Es tan compacto, con su factor de forma de 22,86 x 22,86 mm, que puede adaptarse físicamente a la mayoría de los escenarios y requiere tan poca energía que puede funcionar con batería para aplicaciones independientes.Todo esto convierte a Nicla Vision en la solución ideal para desarrollar o crear prototipos con procesamiento de imágenes en el dispositivo y visión artificial en el borde, para seguimiento de activos, reconocimiento de objetos, mantenimiento predictivo y más, más fácil y rápido que nunca. Entrénelo para detectar detalles, de modo que pueda concentrarse en el panorama general. Cuesta unos 95€

nicla-vision
  • Opta .   Gracias a su poder de cómputo (STM32H747XI dual Cortex®-M7+M4 MCU Arm® de baja potencia de 32 bits: incluye un Cortex® M7 que funciona a 480 MHz y un Cortex® M4 que funciona a 240 MHz comunicandose los dos núcleos a través de un mecanismo de llamada a procedimiento remoto que permite llamar a funciones en el otro procesador sin problemas) Arduino Opta permite una amplia gama de aplicaciones de control, monitoreo y mantenimiento predictivo en tiempo real.Permite a los profesionales ampliar los proyectos de automatización mientras aprovechan el ecosistema abierto y ampliamente conocido de Arduino. Póngalo a trabajar rápidamente, aprovechando las numerosas bibliotecas de software disponibles. El elemento seguro integrado garantiza actualizaciones de firmware inalámbricas y control remoto a través de Arduino Cloud o servicios de terceros. Arduino Opta está disponible en tres variantes:Opta Lite: puertos Ethernet y USB-C® integrados, Opta RS485: puertos Ethernet y USB-C® integrados, además de conectividad RS485 y Opta WiFi: puertos Ethernet y USB-C® integrados, además de RS485 y Wi-Fi/Bluetooth® Low Energy.El Opta está programado para ser lanzado pronto, junto con la documentación sobre cómo usarlo.

opta

La conexión a través de Wi-Fi es una alternativa fácil y sus credenciales se pueden ingresar de manera segura durante la configuración de un proyecto. Este tipo de conexión es más adecuado para proyectos de bajo alcance, en los que conecta su placa a la nube a través del enrutador de su hogar/trabajo/escuela. Ahora veremos otros tipos de conectividad:

LoRaWAN®

Las siguientes placas se conectan a Arduino IoT Cloud a través de The Things Stack , un servidor de red LoRaWAN® conectado a miles de puertas de enlace LoRa® públicas.

  • MKR WAN 1300
  • MKR WAN 1310

Se recomienda la conexión a través de LoRaWAN® para proyectos de bajo consumo tanto en áreas remotas como urbanas, donde Wi-Fi u otros tipos de conectividad populares no están disponibles. Las placas MKR WAN 1300/1310 están equipadas con un módulo de radio LoRa y tienen una ranura para una antena. Con la configuración adecuada de bajo consumo, la placa puede enviar datos a la nube durante meses con una sola batería.

Placas GSM / NB-IoT

El MKR GSM 1400 y el MKR NB 1500 requieren una tarjeta SIM para conectarse a la nube, ya que se comunican a través de las redes móviles.

  • MKR GSM 1400
  • MKR NB 1500

La conexión a través de redes móviles se puede considerar en áreas remotas donde no hay Wi-Fi o en proyectos móviles (como el seguimiento de carga). Tenga en cuenta que una conexión segura es una operación que consume mucha memoria, por lo que no hay mucha memoria para la aplicación del usuario (por ejemplo, alrededor de 2,6 kB en el MKR GSM 1400). El uso de muchas variables de IoT Cloud puede hacer que el boceto se quede sin memoria en las placas que no descargan la pila SSL y hacen que se bloquee.

ESP32 / ESP8266

Arduino IoT Cloud es compatible con una amplia gama de placas de terceros basadas en los microcontroladores ESP32 y ESP8266 con soporte para Wi-Fi. Para configurarlos, simplemente elija la opción de terceros en la configuración del dispositivo.

Ethernet

Arduino IoT Cloud admite la conexión a través de Ethernet en varios dispositivos. Las opciones para conectarse vía Ethernet son las siguientes:

  • Conéctese con el Portenta H7 en combinación con un portador/escudo compatible con Ethernet .Para conectarse con la placa Portenta H7 , necesitará uno de los siguientes protectores/portadores :Escudo de visión Portenta Ethernet o Control de la máquina Portenta
  • Conéctese con la Opta . *

Para habilitar la comunicación a través de Ethernet con el Portenta H7, mientras configura su dispositivo, debe seleccionar la opción «Ethernet». Si su dispositivo ya está configurado como un dispositivo Wi-Fi, debe quitarlo antes de configurarlo para la comunicación Ethernet.

Tenga en cuenta que el hardware más antiguo, como Ethernet Shield Rev2 y MKR ETH Shield , actualmente no es compatible con Arduino IoT Cloud.

Primeros pasos

Configurar Arduino IoT Cloud y acceder a las diferentes funciones disponibles implica unos simples pasos. ¡Así que echemos un vistazo a cómo ir de principio a fin!

1. Crear una cuenta de Arduino

Para comenzar a usar la nube Arduino IoT, primero debemos iniciar sesión o registrarnos en Arduino .

2. Vaya a la nube Arduino IoT

Una vez que nos hayamos registrado, puede acceder a Arduino IoT Cloud desde cualquier página en arduino.cc haciendo clic en el menú de cuatro puntos en la esquina superior derecha. También puede ir directamente a Arduino IoT Cloud .

3. Crear una cosa

El viaje siempre comienza creando una Cosa nueva . En la descripción general de Thing, podemos elegir qué dispositivo usar, a qué red Wi-Fi queremos conectarnos y crear variables que podemos monitorear y controlar. Este es el espacio de configuración principal, donde todos los cambios que hacemos se generan automáticamente en un archivo de boceto especial .

4. Configuración de un dispositivo

Los dispositivos se pueden agregar y vincular fácilmente a una Cosa. Arduino IoT Cloud requiere que su ordenador tenga instalado Arduino Agent . El proceso de configuración es rápido y fácil, y se puede hacer haciendo clic en el botón «Seleccionar dispositivo» en la descripción general de Thing. Aquí podemos elegir entre cualquier placa que se haya configurado, o seleccionar la opción “Configurar nuevo dispositivo” .

«Dispositivos»

5. Creando Variables

Las variables que creamos se generan automáticamente en un archivo de boceto. Hay varios tipos de datos entre los que podemos elegir, como int, float, boolean, long, char . También hay variables especiales, como Temperatura, Velocidad, Luminancia que se pueden usar. Al hacer clic en el botón «Agregar variable» , podemos elegir el nombre, el tipo de datos, la configuración de actualización y el modo de interacción.

6. Conexión a una red

Para conectarse a una red Wi-Fi, simplemente haga clic en el botón «Configurar» en la sección de red. Ingrese las credenciales y haga clic en «Guardar» . ¡Esta información también se genera en su archivo de boceto!

5. Creando Variables

Ahora que hemos configurado las variables, los dispositivos y los ajustes de red, ¡podemos comenzar a programar nuestros dispositivos!

Un archivo de boceto generado automáticamente se puede encontrar en la pestaña «Bosquejo» . Tiene la misma estructura que un típico archivo *.ino , pero con algún código adicional para hacer la conexión a su red y a la nube.

Un boceto que, por ejemplo, lee un sensor analógico y usa la variable de nube para almacenarlo. Cuando se haya cargado el boceto, funcionará como un boceto normal, ¡pero también actualizará las variables de la nube que usamos!

Además, cada vez que creamos una variable que tiene habilitado el permiso de lectura y escritura , también se genera una función en la parte inferior de su archivo de boceto. ¡Cada vez que esta variable cambie, ejecutará el código dentro de esta función! Esto significa que podemos dejar la mayor parte del código fuera del loop() y solo ejecutar código cuando sea necesario.

Para subir el programa a nuestra placa, simplemente haga clic en el botón «Subir» .

El editor también tiene una herramienta Serial Monitor , que se puede abrir haciendo clic en la lupa en la barra de herramientas. Aquí puede ver información sobre su conexión o comandos impresos a través de

Serial.print()

.

Una vez que hayamos cargado correctamente el código, podemos abrir la pestaña «Serial Monitor» para ver información sobre nuestra conexión. Si tiene éxito, imprimirá «conectado a network_name» y «conectado a la nube» . Si no se conecta, también imprimirá los errores aquí.

El editor en la nube es una versión «mínima» reflejada del Editor web. Cualquier cambio que realice también se reflejará en el Editor web, que es más adecuado para desarrollar bocetos más avanzados.

8. Creación de un panel

Ahora que configuramos el dispositivo y la red, creamos variables, completamos el boceto y cargamos correctamente el código, podemos pasar a la parte divertida: ¡crear tableros!

Los tableros son una interfaz de usuario visual para interactuar con sus tableros en la nube, y podemos configurar muchas configuraciones diferentes según lo que necesite su proyecto de IoT. Podemos acceder a nuestros tableros haciendo clic en la pestaña «Tableros» en la parte superior de la interfaz de Arduino IoT Cloud, donde podemos crear nuevos tableros y ver una lista de tableros creados para otras cosas.

Si hacemos clic en “Crear nuevo tablero” , entramos en un editor de tableros. Aquí, podemos crear algo llamado widgets . Los widgets son la representación visual de nuestras variables que creamos, y hay muchos diferentes para elegir. A continuación se muestra un ejemplo que utiliza varios tipos de widgets.

Cuando creamos widgets, también debemos vincularlos a nuestras variables . Esto se hace haciendo clic en un widget que creamos, seleccionando una cosa y seleccionando una variable que queremos vincular. Una vez que está vinculado, podemos interactuar con él, por ejemplo, un botón, o podemos monitorear un valor de un sensor. ¡Mientras nuestra placa esté conectada a la nube, los valores se actualizarán!

Digamos que tenemos un widget de temperatura que queremos vincular a la variable de temperatura dentro del proyecto de la nube .

Tenga en cuenta que no todos los widgets y variables son compatibles. Un interruptor y un número entero, por ejemplo, no se pueden vincular y no serán una opción al configurar su tablero.

También podemos tener varias cosas funcionando a la vez, dependiendo de tu plan Arduino IoT Cloud, que podemos incluir en el mismo dashboard. Esta es una excelente característica para rastrear múltiples tableros en, por ejemplo, una red de sensores más grande, donde los tableros se pueden conectar a diferentes redes en todo el mundo, pero se pueden monitorear desde el mismo tablero.

zz

Contador inteligente basado en Home Assistant


En efecto, es posible crear un contador de consumo de energía inteligente usando un mínimo hardware (en nuestro caso un node MCU con un modulo PZEM) y el software de Home Assistant (que, en nuestro caso, correrá en nuestro PC o en una Raspberry Pi). Para ello vamos a utilizar una pequeña solución, que es muy utilizada para hacer este tipo de mediciones, por lo que vamos a integrar con un modulo PZEM004 ( del que hemos hablado en numerosas ocasiones en este blog ) , y como controlador, una placa para redes inalámbricas basado en el chip ESP8266, y luego haremos la integración mediante el software de Home Assistant.

Esta solución nos ofrecerá un medidor de corriente y de consumo muy útil ,ya que podemos medir no sólo el consumo general que tenemos de la red eléctrica, sino que también un sinfín de aplicaciones como por ejemplo para poder medir la producción de energia fotovoltaica, fluctuaciones de red, presencia de energia reactiva, etc.

Además a diferencia de otros proyectos que hemos tratado en este blog que vuelcan los datos sobre nubes publica ( por ejemplo Cayenne), en esta ocasión las medidas de nuestro consumo eléctrico quedan en nuestra propia nube privada garantizada por el sw de Home Assistant.

TASMOTA

Tasmota es un firmware de código abierto para dispositivos ESP desarrollado por Theo Arends (de los Países Bajos). También es el webmaster de un blog de tecnología con buenos tutoriales. Tasmota no está escrito en «lenguaje Arduino», sin embargo, no necesitará codificar con Tasmota. Se trata principalmente de cargar el código, apenas cambiando 1-2 líneas para una configuración personalizada. Su arduo trabajo le dará un sistema listo para producción para controlar los relés que está listo para IoT (es un tema aparte sobre cómo configurarlo) y se puede configurar desde un dispositivo móvil como cualquier «enchufe inteligente» comercial. Como hemos dicho, Tasmota es un firmware preescrito para placas ESP. Muchos de los lectores suelen usar ESP32 con Arduino IDE y pueden temer usar Tasmota. En esta guía, explicaremos qué herramientas necesitará para cargar el firmware de Tasmota.

Desde el repositorio de GitHub de Theo Arends ( https://github.com/arendst/Tasmota/tree/firmware/firmware/tasmota32 ) , obtendrá el archivo tasmota32.bin:

Necesita descargar ese archivo  tasmota32.bin

Desde techiesms.com ha creado un repositorio con todos los archivos necesarios (incluido el archivo anteriortasmota32.bin) que necesitará cargar. Lo podemos encontrar también en el repositorio de GitHub (aún no se he editado ningún archivo) de AbhishekGhosh (https://github.com/AbhishekGhosh/TASMOTA-on-ESP32 )

Necesitará la herramienta flasher oficial del sitio web de Espressif https://www.espressif.com/en/support/download/other-tools

Termite ayudará a agregar SSID y contraseña a la placa ESP: https://termite.software.informer.com/3.2/

Las anteriores son las herramientas que necesitaremos. Sin embargo, puedes usar Tasmotizer en su lugar: https://github.com/tasmota/tasmotizer

Inicie la herramienta intermitente de Espressif. Seleccione «Modo desarrollador». Luego haga clic en «Herramienta de descarga ESP32». Cuando se inicie el software flasher, deberá cargar:

BootLoader.bin
Parttion_Table.bin
SPIFFS.bin
tasmota32.bin

Seleccione el puerto COM correcto, la tasa de baudios correcta y haga clic para comenzar. Una vez que se complete el flasheo, se detendrá y saldrá de la aplicación. Abra la herramienta Termitas. Seleccione el puerto COM correcto, la tasa de baudios correcta.

 Ingrese estos comandos uno por uno:

SSID1 <name-of-hotspot># hit enter/command
Password1 <password-here># hit enter/command
## do not use <  >

En el resultado, obtendrá la dirección IP local del dispositivo.

 Puede abrir la dirección IP en un navegador y jugar con la configuración de GPIO (Configuración> Configurar módulo).

Cómo trabajar con Tasmota en ESP32

HOME ASSSITANT

Home Assistant es un software de código abierto que le permite monitorear dispositivos IoT en su hogar. Además, puede crear automatización fácilmente. Por ejemplo, cuando la temperatura es inferior a 21 grados, puede enviar una notificación a su dispositivo móvil. Además, puede hacer funcionar su calentador si tiene un calentador conectado.

En la mayoría de los casos, Home Assistant se instala en una Raspberry pi como se muestra en el documento oficial . Sin embargo, en este post explicará cómo instalar en su ordenador usando docker compose, lo cual hace la instalación muy sencilla.

Comencemos por crear el directorio myproject. En este directorio, cree un subdirectorio llamado config. Debería tener un árbol que se parezca a:

| myproject
| -- docker-compose.yaml
| -- config

Ahora agregue el archivo docker-compose.yam a la carpeta  myproject.

# docker-compose.yaml
version: "3.5"
services:
  homeassistant:
    container_name: home-assistant
    image: homeassistant/home-assistant:stable
    volumes:
      - ./config:/config
    environment:
      - TZ=Europe/Paris
    restart: always
    ports:
      - 8123:8123
    network_mode: host

Ejecute el asistente de inicio:

$ docker-compose up -d

Asistente de configuración del hogar

Enhorabuena, su Home Assistant ya se está ejecutando. Necesita configurarlo de la siguiente manera:

  • Vaya a http://localhost:8123
  • Cree su cuenta usando un nombre de usuario y contraseña
  • Agregue su ubicación si está interesado en ver datos meteorológicos
  • Luego haga clic en finalizar

Debería aparecer una página de inicio.Página de inicio del asistente de inicio

Configuración del asistente doméstico

  • Haga clic en Configuration, en la parte inferior izquierda.
  • Ir a Integrations
  • Haga clic en el +botón en la parte inferior derecha.
  • Aparecerá un modal con la lista de dispositivos compatibles, haga clic en esphome.
  • Agregue la dirección IP de su ESP32, deje el puerto en 6053.
  • Haga clic en finalizar.

Ahora tiene un ESPhome configurado correctamente.Integración de esphome asistente de hogar

Agregar datos a la página de inicio

Una vez que haya configurado un dispositivo ESPhome, ahora puede agregar los datos que proporciona a su página de inicio. Por ejemplo si su dispositivo está conectado al termómetro Xiaomi Mijia, el objetivo sería ver los datos de temperatura y humedad.

  • Haga clic en Configuration, en la parte inferior izquierda.
  • Ir a Devices
  • Haga clic en su dispositivo
  • En la parte inferior Entidades, haga clic en Add to Lovelace.

Finalmente, regrese a la página de inicio y controle la temperatura de su sala de estar desde la página de inicio.

Temperatura del asistente del hogar

Acceso a la temperatura desde el exterior

Vigilar su casa cuando está adentro es importante, pero también lo es cuando está afuera.

  • En primer lugar, abra el puerto 8123 en su enrutador y reenvíelo al host del asistente doméstico.
  • Descargue la aplicación Home Assistant para Android o iOS .
  • Obtenga la IP pública de su puerta de enlace doméstica usando https://www.showmyipaddress.eu/
  • Abra la aplicación y agregue la url de conexión http://yourpublicip:8123/

Felicitaciones por instalar Home Assistant con éxito.

Configuración de contador de energia

El Pzem004 es un módulo de prueba de monitorización eléctrica que incluye un transformador de corriente que viene además ya calibrado. El módulo puede usarse para medir la energía, el voltaje y la corriente, y luego mostrarlo en un PC u otros terminales ofreciendo una precisión del 1%. Existe una versión con display que incluye un botón de restablecimiento que puede restablecer los datos de energía simplemente pulsándolo. Además, puede almacenar datos cuando se apaga, y almacenar los datos de energía acumulados antes de apagarse, por lo que es muy conveniente usarlo.

Gracias a que todas las versiones equipan un interfaz de comunicación de datos serie TTL, puede leer y configurar los parámetros relevantes a través del puerto serie que podemos capturar con un microcontrolador como por ejemplo un ESP32.

En efecto usando la Biblioteca Arduino para Peacefair  en un ESP32 y un PZEM-004T-100A v3.0 podemos construir un Monitor de energía usando la interfaz ModBUS.

Antes de empezar debemos saber que la versión 3.0 PZEM es una versión mejorada de la anterior PZEM-004T (para la que puede encontrar la biblioteca aquí aunque las bibliotecas son incompatibles entre las dos versiones de hw).

Las principales características de este módulo son las siguientes;

  • Mide voltaje, corriente, potencia, energía, factor de potencia y frecuencia (nuevo en la versión 3.0)
  • 247 direcciones esclavas programables únicas
  • Contador de energía interna hasta 9999.99kWh
  • Alarma de sobrealimentación
  • Puesta a cero del contador de energía
  • Suma de comprobación CRC16
  • Mejor, pero no perfecto aislamiento de red

Especificaciones del fabricante

FUNCIÓNRANGO DE MEDICIÓNRESOLUCIÓNPRECISIÓN
Voltaje80~260V0.1V0,5%
Actual0~10A o 0~100A*0.01A o 0.02A*0,5%
Poder activo0~2,3kW o 0~23kW*0.1W0,5%
energía activa0~9999.99kWh1Wh0,5%
Frecuencia45~65Hz0,1 Hz0,5%
Factor de potencia0,00~1,000.011%

* Uso del transformador de corriente externo en lugar del derivador incorporado

Este módulo es una versión mejorada del PZEM-004T con funciones de medición de frecuencia y factor de potencia, disponible en los lugares habituales. Se comunica mediante una interfaz TTL a través de un protocolo de comunicación similar a Modbus-RTU, pero es incompatible con la biblioteca @olehs anterior que se encuentra aquí: https://github.com/olehs/PZEM004T&nbsp;. 

Compatibilidad con Arduino

A continuación mostramos la compatibilidad con diferentes microcontroladores:

Comunicación en serie


Este módulo está equipado con una interfaz de comunicación de datos en serie TTL, puede leer y configurar los parámetros relevantes a través del puerto en serie; pero si desea comunicarse con un dispositivo que use USB o RS232 (como un ordenador), debe estar equipado con un adaptador TTL diferente (la comunicación USB debe estar equipada con una placa adaptadora de conexiones TTL a USB y la comunicación RS232 debe estar equipada con un adaptador TTL a niveles RS232)

En la siguiente tabla se encuentran los protocolos de comunicación de este módulo:

NOFUNCIÓNCABEZADATOS1- DATOS5SUMA
1aRequerimiento de voltajeB0C0 A8 01 01 00 (La computadora envía una solicitud para leer el valor del voltaje)1A
1bRespuesta de voltajeA000 E6 02 00 00 (Respuesta del medidor, el valor del voltaje es 230,2 V)88
2aRequerimiento actualB1C0 A8 01 01 00 (La computadora envía una solicitud para leer el valor actual)1B
2bRepresentante actualA100 11 20 00 00 (Respuesta del medidor, el valor actual es 17.32A)D2
3aRequerimiento de potencia activaB2C0 A8 01 01 00 (La computadora envía una solicitud para leer el valor de potencia activa)1C
3bPotencia activa Resp.A208 98 00 00 00 (Respuesta del medidor, el valor de potencia activa es 2200w)42
4aLeer energía ReqB3C0 A8 01 01 00 (La computadora envía una solicitud para leer el valor de energía)1D
4bLeer energía Resp.A301 86 9f 00 00 (Respuesta del medidor, el valor de energía es 99999wh)C9
5aEstablecer la dirección del módulo ReqB4C0 A8 01 01 00 (La computadora envía una solicitud para configurar la dirección, la dirección es 192.168.1.1)1E
5bEstablecer la dirección del módulo resp.A400 00 00 00 00 (Respuesta del medidor, la dirección se estableció correctamente)A4
6aEstablecer el umbral de alarma de potencia ReqB5C0 A8 01 01 14 (la computadora envía una solicitud para establecer un umbral de alarma de energía)33
6bEstablecer el umbral de alarma de potencia RespA500 00 00 00 00 (El medidor responde que el umbral de alarma de energía se configuró correctamente)A5

Veamos ahora un ejemplo de protocolo de comunicación:

1-Configure la dirección de comunicación: 192.168.1.1 (el usuario puede configurar su propia dirección en función de sus preferencias y necesidades).

Enviar comando: B4 C0 A8 01 01 00 1E –>Datos de respuesta: A4 00 00 00 00 00 A4 .

Nota: El envío de comandos y la respuesta automática de datos son como se muestra arriba, los datos se expresan en hexadecimal; el último byte de los datos de envío y respuesta son 1E y A4, pertenecen a la suma acumulativa. En el envío de comandos: B4 + C0 + A8 + 01 + 01 + 00 = 21E (utilice la suma hexadecimal), los datos de suma acumulada son 21E, tome los dos últimos bytes 1E para utilizar los datos de suma acumulada en el envío de comandos; datos en respuesta: A4 + 00 + 00 + 00 + 00 + 00 = A4 (use la suma hexadecimal), la suma acumulada de datos es A4, que es la suma acumulada de datos en respuesta.

2-Configure el umbral de alarma de potencia: 20 KW
Comando de envío: B5 C0 A8 01 01 14 33–>Datos de respuesta: A5 00 00 00 00 00 A5
Nota : 14 en el comando de envío es el valor de la alarma (14 es una representación de datos hexadecimales, que se convirtió a decimal es 20). Lo que debe tener en cuenta es que el valor de alarma de potencia de este módulo se basa en unidades KW, lo que significa que el valor mínimo de alarma es 1 KW, el valor máximo es 22 KW.

3-Leer el voltaje actual
Enviar comando: B0 C0 A8 01 01 00 1A–>Datos de respuesta: A0 00 E6 02 00 00 88
Nota : Los datos de voltaje de respuesta son D1D2D3 = 00 E6 02, 00 E6 representa el bit entero del voltaje, 02 representa el decimal del voltaje, el decimal es un dígito, convierte 00 E6 en decimal es 230; convierte 02 a decimal es 2, por lo que el valor de voltaje actual es 230.2V.

4-Leer el comando de envío actual actual

Enviar comando: B1 C0 A8 01 01 00 1B–>Datos de respuesta: A1 00 11 20 00 00 D2
Nota : Los datos actuales de respuesta son D2D3 = 11 20, 11 representan el bit entero de la corriente, 20 representan el decimal del actual, el decimal actual es de dos dígitos, convierte 11 en decimal es 17; convierte 20 a decimal es 32, por lo que el valor actual actual es 17,32 A.

5-Leer el comando de envío de energía actual

Enviar comando:: B2 C0 A8 01 01 00 1C–>Datos de respuesta: A2 08 98 00 00 00 42
Nota : Los datos de energía de respuesta son D1D2 = 08 98, convierte 08 98 a decimal es 2200, por lo que el valor de voltaje actual es 2200W .

6-Leer el comando de envío de energía:

Enviar comando:B3 C0 A8 01 01 00 1D–>Datos de respuesta: A3 01 86 9F 00 00 C9
Nota : los datos de energía de respuesta son D1D2D3 = 01 86 9F, convierte 01 86 9F a decimal es 99999, por lo que la energía acumulada es 99999Wh .

Circuito Básico con ejemplo de código

Gracias a la biblioteca PZEM-004T v3.0 para el monitor de energía Peacefair PZEM-004T-10A y PZEM-004T-100A v3.0 utilizando la interfaz ModBUS y una placa ESP32, podemos monitorizar el consumo eléctrico junto a otras variables eléctricas como la tensión , la frecuencia , el factor de potencia, etc.

Es interesante destacar que debemos usar la ultima versión del modulo, pues la versión 3.0 PZEM es una versión mejorada del antiguo PZEM-004T 

Respecto a las conexiones eléctricas debemos tener especialmente cuidado en el conexionado de las clemas de BT , las cuales viene claramente especificadas en la hoja de característica del modulo PZEM que usemos, pues una parte es para la medida del voltaje ( la medición se hace en paralelo ) y la parte contigua es la parte de la medida de la Intensidad (la medida se toma en serie en versiones de menos intensidad máxima admisible, pero para la versión de 100A se suele tomar con una bobina toroidal o con un pinza amperimétrica)

¡Asegúrese de que el dispositivo esté conectado a la alimentación de CA! Los 5V solo alimentan los optoacopladores, no el chip real. Además, tenga cuidado, ¡la corriente alterna es peligrosa! ¡Si no sabe lo que estás haciendo, puede morir ! Es usted responsable de su propia estupidez. Así que no sea estúpido

Peor tanto ,debemos extremar el cuidado especialmente en estas conexiones (las que van con tornillo).

Observe por ejemplo las conexiones del módulo de 100 Amp. usado para escribir este post:

Esta versión PZEM tiene una UART Serial que funciona a 5V, por lo que se debe realizar una simple modificación soldando una resistencia de 1K a 1/4W para permitir que la comunicación funcione a 3.3v en los casos de placas como Raspberry Pi, ESP32 y esp8266, con esta modificación la UART funcionará a 5v o 3.3v.

Nota: Esta es la manera más sencilla y económica si no tienen al alcance un convertidor TTL de 5 a 3.3v, pero no se garantiza que funcione en todos los casos y con todos los medidores (en el prototipo probado funciona sin problemas).

Respecto a las conexiones del PZEM004 con una placa ESP32 , estas son las siguientes:

  • TX ->GPIO17 (pin 7)
  • RX ->GPIO16 (pin 6) (podemos conectar una resistencia de 1K entre este y GND ).
  • GND->GND DE SP32 (pin 2)
  • VCC->3.3 DE ESP32 (pin 1)


Vamos a seguir un esquema bastante sencillo que puede ser adaptado a distintas necesidades y montajes. Por ahora, y para realizar las pruebas podemos usar el siguiente simple esquema:

Por el interior del anillo tendremos que pasar el cable de Fase (Negro) sobre el que queramos realizar las mediciones, pudiendo ser el mismo, o no, que el que hemos usado para dar corriente al circuito.

Nota: Algunos módulos ESP permiten la salida de corriente 5V por el pin, otros no. Si vas a alimentar el módulo ESP con un cable USB y desde sus pines 5V/VCC y GND alimentar el módulo PZEM-004T comprueba que estos pines ofrezcan la corriente deseada.

Dado que realmente el módulo ESP funciona a 3,3V y si se desea alimentar el módulo PZEM-004T con este voltaje, se recomienda colocar una resistencia de 1K entre 5V y RX del propio PZEM-004T. La Web de Tasmota tiene mucha información al respecto.

Para ciertamente este montaje no conlleve ningún peligro debemos aislar ambas placas (por ejemplo en una caja de conexiones) para asegurarnos de que no recibimos ninguna descarga eléctrica fortuita tal y como podemos ver en el prototipo de abajo donde se usa un Arduino uno en lugar de un ESp32.

Compatibilidad

PRINCIPALES CARACTERÍSTICAS
  • Mide voltaje, corriente, potencia, energía, factor de potencia y frecuencia (nuevo en la versión 3.0)
  • 247 direcciones esclavas programables únicas
  • Contador de energía interno hasta 9999,99kWh
OTRAS CARACTERÍSTICAS
  • Alarma de sobrecarga
  • Reinicio del contador de energía
  • Suma de comprobación CRC16
  • Aislamiento de red mejor, pero no perfecto

En la configuración que vamos a ver a continuación, usaremos un ESP8266 en el lugar del ESP32, pero los pasos de configuración del menú de Tasmota es idéntico y por supuesto con el Home Assistant.

En el esquema se usan los puertos 5 y 6 ( eso son d5 y d6) conectados al modulo PZEM con sus respectivas masas . Entonces necesitamos luego suministrar 5 voltios para alimentar el nodemcu ( sirve por ejemplo un cargador de móvil que no usemos con salida micro-usb) y es tan simple como eso.

En este punto si hemos seguido los pasos comentados mas arriba para instalar el sw de Tasmota en el NodeMcu (donde como se ha comentado no hará falta instalar nada desde el ide de Arduino ) , nos iremos a la url de acceso creada para dar acceso al nuevo equipo Tasmota :

Deberemos configurar los pines que hayamos conectado al modulo PZEM pulsando sobre los desplegables de la derecha. Observe que el lado de transmisión es general para todos los PZEM y para el lados de RX deberemos seleccionar nuestro modulo especifico y por supuesto ambos en los GPIOS a los que estén conectados.

Guardaremos la información para que empiece Tasmota a procesar las mediadas.

Si to ha sido correcto. ya deberíamos ver en el menú de Tasmota los valores eléctricos referidos al módulo PZEM en tiempo real.

Solo nos queda comunicar el equipo Tasmota que acabamos de configurar usando el ESP y el PZEM con el Home Assistant, lo cual lo haremos a traves del menú MQTT. Para ello consultaremos en nuestro Home Assistant los valores de usuario/contraseña y el tópico que añadiremos desde en esta pantalla.


Una vez configurado el MQTT y tengamos arrancado el Home Assitant , ahora puede agregar los datos que proporciona a su página de inicio dado que ya se configurado un dispositivo ESPhome

  • Haga clic en Configuration, en la parte inferior izquierda.
  • Ir a Devices
  • Haga clic en su dispositivo
  • En la parte inferior Entidades, haga clic en Add to Lovelace.
Finalmente, regrese a la página de inicio y compruebe sus medidas eléctricas desde la página de Home Assistant:


En el siguiente video podemos ver todo el proceso completo: