Skip to content

ESPHome-verkkovalvonta

ESPHome on suosittu järjestelmä Espressif ESP8266- ja ESP32-laitteiden hallintaan. Tämä artikkeli kuvaa, kuinka voit valvoa useita laitteita käyttämällä mukautettua ESPHome SNMP -komponenttia ja suosittua verkkovalvontatyökalua.

Tämän ansiosta voit havaita ja saada tietoa laitteidesi epänormaalista käyttäytymisestä, kuten uudelleenkäynnistyksistä, heikosta Wi-Fi-signaalista tai vapaan muistin puutteesta.

SNMP:tä tukevat monet sovellukset, mutta tässä artikkelissa käsitellään integraatiota avoimen lähdekoodin työkalun Zabbixin kanssa. Oletetaan, että sinulla on Zabbix-versio 6.4 asennettuna ja käynnissä.

INFO

Zabbixin asennusopas on saatavilla Zabbixin verkkosivulla: https://www.zabbix.com/download

SNMP-komponentti

ESPHome ei tue SNMP:tä suoraan. Mutta se tarjoaa kätevän tavan integroitua ulkoisten komponenttien kanssa.

Lisätäksesi SNMP-protokollan ESPHome-laitteeseen, viittaa SNMP-komponenttiin, joka sijaitsee osoitteessa https://github.com/aquaticus/esphome-snmp.

Lisää seuraava koodi ESPHome YAML -määritystiedostoosi:

yaml
# Enable SNMP component
snmp:

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

Kun lataat sen kortille, sinun pitäisi nähdä seuraava viesti lokissa:

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

SNMP:n testaaminen

Nyt voit yrittää hakea tietoja kortilta. On olemassa monia ohjelmia, jotka voivat selata SNMP-tietoja. Tässä on joitakin esimerkkejä:

Windows

Linux

Tässä on esimerkkikoodi käytettäväksi Linuxissa. Korvaa IP-osoite 192.168.1.10 osoitteella, joka vastaa korttisi osoitetta.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Yllä olevan kyselyn tulos näyttää seuraavalta. Se on järjestelmän kuvaus. Se on SMTP-objekti sysDescr, joka kääntyy objektitunnukseksi 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”

Vaihtoehtoisesti voit yrittää saada järjestelmän käyttöajan.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Tulos:

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

Aikatikkien arvo muuttuu jatkuvasti. Jokainen kutsu antaa sinulle eri numeron.

Luettelo kaikista SNMP-komponentin tarjoamista objekteista löytyy komponentin dokumentaatiosta.

Mallit

Lataa mallipaketti osoitteesta: https://github.com/aquaticus/esphome_zabbix_templates

Se koostuu kolmesta mallista:

  • Esphome by SNMP - perusmalli
  • Esphome ESP32 by SNMP - malli ESP32-laitteille (mukaan lukien C3, S2 ja niin edelleen)
  • Esphome ESP8266 by SNMP - malli ESP8266:lle

Pääasiallinen ero ESP8266- ja ESP32-mallien välillä on heap-tiedot.

Tuo mallipaketti napsauttamalla Tuo -painiketta kohdassa Tietojen keräys→Mallit.

Isännät

Avaa Zabbix-käyttöliittymä ja siirry kohtaan Valvonta→Isännät. Napsauta Luo isäntä oikeassa yläkulmassa.

Zabbix isännät

  1. Valitse malliksi Esphome ESP32 by SNMP tai Esphome ESP8266 by SNMP
  2. Lisää SNMP-liitäntä.
  3. Täytä IP- tai DNS-kentät
  4. Jätä loput kentät oletusarvoihin.
  5. Lopuksi napsauta Lisää-painiketta.

Valvottujen isäntien luettelossa (Valvonta→Isännät) sinun pitäisi nähdä uusi merkintä.

SNMP-kuvake näkyy Saatavuus-sarakkeessa. Aluksi se on harmaana, mutta muutaman sekunnin kuluttua sen pitäisi muuttua vihreäksi.

SNMP saatavuus

Valvonta

Kun näet vihreän kuvakkeen, voit tarkastella SNMP-tietoja.

Jos napsautat Viimeisimmät tiedot -linkkiä, näet kerättyjen kohteiden luettelon.

Uusi isäntä

Hälytykset

Zabbix voi automaattisesti havaita poikkeuksellisia tilanteita. Zabbixin terminologiassa tätä kutsutaan "Laukaisuksi". ESPHome-malli sisältää laukaisimia, jotka havaitsevat tyypillisiä ongelmia, esimerkiksi kortti on nollattu. Saatavilla olevien laukaisimien luettelon saat valitsemalla Laukaisut valikosta, kun napsautat isännän nimeä.

Tässä on oletusluettelo laukaisimista:

  • Laiteohjelmisto on muuttunut
  • Korkea ICMP-ping-häviö
  • Korkea ICMP-ping-vastausaika
  • Ei saavutettavissa ICMP-pingillä
  • Isäntä on käynnistetty uudelleen
  • Ei SNMP-tietojen keräystä
  • Järjestelmän nimi on muuttunut
  • Heikko WiFi-signaali 5 minuutin ajan
  • WiFi-yhteys katkennut

Voit myös luoda omia laukaisimia, esimerkiksi valvoaksesi kasan käyttöä.

Verkon käyttöaika

SNMP-komponentti voi tarjota verkon käyttöajan (SNMP-objekti sysUpTime1.3.6.1.2.1.1.3). Tämä parametri on ratkaisevan tärkeä yhteyden katkeamisen havaitsemiseksi.

Valitettavasti ESPHome WiFi -komponentti ei tarjoa tätä tietoa. Tästä syystä SNMP-komponentti raportoi oletuksena aina sysUpTime arvoksi 0.

Saadaksesi merkityksellisiä tietoja sinun on muokattava alkuperäistä WiFi-komponenttia ja lisättävä yksi funktio.

Voit tehdä sen manuaalisesti tai käyttää jo muokattua versiota tietovarastosta.

Muokkaa WiFi-komponenttia manuaalisesti

Kloonaa ja asenna ESPHome GitHubista.

Muokkaa kahta tiedostoa wifi_component.cpp ja wifi_component.h hakemistossa esphome/components/wifi.

Rivillä 282 tiedostossa wifi_component.h lisää kaksi riviä (ne voivat olla missä tahansa julkisessa osiossa):

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

 protected:
  uint32_t connected_timestamp_{0};

Tiedostossa wifi_component.cpp lisää riville 518 juuri ennen "WiFi Connected" lokiviestiä:

cpp
this->connected_timestamp_ = millis();

Testaa verkon käyttöaika

Käännä ja lataa uusi laiteohjelmisto.

Nyt kun luet sysUpTime 1.3.6.1.2.1.1.3 objektin, sinun pitäisi saada eri arvot joka kerta, kun get-operaatio suoritetaan.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Sinun pitäisi nähdä arvo, joka on eri kuin 0.

Saatavilla olevien OID:ien luettelo

Katso täydellinen luettelo ESPHome SNMP -komponentin tarjoamista objekteista OID-luettelo