Files
KNELBMS/packages/plant_snmp.yaml
T
mrcharles d93f9c0264 fix(snmp): document + restart after silent tsys9 drive poller wedge [#344]
12h stale despite healthy OID; registry cycle can't revive legacy
snmp pollers - core restart required.
https://projects.knownelement.com/issues/344
2026-09-04 06:00:04 -05:00

887 lines
35 KiB
YAML

sensor:
# ARCHITECTURE (2026-09-02, HA 2026.8) — two layers, do not re-merge:
# RAW layer (platform snmp, below): transport only. NO unit_of_measurement
# and NO device_class — HA 2026.8 raises ValueError at entity ADD when a
# unit-bearing sensor's native_value is non-numeric (host down/asleep at
# boot renders '' or the literal string 'unknown'; even {{ none }} is
# stringified to 'None'). Unit-bearing adds CRASH and the entity vanishes.
# SEMANTIC layer (template: below): carries unit + device_class under the
# ORIGINAL unique_ids (registry keeps the original entity_ids so dashboards
# and automations are unaffected). Template platform degrades to unknown
# gracefully. value must never render empty — guard with is_number().
# --- RAW SNMP transport (lm-sensors / drac / pdu extends) ---
- platform: snmp
name: "PFV artroom temperature raw"
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
unique_id: pfv_artroom_temperature_raw
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 if c is not none }}
- platform: snmp
name: "PFV garage temperature raw"
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
unique_id: pfv_garage_temperature_raw
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 if c is not none }}
- platform: snmp
name: "PFV tsys1 rack temperature raw"
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
unique_id: pfv_tsys1_rack_temperature_raw
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 if c is not none }}
- platform: snmp
name: "PFV tsys3 CPU temperature raw"
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
unique_id: pfv_tsys3_cpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 ambient temperature raw"
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
unique_id: pfv_tsys4_ambient_temperature_raw
value_template: >-
{% set m = value | regex_findall('Ambient:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 ambient temperature raw"
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
unique_id: pfv_tsys5_ambient_temperature_raw
value_template: >-
{% set m = value | regex_findall('Ambient:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys6 CPU temperature raw"
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
unique_id: pfv_tsys6_cpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('Core 0:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys6 node power raw"
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
unique_id: pfv_tsys6_node_power_raw
value_template: >-
{% set m = value | regex_findall('power1:\s*(\d+\.?\d*)\s*W') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys7 CPU temperature raw"
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
unique_id: pfv_tsys7_cpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys7 node power raw"
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
unique_id: pfv_tsys7_node_power_raw
value_template: >-
{% set m = value | regex_findall('power1:\s*(\d+\.?\d*)\s*W') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys9 CPU temperature raw"
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
unique_id: pfv_tsys9_cpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('Package id 0:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV jetson temperature raw"
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
unique_id: pfv_jetson_temperature_raw
value_template: >-
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV svrpi temperature raw"
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
unique_id: pfv_svrpi_temperature_raw
value_template: >-
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV subopi3 temperature raw"
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
unique_id: pfv_subopi3_temperature_raw
value_template: >-
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV subopi-dev-3 temperature raw"
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
unique_id: pfv_subopi_dev_3_temperature_raw
value_template: >-
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV subopi-dev-4 temperature raw"
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
unique_id: pfv_subopi_dev_4_temperature_raw
value_template: >-
{% set m = value | regex_findall('temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys6 DRAC ambient raw"
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
unique_id: pfv_tsys6_drac_ambient_raw
value_template: >-
{% set m = value | regex_findall('ambient_temp (\d+)') %}
{{ m[0] | float if m | length > 0 }}
- platform: snmp
name: "PFV tsys7 DRAC inlet raw"
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
unique_id: pfv_tsys7_drac_inlet_raw
value_template: >-
{% set m = value | regex_findall('inlet_temp (\d+)') %}
{{ m[0] | float if m | length > 0 }}
- platform: snmp
name: "PFV tsys7 DRAC exhaust raw"
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
unique_id: pfv_tsys7_drac_exhaust_raw
value_template: >-
{% set m = value | regex_findall('exhaust_temp (\d+)') %}
{{ m[0] | float if m | length > 0 }}
- platform: snmp
name: "PFV tsys7 DRAC CPU1 raw"
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
unique_id: pfv_tsys7_drac_cpu1_raw
value_template: >-
{% set t = value | regex_findall('(?:^|\n)temp (\d+)') %}
{{ t[0] | float if t | length > 0 }}
- platform: snmp
name: "PFV tsys7 DRAC CPU2 raw"
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
unique_id: pfv_tsys7_drac_cpu2_raw
value_template: >-
{% set t = value | regex_findall('(?:^|\n)temp (\d+)') %}
{{ t[1] | float if t | length > 1 }}
- platform: snmp
name: "PFV garage PDU output current raw"
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
unique_id: pfv_garage_pdu_amps_raw
value_template: >-
{% set m = value | regex_findall('output_amps ([0-9.]+)') %}
{{ m[0] | float if m | length > 0 }}
# --- Storage / memory / chipset temps (already in lm-sensors output) ---
# DIMM patterns anchor to the jc42 i2c address — a bare 'temp1:' regex
# would match the wrong chip (each host has several temp1 lines). The jc42
# ALARM flags are a limits-read artifact (limits read as 0.0C); values are good.
- platform: snmp
name: "PFV tsys3 NVMe temperature raw"
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
unique_id: pfv_tsys3_nvme_temperature_raw
value_template: >-
{% set m = value | regex_findall('Composite:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys3 PCH temperature raw"
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
unique_id: pfv_tsys3_pch_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)pch_skylake.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 DIMM 18 temperature raw"
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
unique_id: pfv_tsys4_dimm_18_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)jc42-i2c-0-18.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 DIMM 19 temperature raw"
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
unique_id: pfv_tsys4_dimm_19_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)jc42-i2c-0-19.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 DIMM 1a temperature raw"
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
unique_id: pfv_tsys4_dimm_1a_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)jc42-i2c-0-1a.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 DIMM 1b temperature raw"
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
unique_id: pfv_tsys4_dimm_1b_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)jc42-i2c-0-1b.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 NVMe temperature raw"
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
unique_id: pfv_tsys5_nvme_temperature_raw
value_template: >-
{% set m = value | regex_findall('Composite:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys9 PCH temperature raw"
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
unique_id: pfv_tsys9_pch_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)pch_cometlake.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
# --- Drive temps (drivetemp) + GPU temps [#736] ---
# Drive chips are drivetemp-scsi-<host>-<id>; the trailing \n anchor keeps
# scsi-1-0 from matching scsi-1-10. Server disks behind PERC are NOT
# OS-visible (storcli gap, documented in #736).
- platform: snmp
name: "PFV tsys1 drive temperature raw"
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
unique_id: pfv_tsys1_drive_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-1-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 drive 0-0 temperature raw"
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
unique_id: pfv_tsys4_drive_0_0_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-0-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 drive 0-10 temperature raw"
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
unique_id: pfv_tsys4_drive_0_10_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-0-10\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 drive 1-0 temperature raw"
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
unique_id: pfv_tsys4_drive_1_0_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-1-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys4 drive 1-10 temperature raw"
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
unique_id: pfv_tsys4_drive_1_10_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-1-10\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 drive 1-0 temperature raw"
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
unique_id: pfv_tsys5_drive_1_0_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-1-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 drive 4-10 temperature raw"
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
unique_id: pfv_tsys5_drive_4_10_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-4-10\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 drive 4-20 temperature raw"
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
unique_id: pfv_tsys5_drive_4_20_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-4-20\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys5 drive 4-30 temperature raw"
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
unique_id: pfv_tsys5_drive_4_30_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-4-30\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
# Legacy snmp platform pollers can WEDGE SILENTLY (no errors logged, the
# poller just stops — tsys9 drive went 12h stale 2026-09-04 while sibling
# pollers on the same OID kept working). Registry disable/enable does NOT
# recreate the poller; a core restart (packages/** pipeline) is required.
- platform: snmp
name: "PFV tsys9 drive temperature raw"
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
unique_id: pfv_tsys9_drive_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)drivetemp-scsi-0-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV tsys3 GPU temperature raw"
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
unique_id: pfv_tsys3_gpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)(?:nvidia|nouveau).*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
- platform: snmp
name: "PFV jetson GPU temperature raw"
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
unique_id: pfv_jetson_gpu_temperature_raw
value_template: >-
{% set m = value | regex_findall('(?s)zone-GPU-therm-virtual-0\n.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
{{ m | first | float if m }}
# --- Garage PDU energy (kWh) integrated from watts [#344] ---
- 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
# --- 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
template:
- sensor:
- name: "PFV artroom temperature"
unique_id: pfv_artroom_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_artroom_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV garage temperature"
unique_id: pfv_garage_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_garage_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys1 rack temperature"
unique_id: pfv_tsys1_rack_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys1_rack_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys3 CPU temperature"
unique_id: pfv_tsys3_cpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys3_cpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 ambient temperature"
unique_id: pfv_tsys4_ambient_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_ambient_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 ambient temperature"
unique_id: pfv_tsys5_ambient_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_ambient_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys6 CPU temperature"
unique_id: pfv_tsys6_cpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys6_cpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys6 node power"
unique_id: pfv_tsys6_node_power
device_class: power
unit_of_measurement: "W"
state: >-
{% set v = states('sensor.pfv_tsys6_node_power_raw') %}
{{ v | float | round(1) if is_number(v) else none }}
- name: "PFV tsys7 CPU temperature"
unique_id: pfv_tsys7_cpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys7_cpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys7 node power"
unique_id: pfv_tsys7_node_power
device_class: power
unit_of_measurement: "W"
state: >-
{% set v = states('sensor.pfv_tsys7_node_power_raw') %}
{{ v | float | round(1) if is_number(v) else none }}
- name: "PFV tsys9 CPU temperature"
unique_id: pfv_tsys9_cpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys9_cpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV jetson temperature"
unique_id: pfv_jetson_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_jetson_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV svrpi temperature"
unique_id: pfv_svrpi_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_svrpi_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV subopi3 temperature"
unique_id: pfv_subopi3_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_subopi3_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV subopi-dev-3 temperature"
unique_id: pfv_subopi_dev_3_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_subopi_dev_3_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV subopi-dev-4 temperature"
unique_id: pfv_subopi_dev_4_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_subopi_dev_4_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys6 DRAC ambient"
unique_id: pfv_tsys6_drac_ambient
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys6_drac_ambient_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys7 DRAC inlet"
unique_id: pfv_tsys7_drac_inlet
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys7_drac_inlet_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys7 DRAC exhaust"
unique_id: pfv_tsys7_drac_exhaust
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys7_drac_exhaust_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys7 DRAC CPU1"
unique_id: pfv_tsys7_drac_cpu1
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys7_drac_cpu1_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys7 DRAC CPU2"
unique_id: pfv_tsys7_drac_cpu2
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys7_drac_cpu2_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV garage PDU output current"
unique_id: pfv_garage_pdu_amps
device_class: current
unit_of_measurement: "A"
state: >-
{% set v = states('sensor.pfv_garage_pdu_output_current_raw') %}
{{ v | float | round(1) if is_number(v) else none }}
- 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 }}
- name: "PFV tsys3 NVMe temperature"
unique_id: pfv_tsys3_nvme_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys3_nvme_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys3 PCH temperature"
unique_id: pfv_tsys3_pch_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys3_pch_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 DIMM 18 temperature"
unique_id: pfv_tsys4_dimm_18_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_dimm_18_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 DIMM 19 temperature"
unique_id: pfv_tsys4_dimm_19_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_dimm_19_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 DIMM 1a temperature"
unique_id: pfv_tsys4_dimm_1a_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_dimm_1a_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 DIMM 1b temperature"
unique_id: pfv_tsys4_dimm_1b_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_dimm_1b_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 NVMe temperature"
unique_id: pfv_tsys5_nvme_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_nvme_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys9 PCH temperature"
unique_id: pfv_tsys9_pch_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys9_pch_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV UPS runtime minutes"
unique_id: pfv_ups_runtime_minutes
device_class: duration
unit_of_measurement: "min"
state: >-
{% set v = states('sensor.tsys1_ups_battery_runtime') %}
{{ (v | float / 60) | round(0) if is_number(v) else none }}
- name: "PFV tsys1 drive temperature"
unique_id: pfv_tsys1_drive_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys1_drive_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 drive 0-0 temperature"
unique_id: pfv_tsys4_drive_0_0_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_drive_0_0_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 drive 0-10 temperature"
unique_id: pfv_tsys4_drive_0_10_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_drive_0_10_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 drive 1-0 temperature"
unique_id: pfv_tsys4_drive_1_0_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_drive_1_0_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys4 drive 1-10 temperature"
unique_id: pfv_tsys4_drive_1_10_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys4_drive_1_10_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 drive 1-0 temperature"
unique_id: pfv_tsys5_drive_1_0_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_drive_1_0_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 drive 4-10 temperature"
unique_id: pfv_tsys5_drive_4_10_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_drive_4_10_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 drive 4-20 temperature"
unique_id: pfv_tsys5_drive_4_20_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_drive_4_20_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys5 drive 4-30 temperature"
unique_id: pfv_tsys5_drive_4_30_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys5_drive_4_30_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys9 drive temperature"
unique_id: pfv_tsys9_drive_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys9_drive_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV tsys3 GPU temperature"
unique_id: pfv_tsys3_gpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_tsys3_gpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}
- name: "PFV jetson GPU temperature"
unique_id: pfv_jetson_gpu_temperature
device_class: temperature
unit_of_measurement: "°F"
state: >-
{% set v = states('sensor.pfv_jetson_gpu_temperature_raw') %}
{{ ((v | float * 9 / 5) + 32) | round(1) if is_number(v) else none }}