CPUの温度、放熱ファンの回転数を取得する
SMCWrapperをCocoa Framework化してAppleScriptから呼びやすいように書き換えた「SMCKit.framework」を呼び出して、CPUの温度や放熱ファンの回転数を取得するAppleScriptです。
AppleScriptからCocoaを呼び出して高速処理を行っていたら、CPUの温度が上がりすぎて焦ったことがありました。これは、対策をしておいたほうがよいでしょう。
Macの放熱ファン制御&温度管理ソフトウェアで、最近評判がいいのはTunabelly Softwareの「TG Pro」。
ただし、これはAppleScriptから制御できるタイプのソフトウェアではなかったので、別の手段を探してみました(MacBook Proの放熱強化のためには利用しています)。
SMC(System Management Controller)からCPUの温度を取得するオープンソースのプログラム「SMCWrapper」を見つけたのですが、すでにメンテナンスされておらず、しかもAppleScriptから呼び出しやすい構造になっていなかったため、Cocoa Framework化しただけで手元に放置してありました。
— Created 2017年07月28日 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "SMCKit"
set numberOfFuns to current application’s NSString’s new()
current application’s SMCWrapper’s readKey:"FNum" asString:(numberOfFuns)
★Click Here to Open This Script
↑こんな風に呼んでは、動かないことを確認していました(↑は本当に動きません)。
CPUの温度は取得できたほうがよさそうだったので、SMCWrapperにAppleScriptから呼び出しやすいようにメソッドを追加して呼び出してみました。
–> Download SMCKit.framework(To ~/Library/Frameworks/)
readKeyAsString: というメソッドだけ新設して使っていますが、けっこう便利です。
— 2018 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"
use framework "SMCKit" –https://github.com/FergusInLondon/SMCWrapper
–I turned the SMCWrapper into Cocoa Framework and change it to call from AppleScript
set smc to current application’s SMCWrapper’s sharedWrapper()
–FNum => Number of Fans
set a0Res to (smc’s readKeyAsString:"FNum") as list of string or string –as anything
–> 2
— TC0P => CPU Temperature
set a1Res to smc’s readKeyAsString:"TC0P"
–> 57.125
— F0Ac => Fan0 Actual RPM
set a2Res to smc’s readKeyAsString:"F0Ac"
–> 5891.00
— F0Mn => Min RPM
set a3Res to smc’s readKeyAsString:"F0Mn"
–> 5888.00
— F0Mx => Max RPM
set a4Res to smc’s readKeyAsString:"F0Mx"
–> 5940.00
if a0Res ≥ 2 then
— F1Ac => Fan1 Actual RPM
set a5Res to smc’s readKeyAsString:"F1Ac"
–> 5439.00
— F1Mn => Min RPM
set a6Res to smc’s readKeyAsString:"F1Mn"
–> 5440.00
— F1Mx => Max RPM
set a7Res to smc’s readKeyAsString:"F1Mx"
–> 5940.00
end if
More from my site
- Wikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script Library Wikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script Library
- 画面上の指定座標にマウスカーソルを強制移動させてクリック 画面上の指定座標にマウスカーソルを強制移動させてクリック
- checkboxLibをアップデート(3)sdefにサンプルドキュメントを入れる checkboxLibをアップデート(3)sdefにサンプルドキュメントを入れる
- checkboxLibをアップデート checkboxLibをアップデート
- アイテム番号リストをもとに、ヒットしなかった項目を返す アイテム番号リストをもとに、ヒットしなかった項目を返す
- メインScript側で宣言したglobal変数値をサブ側で使用する メインScript側で宣言したglobal変数値をサブ側で使用する
1 thoughts on “<span>CPUの温度、放熱ファンの回転数を取得する</span>”
2018年に書いた価値あるScript – AppleScriptの穴 says:
[…] ・CPUの温度、放熱ファンの回転数を取得する MacBook Proでデモを行っている最中に、AppleScriptを走らせて遅くなる現象に直面することがままありました。よくよく調べてみたら、長大なApple […]