1 Prehľad SNMP
PWX-12-4422 obsahuje vstavaného SNMP v2c agenta (lwIP stack) bežiaceho na komunikačnom module ESP32. Agent umožňuje monitorovacím systémom (NMS) čítať live dáta UPS a prijímať trap notifikácie o udalostiach — bez potreby cloudu, bez akéhokoľvek ďalšieho softvéru.
- Napätie a prúd na každom z 12 výstupov
- Stav relé výstupov (ZAP/VYP)
- Napätie batériového bloku a článkov
- AC vstupné napätie zo siete
- Teplota dosky (board + MCU)
- Uptime zariadenia
- Výpadok AC napájania (batéria → sieť)
- Obnova AC napájania
- Prekročenie prahu vstupného napätia
- Vysoká teplota (> prah)
- Zmena stavu výstupného portu
- Agent port: UDP 161
- Trap port: UDP 162 (cieľový server)
- Protokol: SNMPv2c
- Community string: konfigurovateľný
- Dosah: rovnaká LAN alebo VPN
- RFC 1628 (UPS-MIB) kompatibilný
1.3.6.1.4.1.62751 (PowerSentrix enterprise). Štandardný MIB-II system group (1.3.6.1.2.1.1) je tiež implementovaný — sysDescr, sysUpTime, sysContact, sysName, sysLocation. 2 Konfigurácia SNMP agenta
SNMP sa nastavuje cez vstavaný webový manažment UPS zariadenia. Otvorte prehliadač, zadajte IP adresu UPS a prejdite na Settings → SNMP.
Parametre SNMP nastavení
| Parameter | Predvolená hodnota | Popis |
|---|---|---|
snmpEnabled |
0 (vypnutý) |
Zapnutie/vypnutie SNMP agenta. Po zmene je potrebný reštart zariadenia. |
snmpSysName |
ESP32_Core_board_V2 |
Meno zariadenia (sysName OID). Odporúčame nastaviť na popis umiestnenia, napr. UPS-ServerRoom-A. |
snmpSysDescription |
simple_snmp_agent |
Popis zariadenia (sysDescr OID). Odporúčame: PowerSentrix PWX-12-4422. |
snmpContact |
yourmail@contact.com |
Kontaktná osoba/email pre sysContact OID. |
snmpSysLocation |
Your Institute or Company |
Fyzická poloha zariadenia (sysLocation OID). Napr. Rack A, Server Room 1, Building B. |
snmpServerAddress |
prázdny | IP adresa cieľového servera pre trap notifikácie (UDP port 162). Napr. 192.168.1.50. Ak je prázdny, traps sa neodosielajú. |
public pre čítanie (GET/WALK). Community string nie je konfigurovateľný cez Web Management — je napevno nastavený v firmvéri. Pre produkčné nasadenie odporúčame izolovať SNMP na management VLAN. 3 OID referencia
Kompletný zoznam SNMP objektov implementovaných v zariadení PWX-12-4422. RW = čítanie aj zápis (SET), RO = len čítanie (GET).
System Group — štandardný MIB-II
| OID | Objekt | Typ | R/W | Popis |
|---|---|---|---|---|
| 1.3.6.1.2.1.1.1.0 | sysDescr | OCTET STRING | RO | Popis zariadenia — konfigurovateľný cez snmpSysDescription |
| 1.3.6.1.2.1.1.3.0 | sysUpTime | TimeTicks | RO | Uptime v stotinách sekundy od posledného reštartu COM modulu |
| 1.3.6.1.2.1.1.4.0 | sysContact | OCTET STRING | RO | Kontaktná osoba — konfigurovateľná cez snmpContact |
| 1.3.6.1.2.1.1.5.0 | sysName | OCTET STRING | RO | Meno zariadenia — konfigurovateľné cez snmpSysName |
| 1.3.6.1.2.1.1.6.0 | sysLocation | OCTET STRING | RO | Fyzická poloha — konfigurovateľná cez snmpSysLocation |
Výstupné porty — Enterprise tabuľka
1.3.6.1.4.1.62751.1.1 — 12 riadkov (index 0–11), každý riadok = jeden DC výstupný port.Príklad snmpwalk:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1 | OID | Objekt | Typ | R/W | Popis / Jednotky |
|---|---|---|---|---|
| 1.3.6.1.4.1.62751.1.1.1.1.N | psxOutputIndex | Integer32 | RO | Index portu 0–11 (N = riadok tabuľky) |
| 1.3.6.1.4.1.62751.1.1.1.2.N | psxOutputDescription | OCTET STRING | RW | Používateľský popis portu (max. 128 znakov). Napr. "Router", "Switch A" |
| 1.3.6.1.4.1.62751.1.1.1.3.N | psxOutputVoltage | Integer32 | RO | Namerané napätie × 100 (napr. 4810 = 48.10 V) |
| 1.3.6.1.4.1.62751.1.1.1.4.N | psxOutputCurrent | Integer32 | RO | Nameraný prúd v mA (napr. 1500 = 1.500 A) |
| 1.3.6.1.4.1.62751.1.1.1.5.N | psxOutputStatus | INTEGER | RO | Stav relé: 1=ZAP (on), 2=VYP (off) |
Batéria
| OID | Objekt | Typ | R/W | Popis / Jednotky |
|---|---|---|---|---|
| 1.3.6.1.4.1.62751.1.4.1 | psxBatteryVoltage | Integer32 | RO | Napätie batériového bloku × 100 (napr. 5220 = 52.20 V) |
| 1.3.6.1.4.1.62751.1.4.2 | psxBatteryCount | Integer32 | RO | Počet batériových článkov nakonfigurovaných (predvolene 4) |
| 1.3.6.1.4.1.62751.1.4.3 | psxBatteryCapacity | Integer32 | RO | Kapacita batérie × 10 v Ah (napr. 90 = 9.0 Ah) |
| 1.3.6.1.4.1.62751.1.4.4 | psxBatteryStatus | INTEGER | RO | Stav batérie (RFC 1628): 2=normal, 3=low, 4=depleted, 5=discharging |
| 1.3.6.1.4.1.62751.1.4.5 | psxBatteryMainVoltage | Integer32 | RO | Vstupné napätie nabíjačky (sieťová strana LAD modulu) |
| 1.3.6.1.4.1.62751.1.4.6 | psxBatteryLoadVoltage | Integer32 | RO | Napätie 48 V zbernice (výstupná strana nabíjačky) |
| 1.3.6.1.2.1.33.1.4.1 | upsOutputSource | INTEGER | RO | RFC 1628 — zdroj napájania výstupov. Hodnota sa posiela aj v traps: 3=sieť, 5=batéria |
AC vstup
| OID | Objekt | Typ | R/W | Popis |
|---|---|---|---|---|
| 1.3.6.1.4.1.62751.1.5.1 | psxInputVoltage | Integer32 | RO | AC vstupné napätie zo siete × 100 (napr. 23000 = 230.00 V) |
| 1.3.6.1.4.1.62751.1.5.2 | psxInputSource | INTEGER | RO | Zdroj napájania výstupov (RFC 1628 konvencia): 3=sieť OK, 5=batéria |
| 1.3.6.1.2.1.33.1.3.3.1.3 | upsInputVoltage | Gauge32 | RO | RFC 1628 — vstupné napätie (referenced v traps) |
Teplota
| OID | Objekt | Typ | R/W | Popis |
|---|---|---|---|---|
| 1.3.6.1.4.1.62751.1.3.1 | psxBoardTemperature | Integer32 | RO | Teplota PCB dosky v °C. Prah alarmu konfigurovateľný v Web Management (predvolene 50 °C). |
| 1.3.6.1.4.1.62751.1.3.2 | psxMcuTemperature | Integer32 | RO | Interná teplota MCU (ESP32 die) v °C. |
4 Trap udalosti
Traps sú asynchrónne push notifikácie ktoré UPS odosiela na nakonfigurovaný server (UDP port 162) okamžite pri udalosti — bez čakania na poll zo strany NMS. Traps sa odosielajú ako SNMPv2c TRAP PDU (typ SNMP_GENTRAP_ENTERPRISE_SPECIFIC).
snmpServerAddress) a SNMP agent je zapnutý. Pri výpadku siete sa trap môže stratiť — SNMP traps nemajú potvrdenie doručenia (na rozdiel od Informu). | Trap OID | Udalosť | Varbinds | Závažnosť |
|---|---|---|---|
| 1.3.6.1.4.1.62751.2.0.1 | Zmena zdroja napájania Sieť → batéria alebo batéria → sieť |
upsOutputSource (Integer32)3=sieť, 5=batéria |
KRITICKÝ |
| 1.3.6.1.4.1.62751.2.0.2 | Prekročenie prahu AC napätia Vstupné napätie mimo normálneho rozsahu |
upsInputVoltage (Integer32) |
VAROVANIE |
| 1.3.6.1.4.1.62751.2.0.3 | Vysoká teplota Teplota dosky prekročila prah (predvolene 50 °C) |
psxBoardTemperature (Integer32, °C) |
VAROVANIE |
| 1.3.6.1.4.1.62751.2.0.4 | Zmena stavu výstupného portu Relé sa zaplo alebo vyplo (manuálne alebo ExtraAction) |
psxOutputIndex, psxOutputStatus |
INFO |
| 1.3.6.1.4.1.62751.2.0.5 | Generická udalosť Textová správa s číselnou hodnotou (diagnostika) |
Textový reťazec + číselná hodnota | INFO |
5 Príkazy — net-snmp
Príklady používajú nástroje net-snmp (Linux/macOS: apt install snmp, Windows: net-snmp installer). IP adresu UPS nahraďte skutočnou adresou zariadenia.
Základné GET požiadavky
snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.5.0
# Výstup:
SNMPv2-MIB::sysName.0 = STRING: UPS-ServerRoom-A
snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.3.0 SNMPv2-MIB::sysUpTime.0 = Timeticks: (123456789) 14 days, 6:53:27.89
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1.1.3.0
# Odpoveď: 4810 = 48.10 V
iso.3.6.1.4.1.62751.1.1.1.3.0 = INTEGER: 4810
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1.1.5.0
iso.3.6.1.4.1.62751.1.1.1.5.0 = INTEGER: 1 # 1=ZAP
Walk — prechádzanie celého stromu
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751
# Výstup obsahuje všetky výstupné porty, batériu, teploty...
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1 # Prikla výstupu: iso.3.6.1.4.1.62751.1.1.1.2.0 = STRING: "Router" iso.3.6.1.4.1.62751.1.1.1.2.1 = STRING: "Switch A" iso.3.6.1.4.1.62751.1.1.1.2.2 = STRING: "IP Camera 1" ... iso.3.6.1.4.1.62751.1.1.1.3.0 = INTEGER: 4810 iso.3.6.1.4.1.62751.1.1.1.3.1 = INTEGER: 4808 ...
snmpwalk -v2c -c public 192.168.1.100 system
# Vráti sysDescr, sysUpTime, sysContact, sysName, sysLocation
Zachytenie trap notifikácie (testovanie)
# Linux / macOS snmptrapd -f -Lo -c /etc/snmp/snmptrapd.conf # alebo jednoduché zachytenie bez konfigurácie: snmptrapd -f -Lo -On
6 Integrácia s NMS systémami
PWX-12-4422 je kompatibilný s každým NMS systémom ktorý podporuje SNMPv2c. Nižšie sú kroky pre najpopulárnejšie platformy.
Najrýchlejší spôsob je použiť SNMP template. MIB nahrať do Zabbix IDE.
- Configuration → Hosts → Add host
- Rozhranie: SNMP v2, Community:
public - Importovať MIB: Administration → General → Other → SNMP MIBs
- Itemy pridať manuálne alebo cez discovery rule (OID: 1.3.6.1.4.1.62751.1.1)
- Trap receiving: nastaviť
snmptrapda Zabbix SNMP trapper
PRTG má vstavaný SNMP scanner — zariadenie rozpozná automaticky.
- Add Device → zadajte IP UPS
- Add Sensor → SNMP Custom → OID table
- OID pre napätia:
1.3.6.1.4.1.62751.1.1.1.3.N - SNMP Trap sensor: Add Sensor → SNMP Trap Receiver
- MIB nahrať: Setup → MIB Database
LibreNMS automaticky objaví zariadenie ako Generic SNMP host. MIB súbor umožní lepšie popisky.
- Devices → Add device → zadajte IP, verzia v2c, community public
- MIB nahrať do
/usr/share/snmp/mibs/ - Vlastné OID v OID-based poller (YAML definícia)
- Traps: nastaviť
snmptrapd→ LibreNMS trap handler
Odporúčaná kombinácia pre vlastné dashboardy s históriou.
- Použiť Telegraf SNMP plugin na zber dát
- OID tabuľku definovať v
telegraf.conf - Dáta ukladať do InfluxDB, vizualizovať v Grafane
- Alerting cez Grafana Alertmanager
Telegraf konfigurácia (príklad)
# telegraf.conf — SNMP input plugin pre PWX-12-4422 [[inputs.snmp]] agents = ["udp://192.168.1.100:161"] version = 2 community = "public" [[inputs.snmp.field]] name = "uptime" oid = "1.3.6.1.2.1.1.3.0" [[inputs.snmp.field]] name = "board_temp" oid = "1.3.6.1.4.1.62751.1.3.1" [[inputs.snmp.table]] name = "psx_outputs" oid = "1.3.6.1.4.1.62751.1.1" [[inputs.snmp.table.field]] name = "description" oid = "1.3.6.1.4.1.62751.1.1.1.2" is_tag = true [[inputs.snmp.table.field]] name = "voltage" oid = "1.3.6.1.4.1.62751.1.1.1.3" [[inputs.snmp.table.field]] name = "current" oid = "1.3.6.1.4.1.62751.1.1.1.4" [[inputs.snmp.table.field]] name = "status" oid = "1.3.6.1.4.1.62751.1.1.1.5"
7 MIB súbor
Štandardizovaný MIB súbor vo formáte SMIv2 (RFC 2578). Definuje celý OID strom 1.3.6.1.4.1.62751, trap notifikácie a conformance groups. Kompatibilný s RFC 1628 (UPS-MIB) konvenciami.
Inštalácia MIB súboru
sudo cp POWERSENTRIX-UPS-MIB.mib /usr/share/snmp/mibs/ # Overenie — zoznam OIDov: snmptranslate -Pu -m POWERSENTRIX-UPS-MIB -IR psxOutputVoltage POWERSENTRIX-UPS-MIB::psxOutputVoltage # Walk s popiskami miesto číselných OIDov: snmpwalk -v2c -c public -m POWERSENTRIX-UPS-MIB 192.168.1.100 powerSentrix
# Nahranie cez GUI: Administration → General → Other → SNMP MIBs → Import # Alebo cez filesystem (Zabbix 6+): cp POWERSENTRIX-UPS-MIB.mib /usr/share/snmp/mibs/
Obsah MIB súboru — štruktúra OID stromu
enterprises.62751 (powerSentrix)
├── .1 psxObjects
│ ├── .1 psxOutputs
│ │ └── .1 psxOutputTable [INDEX: psxOutputIndex 0–11]
│ │ ├── .1.1.N psxOutputIndex — Integer32 (0–11)
│ │ ├── .1.2.N psxOutputDescription — DisplayString (RW)
│ │ ├── .1.3.N psxOutputVoltage — Integer32 (0.01 V)
│ │ ├── .1.4.N psxOutputCurrent — Integer32 (mA)
│ │ └── .1.5.N psxOutputStatus — on(1) | off(2)
│ ├── .2 psxSystem
│ │ ├── .1 psxSysUptime — TimeTicks
│ │ ├── .2 psxComFirmwareVersion — DisplayString
│ │ ├── .3 psxMainFirmwareVersion — DisplayString
│ │ ├── .4 psxSerialNumber — DisplayString
│ │ └── .5 psxModelName — DisplayString
│ ├── .3 psxTemperature
│ │ ├── .1 psxBoardTemperature — Integer32 (°C)
│ │ └── .2 psxMcuTemperature — Integer32 (°C)
│ ├── .4 psxBattery
│ │ ├── .1 psxBatteryVoltage — Integer32 (0.01 V)
│ │ ├── .2 psxBatteryCount — Integer32
│ │ ├── .3 psxBatteryCapacity — Integer32 (0.1 Ah)
│ │ ├── .4 psxBatteryStatus — ENUM (RFC 1628)
│ │ ├── .5 psxBatteryMainVoltage — Integer32 (0.01 V)
│ │ └── .6 psxBatteryLoadVoltage — Integer32 (0.01 V)
│ └── .5 psxInput
│ ├── .1 psxInputVoltage — Integer32 (0.01 V)
│ └── .2 psxInputSource — ENUM (RFC 1628)
├── .2 psxTraps
│ └── .0 psxTrapPrefix
│ ├── .1 psxPowerSourceChanged — NOTIFICATION
│ ├── .2 psxInputVoltageTrap — NOTIFICATION
│ ├── .3 psxHighTemperatureTrap — NOTIFICATION
│ ├── .4 psxOutputStateChanged — NOTIFICATION
│ └── .5 psxGenericEventTrap — NOTIFICATION
└── .3 psxConformance
├── .1 psxCompliances
└── .2 psxGroups