jueves, 13 de enero de 2022

ESPHome: Medida de temperatura y humedad.

En este artículo voy a configurar el ESP2866 en el que realizamos la configuración inicial en el anterior artículo con un módulo DHT11 para mediar la temperatura y la humedad y mostrar los resultados en Home Assistant.

En la web de ESPHome nos viene información de cómo configurar los sensores de temperatura y humedad DHT. En el se explica como conectar el sensor y las variables que podemos programar. El esquema sería el siguiente:


Como vemos en el esquema este sensor necesita de una resistencia pull-up de 4,7K entre el pin de datos y los 3.3 v.

Una vez conectados los componentes debemos modificar el archivo de configuración inicial del ESP8266. Para ello vamos a ESPHome y en la tarjeta correspondiente a este dispositivo seleccionamos EDIT.

Nos sale la configuración que actualmente tiene cargada el ESP8266. Ahora copiamos el ejemplo de configuración que nos aparece en la página del sensor y la pegamos al final de la ventana de edición:

# Example configuration entry
sensor:
  - platform: dht
    pin: D2
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 60s

Cada sensor que añadamos al ESP8266 tenemos que separarlos con el símbolo -

Ahora ajustamos la configuración a nuestro gusto y según nuestro esquema de red. En este caso, cambiamos el pin por el D1 y cambiamos el nombre de las variables de temperatura y humedad (home Assistant llama entidad a cada uno de los parámetros que mide el sensor, en este caso tiene 2 entidades). Al final la configuración que yo he realizado es la siguiente:

# Configuración de Sensores
sensor:
  - platform: dht
    pin: D1
    temperature:
      name: "Temperatura del salón"
    humidity:
      name: "Humedad del salón"
    update_interval: 60s

Se supone que no es necesario indicar el modelo de sensor ya que lo detecta automáticamente. Si tuviéramos algún problema tan solo deberíamos añadir debajo de la línea que indica el pin:

    model: DHT11

Ahora hacemos click en INSTALL y seleccionamos en esta ocasión Wirelessly. para que la actualización se realice vía WiFi.

Una vez haya terminado de cargar la configuración en el Log veremos las primera medidas de temperatura y humedad.


A continuación vamos al menú Configuración - Dispositivos y servicios - Integraciones y vemos que ha descubierto el nuevo dispositivo esp8266-1.


Hacemos click en CONFIGURAR y ENVIAR. Selecciono el área donde tengo el dispositivo y TERMINAR

Si nos vamos a Resumen nos aparece el dispositivo con las dos entidades, temperatura y humedad.


Para que muestre la información de una forma más visual podemos Editar el panel de control:


Le indicamos AÑADIR TARJETA, seleccionamos Indicador, en Entidad seleccionamos, por ejemplo, sensor.temepratura_del_salon y GUARDAR. Lo mismo hacemos con sensor.humedad_del_salon y nos queda el dashboard de la siguiente forma:


Con esto hemos integrado nuestro primer sensor en Home Assistant a través de ESPHome.

Log

Si vamos al menú de ESPHome y seleccionamos el Log de un dispositivo no muestra información sobre dicho dispositivo que nos puede ser muy útil como la dirección IP. 

Portal cautivo (Captive portal)

El componente de portal cautivo en ESPHome es un mecanismo de reserva para cuando falla la conexión WiFi configurada. Después de 1 minuto de intentos fallidos de conexión WiFi, el ESP iniciará un punto de acceso WiFi (con las credenciales de su configuración).

En esta interfaz web, puede anular manualmente la configuración de WiFi del dispositivo (tenga en cuenta que esto se sobrescribirá con cualquier carga posterior, así que asegúrese de actualizar también su configuración en el fichero de configuración YAML de Home Assistant). Además, puede cargar un nuevo archivo de firmware.

Cuando se conecta a la red alternativa, la interfaz web debería iniciarse automáticamente (consulte también iniciar sesión en notificaciones de red). Si eso no funciona, también puede navegar a http://192.168.4.1/ manualmente en su navegador.

Web Server

El ESP, ejecutando ESPHome, no tiene potencia como para implementar un servidor web personalizado por lo que el servidor web no es modificable, aunque no es la finalidad de esta entrada en la configuración del dispositivo. El Web Server simplemente expone el ESP al puerto 80 de forma que podamos ver el información del dispositivo, podremos actualizar el firmware y ver los logs desde un navegador WEB.

El código es el siguiente:

# Web server
web_server:
  port: 80
  auth:
    username: "mi_usuario"
    password: "mi_acceso"

 En la tarjeta correspondiente al dispositivo aparecerá una nueva opción denominada VISIT.

Haciendo click sobre esta opción debería abrir un navegador web y mostrarnos el portal cautivo pero no funciona ya que tendría que configurar mDNS (multicast DNS). Como alternativa, seleccionando LOGS averiguamos la IP del dispositivo. Si la introducimos en un navegador web e introducimos el usuario y password configurados, nos muestra el servidor web del dispositivo.

Nota: Tenga en cuenta que habilitar este componente ocupará mucha memoria y puede ocasionar problemas, especialmente en el ESP8266.

mDNS

El componente mDNS hace que el nodo se anuncie a sí mismo en la red local utilizando el protocolo de multidifusión DNS (mDNS).

Tanto Home Assistant como ESPHome usan mDNS para identificar la dirección IP de todos los nodos de ESPHome en la red. Si mDNS está desactivado, ya no podrán encontrar automáticamente sus dispositivos. Puede ser necesario usar una IP estática para todos los nodos y habilitar la opción de ping en el complemento Home Assistant.

Se recomienda dejar mDNS habilitado.

# mDNS
mdns:
  disabled: false


siendo disabled (Opcional , booleano): establezca true para deshabilitar el uso de mDNS. El valor predeterminado es falso.

No obstante, la resolución de mDNS no es totalmente fiable. Para tener una solución realmente fiable, es mejor configurar una IP estática y, opcionalmente, configurar un DNS en nuestra red local. Sin embargo, el mDNS es una solución cómoda, y una alternativa a considerar.

A mi personalmente me ha fallado en varias ocasiones mientras realizaba pruebas.

Sensor de alimentación

Podemos obtener el valor al que estamos alimentando el dispositivo. El código completo utilizando un DHT22 y obteniendo el valor de la tensión de alimentación sería el siguiente:

# Medición de Temperatura y Humedad
# Medición de la tensión de alimentación del chip
sensor:
  - platform: dht
    pin: D1
    model: DHT22
    temperature:
      name: "Temperatura del salón"
    humidity:
      name: "Humedad del salón"
    update_interval: 60s
  - platform: adc
    pin: VCC
    name: "VCC ESP8266-1 Salón"


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.