374 lines
14 KiB
YAML
374 lines
14 KiB
YAML
sensor:
|
|
# NOTE (2026-09-02, HA 2026.8): NO device_class on snmp platform sensors.
|
|
# HA 2026.8 hard-fails entity ADD when a device_classed sensor's first
|
|
# render is empty (host down/asleep at boot) — ValueError int('') drops
|
|
# the entity until manual reload. unit_of_measurement alone keeps °F/W/A
|
|
# display; numeric_state triggers and dashboards do not need device_class.
|
|
# --- TEMPer USB probe hosts (External probe, Internal fallback) ---
|
|
- platform: snmp
|
|
name: "PFV artroom temperature"
|
|
host: stlpc-artroom.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
default_value: "-999"
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_artroom_temperature
|
|
value_template: >-
|
|
{% set ext = value | regex_findall('External:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set int = value | regex_findall('Internal:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set c = (ext | first) if ext else ((int | first) if int else none) %}
|
|
{{ ((c | float * 9 / 5) + 32) | round(1) if c is not none else none }}
|
|
|
|
- platform: snmp
|
|
name: "PFV garage temperature"
|
|
host: stlpc-garage.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
default_value: "-999"
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_garage_temperature
|
|
value_template: >-
|
|
{% set ext = value | regex_findall('External:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set int = value | regex_findall('Internal:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set c = (ext | first) if ext else ((int | first) if int else none) %}
|
|
{{ ((c | float * 9 / 5) + 32) | round(1) if c is not none else none }}
|
|
|
|
- platform: snmp
|
|
name: "PFV tsys1 rack temperature"
|
|
host: pfv-tsys1.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys1_rack_temperature
|
|
value_template: >-
|
|
{% set ext = value | regex_findall('External:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set int = value | regex_findall('Internal:\s*\+?(-?\d+\.?\d*)') %}
|
|
{% set c = (ext | first) if ext else ((int | first) if int else none) %}
|
|
{{ ((c | float * 9 / 5) + 32) | round(1) if c is not none else none }}
|
|
|
|
# --- Native lm-sensors hosts (label picked per host ground truth 2026-08-27) ---
|
|
# tsys3 Precision 7510: CPU package
|
|
- platform: snmp
|
|
name: "PFV tsys3 CPU temperature"
|
|
host: pfv-tsys3.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys3_cpu_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# tsys4 Precision T1700: Dell SMM ambient (board inlet)
|
|
- platform: snmp
|
|
name: "PFV tsys4 ambient temperature"
|
|
host: pfv-tsys4.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys4_ambient_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Ambient:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# tsys5 Precision T7500: Dell SMM ambient (board inlet)
|
|
- platform: snmp
|
|
name: "PFV tsys5 ambient temperature"
|
|
host: pfv-tsys5.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys5_ambient_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Ambient:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# tsys6 PowerEdge R610: socket-0 core temp (no Package label on Westmere)
|
|
- platform: snmp
|
|
name: "PFV tsys6 CPU temperature"
|
|
host: pfv-tsys6.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys6_cpu_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Core 0:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# tsys6 ACPI power meter (node draw, watts)
|
|
- platform: snmp
|
|
name: "PFV tsys6 node power"
|
|
host: pfv-tsys6.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "W"
|
|
unique_id: pfv_tsys6_node_power
|
|
value_template: >-
|
|
{% set m = value | regex_findall('power1:\s*(\d+\.?\d*)\s*W') %}
|
|
{{ m | first | float if m }}
|
|
|
|
# tsys7 PowerEdge R620: package temp
|
|
- platform: snmp
|
|
name: "PFV tsys7 CPU temperature"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys7_cpu_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# tsys7 ACPI power meter (node draw, watts)
|
|
- platform: snmp
|
|
name: "PFV tsys7 node power"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "W"
|
|
unique_id: pfv_tsys7_node_power
|
|
value_template: >-
|
|
{% set m = value | regex_findall('power1:\s*(\d+\.?\d*)\s*W') %}
|
|
{{ m | first | float if m }}
|
|
|
|
# tsys9 OptiPlex 7080: package temp
|
|
- platform: snmp
|
|
name: "PFV tsys9 CPU temperature"
|
|
host: pfv-tsys9.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys9_cpu_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
# --- SBC fleet (sysfs thermal fallback in lmsensors-extend v2; temp1 = zone0/SoC) ---
|
|
- platform: snmp
|
|
name: "PFV jetson temperature"
|
|
host: pfv-jetson-nano-1.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_jetson_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
- platform: snmp
|
|
name: "PFV svrpi temperature"
|
|
host: pfvsvrpi.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_svrpi_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
- platform: snmp
|
|
name: "PFV subopi3 temperature"
|
|
host: subopi3.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
default_value: "-999"
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_subopi3_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m else none }}
|
|
|
|
- platform: snmp
|
|
name: "PFV subopi-dev-3 temperature"
|
|
host: subopi-dev-3.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_subopi_dev_3_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
- platform: snmp
|
|
name: "PFV subopi-dev-4 temperature"
|
|
host: subopi-dev-4.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.108.109.115.101.110.115.111.114.115
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_subopi_dev_4_temperature
|
|
value_template: >-
|
|
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
|
|
{{ ((m | first | float * 9 / 5) + 32) | round(1) if m }}
|
|
|
|
|
|
# --- iDRAC IPMI temps via drac-extend (SNMP MIB tables empty on this hw gen) [#625] ---
|
|
# Deployed 2026-09-02: /usr/local/bin/drac-extend + snmpd "drac" extend on tsys6/tsys7.
|
|
- platform: snmp
|
|
name: "PFV tsys6 DRAC ambient"
|
|
host: pfv-tsys6.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.4.100.114.97.99
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys6_drac_ambient
|
|
value_template: >-
|
|
{% set m = value | regex_findall('ambient_temp (\d+)') %}
|
|
{{ ((m[0] | float * 9 / 5) + 32) | round(1) if m | length > 0 }}
|
|
|
|
- platform: snmp
|
|
name: "PFV tsys7 DRAC inlet"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.4.100.114.97.99
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys7_drac_inlet
|
|
value_template: >-
|
|
{% set m = value | regex_findall('inlet_temp (\d+)') %}
|
|
{{ ((m[0] | float * 9 / 5) + 32) | round(1) if m | length > 0 }}
|
|
|
|
- platform: snmp
|
|
name: "PFV tsys7 DRAC exhaust"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.4.100.114.97.99
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys7_drac_exhaust
|
|
value_template: >-
|
|
{% set m = value | regex_findall('exhaust_temp (\d+)') %}
|
|
{{ ((m[0] | float * 9 / 5) + 32) | round(1) if m | length > 0 }}
|
|
|
|
- platform: snmp
|
|
name: "PFV tsys7 DRAC CPU1"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.4.100.114.97.99
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys7_drac_cpu1
|
|
value_template: >-
|
|
{% set t = value | regex_findall('(?:^|\n)temp (\d+)') %}
|
|
{{ ((t[0] | float * 9 / 5) + 32) | round(1) if t | length > 0 }}
|
|
|
|
- platform: snmp
|
|
name: "PFV tsys7 DRAC CPU2"
|
|
host: pfv-tsys7.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.4.100.114.97.99
|
|
accept_errors: true
|
|
unit_of_measurement: "°F"
|
|
unique_id: pfv_tsys7_drac_cpu2
|
|
value_template: >-
|
|
{% set t = value | regex_findall('(?:^|\n)temp (\d+)') %}
|
|
{{ ((t[1] | float * 9 / 5) + 32) | round(1) if t | length > 1 }}
|
|
|
|
# --- Garage PDU (APC AP7830 metered) via tsys-librenms relay [#344] ---
|
|
# Relay: old PDU speaks SNMPv1 only; tsys-librenms is the sanctioned vantage
|
|
# (dcinfra/sensors/pdu/garage-pdu-relay.sh in PFVCluster).
|
|
- platform: snmp
|
|
name: "PFV garage PDU output current"
|
|
host: tsys-librenms.knel.net
|
|
version: 2c
|
|
community: kn3lmgmt
|
|
baseoid: .1.3.6.1.4.1.8072.1.3.2.3.1.2.9.103.97.114.97.103.101.112.100.117
|
|
accept_errors: true
|
|
unit_of_measurement: "A"
|
|
unique_id: pfv_garage_pdu_amps
|
|
value_template: >-
|
|
{% set m = value | regex_findall('output_amps ([0-9.]+)') %}
|
|
{{ m[0] if m | length > 0 }}
|
|
|
|
# --- Garage PDU energy (kWh) integrated from watts [#344] ---
|
|
# NOTE: lives in THIS sensor: block on purpose — a second top-level
|
|
# "sensor:" key anywhere in a package shadows the whole first block
|
|
# (YAML duplicate keys are last-one-wins) and silently kills every
|
|
# SNMP sensor at next HA restart. Never append a second sensor: key.
|
|
- platform: integration
|
|
source: sensor.pfv_garage_pdu_power
|
|
name: pfv garage PDU energy
|
|
round: 2
|
|
unit_prefix: k
|
|
unit_time: h
|
|
method: left
|
|
unique_id: pfv_garage_pdu_energy
|
|
|
|
template:
|
|
- sensor:
|
|
- name: "PFV garage PDU power"
|
|
unique_id: pfv_garage_pdu_watts
|
|
device_class: power
|
|
unit_of_measurement: "W"
|
|
state: >-
|
|
{% set a = states('sensor.pfv_garage_pdu_output_current') | float(-1) %}
|
|
{{ (a * 120) | round(0) if a >= 0 }}
|
|
|
|
# --- Rate-of-change early warning (#682): +10°F/15min = AC trouble [#344] ---
|
|
binary_sensor:
|
|
- platform: trend
|
|
sensors:
|
|
server_room_temp_rising:
|
|
entity_id: sensor.pfv_tsys1_rack_temperature
|
|
sample_duration: 900
|
|
min_gradient: 0.011
|
|
unique_id: trend_server_room_rising
|
|
tsys6_ambient_rising:
|
|
entity_id: sensor.pfv_tsys6_drac_ambient
|
|
sample_duration: 900
|
|
min_gradient: 0.011
|
|
unique_id: trend_tsys6_ambient_rising
|
|
tsys7_inlet_rising:
|
|
entity_id: sensor.pfv_tsys7_drac_inlet
|
|
sample_duration: 900
|
|
min_gradient: 0.011
|
|
unique_id: trend_tsys7_inlet_rising
|
|
garage_temp_rising:
|
|
entity_id: sensor.pfv_garage_temperature
|
|
sample_duration: 900
|
|
min_gradient: 0.011
|
|
unique_id: trend_garage_rising
|
|
|
|
utility_meter:
|
|
garage_pdu_daily:
|
|
source: sensor.pfv_garage_pdu_energy
|
|
name: Garage PDU daily energy
|
|
unique_id: garage_pdu_daily_energy
|
|
cycle: daily
|