Skip to content

ESPHome nätverksövervakning

ESPHome är ett populärt system för att styra Espressif ESP8266 och ESP32 enheter. Denna artikel beskriver hur man övervakar flera enheter med hjälp av en anpassad ESPHome SNMP-komponent och ett populärt nätverksövervakningsverktyg.

Tack vare detta kan du upptäcka och bli informerad om onormala beteenden hos dina enheter, som omstarter, svag Wi-Fi-signal eller brist på ledigt minne.

SNMP stöds av många applikationer, men denna artikel diskuterar integration med det öppna källkodsverktyget Zabbix. Det antas att du har Zabbix version 6.4 installerad och igång.

INFO

Zabbix installationsguide finns tillgänglig på Zabbix webbplats: https://www.zabbix.com/download

SNMP-komponent

ESPHome stöder inte SNMP direkt. Men det ger ett bekvämt sätt att integrera med externa komponenter.

För att lägga till SNMP-protokoll till ESPHome-enhet, referera till SNMP-komponenten som finns på https://github.com/aquaticus/esphome-snmp.

Lägg till följande kod i din ESPHome YAML-konfigurationsfil:

yaml
# Enable SNMP component
snmp:

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

När den laddas upp till ett kort bör du se följande meddelande 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: ""

Testa SNMP

Nu kan du försöka hämta information från kortet. Det finns många program som kan bläddra i SNMP-data. Här är några exempel:

Windows

Linux

Här är ett exempel på kod att använda på Linux. Byt ut IP-adressen 192.168.1.10 till ett värde som matchar adressen till ditt kort.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Resultatet av ovanstående fråga ser ut som nedan. Det är en beskrivning av systemet. Det är SMTP-objektet sysDescr som översätts till 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 valfritt försöka få systemets drifttid.

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

Tidsvärdet ändras kontinuerligt. Varje anrop ger dig ett annat nummer.

För en lista över alla objekt som tillhandahålls av SNMP-komponenten, se komponentdokumentationen.

Mallar

Ladda ner mallfilen från: https://github.com/aquaticus/esphome_zabbix_templates

Den består av 3 mallar:

  • Esphome by SNMP - basmall
  • Esphome ESP32 by SNMP - mall för ESP32-enheter (inklusive C3, S2 och så vidare)
  • Esphome ESP8266 by SNMP - mall för ESP8266

Den största skillnaden mellan ESP8266 och ESP32-mallar är heap-data.

Importera mallfilen genom att klicka på Import knappen i Datainsamling→Mallar.

Värdar

Öppna Zabbix-gränssnittet och gå till Övervakning→Värdar. Klicka på Skapa värd i det övre högra hörnet.

Zabbix värdar

  1. Som mall, välj Esphome ESP32 by SNMP eller Esphome ESP8266 by SNMP
  2. Lägg till SNMP-gränssnitt.
  3. Fyll i IP- eller DNS-fälten
  4. Lämna resten av fälten med standardvärden.
  5. Klicka på Lägg till-knappen i slutet.

På listan över övervakade värdar (Övervakning→Värdar) bör du se en ny post.

Det kommer att finnas en SNMP-ikon i Tillgänglighet-kolumnen. Inledningsvis kommer den att vara grå, men efter några sekunder bör den bli grön.

SNMP tillgänglighet

Övervakning

När du ser den gröna ikonen kan du undersöka SNMP-data.

Om du klickar på Senaste data-länken ser du listan över insamlade objekt.

Ny värd

Larm

Zabbix kan automatiskt upptäcka onormala situationer. I Zabbix-terminologi kallas det "Trigger". ESPHome-mallen levereras med triggers som upptäcker typiska problem, till exempel att kortet har återställts. För en lista över tillgängliga triggers, välj Triggers från menyn när du klickar på värdnamnet.

Här är en standardlista över triggers:

  • Firmware har ändrats
  • Hög ICMP pingförlust
  • Hög ICMP ping svarstid
  • Otillgänglig via ICMP ping
  • Värden har startats om
  • Ingen SNMP-datainsamling
  • Systemnamnet har ändrats
  • Svag WiFi-signal i 5 minuter
  • WiFi-anslutning förlorad

Du kan också skapa dina egna triggers, till exempel för att övervaka heap-användning.

Nätverksdrifttid

SNMP-komponenten kan tillhandahålla nätverksdrifttid (SNMP-objekt sysUpTime1.3.6.1.2.1.1.3). Denna parameter är avgörande för att upptäcka händelser av förlorad anslutning.

Tyvärr tillhandahåller inte ESPHome WiFi-komponenten denna information. På grund av detta rapporterar SNMP-komponenten som standard alltid sysUpTime som 0.

För att få meningsfull data måste du modifiera den ursprungliga WiFi-komponenten och lägga till en funktion.

Du kan göra det manuellt eller använda den som redan är modifierad från lagringsplatsen.

Modifiera WiFi-komponenten manuellt

Klona och installera ESPHome från GitHub.

Redigera två filer wifi_component.cpp och wifi_component.h i esphome/components/wifi-katalogen.

På rad 282 i wifi_component.h lägg till två rader (det kan vara var som helst i den publika sektionen):

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

 protected:
  uint32_t connected_timestamp_{0};

I wifi_component.cpp lägg till på rad 518 precis före loggmeddelandet "WiFi Connected":

cpp
this->connected_timestamp_ = millis();

Testa nätverksdrifttid

Kompilera och ladda upp ny firmware.

Nu när du läser sysUpTime 1.3.6.1.2.1.1.3-objektet bör du få olika värden varje gång en get-operation utförs.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Du bör se ett värde som är annorlunda än 0.

Lista över tillgängliga OID:er

För att se en fullständig lista över objekt som tillhandahålls av ESPHome SNMP-komponenten, se OID-lista