장치상태확인(SNMP)


많은 WiFi 액세스 포인트와 WiFi 라우터는 SNMP(Simple Network Management Protocol)를 지원합니다. 네트워크 연결 장치를 모니터링/관리하는 표준화된 방법입니다. SNMP는 각 노드가 객체인 트리와 같은 계층을 사용합니다. 이러한 많은 개체에는 네트워크 인터페이스, 디스크 및 WiFi 등록과 같은 인스턴스(instances) 및 메트릭(metrics) 목록이 포함되어 있습니다.

현재 홈어시스턴트에는 다음 장치 유형이 지원됩니다.

이 장치 추적기는 라우터에서 SNMP를 활성화해야합니다. SNMP 지원을 수동으로 설치해야 할 수도 있습니다.

재실 감지

다음 OID 예제는 라우터에서 현재 MAC 주소 테이블을 가져옵니다. 이는 네트워크에서 본 모든 최근 장치를 반영합니다. 그러나 시간이 초과될 때까지 장치가 제거되지 않기 때문에 device tracker integration page에는 바람직하지 않습니다. 대신 Ping 혹은 Nmap를 사용하는 것이 좋습니다.

Brand Device/Firmware OID
Aerohive AP230 1.3.6.1.4.1.26928.1.1.1.2.1.2.1.1
Apple Airport Express (2nd gen.) 7.6.9 1.3.6.1.2.1.3.1.1.2 or 1.3.6.1.2.1.4.22.1.2
Aruba IAP325 on AOS 6.5.4.8 1.3.6.1.4.1.14823.2.3.3.1.2.4.1.1
BiPAC 7800DXL Firmware 2.32e 1.3.6.1.2.1.17.7.1.2.2.1.1
DD-WRT unknown version/model 1.3.6.1.2.1.4.22.1.2
Mikrotik unknown RouterOS version/model 1.3.6.1.4.1.14988.1.1.1.2.1.1
Mikrotik RouterOS 6.x on RB2011 1.3.6.1.2.1.4.22.1.2
OpenWrt Chaos Calmer 15.05 1.3.6.1.2.1.4.22.1.2
OPNSense 19.1 1.3.6.1.2.1.4.22.1.2
pfSense 2.2.4 1.3.6.1.2.1.4.22.1.2
Ruckus ZoneDirector 9.13.3 1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6
TP-Link Archer VR1600v 1.3.6.1.2.1.3.1.1.2.16.1
TP-Link Archer VR2600v 1.3.6.1.2.1.3.1.1.2.19.1
TP-Link Archer VR600 1.3.6.1.2.1.3.1.1.2
Ubiquiti Edgerouter Lite v1.9.0 1.3.6.1.2.1.4.22.1.2

설치시 SNMP 버전 1 또는 2c 플랫폼을 사용하려면 configuration.yaml 파일에 다음을 추가하십시오.

# Example configuration.yaml entry for SNMP version 1 or 2c
device_tracker:
  - platform: snmp
    host: 192.168.1.1
    community: public
    baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1

암호화를 사용하려면 auth_keypriv_key 변수를 추가하고 라우터에서 SNMP 버전 3을 활성화하여 SNMP 버전 3을 활성화해야합니다. 현재 인증에는 SHA1만, 암호화에는 AES만 지원됩니다. SNMPv3 구성의 예 :

# Example configuration.yaml entry for SNMP version 3
device_tracker:
  - platform: snmp
    host: 192.168.1.1
    community: USERNAME
    auth_key: AUTHPASS
    priv_key: PRIVPASS
    baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1

Configuration Variables

host

(string)(Required)

The IP address of the router, e.g., 192.168.1.1.

community

(string)(Required)

The SNMP community which is set for the device. Most devices have a default community set to public with read-only permission (which is sufficient).

baseoid

(string)(Required)

The OID prefix where wireless client registrations can be found, usually vendor specific. It’s advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device.

auth_key

(string)(Inclusive)

