Files
CarlMonitor/hardwareinfo.py
2025-04-07 07:44:27 -07:00

39 lines
1.6 KiB
Python

from HardwareMonitor.Hardware import * # equivalent to 'using LibreHardwareMonitor.Hardware;'
import HardwareMonitor.Util
import json
from flask import Flask, jsonify, request
app = Flask(__name__)
with open("carls.conf", "r") as config_file:
config = json.load(config_file)
url_path = "/" + config["service_info"]["url_path"] # Ensure no leading or trailing slashes
@app.route(url_path + '/hardware_data', methods=['GET'])
def get_cpu_data( ):
computer = HardwareMonitor.Util.OpenComputer(cpu=True, motherboard=True)
computer.Update( )
data = HardwareMonitor.Util.ToBuiltinTypes(computer.Hardware)
#print(json.dumps(data, indent=4))
cpu_data = { }
cpu_data["Tempertures"] = { }
cpu_data["Loads"] = { }
cpu_data["Motherboard"] = { }
for hardware in data:
if hardware["HardwareType"] == "Cpu":
for sensor in hardware["Sensors"]:
if sensor["SensorType"] == "Temperature":
cpu_data["Tempertures"][sensor["Name"]] = sensor["Value"]
if sensor["SensorType"] == "Load":
cpu_data["Loads"][sensor["Name"]] = sensor["Value"]
if hardware["HardwareType"] == "Motherboard":
for sub_hardware in hardware["SubHardware"]:
for sensor in sub_hardware["Sensors"]:
if sensor["Type"] == "Sensor":
if "Value" in sensor:
cpu_data["Motherboard"][sensor["Name"]] = sensor["Value"]
return cpu_data
if __name__ == '__main__':
print(url_path + '/cpu_data')
app.run(port=1098)