Skip to content

Monitoramento de rede ESPHome ​

ESPHome é um sistema popular para controlar dispositivos Espressif ESP8266 e ESP32. Este artigo descreve como monitorar vários dispositivos usando um componente SNMP personalizado do ESPHome e uma ferramenta popular de monitoramento de rede.

Graças a isso, você pode detectar e ser informado sobre comportamentos anômalos dos seus dispositivos, como reinicializações, sinal Wi-Fi fraco ou falta de memória livre.

O SNMP é suportado por muitas aplicações, mas este artigo discute a integração com a ferramenta de código aberto Zabbix. Assume-se que você tenha o Zabbix versão 6.4 instalado e em execução.

INFO

O guia de instalação do Zabbix está disponível na página web do Zabbix: https://www.zabbix.com/download

Componente SNMP ​

O ESPHome não suporta SNMP por padrão. Mas ele fornece uma maneira conveniente de integrar com componentes externos.

Para adicionar o protocolo SNMP ao dispositivo ESPHome, consulte o Componente SNMP localizado em https://github.com/aquaticus/esphome-snmp.

Adicione o seguinte código ao seu arquivo de configuração YAML do ESPHome:

yaml
# Enable SNMP component
snmp:

# Retrieve SNMP component from github
external_components:
   - source: github://aquaticus/esphome-snmp

Quando carregado em uma placa, você deve ver a seguinte mensagem no log:

log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]:   Contact: ""
[00:00:00][C][snmp:270]:   Location: ""

Testando SNMP ​

Agora você pode tentar recuperar algumas informações da placa. Existem muitos programas que podem navegar pelos dados SNMP. Aqui estão alguns exemplos:

Windows ​

Linux ​

Aqui está um código de exemplo para usar no Linux. Substitua o endereço IP 192.168.1.10 por um valor que corresponda ao endereço da sua placa.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

O resultado da consulta acima se parece com o abaixo. É uma descrição do sistema. É o objeto SMTP sysDescr, que se traduz no ID do objeto 1.3.6.1.2.1.1.1.0.

log
iso.3.6.1.2.1.1.1.0 = STRING: "ESPHome version 2023.3.2 compiled Mar 29 2023, 00:00:01, Board wemos_d1_mini32”

Opcionalmente, você pode tentar obter o tempo de atividade do sistema.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

O resultado:

log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81

O valor dos "timeticks" está mudando continuamente. Cada chamada fornece um número diferente.

Para uma lista de todos os objetos fornecidos pelo componente SNMP, consulte a documentação do componente.

Modelos ​

Baixe o arquivo de modelo em: https://github.com/aquaticus/esphome_zabbix_templates

Consiste em 3 modelos:

  • Esphome por SNMP - modelo base
  • Esphome ESP32 por SNMP - modelo para dispositivos ESP32 (incluindo C3, S2 e assim por diante)
  • Esphome ESP8266 por SNMP - modelo para ESP8266

A principal diferença entre os modelos ESP8266 e ESP32 é o dado de heap.

Importe o arquivo de modelo clicando no botão Importar em Coleta de dados→Modelos.

Hosts ​

Abra a interface do Zabbix e vá para Monitoramento→Hosts. Clique em Criar host no canto superior direito.

Hosts do Zabbix

  1. Como modelo, selecione Esphome ESP32 por SNMP ou Esphome ESP8266 por SNMP
  2. Adicione a interface SNMP.
  3. Preencha os campos de IP ou DNS
  4. Deixe o restante dos campos com os valores padrão.
  5. No final, clique no botão Adicionar.

Na lista de hosts monitorados (Monitoramento→Hosts), você deve ver uma nova entrada.

Haverá um ícone SNMP na coluna Disponibilidade. Inicialmente, ele estará acinzentado, mas após alguns segundos, deve ficar verde.

Disponibilidade SNMP

Monitoramento ​

Assim que você vir o ícone verde, poderá examinar os Dados SNMP.

Se você clicar no link Últimos dados, verá a lista de itens coletados.

Novo host

Alarmes ​

O Zabbix pode detectar automaticamente situações anômalas. Na terminologia do Zabbix, isso é chamado de "Gatilho". O modelo ESPHome vem com gatilhos que detectam problemas típicos, por exemplo, a placa foi reiniciada. Para uma lista de gatilhos disponíveis, selecione Gatilhos no menu quando você clicar no nome do host.

Aqui está uma lista padrão de gatilhos:

  • Firmware foi alterado
  • Alta perda de ping ICMP
  • Alto tempo de resposta de ping ICMP
  • Indisponível por ping ICMP
  • O host foi reiniciado
  • Sem coleta de dados SNMP
  • O nome do sistema foi alterado
  • Sinal WiFi fraco por 5m
  • Conexão WiFi perdida

Você também pode criar seus próprios gatilhos, por exemplo, para monitorar o uso de heap.

Tempo de atividade da rede ​

O Componente SNMP pode fornecer o tempo de atividade da rede (objeto SNMP sysUpTime 1.3.6.1.2.1.1.3). Este parâmetro é crucial para detectar eventos de perda de conexão.

Infelizmente, o componente WiFi do ESPHome não fornece essa informação. Por causa disso, por padrão, o Componente SNMP sempre reporta sysUpTime como 0.

Para obter dados significativos, você deve modificar o componente WiFi original e adicionar uma função.

Você pode fazer isso manualmente ou usar o que já foi modificado do repositório.

Modificar manualmente o componente WiFi ​

Clone e instale o ESPHome do github.

Edite dois arquivos wifi_component.cpp e wifi_component.h no diretório esphome/components/wifi.

Na linha 282 de wifi_component.h adicione duas linhas (pode ser em qualquer lugar na seção pública):

cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
  uint32_t wifi_connected_timestamp() {return connected_timestamp_;}

 protected:
  uint32_t connected_timestamp_{0};

Em wifi_component.cpp adicione na linha 518, logo antes da mensagem de log "WiFi Connected":

cpp
this->connected_timestamp_ = millis();

Testar tempo de atividade da rede ​

Compile e carregue o novo firmware.

Agora, quando você ler o objeto sysUpTime 1.3.6.1.2.1.1.3, você deverá obter valores diferentes a cada vez que a operação de obtenção for realizada.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Você deve ver um valor diferente de 0.

Lista de OIDs disponíveis ​

Para ver uma lista completa de objetos fornecidos pelo Componente SNMP do ESPHome, veja lista de OIDs