Esta semana continuamos con más trucos para ESPHome, y aclaramos alguna duda que quedó del vídeo anterior.
Los trucos son:
- Paquetes
- Más funciones de diagnóstico
- Secretos
- Funciones de debug
- Sensor Hall
Aquí puedes ver el vídeo:
A continuación te dejo el código del programa que hemos usado en el ejemplo:
substitutions:
hostname: "esp-lab"
friendlyname: "ESP Lab"
esphome:
name: "$hostname"
friendly_name: "$friendlyname"
packages:
text-sensor: !include diag/diag-text-sensor.yaml
switch: !include diag/diag-switch.yaml
sensor: !include diag/diag-sensor.yaml
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: debug
# Enable Home Assistant API
api:
encryption:
key: "s0fe4ReqZt5KVcc5bW/WWVqPM0AbmAF7vpclUK0YVMY="
ota:
password: "74ee42a00445c6145903f549975c0380"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-Lab Fallback Hotspot"
password: "WwiL6KP8EAw5"
captive_portal:
switch:
- platform: gpio
id: led
name: led
pin: GPIO33
# Pulsador ejemplo
binary_sensor:
platform: gpio
id: pulsador
name: pulsador
pin: GPIO25
debug:
update_interval: 5sY también los códigos de los tres paquetes a los que llama el código principal. Recuerda cambiar en el programa principal la ruta de los tres ficheros para que los encuentre donde los has copiado.
diag-text-sensor.yaml
text_sensor:
# Versión de ESPHome
- platform: version
name: "$hostname ESPHome Version"
# Información de conectividad Wifi.
- platform: wifi_info
ip_address:
name: "$hostname IP"
ssid:
name: "$hostname SSID"
bssid:
name: "$hostname BSSID"
mac_address:
name: "$hostname MAC"
- platform: template
name: "$hostname Friendly Name"
icon: "mdi:information-outline"
lambda: |-
return {"$friendlyname"};
entity_category: "diagnostic"
- platform: template
# name: $hostname Uptime HR
id: uptime_hass
icon: mdi:clock-start
entity_category: "diagnostic"
- platform: debug
device:
name: "Device Info"
reset_reason:
name: "Reset Reason"diag-switch.yaml
switch:
- platform: restart
name: "Restart"
entity_category: "diagnostic"
- platform: shutdown
name: "Shutdown"
entity_category: "diagnostic"
- platform: safe_mode
name: Safe Mode Boot
entity_category: "diagnostic"diag-sensor.yaml
sensor:
# WiFi Signal sensor.
- platform: wifi_signal
name: '$hostname WiFi Signal'
update_interval: 120s
# Sensor tiempo encendido
- platform: uptime
name: "$hostname Tiempo Encendido"
id: "tiempo_encendido"
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_hass
state: !lambda |-
int segundos = round(id(tiempo_encendido).raw_state);
int dias = segundos / (24 * 3600);
segundos = segundos % (24 * 3600);
int horas = segundos / 3600;
segundos = segundos % 3600;
int minutos = segundos / 60;
segundos = segundos % 60;
return (
(dias ? String(dias) + "d " : "") +
(horas ? String(horas) + "h " : "") +
(minutos ? String(minutos) + "m " : "") +
(String(segundos) + "s")
).c_str();
- platform: internal_temperature
name: "Temperatura interna"
entity_category: "diagnostic"
- platform: debug
free:
name: "Heap Free"
block:
name: "Heap Max Block"
loop_time:
name: "Loop Time"
- platform: esp32_hall
name: "ESP32 Sensor Hall"
update_interval: 1s
