Skip to content

ESPHome netwerkbewaking

ESPHome is een populair systeem om Espressif ESP8266 en ESP32 apparaten te besturen. Dit artikel beschrijft hoe je meerdere apparaten kunt monitoren met behulp van een aangepaste ESPHome SNMP-component en een populair netwerkbewakingshulpmiddel.

Dankzij dit kun je anomalieën in het gedrag van je apparaten detecteren en hierover geïnformeerd worden, zoals herstarts, zwak Wi-Fi-signaal of gebrek aan vrij geheugen.

SNMP wordt door veel applicaties ondersteund, maar dit artikel bespreekt de integratie met het open source-hulpmiddel Zabbix. Er wordt aangenomen dat je Zabbix versie 6.4 geïnstalleerd en draaiend hebt.

INFO

Zabbix installatiegids is beschikbaar op de Zabbix webpagina: https://www.zabbix.com/download

SNMP-component

ESPHome ondersteunt SNMP niet standaard. Maar het biedt een handige manier om te integreren met externe componenten.

Om SNMP-protocol toe te voegen aan een ESPHome-apparaat, verwijs naar de SNMP-component op https://github.com/aquaticus/esphome-snmp.

Voeg de volgende code toe aan je ESPHome YAML-configuratiebestand:

yaml
# Enable SNMP component
snmp:

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

Wanneer geüpload naar een bord, zou je het volgende bericht in het logboek moeten zien:

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

SNMP testen

Nu kun je proberen om wat informatie van het bord op te halen. Er zijn veel programma's die SNMP-gegevens kunnen doorzoeken. Hier zijn enkele voorbeelden:

Windows

Linux

Hier is een voorbeeldcode om te gebruiken op Linux. Vervang het IP-adres 192.168.1.10 door een waarde die overeenkomt met het adres van je bord.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Het resultaat van de bovenstaande query ziet eruit zoals hieronder. Het is een beschrijving van het systeem. Het is het SMTP-object sysDescr dat vertaalt naar 1.3.6.1.2.1.1.1.0 object-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”

Optioneel kunt u proberen de systeem-uptime op te halen.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Het resultaat:

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

De tijdtikkenwaarde verandert continu. Elke oproep geeft u een ander nummer.

Voor een lijst van alle objecten die door de SNMP-component worden geleverd, zie de componentdocumentatie.

Sjablonen

Download het sjabloonbestand van: https://github.com/aquaticus/esphome_zabbix_templates

Het bestaat uit 3 sjablonen:

  • Esphome by SNMP - basissjabloon
  • Esphome ESP32 by SNMP - sjabloon voor ESP32-apparaten (inclusief C3, S2 enzovoort)
  • Esphome ESP8266 by SNMP - sjabloon voor ESP8266

Het belangrijkste verschil tussen ESP8266- en ESP32-sjablonen is heapgegevens.

Importeer het sjabloonbestand door op de knop Importeren te klikken in Gegevensverzameling→Sjablonen.

Hosts

Open de Zabbix-interface en ga naar Monitoring→Hosts. Klik op Host maken in de rechterbovenhoek.

Zabbix hosts

  1. Selecteer als sjabloon Esphome ESP32 by SNMP of Esphome ESP8266 by SNMP
  2. Voeg SNMP-interface toe.
  3. Vul IP- of DNS-velden in
  4. Laat de rest van de velden met standaardwaarden.
  5. Klik aan het einde op de knop Toevoegen.

Op de lijst van gemonitorde hosts (Monitoring→Hosts) zou u een nieuwe vermelding moeten zien.

Er zal een SNMP-pictogram zijn in de kolom Beschikbaarheid. Aanvankelijk zal het grijs zijn, maar na een paar seconden zou het groen moeten worden.

SNMP beschikbaarheid

Monitoring

Zodra u het groene pictogram ziet, kunt u SNMP-gegevens onderzoeken.

Als u op de link Laatste gegevens klikt, ziet u de lijst van verzamelde items.

Nieuwe host

Alarmen

Zabbix kan automatisch abnormale situaties detecteren. In Zabbix-terminologie wordt dit een "Trigger" genoemd. Het ESPHome-sjabloon wordt geleverd met triggers die typische problemen detecteren, bijvoorbeeld dat het bord is gereset. Voor een lijst van beschikbare triggers selecteert u Triggers uit het menu wanneer u op de hostnaam klikt.

Hier is een standaardlijst van triggers:

  • Firmware is gewijzigd
  • Hoge ICMP-pingverlies
  • Hoge ICMP-pingresponstijd
  • Niet beschikbaar via ICMP-ping
  • De host is opnieuw opgestart
  • Geen SNMP-gegevensverzameling
  • De systeemnaam is gewijzigd
  • Zwak WiFi-signaal gedurende 5 minuten
  • WiFi-verbinding verloren

Je kunt ook je eigen triggers maken, bijvoorbeeld om het heap-gebruik te monitoren.

Netwerk uptime

SNMP Component kan netwerk uptime bieden (SNMP object sysUpTime1.3.6.1.2.1.1.3). Deze parameter is cruciaal om verbindingsverlies gebeurtenissen te detecteren.

Helaas biedt de ESPHome WiFi-component deze informatie niet. Daarom rapporteert de SNMP Component standaard altijd sysUpTime als 0.

Om zinvolle gegevens te krijgen, moet je de originele WiFi-component aanpassen en een functie toevoegen.

Je kunt dit handmatig doen of de al aangepaste versie uit de repository gebruiken.

Handmatig de WiFi-component aanpassen

Clone en installeer ESPHome van GitHub.

Bewerk twee bestanden wifi_component.cpp en wifi_component.h in de esphome/components/wifi directory.

Voeg op regel 282 van wifi_component.h twee regels toe (het kan overal in de publieke sectie):

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

 protected:
  uint32_t connected_timestamp_{0};

Voeg in wifi_component.cpp op regel 518 net voor het "WiFi Connected" logbericht toe:

cpp
this->connected_timestamp_ = millis();

Test netwerk uptime

Compileer en upload de nieuwe firmware.

Nu, wanneer je het sysUpTime 1.3.6.1.2.1.1.3 object leest, zou je verschillende waarden moeten krijgen elke keer dat de get-operatie wordt uitgevoerd.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Je zou een waarde moeten zien die anders is dan 0.

Lijst van beschikbare OIDs

Om een volledige lijst van objecten te zien die door de ESPHome SNMP Component worden geleverd, zie OID lijst