210 lines
8.3 KiB
YAML
210 lines
8.3 KiB
YAML
# OpenHardwareMonitor Integration Package
|
|
# Monitors hardware sensors from two servers running OpenHardwareMonitor
|
|
# Server 1: 10.0.0.243:8085
|
|
# Server 2: 10.0.0.244:8085
|
|
|
|
rest:
|
|
# Server 1 - 10.0.0.243
|
|
- resource: http://10.0.0.243:8085/data.json
|
|
scan_interval: 30
|
|
sensor:
|
|
- name: "Server 243 CPU Temperature"
|
|
unique_id: server_243_cpu_temp
|
|
unit_of_measurement: "°C"
|
|
device_class: temperature
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'CPU' or 'CPU' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Temperatures' %}
|
|
{% for temp in sensor.Children %}
|
|
{% if 'Package' in temp.Text or 'Core #0' in temp.Text %}
|
|
{% set ns.value = temp.Value | replace(' °C', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:thermometer
|
|
|
|
- name: "Server 243 CPU Load"
|
|
unique_id: server_243_cpu_load
|
|
unit_of_measurement: "%"
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'CPU' or 'CPU' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Load' %}
|
|
{% for load in sensor.Children %}
|
|
{% if 'Total' in load.Text %}
|
|
{% set ns.value = load.Value | replace(' %', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:chip
|
|
|
|
- name: "Server 243 RAM Usage"
|
|
unique_id: server_243_ram_usage
|
|
unit_of_measurement: "GB"
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'RAM' or 'Memory' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Load' or sensor.Text == 'Data' %}
|
|
{% for load in sensor.Children %}
|
|
{% if 'Used' in load.Text %}
|
|
{% set ns.value = load.Value | replace(' GB', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:memory
|
|
|
|
- name: "Server 243 GPU Temperature"
|
|
unique_id: server_243_gpu_temp
|
|
unit_of_measurement: "°C"
|
|
device_class: temperature
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if 'GPU' in child.Text or child.Text.startswith('NVIDIA') or child.Text.startswith('AMD') %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Temperatures' %}
|
|
{% for temp in sensor.Children %}
|
|
{% if 'Core' in temp.Text or 'GPU' in temp.Text %}
|
|
{% set ns.value = temp.Value | replace(' °C', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:thermometer
|
|
|
|
# Server 2 - 10.0.0.244
|
|
- resource: http://10.0.0.244:8085/data.json
|
|
scan_interval: 30
|
|
sensor:
|
|
- name: "Server 244 CPU Temperature"
|
|
unique_id: server_244_cpu_temp
|
|
unit_of_measurement: "°C"
|
|
device_class: temperature
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'CPU' or 'CPU' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Temperatures' %}
|
|
{% for temp in sensor.Children %}
|
|
{% if 'Package' in temp.Text or 'Core #0' in temp.Text %}
|
|
{% set ns.value = temp.Value | replace(' °C', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:thermometer
|
|
|
|
- name: "Server 244 CPU Load"
|
|
unique_id: server_244_cpu_load
|
|
unit_of_measurement: "%"
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'CPU' or 'CPU' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Load' %}
|
|
{% for load in sensor.Children %}
|
|
{% if 'Total' in load.Text %}
|
|
{% set ns.value = load.Value | replace(' %', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:chip
|
|
|
|
- name: "Server 244 RAM Usage"
|
|
unique_id: server_244_ram_usage
|
|
unit_of_measurement: "GB"
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if child.Text == 'RAM' or 'Memory' in child.Text %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Load' or sensor.Text == 'Data' %}
|
|
{% for load in sensor.Children %}
|
|
{% if 'Used' in load.Text %}
|
|
{% set ns.value = load.Value | replace(' GB', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:memory
|
|
|
|
- name: "Server 244 GPU Temperature"
|
|
unique_id: server_244_gpu_temp
|
|
unit_of_measurement: "°C"
|
|
device_class: temperature
|
|
state_class: measurement
|
|
value_template: >
|
|
{% set ns = namespace(found=false, value=none) %}
|
|
{% for child in value_json.Children %}
|
|
{% if 'GPU' in child.Text or child.Text.startswith('NVIDIA') or child.Text.startswith('AMD') %}
|
|
{% for sensor in child.Children %}
|
|
{% if sensor.Text == 'Temperatures' %}
|
|
{% for temp in sensor.Children %}
|
|
{% if 'Core' in temp.Text or 'GPU' in temp.Text %}
|
|
{% set ns.value = temp.Value | replace(' °C', '') | replace(',', '.') %}
|
|
{% set ns.found = true %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ ns.value if ns.found else 'unknown' }}
|
|
icon: mdi:thermometer
|
|
|
|
# Binary sensor for Server 243 online/offline status
|
|
binary_sensor:
|
|
- platform: ping
|
|
host: 10.0.0.243
|
|
name: "Server 243 Status"
|
|
count: 2
|
|
scan_interval: 60
|