# 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