Muita gente aqui utiliza ESPHome, e um recurso disponível que acredito que a maioria já saiba é um sensor para análise da potência do sinal do Wifi.
Esse sensor é bastante útil, principalmente para analise quando se tem algum problema de comunicação, ou mesmo para avaliar o posicionamento do seu ESP para melhorar a recepção do sinal.
Esse sensor nativo no ESPHome exibe o sinal dBm (decibels), que é um número negativo relacionado a perda do sinal. Quanto menor esse número, negativamente, mais fraco está o sinal. Porém a relação perda de sinal com o valor é uma escala logarítmica e não e tão natural para o ser humano essa relação direta do valor com a intensidade do sinal.
Dessa forma procurei integrar uma fórmula no ESPHome para que esse valor possa ser exibido em porcentágem { 0-100% } tornando mais fácil sua intepretação.
Para tal me baseie na aproximação da relação entre dBm x porcentagem descrita nesse site:
Conversion of signal strength in dBm to percentage in WiFi Explorer | Intuitibits
Com base nesse dados, e através de uma interpolação procurei o polinômio que melhor se ajustava a essa curva.
No caso um polinômio de 2º grau.
y = -0,0134x2 - 0,2228x + 100,2
Com base nisso, agora só implementar esses sensores no seu ESPHome. Inicialmente o sensor nativo do ESPHome da platform Wifi, e em seguida o template para calculo do valor em %.
sensor:
# Sinal do Wifi
- platform: wifi_signal
name: "${friendly_name} Sinal do WiFi"
id: sinal_wifi_dbm
# Sinal do Wifi
- platform: template
unit_of_measurement: "%"
name: "${friendly_name} Sinal do WiFi Porcentagem"
accuracy_decimals: 0
update_interval: 30s
icon: mdi:wifi
lambda: return (-0.0134 * (id(sinal_wifi_dbm).state * id(sinal_wifi_dbm).state ) ) + (-0.2228 * id(sinal_wifi_dbm).state) + 100.2;