SNMP
许多Wi-Fi接入点和Wi-Fi路由器支持简单网络管理协议(SNMP)。这是监控/管理网络连接设备的标准化方法。SNMP使用树状层级结构,其中每个节点都是一个对象。这些对象中的许多包含(实时)实例和指标的列表,例如网络接口、磁盘和Wi-Fi注册。
目前Home Assistant支持以下设备类型:
此设备跟踪器需要在路由器上启用SNMP。您可能需要手动安装SNMP支持。
存在检测
以下OID示例从路由器提取当前MAC地址表。这反映了最近在网络上看到的所有设备。然而,由于设备在超时之前不会被移除,因此对于设备跟踪器集成页面来说,这种方法的效果不如预期。建议使用Ping或Nmap。
品牌 | 设备/固件 | OID |
---|---|---|
Aerohive | AP230 | 1.3.6.1.4.1.26928.1.1.1.2.1.2.1.1 |
Apple | Airport Express (第二代) 7.6.9 |
1.3.6.1.2.1.3.1.1.2 或 1.3.6.1.2.1.4.22.1.2
|
Aruba | IAP325在AOS 6.5.4.8上 | 1.3.6.1.4.1.14823.2.3.3.1.2.4.1.1 |
BiPAC | 7800DXL固件2.32e | 1.3.6.1.2.1.17.7.1.2.2.1.1 |
DD-WRT | 未知版本/型号 | 1.3.6.1.2.1.4.22.1.2 |
IPFire | 2.25 | 1.3.6.1.2.1.4.22.1.2 |
MikroTik | 未知RouterOS版本/型号 | 1.3.6.1.4.1.14988.1.1.1.2.1.1 |
MikroTik | RouterOS 6.x在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
文件中:
# SNMP版本1或2c的configuration.yaml示例条目
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_key
和priv_key
变量并在路由器上启用SNMP版本3来启用它。目前仅支持SHA1用于身份验证和AES用于加密。SNMPv3配置示例:
# SNMP版本3的configuration.yaml示例条目
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
请参阅设备跟踪器集成页面以获取如何配置需要被跟踪的人的说明。
使用模板
对于传入数据,值模板将传入的 JSON 或原始数据转换为有效的有效负载。
传入的有效负载使用可能的 JSON 值进行渲染,因此在渲染时,可以使用 value_json
访问基于 JSON 的有效负载中的属性,否则可以使用 value
变量来处理非 JSON 基础的数据。
此外,this
可以作为模板中的变量使用。this
属性指的是实体的当前 实体状态。
关于 this
变量的更多信息可以在 模板文档 中找到。
带 json 的示例值模板:
给定有效负载:
{ "state": "ON", "temperature": 21.902 }
模板 {{ value_json.temperature | round(1) }}
渲染为 21.9
。
传感器
snmp
传感器平台显示通过简单网络管理协议(SNMP)
要在您的安装中启用此传感器,请将以下内容添加到您的configuration.yaml
文件中:
# configuration.yaml条目的示例
sensor:
- platform: snmp
host: 192.168.1.32
baseoid: 1.3.6.1.4.1.2021.10.1.3.1
Configuration Variables
决定传感器是否应该启动并保持工作,即使SNMP主机不可达或不响应。这允许传感器在启动Home Assistant时正确初始化,即使例如,您的打印机未开启。
为SNMP v1和v2c设置的设备SNMP社区。大多数设备的默认社区设置为public
,具有只读权限(这已足够)。
决定如果设置了accept_errors
并且主机不可达或不响应,传感器应采用什么值。如果未设置,传感器在错误情况下将具有值unknown
。
设置设备的类别,更改显示在前端的设备状态和图标。
定义SNMP传感器图标的模板。
定义SNMP传感器名称的模板。
定义SNMP传感器实体图像的模板。
传感器的state_class。
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
查找OID
OID可能在不同系统上有所不同,因为它们是供应商特定的。除了设备手册,OID仓库
- 1分钟负载:
1.3.6.1.4.1.2021.10.1.3.1
- 5分钟负载:
1.3.6.1.4.1.2021.10.1.3.2
- 15分钟负载:
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
的格式表示,以百分之一秒为单位。
要创建一个传感器,用于以分钟为单位显示打印机的正常运行时间,您可以使用以下配置:
# configuration.yaml条目的示例
sensor:
- platform: snmp
name: "打印机正常运行时间"
host: 192.168.2.21
baseoid: 1.3.6.1.2.1.1.3.0
accept_errors: true
unit_of_measurement: "分钟"
value_template: "{{((value | int) / 6000) | int}}"
accept_errors
选项将允许传感器在Home Assistant首次启动时即使打印机未开启也能正常工作:传感器将仅显示-
而不是分钟数。
value_template
选项将原始值转换为分钟。
开关
snmp
开关平台允许您控制支持SNMP的设备。
目前,仅支持接受整数值的SNMP OID。支持SNMP v1、v2c和v3。
要在您的安装中使用SNMP开关:
# configuration.yaml条目的示例:
switch:
- platform: snmp
host: 192.168.0.2
baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
Configuration Variables
根据RFC1902payload_on
和payload_off
命令的SNMP变量类型。
您应该与设备的供应商联系,以了解正确的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
vartype
的有效值:
- Counter32
- Counter64
- Gauge32
- Integer32
- Integer
- IpAddress
- ObjectIdentifier
- OctetString
- Opaque
- TimeTicks
- Unsigned32
完整示例:
switch:
- platform: snmp
name: SNMP v1开关
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开关
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
- platform: snmp
name: 使用SNMP v3启用Netgear交换机端口2的PoE
host: 192.168.0.4
version: "3"
username: "myusername"
auth_key: "myauthkey"
auth_protocol: "hmac-sha"
priv_key: "myprivkey"
priv_protocol: "des"
baseoid: 1.3.6.1.4.1.4526.11.15.1.1.1.1.1.2
payload_on: 15400
payload_off: 3000
vartype: Gauge32