kalle07 commited on
Commit
e477690
·
verified ·
1 Parent(s): d5174e7

Upload 3 files

Browse files
.gitattributes CHANGED
@@ -37,3 +37,5 @@ SmartDiskTool.exe filter=lfs diff=lfs merge=lfs -text
37
  SmartTaskTool_v1_alpha.exe filter=lfs diff=lfs merge=lfs -text
38
  SmartTaskTool_by_Sevenof9_v2_alpha.exe filter=lfs diff=lfs merge=lfs -text
39
  hardwarecheck.exe filter=lfs diff=lfs merge=lfs -text
 
 
 
37
  SmartTaskTool_v1_alpha.exe filter=lfs diff=lfs merge=lfs -text
38
  SmartTaskTool_by_Sevenof9_v2_alpha.exe filter=lfs diff=lfs merge=lfs -text
39
  hardwarecheck.exe filter=lfs diff=lfs merge=lfs -text
40
+ hardwarecheck_AMD.exe filter=lfs diff=lfs merge=lfs -text
41
+ LibreHardwareMonitorLib.dll filter=lfs diff=lfs merge=lfs -text
LibreHardwareMonitorLib.dll ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a0f2728f1734c236a9d02d9e25a88bc4f8cb7bd1faff1770726beb7af06bf8dc
3
+ size 712192
hardwarecheck_AMD.exe ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:593a3ad3fee96b6bf58675c6a0a22ad8ebe611a9bc521ba7d4f253859fa770ac
3
+ size 10726169
hardwarecheck_AMD.py ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import clr
3
+ import time
4
+ #from difflib import get_close_matches
5
+
6
+ # DLL laden (Pfad ggf. anpassen)
7
+ dll_path = os.path.abspath("LibreHardwareMonitorLib.dll")
8
+ clr.AddReference(dll_path)
9
+
10
+ from LibreHardwareMonitor import Hardware
11
+ #from difflib import SequenceMatcher
12
+ # ----------------------------------------
13
+ # Hilfsfunktion: unscharfer Vergleich
14
+ # ----------------------------------------
15
+ #from rapidfuzz import fuzz
16
+ from rapidfuzz.fuzz import partial_ratio
17
+
18
+ def best_match_optional(filter_str, target_str, min_token_score=80):
19
+ """
20
+ Für jedes Token im Filter suchen wir das bestpassende Token im Ziel (mit partial_ratio).
21
+ Der finale Score ist der Durchschnitt dieser besten Matches.
22
+ """
23
+ if not filter_str:
24
+ return 1.0
25
+
26
+ filter_tokens = filter_str.lower().split()
27
+ target_tokens = target_str.lower().split()
28
+
29
+ if not target_tokens:
30
+ return 0.0
31
+
32
+ match_scores = []
33
+ for ftoken in filter_tokens:
34
+ best_score = max(
35
+ partial_ratio(ftoken, ttoken)
36
+ for ttoken in target_tokens
37
+ )
38
+ if best_score < min_token_score:
39
+ return 0.0 # Ein Filter-Token ist zu unähnlich → kein Match
40
+ match_scores.append(best_score)
41
+
42
+ return sum(match_scores) / (100 * len(match_scores)) # Normiert auf [0.0, 1.0]
43
+
44
+
45
+
46
+
47
+ # ----------------------------------------
48
+ # Einmalige GPU-Auslesung (alle Sensorwerte)
49
+ # ----------------------------------------
50
+ def lese_gpu_sensorwerte():
51
+ hw = Hardware.Computer()
52
+ hw.IsGpuEnabled = True
53
+ hw.IsCpuEnabled = False
54
+ hw.IsMemoryEnabled = False
55
+ hw.IsMotherboardEnabled = False
56
+ hw.IsStorageEnabled = False
57
+ hw.IsNetworkEnabled = False
58
+ hw.IsControllerEnabled = False
59
+ hw.Open()
60
+
61
+ daten = []
62
+ hardware_counter = 0
63
+
64
+ for hardware in hw.Hardware:
65
+ hardware.Update()
66
+
67
+ #if hardware.HardwareType.ToString().lower() != "gpu":
68
+ # continue
69
+
70
+ hardware_type = hardware.HardwareType.ToString()
71
+ hardware_name = hardware.Name
72
+ hardware_id = f"ID{hardware_counter}"
73
+ hardware_counter += 1
74
+
75
+ for sensor in hardware.Sensors:
76
+ eintrag = {
77
+ "ID": hardware_id,
78
+ "HardwareName": hardware_name,
79
+ "HardwareType": hardware_type,
80
+ "SensorName": sensor.Name,
81
+ "SensorType": sensor.SensorType.ToString(),
82
+ "Value": sensor.Value
83
+ }
84
+ daten.append(eintrag)
85
+
86
+
87
+ hw.Close()
88
+ return daten
89
+
90
+ # ----------------------------------------
91
+ # Filterfunktion mit flexiblen Feldern
92
+ # ----------------------------------------
93
+ def filter_sensordaten(daten, filterkriterien):
94
+ treffer = []
95
+ for eintrag in daten:
96
+ if all([
97
+ best_match_optional(filterkriterien.get("ID"), eintrag["ID"]),
98
+ best_match_optional(filterkriterien.get("HardwareName"), eintrag["HardwareName"]),
99
+ best_match_optional(filterkriterien.get("HardwareType"), eintrag["HardwareType"]),
100
+ best_match_optional(filterkriterien.get("SensorName"), eintrag["SensorName"]),
101
+ best_match_optional(filterkriterien.get("SensorType"), eintrag["SensorType"]),
102
+ (filterkriterien.get("Value") is None or eintrag["Value"] == filterkriterien["Value"])
103
+ ]):
104
+ treffer.append(eintrag)
105
+ return treffer
106
+
107
+ # ----------------------------------------
108
+ # Hauptprogramm
109
+ # ----------------------------------------
110
+ if __name__ == "__main__":
111
+ # Alle GPU-Daten einmalig auslesen
112
+ alle_sensoren = lese_gpu_sensorwerte()
113
+
114
+ print("\n--- Alle ausgelesenen GPU-Sensorwerte ---")
115
+ for sensor in alle_sensoren:
116
+ val = sensor["Value"]
117
+ val_str = f"{round(val, 1)}" if isinstance(val, (float, int)) else str(val)
118
+ print(f"ID: {sensor['ID']} | HwType: <{sensor['HardwareType']}> | "
119
+ f"HwName: <{sensor['HardwareName']}> | Sensor: <{sensor['SensorName']}> | "
120
+ f"Typ: <{sensor['SensorType']}> = {val_str}")
121
+ print(f"\nInsgesamt {len(alle_sensoren)} Sensoren gefunden.")
122
+
123
+
124
+ # -------------------------------
125
+ # 10 definierbare Suchabfragen
126
+ # -------------------------------
127
+ suchabfragen = [
128
+ {
129
+ "aktiv": True,
130
+ "filter": {
131
+ "HardwareType": "GpuAmd",
132
+ "HardwareName": "AMD",
133
+ "SensorName": "Core",
134
+ "SensorType": "Temperature",
135
+ "ID": "",
136
+ "Value": None
137
+ }
138
+ },
139
+
140
+ {
141
+ "aktiv": True,
142
+ "filter": {
143
+ "HardwareType": "GpuAmd",
144
+ "HardwareName": "AMD",
145
+ "SensorName": "Core",
146
+ "SensorType": "Load",
147
+ "ID": "",
148
+ "Value": None
149
+ }
150
+ },
151
+
152
+ {
153
+ "aktiv": True,
154
+ "filter": {
155
+ "HardwareType": "GpuAmd",
156
+ "HardwareName": "AMD",
157
+ "SensorName": "GPU Memory Used",
158
+ "SensorType": "",
159
+ "ID": "",
160
+ "Value": None
161
+ }
162
+ },
163
+
164
+ {
165
+ "aktiv": True,
166
+ "filter": {
167
+ "HardwareType": "GpuAmd",
168
+ "HardwareName": "AMD",
169
+ "SensorName": "GPU Memory Free",
170
+ "SensorType": "",
171
+ "ID": "",
172
+ "Value": None
173
+ }
174
+ },
175
+
176
+ {
177
+ "aktiv": True,
178
+ "filter": {
179
+ "HardwareType": "GpuAmd",
180
+ "HardwareName": "AMD",
181
+ "SensorName": "GPU Memory Total",
182
+ "SensorType": "",
183
+ "ID": "",
184
+ "Value": None
185
+ }
186
+ },
187
+
188
+ {
189
+ "aktiv": False,
190
+ "filter": {
191
+ "HardwareType": "Check",
192
+ "HardwareName": "",
193
+ "SensorName": "",
194
+ "SensorType": "",
195
+ "ID": "",
196
+ "Value": None
197
+ }
198
+ },
199
+ # ... weitere Suchabfragen:
200
+ *[
201
+ {"aktiv": False, "filter": {}} # Platzhalter
202
+ for _ in range(10)
203
+ ]
204
+ ]
205
+
206
+ # -------------------------------
207
+ # Suchabfragen ausführen
208
+ # -------------------------------
209
+ for idx, suchanfrage in enumerate(suchabfragen):
210
+ if not suchanfrage["aktiv"]:
211
+ continue
212
+
213
+ print(f"\n--- Suche #{idx + 1} ---")
214
+ resultate = filter_sensordaten(alle_sensoren, suchanfrage["filter"])
215
+
216
+ if not resultate:
217
+ print("Keine passenden Sensorwerte gefunden.")
218
+ else:
219
+ for r in resultate:
220
+ val = r["Value"]
221
+ val_str = f"{round(val, 1)}" if isinstance(val, (float, int)) else str(val)
222
+ print(f"ID: {r['ID']} | HwType: <{r['HardwareType']}> | "
223
+ f"HwName: <{r['HardwareName']}> | Sensor: <{r['SensorName']}> | "
224
+ f"Typ: <{r['SensorType']}> = {val_str}")
225
+ time.sleep(0.01)
226
+
227
+ input("\nDrücke eine Taste zum Beenden...")
228
+
229
+