Openhardwaremonitor: Python.Runtime.Clrmodule.Addreference(String name)

Asked

Viewed 90 times

1

My script is returning the output below:

OUTPUT

OpenHardwareMonitor:
Traceback (most recent call last):
  File "sensors.py", line 62, in <module>
    HardwareHandle = initialize_openhardwaremonitor()
  File "sensors.py", line 12, in initialize_openhardwaremonitor
    clr.AddReference(file)
System.IO.FileNotFoundException: Unable to find assembly 'OpenHardwareMonitorLib.dll'.
   em Python.Runtime.CLRModule.AddReference(String name)

SCRIPT

import clr #package pythonnet, not clr


openhardwaremonitor_hwtypes = ['Mainboard','SuperIO','CPU','RAM','GpuNvidia','GpuAti','TBalancer','Heatmaster','HDD']
cputhermometer_hwtypes = ['Mainboard','SuperIO','CPU','GpuNvidia','GpuAti','TBalancer','Heatmaster','HDD']
openhardwaremonitor_sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level','Factor','Power','Data','SmallData']
cputhermometer_sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level']


def initialize_openhardwaremonitor():
    file = 'OpenHardwareMonitorLib.dll'
    clr.AddReference(file)

    from OpenHardwareMonitor import Hardware

    handle = Hardware.Computer()
    handle.MainboardEnabled = True
    handle.CPUEnabled = True
    handle.RAMEnabled = True
    handle.GPUEnabled = True
    handle.HDDEnabled = True
    handle.Open()
    return handle

def initialize_cputhermometer():
    file = 'CPUThermometerLib.dll'
    clr.AddReference(file)

    from CPUThermometer import Hardware
    handle = Hardware.Computer()
    handle.CPUEnabled = True
    handle.Open()
    return handle

def fetch_stats(handle):
    for i in handle.Hardware:
        i.Update()
        for sensor in i.Sensors:
            parse_sensor(sensor)
        for j in i.SubHardware:
            j.Update()
            for subsensor in j.Sensors:
                parse_sensor(subsensor)


def parse_sensor(sensor):
        if sensor.Value is not None:
            if type(sensor).__module__ == 'CPUThermometer.Hardware':
                sensortypes = cputhermometer_sensortypes
                hardwaretypes = cputhermometer_hwtypes
            elif type(sensor).__module__ == 'OpenHardwareMonitor.Hardware':
                sensortypes = openhardwaremonitor_sensortypes
                hardwaretypes = openhardwaremonitor_hwtypes
            else:
                return

            if sensor.SensorType == sensortypes.index('Temperature'):
                print(u"%s %s Temperature Sensor #%i %s - %s\u00B0C" % (hardwaretypes[sensor.Hardware.HardwareType], sensor.Hardware.Name, sensor.Index, sensor.Name, sensor.Value))

if __name__ == "__main__":
    print("OpenHardwareMonitor:")
    HardwareHandle = initialize_openhardwaremonitor()
    fetch_stats(HardwareHandle)
    print("\nCPUMonitor:")
    CPUHandle = initialize_cputhermometer()
    fetch_stats(CPUHandle)

GOAL

Capture the temperature of any platform, I performed the following steps before performing:

Download http://openhardwaremonitor.org/downloads/ and http://www.cputhermometer.com/ and Extract Openhardwaremonitorlib.dll and Cputhermometerlib.dll and place These in a directory.

You can then use the pythonnet module to address the . dlls and pull any stat that These Programs Offer. cputhermometer offers per-core CPU temps, openhardwaremonitor offers Everything Else. No need to use WMI which requires the program to be active in the background.

Python version: 2.7.16

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.