Authentication key for SNMPv3. Variable priv_key must also be set.

priv_key

(string)(Inclusive)

Privacy key SNMPv3. Variable auth_key must also be set.

추적할 사람을 설정하는 방법에 대한 지침은 device tracker integration page를 참조하십시오.

Sensor

snmp 센서 플랫폼은 Simple Network Management Protocol (SNMP)를 통해 사용 가능한 정보를 표시합니다. SNMP는 각 노드가 개체인 트리와 같은 계층을 사용하며 주로 라우터, 모뎀 및 프린터와 같은 네트워크 지향 장치에서 지원됩니다.

설치시 이 센서를 활성화하려면 configuration.yaml 파일에 다음을 추가하십시오.

# Example configuration.yaml entry
sensor:
  - platform: snmp
    host: 192.168.1.32
    baseoid: 1.3.6.1.4.1.2021.10.1.3.1

Configuration Variables

host

(string)(Optional)

The IP address of your host, e.g., 192.168.1.32.

Default value:

localhost

baseoid

(string)(Required)

The OID where the information is located. It’s advised to use the numerical notation.

port

(string)(Optional)

The SNMP port of your host.

Default value:

161

community

(string)(Optional)

The SNMP community which is set for the device for SNMP v1 and v2c. Most devices have a default community set to public with read-only permission (which is sufficient).

Default value:

public

username

(string)(Optional)

Username to use for authentication.

auth_key

(string)(Optional)

Authentication key to use for SNMP v3.

Default value:

no key

auth_protocol

(string)(Optional)

Authentication protocol to use for SNMP v3.

Default value:

none

priv_key

(string)(Optional)

Privacy key to use for SNMP v3.

Default value:

no key

priv_protocol

(string)(Optional)

Privacy protocol to use for SNMP v3.

Default value:

none

version

(string)(Optional)

Version of SNMP protocol, 1, 2c or 3. Version 2c or higher is needed to read data from 64-bit counters.

Default value:

1

name

(string)(Optional)

Name of the SNMP sensor.

unit_of_measurement

(string)(Optional)

Defines the unit of measurement of the sensor, if any.

value_template

(template)(Optional)

Defines a template to parse the value.

accept_errors

(string)(Optional)

Determines whether the sensor should start and keep working even if the SNMP host is unreachable or not responding. This allows the sensor to be initialized properly even if, for example, your printer is not on when you start Home Assistant.

Default value:

false

default_value

(string)(Optional)

Determines what value the sensor should take if accept_errors is set and the host is unreachable or not responding. If not set, the sensor will have value unknown in case of errors.

auth_protocol의 유효한 값 :

  • none
  • hmac-md5
  • hmac-sha
  • hmac128-sha224
  • hmac192-sha256
  • hmac256-sha384
  • hmac384-sha512

priv_protocol의 유효한 값 :

  • none
  • des
  • 3des-ede
  • aes-cfb-128
  • aes-cfb-192
  • aes-cfb-256

OIDs 찾기

OID는 공급 업체별로 다르므로 시스템마다 다를 수 있습니다. 설명서 외에도 OID Repository는 OID를 찾는 경우 시작하기에 좋은 장소입니다. 예를 들어, 다음 OID는 Linux 시스템로드를 위한 것입니다.

  • 1 minute Load: 1.3.6.1.4.1.2021.10.1.3.1
  • 5 minute Load: 1.3.6.1.4.1.2021.10.1.3.2
  • 15 minute Load: 1.3.6.1.4.1.2021.10.1.3.3

SNMP 작업에 사용할 수있는 많은 도구가 있습니다. snmpwalk를 사용하면 OID 값을 쉽게 검색할 수 있습니다.

$ snmpwalk -Os -c public -v 2c 192.168.1.32 1.3.6.1.4.1.2021.10.1.3.1
laLoad.1 = STRING: 0.19

사례

프린터 가동 시간

