PyHardwareMonitor
Python Harware Monitor is a thin package layer for LibreHardwareMonitorLib using pythonnet.
Libre Hardware Monitor, a fork of Open Hardware Monitor, is free software that can monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer.
This package is mostly auto generated using the pythonstubs generator tool for .NET libraries.
Scripts for generating, altering and extending package resources are located in the scripts folder.
The purpose of this layer is the ability to provide extensive typing information and additional utilities around the LibreHardwareMonitorLib.
Note: Python must have admin privileges for
HardwareMonitorto be able to access all available sensors properly!
Prerequisites
- Python 3.6+
- pythonnet
- .NET 4.7
- PawnIO (for system sensors)
Installation
Install from PyPi directly
pip3 install HardwareMonitor
or install locally from source
git clone https://github.com/snip3rnick/PyHardwareMonitor
cd PyHardwareMonitor
pip3 install .
PawnIO Input/Output Driver
For many system sensors (eg. motherboard) it is required to install the PawnIO driver.
The driver can be installed using winget
winget install PawnIO
Alternatively you may download the latest version from the GitHub release page.
Basic Usage
This simple example is a python adaptation of the C# example of the LibreHardwareMonitor repository.
from HardwareMonitor.Hardware import * # equivalent to 'using LibreHardwareMonitor.Hardware;'
class UpdateVisitor(IVisitor):
__namespace__ = "TestHardwareMonitor" # must be unique among implementations of the IVisitor interface
def VisitComputer(self, computer: IComputer):
computer.Traverse(self);
def VisitHardware(self, hardware: IHardware):
hardware.Update()
for subHardware in hardware.SubHardware:
subHardware.Update()
def VisitParameter(self, parameter: IParameter): pass
def VisitSensor(self, sensor: ISensor): pass
computer = Computer() # settings can not be passed as constructor argument (following below)
computer.IsMotherboardEnabled = True
computer.IsControllerEnabled = True
computer.IsCpuEnabled = True
computer.IsGpuEnabled = True
computer.IsBatteryEnabled = True
computer.IsMemoryEnabled = True
computer.IsNetworkEnabled = True
computer.IsStorageEnabled = True
computer.Open()
computer.Accept(UpdateVisitor())
for hardware in computer.Hardware:
print(f"Hardware: {hardware.Name}")
for subhardware in hardware.SubHardware:
print(f"\tSubhardware: {subhardware.Name}")
for sensor in subhardware.Sensors:
print(f"\t\tSensor: {sensor.Name}, value: {sensor.Value}")
for sensor in hardware.Sensors:
print(f"\tSensor: {sensor.Name}, value: {sensor.Value}")
computer.Close()
Utilities
Utilities are located in the HardwareMonitor.Util module.
Function OpenComputer
The OpenComputer function provides a shorthand for creating the HardwareMonitor.Hardware.Computer instance including the settings and update visitor.
Settings are given as keyword arguments, the following example enables just the cpu and motherboard component.
computer = OpenComputer(cpu=True, motherboard=True) # use 'all=True' to enable every component
# Access sensors
...
computer.Update() # Updates all sensors
...
computer.Close()
Function ToBuiltinTypes
Instances from the HardwareMonitor module can be reduced to primitive python types instead of HardwareMonitor object instances with the ToBuiltinTypes function.
Objects are recursively converted to Python builtin types (dict, list, ...).
This can be useful for applications that serialized the data (e.g. with json).
computer = OpenComputer(cpu=True)
data = ToBuiltinTypes(computer.Hardware)
# [{'Type': 'Hardware', 'HardwareType': 'Cpu', 'Name': 'Intel Core i5-8265U', 'Sensors': [...], 'SubHardware': [...]}]
Function GroupSensorsByType
Sensors of an instance of HardwareMonitor.Harware.Hardware are held in a flat list.
The helper function GroupSensorsByType converts the sensor list into a list of lists grouping sensors by type.
GroupSensorsByType(sensors: Iterable[ISensor]) -> List[List[ISensor]]
Function SensorValueToString
The helper function SensorValueToString converts sensor values to strings appending with the appropriate unit.
SensorValueToString(value: float, type: SensorType) -> str
# returns "3100.0 MHz" for value=3100.0 with type=SensorType.Clock
Dictionary HardwareTypeString and SensorTypeString
These two mappings convert values for HardwareType (or SensorType) to a string.
Both the integer value for the enum or the instances of the enum value (e.g. HardwareType.Cpu) are present as keys.
In some environments the type fields were set to integers in others to the corresponding type instance.
Metadata
Release files for HardwareMonitor 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hardwaremonitor-1.2.1.tar.gz | 2.9 MB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hardwaremonitor-1.2.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| hardwaremonitor-1.2.1-py3-none-win32.whl | Python 3 | none | Windows x86-32 | Details |
Total release size: 5.8 MB
Release files / hardwaremonitor-1.2.1.tar.gz
| Download URL | hardwaremonitor-1.2.1.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe943d079e4ce03fdece669494778479029de5c0ba113c1b10188aeecafc7915
|
|
BLAKE2b-256 checksum How to use checksums |
3ffe71b47adafcc96c80ef173bce0aec7e2eb9b00d85054f62069bc3a8f318ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logRelease files / hardwaremonitor-1.2.1-py3-none-win_amd64.whl
| Download URL | hardwaremonitor-1.2.1-py3-none-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e8bdd9ce52564b34a29f57647fc1f51a0eba724d76ce6e65ced67d3b3771d461
|
|
BLAKE2b-256 checksum How to use checksums |
3aeeb37ea176657b11fac1d8479fcfa705286dca08cfb36eec38e068946a667b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logRelease files / hardwaremonitor-1.2.1-py3-none-win32.whl
| Download URL | hardwaremonitor-1.2.1-py3-none-win32.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
83dc3ab4507c22b175f9531d623867ffbd1f97336043926cc2281d65090483de
|
|
BLAKE2b-256 checksum How to use checksums |
89c700d6328a6f6646675dfcbc1222183066bb135e64b3fff192f3c7d1759d69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency log