feat(plant): drive (drivetemp) + GPU (nouveau, jetson zone) temps [#736]
12 new two-layer sensors: 10 drive temps across tsys1/4/5/9 (server disks behind PERC remain a documented gap), tsys3 Quadro via nouveau hwmon, jetson GPU-therm zone. Alert triggers: drives 140F (drive ratings), GPUs 185F. Dashboard sections extended.
This commit is contained in:
@@ -380,6 +380,154 @@ sensor:
|
||||
{% 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 }}
|
||||
|
||||
- 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)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
|
||||
@@ -648,3 +796,87 @@ template:
|
||||
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 }}
|
||||
|
||||
Reference in New Issue
Block a user