가장 일반적인 SNMP 표준에 따르면 장치의 가동 시간은 OID 1.3.6.1.2.1.1.3.0에서 액세스할 수 있습니다. 이 값은 TimeTicks라는 형식을 사용하여 100 분의 1 초 단위로 나타냅니다.

프린터 가동 시간을 분 단위로 표시하는 센서를 만들려면 다음 설정을 사용할 수 있습니다.

# Example configuration.yaml entry
sensor:
  - platform: snmp
    name: 'Printer uptime'
    host: 192.168.2.21
    baseoid: 1.3.6.1.2.1.1.3.0
    accept_errors: true
    unit_of_measurement: 'minutes'
    value_template: '{{((value | int) / 6000) | int}}'

accept_errors 옵션은 홈어시스턴트가 처음 시작될 때 프린터가 켜져 있지 않아도 센서가 작동할 수 있도록합니다. 센서는 분 단위 대신 - 만 표시합니다.

value_template 옵션은 원래 값을 분으로 변환합니다.

Switch

snmp 스위치 플랫폼을 사용하면 SNMP 가능 장비를 제어할 수 있습니다.

현재 정수값을 허용하는 SNMP OID 만 지원됩니다. SNMP v1, v2c 및 v3이 지원됩니다.

SNMP 스위치를 사용하려면

# Example configuration.yaml entry:
switch:
  - platform: snmp
    host: 192.168.0.2
    baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0

Configuration Variables

baseoid

(string)(Required)

The SNMP BaseOID which to poll for the state of the switch.

command_oid

(string)(Optional)

The SNMP OID which to set in order to turn the switch on and off, if different from baseoid.

host

(string)(Optional)

The IP/host which to control.

Default value:

localhost

port

(string)(Optional)

The port on which to communicate.

Default value:

161

community

(string)(Optional)

community string to use for authentication (SNMP v1 and v2c).

Default value:

private

username

(string)(Optional)

Username to use for authentication.

auth_key

(string)(Optional)

Authentication key to use for SNMP v3.

Default value:

no key

auth_protocol

(string)(Optional)

Authentication protocol to use for SNMP v3.

Default value:

none

priv_key

(string)(Optional)

Privacy key to use for SNMP v3.

Default value:

no key

priv_protocol

(string)(Optional)

Privacy protocol to use for SNMP v3.

Default value:

none

version

(string)(Optional)

SNMP version to use - either 1, 2c or 3.

Default value:

1

payload_on

(string)(Optional)

What return value represents an On state for the switch. The same value is used in writes to turn on the switch if command_payload_on is not set.

Default value:

1

payload_off

(string)(Optional)

What return value represents an Off state for the switch. The same value is used in writes to turn off the switch if command_payload_off is not set.

Default value:

0

command_payload_on

(string)(Optional)

The value to write to turn on the switch, if different from payload_on.

command_payload_off

(string)(Optional)

The value to write to turn off the switch, if different from payload_off.

올바른 BaseOID와 스위치를 켜고 끄는 값은 장치 공급 업체에 문의하십시오.

auth_protocol의 유효한 값 :

  • none
  • hmac-md5
  • hmac-sha
  • hmac128-sha224
  • hmac192-sha256
  • hmac256-sha384
  • hmac384-sha512

priv_protocol의 유효한 값 :

  • none
  • des
  • 3des-ede
  • aes-cfb-128
  • aes-cfb-192
  • aes-cfb-256

완전한 예 :

switch:
  - platform: snmp
    name: SNMP v1 switch
    host: 192.168.0.2
    community: private
    baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
    payload_on: 1
    payload_off: 0

  - platform: snmp
    name: SNMP v3 switch
    host: 192.168.0.3
    version: '3'
    username: 'myusername'
    auth_key: 'myauthkey'
    auth_protocol: 'hmac-sha'
    priv_key: 'myprivkey'
    priv_protocol: 'aes-cfb-128'
    baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
    payload_on: 1
    payload_off: 0