Skip to content

ESPHome mrežno praćenje

ESPHome je popularan sustav za kontrolu Espressif ESP8266 i ESP32 uređaja. Ovaj članak opisuje kako pratiti više uređaja koristeći prilagođenu ESPHome SNMP komponentu i popularni alat za mrežno praćenje.

Zahvaljujući tome, možete otkriti i biti obaviješteni o anomalnim ponašanjima vaših uređaja, poput ponovnog pokretanja, slabog Wi-Fi signala ili nedostatka slobodne memorije.

SNMP podržava mnoge aplikacije, ali ovaj članak raspravlja o integraciji s alatom otvorenog koda Zabbix. Pretpostavlja se da imate instaliranu i pokrenutu verziju Zabbix 6.4.

INFO

Vodič za instalaciju Zabbixa dostupan je na Zabbix web stranici: https://www.zabbix.com/download

SNMP komponenta

ESPHome ne podržava SNMP izravno. Ali pruža prikladan način za integraciju s vanjskim komponentama.

Da biste dodali SNMP protokol na ESPHome uređaj, referencirajte SNMP komponentu koja se nalazi na https://github.com/aquaticus/esphome-snmp.

Dodajte sljedeći kod u svoju ESPHome YAML konfiguracijsku datoteku:

yaml
# Enable SNMP component
snmp:

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

Kada se učita na ploču, trebali biste vidjeti sljedeću poruku u zapisniku:

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

Testiranje SNMP-a

Sada možete pokušati dohvatiti neke informacije s ploče. Postoji mnogo programa koji mogu pregledavati SNMP podatke. Evo nekoliko primjera:

Windows

Linux

Evo uzorka koda za korištenje na Linuxu. Zamijenite IP adresu 192.168.1.10 vrijednošću koja odgovara adresi vaše ploče.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Rezultat gore navedenog upita izgleda kao onaj ispod. To je opis sustava. To je SNMP objekt sysDescr koji se prevodi u 1.3.6.1.2.1.1.1.0 ID objekta.

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”

Možete opcionalno pokušati dobiti vrijeme rada sustava.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Rezultat:

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

Vrijednost vremenskih tikova se kontinuirano mijenja. Svaki poziv daje drugi broj.

Za popis svih objekata koje pruža SNMP komponenta, pogledajte dokumentaciju komponente.

Predlošci

Preuzmite datoteku predloška s: https://github.com/aquaticus/esphome_zabbix_templates

Sastoji se od 3 predloška:

  • Esphome by SNMP - osnovni predložak
  • Esphome ESP32 by SNMP - predložak za ESP32 uređaje (uključujući C3, S2 i tako dalje)
  • Esphome ESP8266 by SNMP - predložak za ESP8266

Glavna razlika između ESP8266 i ESP32 predložaka su podaci o hrpi.

Uvezite datoteku predloška klikom na gumb Import u Zbirka podataka→Predlošci.

Domaćini

Otvorite Zabbix sučelje i idite na Praćenje→Domaćini. Kliknite Create host u gornjem desnom kutu.

Zabbix domaćini

  1. Kao predložak odaberite Esphome ESP32 by SNMP ili Esphome ESP8266 by SNMP
  2. Dodajte SNMP sučelje.
  3. Ispunite IP ili DNS polja
  4. Ostavite ostala polja s zadanim vrijednostima.
  5. Na kraju kliknite gumb Add.

Na popisu nadziranih domaćina (Praćenje→Domaćini) trebali biste vidjeti novi unos.

U stupcu Dostupnost bit će ikona SNMP. U početku će biti zasivljena, ali nakon nekoliko sekundi trebala bi postati zelena.

SNMP dostupnost

Praćenje

Kada vidite zelenu ikonu, možete pregledati SNMP podatke.

Ako kliknete na poveznicu Latest data, vidjet ćete popis prikupljenih stavki.

Novi domaćin

Alarm

Zabbix može automatski otkriti anomalne situacije. U Zabbix terminologiji, to se naziva "Okidač". ESPHome predložak dolazi s okidačima koji otkrivaju tipične probleme, na primjer, ploča je resetirana. Za popis dostupnih okidača odaberite Triggers iz izbornika kada kliknete na ime domaćina.

Evo zadanog popisa okidača:

  • Firmware je promijenjen
  • Veliki gubitak ICMP pinga
  • Veliko vrijeme odgovora ICMP pinga
  • Nedostupan putem ICMP pinga
  • Domaćin je ponovno pokrenut
  • Nema prikupljanja SNMP podataka
  • Ime sustava je promijenjeno
  • Slab WiFi signal za 5m
  • WiFi veza izgubljena

Također možete stvoriti vlastite okidače, na primjer, za praćenje korištenja hrpe.

Dostupnost mreže

SNMP komponenta može pružiti dostupnost mreže (SNMP objekt sysUpTime1.3.6.1.2.1.1.3). Ovaj parametar je ključan za otkrivanje događaja gubitka veze.

Nažalost, ESPHome WiFi komponenta ne pruža ovu informaciju. Zbog toga SNMP komponenta prema zadanim postavkama uvijek prijavljuje sysUpTime kao 0.

Da biste dobili smislen podatak, morate izmijeniti originalnu WiFi komponentu i dodati jednu funkciju.

To možete učiniti ručno ili koristiti već izmijenjenu iz repozitorija.

Ručno izmijenite WiFi komponentu

Klonirajte i instalirajte ESPHome s GitHuba.

Uredite dvije datoteke wifi_component.cpp i wifi_component.h u direktoriju esphome/components/wifi.

Na liniji 282 u wifi_component.h dodajte dvije linije (može biti bilo gdje u javnom dijelu):

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

 protected:
  uint32_t connected_timestamp_{0};

U wifi_component.cpp dodajte na liniji 518 neposredno prije log poruke "WiFi Connected":

cpp
this->connected_timestamp_ = millis();

Testirajte dostupnost mreže

Kompilirajte i učitajte novi firmware.

Sada kada pročitate sysUpTime 1.3.6.1.2.1.1.3 objekt, trebali biste dobiti različite vrijednosti svaki put kada se izvrši operacija dobivanja.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Trebali biste vidjeti vrijednost različitu od 0.

Popis dostupnih OID-ova

Da biste vidjeli potpuni popis objekata koje pruža ESPHome SNMP komponenta, pogledajte popis OID-ova