Skip to content

ESPHome tinklo stebėjimas

ESPHome yra populiari sistema, skirta valdyti Espressif ESP8266 ir ESP32 įrenginius. Šiame straipsnyje aprašoma, kaip stebėti kelis įrenginius naudojant individualų ESPHome SNMP komponentą ir populiarų tinklo stebėjimo įrankį.

Dėl to galite aptikti ir būti informuoti apie jūsų įrenginių anomalijas, tokias kaip perkrovimai, silpnas Wi-Fi signalas ar laisvos atminties trūkumas.

SNMP palaiko daugelis programų, tačiau šiame straipsnyje aptariama integracija su atvirojo kodo įrankiu Zabbix. Manoma, kad turite įdiegtą ir veikiančią Zabbix 6.4 versiją.

INFO

Zabbix diegimo vadovas yra prieinamas Zabbix tinklalapyje: https://www.zabbix.com/download

SNMP komponentas

ESPHome neturi SNMP palaikymo iš karto. Tačiau jis suteikia patogų būdą integruotis su išoriniais komponentais.

Norėdami pridėti SNMP protokolą prie ESPHome įrenginio, naudokite SNMP komponentą, esantį https://github.com/aquaticus/esphome-snmp.

Pridėkite šį kodą į savo ESPHome YAML konfigūracijos failą:

yaml
# Enable SNMP component
snmp:

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

Kai įkelsite į plokštę, žurnale turėtumėte pamatyti šią žinutę:

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

SNMP testavimas

Dabar galite pabandyti gauti tam tikrą informaciją iš plokštės. Yra daug programų, kurios gali naršyti SNMP duomenis. Štai keletas pavyzdžių:

Windows

Linux

Štai pavyzdinis kodas, kurį galima naudoti Linux. Pakeiskite IP adresą 192.168.1.10 į jūsų plokštės adresą.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Aukščiau pateiktos užklausos rezultatas atrodo taip, kaip parodyta žemiau. Tai yra sistemos aprašymas. Tai yra SMTP objektas sysDescr, kuris verčiamas į 1.3.6.1.2.1.1.1.0 objekto 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”

Pasirinktinai galite pabandyti gauti sistemos veikimo laiką.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Rezultatas:

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

Laiko žymės vertė nuolat keičiasi. Kiekvienas iškvietimas pateikia skirtingą skaičių.

Visų SNMP komponento teikiamų objektų sąrašą rasite komponento dokumentacijoje.

Šablonai

Atsisiųskite šablono failą iš: https://github.com/aquaticus/esphome_zabbix_templates

Jį sudaro 3 šablonai:

  • Esphome by SNMP - pagrindinis šablonas
  • Esphome ESP32 by SNMP - šablonas ESP32 įrenginiams (įskaitant C3, S2 ir kt.)
  • Esphome ESP8266 by SNMP - šablonas ESP8266

Pagrindinis skirtumas tarp ESP8266 ir ESP32 šablonų yra atminties duomenys.

Importuokite šablono failą spustelėdami Import mygtuką duomenų rinkimo→Šablonai.

Priimančiosios

Atidarykite Zabbix sąsają ir eikite į Stebėjimas→Priimančiosios. Spustelėkite Sukurti priimančiąją viršutiniame dešiniajame kampe.

Zabbix priimančiosios

  1. Kaip šabloną pasirinkite Esphome ESP32 by SNMP arba Esphome ESP8266 by SNMP
  2. Pridėkite SNMP sąsają.
  3. Užpildykite IP arba DNS laukus
  4. Likusius laukus palikite su numatytomis reikšmėmis.
  5. Pabaigoje spustelėkite Pridėti mygtuką.

Stebimų priimančiųjų sąraše (Stebėjimas→Priimančiosios) turėtumėte matyti naują įrašą.

Prieinamumo stulpelyje bus SNMP piktograma. Iš pradžių ji bus pilka, bet po kelių sekundžių turėtų tapti žalia.

SNMP prieinamumas

Stebėjimas

Kai pamatysite žalią piktogramą, galite patikrinti SNMP duomenis.

Jei spustelėsite Naujausi duomenys nuorodą, pamatysite surinktų elementų sąrašą.

Nauja priimančioji

Įspėjimai

Zabbix gali automatiškai aptikti anomalijas. Zabbix terminologijoje tai vadinama "Trigeriu". ESPHome šablonas pateikiamas su trigeriais, kurie aptinka tipines problemas, pavyzdžiui, plokštė buvo iš naujo paleista. Norėdami pamatyti galimų trigerių sąrašą, pasirinkite Trigeriai iš meniu, kai spustelėsite priimančiosios pavadinimą.

Čia yra numatytasis trigerių sąrašas:

  • Programinė įranga pasikeitė
  • Didelis ICMP ping praradimas
  • Didelis ICMP ping atsako laikas
  • Neprieinama per ICMP ping
  • Priimančioji buvo paleista iš naujo
  • Nėra SNMP duomenų rinkimo
  • Sistemos pavadinimas pasikeitė
  • Silpnas WiFi signalas 5m
  • WiFi ryšys prarastas

Taip pat galite sukurti savo trigerius, pavyzdžiui, stebėti krūvos naudojimą.

Tinklo veikimo laikas

SNMP komponentas gali pateikti tinklo veikimo laiką (SNMP objektas sysUpTime1.3.6.1.2.1.1.3). Šis parametras yra svarbus norint aptikti ryšio praradimo įvykius.

Deja, ESPHome WiFi komponentas šios informacijos nepateikia. Dėl to pagal numatytuosius nustatymus SNMP komponentas visada praneša sysUpTime kaip 0.

Norėdami gauti prasmingus duomenis, turite modifikuoti originalų WiFi komponentą ir pridėti vieną funkciją.

Tai galite padaryti rankiniu būdu arba naudoti jau modifikuotą iš saugyklos.

Rankiniu būdu modifikuoti WiFi komponentą

Klonuokite ir įdiekite ESPHome iš github.

Redaguokite du failus wifi_component.cpp ir wifi_component.h esančius esphome/components/wifi kataloge.

282 eilutėje wifi_component.h pridėkite dvi eilutes (tai gali būti bet kur viešoje sekcijoje):

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

 protected:
  uint32_t connected_timestamp_{0};

wifi_component.cpp pridėkite 518 eilutėje prieš "WiFi Connected" žurnalo pranešimą:

cpp
this->connected_timestamp_ = millis();

Testuoti tinklo veikimo laiką

Sukompiliuokite ir įkelkite naują programinę įrangą.

Dabar, kai skaitote sysUpTime 1.3.6.1.2.1.1.3 objektą, turėtumėte gauti skirtingas reikšmes kiekvieną kartą atliekant get operaciją.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Turėtumėte matyti reikšmę, skirtingą nuo 0.

Galimų OID sąrašas

Norėdami pamatyti visą objektų, kuriuos pateikia ESPHome SNMP komponentas, sąrašą, žiūrėkite OID sąrašas