Skip to content

Monitorování sítě ESPHome

ESPHome je populární systém pro ovládání zařízení Espressif ESP8266 a ESP32. Tento článek popisuje, jak monitorovat více zařízení pomocí vlastního komponentu ESPHome SNMP a populárního nástroje pro monitorování sítě.

Díky tomu můžete detekovat a být informováni o anomálním chování vašich zařízení, jako jsou restartování, nízký signál Wi-Fi nebo nedostatek volné paměti.

SNMP je podporován mnoha aplikacemi, ale tento článek se zabývá integrací s open source nástrojem Zabbix. Předpokládá se, že máte nainstalovanou a spuštěnou verzi Zabbix 6.4.

INFO

Průvodce instalací Zabbix je k dispozici na webové stránce Zabbix: https://www.zabbix.com/download

SNMP Komponenta

ESPHome nepodporuje SNMP přímo. Poskytuje však pohodlný způsob integrace s externími komponenty.

Chcete-li přidat SNMP protokol do zařízení ESPHome, odkažte se na SNMP komponentu umístěnou na https://github.com/aquaticus/esphome-snmp.

Přidejte následující kód do vašeho ESPHome YAML konfiguračního souboru:

yaml
# Enable SNMP component
snmp:

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

Po nahrání na desku byste měli v logu vidět následující zprávu:

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

Testování SNMP

Nyní můžete zkusit získat nějaké informace z desky. Existuje mnoho programů, které mohou procházet SNMP data. Zde jsou některé příklady:

Windows

Linux

Zde je ukázkový kód pro použití na Linuxu. Nahraďte IP adresu 192.168.1.10 hodnotou odpovídající adrese vaší desky.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Výsledek výše uvedeného dotazu vypadá jako ten níže. Je to popis systému. Je to SMTP objekt sysDescr, který se překládá na objekt ID 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”

Volitelně můžete zkusit získat dobu provozu systému.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Výsledek:

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

Hodnota časových tiků se neustále mění. Každé volání vám dá jiné číslo.

Pro seznam všech objektů poskytovaných komponentou SNMP si přečtěte dokumentaci komponenty.

Šablony

Stáhněte si soubor šablony z: https://github.com/aquaticus/esphome_zabbix_templates

Skládá se ze 3 šablon:

  • Esphome by SNMP - základní šablona
  • Esphome ESP32 by SNMP - šablona pro zařízení ESP32 (včetně C3, S2 a tak dále)
  • Esphome ESP8266 by SNMP - šablona pro ESP8266

Hlavní rozdíl mezi šablonami ESP8266 a ESP32 je v datech o haldě.

Importujte soubor šablony kliknutím na tlačítko Import v sekci Sběr dat→Šablony.

Hostitelé

Otevřete rozhraní Zabbix a přejděte na Monitorování→Hostitelé. Klikněte na Vytvořit hostitele v pravém horním rohu.

Zabbix hostitelé

  1. Jako šablonu vyberte Esphome ESP32 by SNMP nebo Esphome ESP8266 by SNMP
  2. Přidejte SNMP rozhraní.
  3. Vyplňte pole IP nebo DNS
  4. Ostatní pole ponechte s výchozími hodnotami.
  5. Na konci klikněte na tlačítko Přidat.

Na seznamu monitorovaných hostitelů (Monitorování→Hostitelé) byste měli vidět nový záznam.

Ve sloupci Dostupnost bude ikona SNMP. Zpočátku bude šedá, ale po několika sekundách by se měla změnit na zelenou.

Dostupnost SNMP

Monitorování

Jakmile uvidíte zelenou ikonu, můžete zkoumat data SNMP.

Pokud kliknete na odkaz Nejnovější data, uvidíte seznam shromážděných položek.

Nový hostitel

Alarmy

Zabbix může automaticky detekovat anomální situace. V terminologii Zabbixu se tomu říká "Trigger". Šablona ESPHome obsahuje triggery, které detekují typické problémy, například resetování desky. Pro seznam dostupných triggerů vyberte Triggery z menu, když kliknete na jméno hostitele.

Zde je výchozí seznam triggerů:

  • Firmware byl změněn
  • Vysoká ztráta ICMP ping
  • Vysoká doba odezvy ICMP ping
  • Nedostupné pomocí ICMP ping
  • Hostitel byl restartován
  • Žádný sběr dat SNMP
  • Název systému byl změněn
  • Slabý WiFi signál po dobu 5 minut
  • Ztráta WiFi připojení

Můžete také vytvořit své vlastní spouštěče, například pro monitorování využití haldy.

Dostupnost sítě

Komponenta SNMP může poskytnout dostupnost sítě (SNMP objekt sysUpTime1.3.6.1.2.1.1.3). Tento parametr je klíčový pro detekci událostí ztráty připojení.

Bohužel komponenta WiFi v ESPHome tuto informaci neposkytuje. Z tohoto důvodu komponenta SNMP ve výchozím nastavení vždy hlásí sysUpTime jako 0.

Abyste získali smysluplná data, musíte upravit původní komponentu WiFi a přidat jednu funkci.

Můžete to udělat ručně nebo použít již upravenou verzi z repozitáře.

Ruční úprava komponenty WiFi

Naklonujte a nainstalujte ESPHome z githubu.

Upravte dva soubory wifi_component.cpp a wifi_component.h ve složce esphome/components/wifi.

Na řádku 282 v wifi_component.h přidejte dva řádky (může být kdekoli ve veřejné sekci):

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

 protected:
  uint32_t connected_timestamp_{0};

V wifi_component.cpp přidejte na řádek 518 těsně před logovací zprávu "WiFi Connected":

cpp
this->connected_timestamp_ = millis();

Test dostupnosti sítě

Zkompilujte a nahrajte nový firmware.

Nyní, když čtete objekt sysUpTime 1.3.6.1.2.1.1.3, měli byste získat různé hodnoty pokaždé, když je provedena operace get.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Měli byste vidět hodnotu odlišnou od 0.

Seznam dostupných OID

Pro zobrazení úplného seznamu objektů poskytovaných komponentou SNMP v ESPHome viz seznam OID