Sinal do Wifi em porcetagem no ESPHome

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.

image

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;
9 curtidas

Opa!

Boa tarde!

Muito bom @ARafael ! Parabéns pelo desenvolvimento e criação do tutorial aqui no Fórum.

Abraço.

Maravilha, estava com essa dúvida esses dias!! Vou testar agora!

Espetacular esse código.

Aqui funcionou! ESP32, obrigado por compartilhar a proposta.