Module: Rsensors::Sensor
- Defined in:
- lib/rsensors.rb
Overview
Temperature Sensor interface.
Class Method Summary collapse
- .format_hdparm(text) ⇒ Object
- .formatHddtemp(entry) ⇒ Object
- .formatHdparm(entry) ⇒ Object
- .hdDetect(line) ⇒ Object
- .hdparmInfoOk(line) ⇒ Object
- .hdparmLine(line, ol, ok_sense) ⇒ Object
- .hdParmOutput(sol) ⇒ Object
- .hdparmProblem(line) ⇒ Object
- .maxTemperatureHd ⇒ Object
- .temperature ⇒ Object
-
.temperature1 ⇒ Float
Cpu temperature or [False] if not available.
- .temperature2 ⇒ Object
- .temperature4 ⇒ Object
-
.temperature_hd ⇒ Object
need superuser or privileges with apps.
-
.temperatureHd ⇒ Object
return float of hd temperature or array if more disk(s) present.
Class Method Details
.format_hdparm(text) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/rsensors.rb', line 61 def self.format_hdparm(text) sol = "" text.each_line { |line| if /^\/dev/.match(line) # hard disk detected sol[0] += line elsif /^ drive temperature/.match(line) # info detected sol += line elsif /^ Model=(\w+),*/.match(line) # model detected m1 = /^ Model=(\w+\s+\w+),*/.match(line) #p m1 sol += m1[1] end } return sol # return end |
.formatHddtemp(entry) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rsensors.rb', line 121 def self.formatHddtemp(entry) sol = [] entry.each_line { |line| if m1 = /\w+(\/?d?\/):(\w+) not available/.match(line) # error detected puts "**warning** drive /dev/#{m1[1]} sensor not available" elsif m1 = /^(d+)/.match(line) # info detected sol << m1[1] end } return sol[0].to_f if sol.size == 1 return sol end |
.formatHdparm(entry) ⇒ Object
113 114 115 116 117 118 119 120 |
# File 'lib/rsensors.rb', line 113 def self.formatHdparm(entry) sol = [] ok_sense = true entry.each_line { |line| sol, ok_sense = hdparmLine(line,sol,ok_sense) } hdParmOutput(sol) end |
.hdDetect(line) ⇒ Object
96 97 98 |
# File 'lib/rsensors.rb', line 96 def self.hdDetect(line) return /^\/dev/.match(line) # hard disk detected end |
.hdparmInfoOk(line) ⇒ Object
90 91 92 |
# File 'lib/rsensors.rb', line 90 def self.hdparmInfoOk(line) /^ drive temperature \(celsius\) is:\s+(d+)/.match(line) # info detected end |
.hdparmLine(line, ol, ok_sense) ⇒ Object
103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rsensors.rb', line 103 def self.hdparmLine(line, ol, ok_sense) if hdDetect(line) ok_sense = true # activate sense elsif m1= hdParmInfoOk(line) # info detected sol << m1[1] if ok_sense elsif hdparmProblem(line) # sense problem detected ok_sense = false end return sol, ok_sense end |
.hdParmOutput(sol) ⇒ Object
99 100 101 102 |
# File 'lib/rsensors.rb', line 99 def self.hdParmOutput(sol) return sol[0].to_f if sol.size == 1 return sol end |
.hdparmProblem(line) ⇒ Object
93 94 95 |
# File 'lib/rsensors.rb', line 93 def self.hdparmProblem(line) /^SG_IO: bad\/missing sense data/.match(line) # sense problem detected end |
.maxTemperatureHd ⇒ Object
133 134 135 136 137 |
# File 'lib/rsensors.rb', line 133 def self.maxTemperatureHd temp = temperatureHd # float or array of temperatures return temp if temp.is_a? Float return temp.max # return max temp from available hard disks end |
.temperature ⇒ Object
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/rsensors.rb', line 138 def self.temperature if temperature1 return temperature1 elsif temperature2 return temperature2 elsif temperature4 return temperature4 else return 0 # to perform float test, give a correct answer end end |
.temperature1 ⇒ Float
Returns cpu temperature or [False] if not available.
30 31 32 33 34 35 |
# File 'lib/rsensors.rb', line 30 def self.temperature1 if File.exists?('/sys/class/hwmon/hwmon0/temp1_input') File.read('/sys/class/hwmon/hwmon0/temp1_input').to_f / 1000 else false end end |
.temperature2 ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/rsensors.rb', line 36 def self.temperature2 if File.exists?('/sys/class/hwmon/hwmon0/device/temp2_input') File.read('/sys/class/hwmon/hwmon0/device/temp2_input').to_f / 1000 elsif File.exists?('/sys/class/hwmon/hwmon0/temp2_input') File.read('/sys/class/hwmon/hwmon0/temp2_input').to_f / 1000 else false end end |
.temperature4 ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/rsensors.rb', line 44 def self.temperature4 if File.exists?('/sys/class/hwmon/hwmon0/device/temp4_input') File.read('/sys/class/hwmon/hwmon0/device/temp4_input').to_f / 1000 elsif File.exists?('/sys/class/hwmon/hwmon0/temp4_input') File.read('/sys/class/hwmon/hwmon0/temp4_input').to_f / 1000 else false end end |
.temperature_hd ⇒ Object
need superuser or privileges with apps
52 53 54 55 56 57 58 59 60 |
# File 'lib/rsensors.rb', line 52 def self.temperature_hd # need superuser or privileges with apps # 1st try hddtemp temp = %x( hddtemp -uC /dev/?d? ) if $?.exitstatus != 0 # hddtemp not works, try hdparm temp = %x( hdparm -Hi /dev/?d? ) temp = format_hdparm(temp) if $?.exitstatus == 0 # works fine end #dtemp -n /dev/?d? ) # good for one line, one hard disk return temp end |
.temperatureHd ⇒ Object
return float of hd temperature or array if more disk(s) present
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rsensors.rb', line 76 def self.temperatureHd # return float of hd temperature or array if more disk(s) present # need superuser or privileges with apps # 1st try hddtemp, temp = -20 error temp temp = -20 temp = %x( hddtemp -n /dev/?d? ) if $?.exitstatus != 0 # hddtemp not works, try hdparm temp = %x( hdparm -H /dev/?d? ) temp = formatHdparm(temp) if $?.exitstatus == 0 # works fine else # hddtemp ok temp = formatHddtemp(temp) if temp.is_a? Array end return temp if temp.is_a? Array return temp.to_f end |