Как получить температуру материнской платы ПК (и другую аппаратную статистику)?

Кто-нибудь знает, как получить текущую статистику температуры материнской платы, процессора или жесткого диска?
В GNU/Linux я знаю, что могу использовать что-то вроде hddtemp или sensord, чтобы получить информацию, а затем проанализировать ее... но в Windows : Как я могу это сделать? И можно ли это сделать с помощью C# или Java или любого другого языка программирования высокого уровня?
Спасибо!


person Rodrigo Amaya    schedule 23.09.2008    source источник


Ответы (4)


Проблема с датчиками температуры и другими датчиками мониторинга заключается в том, что на аппаратном уровне нет ни единого протокола, ни драйверов, позволяющих получать эту информацию с помощью общего API.

Программное обеспечение, подобное уже упомянутому SpeedFan и HWMonitor (от создателей утилиты CPU-Z), работает кропотливо. каталогизация различных датчиков и контроллеров шины и реализация соответствующих протоколов, обычно с использованием драйвера режима ядра для доступа к устройствам SMBus.

Чтобы внедрить эту функциональность в собственное программное обеспечение, вы можете либо разработать эту функциональность самостоятельно (возможно, уменьшив объем работы, адаптировав ее к вашему конкретному оборудованию и используя код Linux с сайта www.lm-sensors.org в качестве справочного материала), либо приобрести коммерческую библиотеку. который это реализует. Один из них, используемый HWMonitor, доступен здесь.

удачи

person vadimus    schedule 30.09.2008
comment
Ваша вторая ссылка сломалась. Хотя семь лет не так уж и плохо. - person Scruffy; 02.08.2015

Я бы сказал, что при наличии правильных конфигураций он может быть лучше, чем в Windows.

http://www.lm-sensors.org/ выполняет всю работу. Я подключил его к RRDgraph & Munin, и я следил за температурой в своей комнате в течение почти года, и у меня были красивые графики. Также показал мне, что мой вентилятор процессора медленно изнашивается, и я мог видеть, как линия наклоняется вниз в течение длительного периода, и знал, что она на исходе.

http://www.lm-sensors.org/browser/lm-sensors/trunk/doc/developers/applications — это то, что вам нужно.

(Ой, подождите, я терплю неудачу. Вы на *nix хотите сделать это на Windows, моя беда :( ..эм... ну. Удачи. Может быть, я оставлю это здесь на случай, если кто-то найдет ваш пост при поиске противоположность)

Когда я пользовался Windows, все, что я помню, это старый монитор материнской платы (снято с производства). В статье на Wiki говорится, что существует speedfan, и это лучший вариант. Программно, я думаю, вам придется найти спецификации оборудования и покопаться в API Windows и в стеках произвольных смещений адресов шины.

person Kent Fredric    schedule 23.09.2008

Как предполагает @AndrewJFord, эти методы варьируются от поставщика к поставщику, действительно от части к части, но я сделаю некоторые обобщения, если это нормально.

  1. Насколько я знаю, все современные процессоры Intel, AMD и IBM имеют встроенные термодатчики с известными открытыми API для чтения этих данных. Я не эксперт в этих API, поэтому не знаю, насколько они похожи, но я был бы удивлен, если бы API Intel и AMD сильно отличались. На вашем месте я бы поискал «инструмент управления системой» с открытым исходным кодом (кстати, есть несколько подобных, написанных как Apple Widgets) и посмотрел, как они это делают.
  2. Материнские платы чертовски сильно различаются, некоторые из них имеют обширное температурное датчики, некоторые не имеют, и все они будут иметь довольно разные API. Я бы начал с того, что связался со службой поддержки в компании, которая делает ваш выбор.
  3. В целом я считаю, что только очень высокопроизводительные диски SAS со скоростью 15 об / мин имеют встроенные термодатчики, я знаю, что некоторые системы среднего уровня имеют датчики, прикрепленные к корпусу на концентраторе, и сообщают об этом обратно в мобильное устройство. На самом деле не уверен, как получить эту информацию, но опять же, я бы начал с разговора с теми же людьми, что и вопрос выше.

Теперь я большой пользователь HP, и весь их набор управляется чем-то, что называется Insight Management Agents, версии которого доступны для Windows и большинства Linux. Что они делают, так это собирают всю системную информацию со всех своих датчиков (процедуры, память, мобильные устройства, вентиляторы, диски и т. д.) и предоставляют ее через API опроса на основе SNMP или через интерфейс SNMP/SMTP/MAPI на основе предупреждений. Я осмелюсь сказать, что у IBM/Dell и т. д. будут свои не менее хорошие и функционально похожие версии, но я их не знаю, извините. Если ваши машины «небрендовые»/сделаны из комплекта или у вас нет контроля, то я не знаю ни одного единственного способа легко получить всю эту информацию.

person Chopper3    schedule 24.09.2008
comment
К вашему сведению, все мои жесткие диски и твердотельные накопители SATA (как SATA, так и nvme m.2) имеют внутренние термодатчики, даже самые дешевые. Так что я думаю, что ваш пункт № 3 больше не соответствует действительности. - person pieroxy; 16.01.2021

Это будет немного отличаться в зависимости от вашего оборудования. Как только вы узнаете от поставщика оборудования, есть ли датчики на вашей материнской плате, вы можете рассмотреть возможность использования SNMP и HOST-RESOURCE MIB.

Используйте мастер добавления и удаления компонентов Windows в разделе «Средства управления и мониторинга», чтобы установить SNMP. Затем вы сможете запросить у своего Windows-бокса много информации, используя стандартное программное обеспечение для управления системами, такое как OpenView или Nagios.

person AndrewJFord    schedule 23.09.2008