Нет доступа к системной информации python
Имеется скрипт на пайтон, который находится в одной папке с dll библиотекой. Скрипт должен собирать информацию о параметрах системы, таких как температура ГП, ЦП, загрузка ОЗУ и прочее, но походу система блочит получение данных cpu_temp, gpu_temp и rpm. Данные дальше отправляются через блютуз на устройство, которое их выводит на дисплей. Помогите как решить проблему с доступом к данным В коде используются модули psutil, pythonnet, pyserial
import serial
import os
import time
import clr
import psutil
updateTime = 4 # number of seconds between each update
hardwaretypes = ['Mainboard','SuperIO','CPU','RAM','GpuNvidia','GpuAti','TBalancer','Heatmaster','HDD']
sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level','Factor','Power','Data','SmallData']
cpu_temp = ''
rpm = ''
gpu_temp = ''
def sendData(temp, rpm, gpu, free_disk, free_mem, procs):
try:
connection = serial.Serial('COM7')
data = temp + ',' + rpm + ',' + str(free_mem) + ',' + str(free_disk) + ',' + gpu + ',' + str(procs) + '/'
connection.write(data.encode())
print("Data written", data.encode())
connection.close
except Exception as e:
print(e)
def initialize_openhardwaremonitor():
file = 'OpenHardwareMonitorLib'
clr.AddReference(file)
from OpenHardwareMonitor import Hardware
handle = Hardware.Computer()
handle.MainboardEnabled = True
handle.CPUEnabled = True
handle.RAMEnabled = True
handle.GPUEnabled = 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):
global cpu_temp
global rpm
global gpu_temp
if sensor.Value is not None:
if sensor.SensorType == sensortypes.index('Temperature') and sensor.Name == 'CPU Package':
cpu_temp = str(int(sensor.Value))
if sensor.SensorType == sensortypes.index('Fan') and sensor.Name == 'Fan #1':
rpm = str(int(sensor.Value))
if sensor.SensorType == sensortypes.index('Temperature') and sensor.Name == 'GPU Core':
gpu_temp = str(int(sensor.Value))
HardwareHandle = initialize_openhardwaremonitor()
while(1):
fetch_stats(HardwareHandle)
obj_Disk = psutil.disk_usage('c:\\') # Drive letter with double \\
free_disk = int(obj_Disk.free / (1024.0 ** 3))
free_mem = (int((psutil.virtual_memory().total - psutil.virtual_memory().used)/ (1024 * 1024)))
proc_counter = 0
for proc in psutil.process_iter():
proc_counter += 1
sendData(cpu_temp, rpm, gpu_temp, free_disk, free_mem, proc_counter)
time.sleep(updateTime)