Class: PulseMeter::Visualize::Sensor

Inherits:
Object
  • Object
show all
Defined in:
lib/pulse-meter/visualize/sensor.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Sensor

Returns a new instance of Sensor.

Raises:

  • (ArgumentError)


7
8
9
10
11
# File 'lib/pulse-meter/visualize/sensor.rb', line 7

def initialize(args) 
  raise ArgumentError unless args.respond_to?('[]')
  @name = args[:sensor] or raise ArgumentError, ":sensor_name not specified"
  @color = args[:color]
end

Instance Attribute Details

#colorObject (readonly)

Returns the value of attribute color.



5
6
7
# File 'lib/pulse-meter/visualize/sensor.rb', line 5

def color
  @color
end

#nameObject (readonly)

Returns the value of attribute name.



4
5
6
# File 'lib/pulse-meter/visualize/sensor.rb', line 4

def name
  @name
end

Instance Method Details

#last_point_data(need_incomplete = false) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/pulse-meter/visualize/sensor.rb', line 29

def last_point_data(need_incomplete=false)
  res = {
      name: real_sensor.annotation,
      y: to_float(last_value(need_incomplete))
  }
  res[:color] = color if color
  res
end

#last_value(need_incomplete = false) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pulse-meter/visualize/sensor.rb', line 13

def last_value(need_incomplete=false)
  sensor = real_sensor

  sensor_data = if need_incomplete
    sensor.timeline(sensor.interval).first
  else
    sensor.timeline(sensor.interval * 2).first
  end

  if sensor_data.is_a?(PulseMeter::SensorData)
    sensor_data.value
  else
    nil
  end
end

#timeline_data(time_span, need_incomplete = false) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/pulse-meter/visualize/sensor.rb', line 38

def timeline_data(time_span, need_incomplete = false)
  sensor = real_sensor
  data = sensor.timeline(time_span).map{|sd| {x: sd.start_time.to_i*1000, y: to_float(sd.value)}}
  data.pop unless need_incomplete
  res = {
      name: sensor.annotation,
      data: data
  }
  res[:color] = color if color
  res
end