Skip to content

Monitorizarea rețelei ESPHome

ESPHome este un sistem popular pentru controlul dispozitivelor Espressif ESP8266 și ESP32. Acest articol descrie cum să monitorizezi mai multe dispozitive folosind un component SNMP personalizat ESPHome și un instrument popular de monitorizare a rețelei.

Datorită acestui fapt, poți detecta și fi informat despre comportamentele anormale ale dispozitivelor tale, cum ar fi reporniri, semnal Wi-Fi slab sau lipsa memoriei libere.

SNMP este suportat de multe aplicații, dar acest articol discută integrarea cu instrumentul open source Zabbix. Se presupune că ai instalat și rulezi Zabbix versiunea 6.4.

INFO

Ghidul de instalare Zabbix este disponibil pe pagina web Zabbix: https://www.zabbix.com/download

Componenta SNMP

ESPHome nu suportă SNMP în mod implicit. Dar oferă o modalitate convenabilă de a integra componente externe.

Pentru a adăuga protocolul SNMP la un dispozitiv ESPHome, referința Componenta SNMP se află la https://github.com/aquaticus/esphome-snmp.

Adaugă următorul cod în fișierul tău de configurare YAML ESPHome:

yaml
# Enable SNMP component
snmp:

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

Când este încărcat pe o placă, ar trebui să vezi următorul mesaj în jurnal:

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

Testarea SNMP

Acum poți încerca să recuperezi câteva informații de la placă. Există multe programe care pot naviga datele SNMP. Iată câteva exemple:

Windows

Linux

Iată un cod exemplu de utilizat pe Linux. Înlocuiește adresa IP 192.168.1.10 cu o valoare care corespunde adresei plăcii tale.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Rezultatul interogării de mai sus arată ca cel de mai jos. Este o descriere a sistemului. Este obiectul SNMP sysDescr care se traduce în ID-ul obiectului 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”

Opțional, poți încerca să obții timpul de funcționare al sistemului.

Rezultatul:

Valoarea timeticks se schimbă continuu. Fiecare apel îți oferă un număr diferit.

Pentru o listă a tuturor obiectelor furnizate de componenta SNMP, vezi documentația componentei.

Șabloane

Descarcă fișierul șablon de la: https://github.com/aquaticus/esphome_zabbix_templates

Acesta constă din 3 șabloane:

  • Esphome by SNMP - șablon de bază
  • Esphome ESP32 by SNMP - șablon pentru dispozitive ESP32 (inclusiv C3, S2 și așa mai departe)
  • Esphome ESP8266 by SNMP - șablon pentru ESP8266

Principala diferență între șabloanele ESP8266 și ESP32 este datele heap.

Importă fișierul șablon făcând clic pe butonul Import în Colecție de date→Șabloane.

Găzduiri

Deschide interfața Zabbix și mergi la Monitorizare→Găzduiri. Fă clic pe Creează găzduire în colțul din dreapta sus.

  1. Ca șablon selectează Esphome ESP32 by SNMP sau Esphome ESP8266 by SNMP
  2. Adaugă interfața SNMP.
  3. Completează câmpurile IP sau DNS
  4. Lasă restul câmpurilor cu valorile implicite.
  5. La final, fă clic pe butonul Adaugă.

Pe lista de găzduiri monitorizate (Monitorizare→Găzduiri) ar trebui să vezi o nouă intrare.

Va fi o pictogramă SNMP în coloana Disponibilitate. Inițial, va fi gri, dar după câteva secunde ar trebui să devină verde.

Monitorizare

Odată ce vezi pictograma verde, poți examina datele SNMP.

Dacă faci clic pe linkul Ultimele date, vei vedea lista de elemente colectate.

Alarme

Zabbix poate detecta automat situații anormale. În terminologia Zabbix, aceasta se numește "Declanșator". Șablonul ESPHome vine cu declanșatoare care detectează probleme tipice, de exemplu, placa a fost resetată. Pentru o listă de declanșatoare disponibile, selectează Declanșatoare din meniu când faci clic pe numele găzduirii.

Iată o listă implicită de declanșatoare:

  • Firmware-ul a fost schimbat
  • Pierdere mare de ping ICMP
  • Timp de răspuns mare la ping ICMP
  • Indisponibil prin ping ICMP
  • Găzduirea a fost repornită
  • Nicio colectare de date SNMP
  • Numele sistemului a fost schimbat
  • Semnal WiFi slab timp de 5 minute
  • Conexiunea WiFi pierdută

Poți, de asemenea, să creezi propriile tale declanșatoare, de exemplu, pentru a monitoriza utilizarea heap-ului.

Timp de funcționare a rețelei

Componenta SNMP poate furniza timpul de funcționare a rețelei (obiectul SNMP sysUpTime 1.3.6.1.2.1.1.3). Acest parametru este crucial pentru a detecta evenimentele de pierdere a conexiunii.

Din păcate, componenta WiFi ESPHome nu oferă această informație. Din acest motiv, în mod implicit, componenta SNMP raportează întotdeauna sysUpTime ca 0.

Pentru a obține date semnificative, trebuie să modifici componenta WiFi originală și să adaugi o funcție.

Poți face acest lucru manual sau poți folosi una deja modificată din depozit.

Modifică manual componenta WiFi

Clonează și instalează ESPHome de pe GitHub.

Editează două fișiere wifi_component.cpp și wifi_component.h în directorul esphome/components/wifi.

La linia 282 din wifi_component.h adaugă două linii (poate fi oriunde în secțiunea publică):

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

 protected:
  uint32_t connected_timestamp_{0};

În wifi_component.cpp adaugă la linia 518 chiar înainte de mesajul de log "WiFi Connected":

cpp
this->connected_timestamp_ = millis();

Testează timpul de funcționare a rețelei

Compilează și încarcă noul firmware.

Acum, când citești obiectul sysUpTime 1.3.6.1.2.1.1.3, ar trebui să obții valori diferite de fiecare dată când operația de obținere este efectuată.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Ar trebui să vezi o valoare diferită de 0.

Lista OID-urilor disponibile

Pentru a vedea o listă completă a obiectelor furnizate de Componenta SNMP ESPHome, vezi lista OID