Skip to content

ESPHome netværksovervågning

ESPHome er et populært system til at styre Espressif ESP8266 og ESP32-enheder. Denne artikel beskriver, hvordan man overvåger flere enheder ved hjælp af en brugerdefineret ESPHome SNMP-komponent og et populært netværksovervågningsværktøj.

Takket være dette kan du opdage og blive informeret om unormale adfærdsmønstre for dine enheder, såsom genstarter, svag Wi-Fi-signal eller mangel på ledig hukommelse.

SNMP understøttes af mange applikationer, men denne artikel diskuterer integration med det open source-værktøj Zabbix. Det antages, at du har Zabbix version 6.4 installeret og kørende.

INFO

Zabbix installationsvejledning er tilgængelig på Zabbix webside: https://www.zabbix.com/download

SNMP-komponent

ESPHome understøtter ikke SNMP som standard. Men det giver en bekvem måde at integrere med eksterne komponenter.

For at tilføje SNMP-protokol til ESPHome-enhed henvises til SNMP-komponenten placeret i https://github.com/aquaticus/esphome-snmp.

Tilføj følgende kode til din ESPHome YAML-konfigurationsfil:

yaml
# Enable SNMP component
snmp:

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

Når den er uploadet til et board, bør du se følgende besked i loggen:

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

Test af SNMP

Nu kan du prøve at hente nogle oplysninger fra boardet. Der er mange programmer, der kan gennemse SNMP-data. Her er nogle eksempler:

Windows

Linux

Her er en eksempelkommando til brug på Linux. Erstat IP-adressen 192.168.1.10 med en værdi, der matcher adressen på dit board.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Resultatet af ovenstående forespørgsel ser ud som nedenfor. Det er en beskrivelse af systemet. Det er SMTP-objektet sysDescr, som oversættes til 1.3.6.1.2.1.1.1.0 objekt-ID.

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”

Du kan eventuelt forsøge at få systemets oppetid.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Resultatet:

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

Tidsmærkeværdien ændrer sig kontinuerligt. Hver opkald giver dig et anderledes nummer.

For en liste over alle objekter leveret af SNMP-komponenten, se komponentdokumentationen.

Skabeloner

Download skabelonfilen fra: https://github.com/aquaticus/esphome_zabbix_templates

Den består af 3 skabeloner:

  • Esphome by SNMP - grundskabelon
  • Esphome ESP32 by SNMP - skabelon for ESP32-enheder (inklusive C3, S2 osv.)
  • Esphome ESP8266 by SNMP - skabelon for ESP8266

Den største forskel mellem ESP8266 og ESP32 skabeloner er heap-data.

Importer skabelonfilen ved at klikke på Import knappen i Data collection→Templates.

Værter

Åbn Zabbix-grænsefladen og gå til Monitoring→Hosts. Klik på Create host i øverste højre hjørne.

Zabbix værter

  1. Som skabelon vælg Esphome ESP32 by SNMP eller Esphome ESP8266 by SNMP
  2. Tilføj SNMP interface.
  3. Udfyld IP eller DNS felterne
  4. Lad resten af felterne være med standardværdier.
  5. Til sidst klik på Add knappen.

På listen over overvågede værter (Monitoring→Hosts) bør du se en ny post.

Der vil være et SNMP ikon i Availability kolonnen. Oprindeligt vil det være gråt, men efter et par sekunder bør det blive grønt.

SNMP tilgængelighed

Overvågning

Når du ser det grønne ikon, kan du undersøge SNMP-data.

Hvis du klikker på Latest data linket, vil du se listen over indsamlede elementer.

Ny vært

Alarmer

Zabbix kan automatisk opdage unormale situationer. I Zabbix terminologi kaldes det en "Trigger". ESPHome-skabelonen leveres med triggere, der opdager typiske problemer, for eksempel, at kortet blev nulstillet. For en liste over tilgængelige triggere vælg Triggers fra menuen, når du klikker på værtsnavnet.

Her er en standardliste over triggere:

  • Firmware er ændret
  • Høj ICMP ping tab
  • Høj ICMP ping svartid
  • Utilgængelig ved ICMP ping
  • Værten er blevet genstartet
  • Ingen SNMP dataindsamling
  • Systemnavnet er ændret
  • Svagt WiFi-signal i 5 minutter
  • WiFi-forbindelse mistet

Du kan også oprette dine egne triggere, for eksempel til at overvåge heap-brug.

Netværksoppetid

SNMP-komponenten kan give netværksoppetid (SNMP-objekt sysUpTime1.3.6.1.2.1.1.3). Denne parameter er afgørende for at opdage forbindelsestabshændelser.

Desværre giver ESPHome WiFi-komponenten ikke denne information. På grund af dette rapporterer SNMP-komponenten som standard altid sysUpTime som 0.

For at få meningsfulde data skal du ændre den originale WiFi-komponent og tilføje en funktion.

Du kan gøre det manuelt eller bruge den allerede ændrede fra repositoryet.

Manuelt ændre WiFi-komponent

Klon og installer ESPHome fra GitHub.

Rediger to filer wifi_component.cpp og wifi_component.h i esphome/components/wifi-mappen.

På linje 282 i wifi_component.h tilføj to linjer (det kan være hvor som helst i den offentlige sektion):

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

 protected:
  uint32_t connected_timestamp_{0};

I wifi_component.cpp tilføj på linje 518 lige før "WiFi Connected" logbeskeden:

cpp
this->connected_timestamp_ = millis();

Test netværksoppetid

Kompilér og upload ny firmware.

Nu, når du læser sysUpTime 1.3.6.1.2.1.1.3-objektet, bør du få forskellige værdier hver gang en get-operation udføres.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Du bør se en værdi forskellig fra 0.

Liste over tilgængelige OID'er

For at se en fuld liste over objekter leveret af ESPHome SNMP-komponenten, se OID-liste