Class: SAAL::Sensor
- Inherits:
-
Object
- Object
- SAAL::Sensor
- Defined in:
- lib/sensor.rb
Instance Attribute Summary collapse
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#numreads ⇒ Object
readonly
Returns the value of attribute numreads.
-
#underlying ⇒ Object
Returns the value of attribute underlying.
Instance Method Summary collapse
- #average(from, to) ⇒ Object
-
#initialize(dbstore, name, underlying, defs, opts = {}) ⇒ Sensor
constructor
A new instance of Sensor.
- #last_value ⇒ Object
- #maximum(from, to) ⇒ Object
- #minimum(from, to) ⇒ Object
- #mock_set(opts) ⇒ Object
- #read ⇒ Object
- #read_uncached ⇒ Object
- #sensor_type ⇒ Object
- #store_value ⇒ Object
- #write(value) ⇒ Object
- #writeable? ⇒ Boolean
Constructor Details
#initialize(dbstore, name, underlying, defs, opts = {}) ⇒ Sensor
Returns a new instance of Sensor.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/sensor.rb', line 16 def initialize(dbstore, name, , defs, opts={}) @dbstore = dbstore @name = name @underlying = @description = defs['name'] @mock_opts = {} if defs['altitude'] && @underlying.sensor_type == :pressure @read_offset = defs['altitude'].to_f/9.2 elsif defs['linear_offset'] @read_offset = defs['linear_offset'].to_f else @read_offset = 0.0 end if defs['linear_multiplier'] @read_multiplier = defs['linear_multiplier'].to_f else @read_multiplier = 1.0 end @set_type = defs['type'] ? defs['type'].to_sym : nil @numreads = (defs['numreads']||1).to_i @numreads = 1 if @numreads == 0 @numreads += 1 if @numreads.even? end |
Instance Attribute Details
#description ⇒ Object (readonly)
Returns the value of attribute description.
14 15 16 |
# File 'lib/sensor.rb', line 14 def description @description end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
14 15 16 |
# File 'lib/sensor.rb', line 14 def name @name end |
#numreads ⇒ Object (readonly)
Returns the value of attribute numreads.
14 15 16 |
# File 'lib/sensor.rb', line 14 def numreads @numreads end |
#underlying ⇒ Object
Returns the value of attribute underlying.
15 16 17 |
# File 'lib/sensor.rb', line 15 def @underlying end |
Instance Method Details
#average(from, to) ⇒ Object
70 71 72 73 |
# File 'lib/sensor.rb', line 70 def average(from, to) return @mock_opts[:average] if @mock_opts[:average] apply_offset @dbstore.average(@name, from, to) end |
#last_value ⇒ Object
85 86 87 88 |
# File 'lib/sensor.rb', line 85 def last_value return @mock_opts[:last_value] if @mock_opts[:last_value] apply_offset @dbstore.last_value(@name) end |
#maximum(from, to) ⇒ Object
80 81 82 83 |
# File 'lib/sensor.rb', line 80 def maximum(from, to) return @mock_opts[:maximum] if @mock_opts[:maximum] apply_offset @dbstore.maximum(@name, from, to) end |
#minimum(from, to) ⇒ Object
75 76 77 78 |
# File 'lib/sensor.rb', line 75 def minimum(from, to) return @mock_opts[:minimum] if @mock_opts[:minimum] apply_offset @dbstore.minimum(@name, from, to) end |
#mock_set(opts) ⇒ Object
95 96 97 |
# File 'lib/sensor.rb', line 95 def mock_set(opts) @mock_opts.merge!(opts) end |
#read ⇒ Object
52 53 54 |
# File 'lib/sensor.rb', line 52 def read real_read(false) end |
#read_uncached ⇒ Object
56 57 58 |
# File 'lib/sensor.rb', line 56 def read_uncached real_read(true) end |
#sensor_type ⇒ Object
48 49 50 |
# File 'lib/sensor.rb', line 48 def sensor_type @set_type || @underlying.sensor_type end |
#store_value ⇒ Object
90 91 92 93 |
# File 'lib/sensor.rb', line 90 def store_value value = real_read(true,false) @dbstore.write(@name, Time.now.utc.to_i, value) if value end |
#write(value) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/sensor.rb', line 60 def write(value) if @mock_opts[:value] @mock_opts[:value] = value else ret = @underlying.write(value) store_value ret end end |
#writeable? ⇒ Boolean
44 45 46 |
# File 'lib/sensor.rb', line 44 def writeable? @underlying.writeable? end |