39 lines
1.6 KiB
Python
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) |