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:
@@ -119,6 +119,24 @@
|
|||||||
- sensor.pfv_tsys4_dimm_1a_temperature
|
- sensor.pfv_tsys4_dimm_1a_temperature
|
||||||
- sensor.pfv_tsys4_dimm_1b_temperature
|
- sensor.pfv_tsys4_dimm_1b_temperature
|
||||||
above: 140
|
above: 140
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id:
|
||||||
|
- sensor.pfv_tsys1_drive_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_0_0_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_0_10_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_1_0_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_1_10_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_1_0_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_10_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_20_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_30_temperature
|
||||||
|
- sensor.pfv_tsys9_drive_temperature
|
||||||
|
above: 140
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id:
|
||||||
|
- sensor.pfv_tsys3_gpu_temperature
|
||||||
|
- sensor.pfv_jetson_gpu_temperature
|
||||||
|
above: 185
|
||||||
- trigger: numeric_state
|
- trigger: numeric_state
|
||||||
entity_id:
|
entity_id:
|
||||||
- sensor.pfv_tsys3_pch_temperature
|
- sensor.pfv_tsys3_pch_temperature
|
||||||
|
|||||||
@@ -172,12 +172,14 @@ views:
|
|||||||
- sensor.pfv_subopi_dev_3_temperature
|
- sensor.pfv_subopi_dev_3_temperature
|
||||||
- sensor.pfv_subopi_dev_4_temperature
|
- sensor.pfv_subopi_dev_4_temperature
|
||||||
- sensor.pfv_jetson_temperature
|
- sensor.pfv_jetson_temperature
|
||||||
|
- sensor.pfv_jetson_gpu_temperature
|
||||||
- type: grid
|
- type: grid
|
||||||
cards:
|
cards:
|
||||||
- type: entities
|
- type: entities
|
||||||
title: R5 · Laptops
|
title: R5 · Laptops
|
||||||
entities:
|
entities:
|
||||||
- sensor.pfv_tsys3_cpu_temperature
|
- sensor.pfv_tsys3_cpu_temperature
|
||||||
|
- sensor.pfv_tsys3_gpu_temperature
|
||||||
- type: grid
|
- type: grid
|
||||||
cards:
|
cards:
|
||||||
- type: entities
|
- type: entities
|
||||||
@@ -192,7 +194,7 @@ views:
|
|||||||
- type: grid
|
- type: grid
|
||||||
cards:
|
cards:
|
||||||
- type: entities
|
- type: entities
|
||||||
title: Storage · Memory · Chipset
|
title: Storage · Memory · Chipset · GPU
|
||||||
entities:
|
entities:
|
||||||
- sensor.pfv_tsys3_nvme_temperature
|
- sensor.pfv_tsys3_nvme_temperature
|
||||||
- sensor.pfv_tsys5_nvme_temperature
|
- sensor.pfv_tsys5_nvme_temperature
|
||||||
@@ -202,6 +204,16 @@ views:
|
|||||||
- sensor.pfv_tsys4_dimm_1b_temperature
|
- sensor.pfv_tsys4_dimm_1b_temperature
|
||||||
- sensor.pfv_tsys3_pch_temperature
|
- sensor.pfv_tsys3_pch_temperature
|
||||||
- sensor.pfv_tsys9_pch_temperature
|
- sensor.pfv_tsys9_pch_temperature
|
||||||
|
- sensor.pfv_tsys1_drive_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_0_0_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_0_10_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_1_0_temperature
|
||||||
|
- sensor.pfv_tsys4_drive_1_10_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_1_0_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_10_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_20_temperature
|
||||||
|
- sensor.pfv_tsys5_drive_4_30_temperature
|
||||||
|
- sensor.pfv_tsys9_drive_temperature
|
||||||
- type: grid
|
- type: grid
|
||||||
cards:
|
cards:
|
||||||
- type: history-graph
|
- type: history-graph
|
||||||
|
|||||||
@@ -380,6 +380,154 @@ sensor:
|
|||||||
{% set m = value | regex_findall('(?s)pch_cometlake.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
|
{% set m = value | regex_findall('(?s)pch_cometlake.*?temp1:\s*\+?(-?\d+\.?\d*)') %}
|
||||||
{{ m | first | float if m }}
|
{{ 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] ---
|
# --- Garage PDU energy (kWh) integrated from watts [#344] ---
|
||||||
- platform: integration
|
- platform: integration
|
||||||
source: sensor.pfv_garage_pdu_power
|
source: sensor.pfv_garage_pdu_power
|
||||||
@@ -648,3 +796,87 @@ template:
|
|||||||
state: >-
|
state: >-
|
||||||
{% set v = states('sensor.tsys1_ups_battery_runtime') %}
|
{% set v = states('sensor.tsys1_ups_battery_runtime') %}
|
||||||
{{ (v | float / 60) | round(0) if is_number(v) else none }}
|
{{ (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