Class: RuuviDecoder::V3Data
Overview
Constant Summary
collapse
- MANUFACTURER_ID =
0x0499
- DATA_LENGTH_BYTES =
14
- VERSION_TAG =
0x03
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from BaseData
#initialize
Class Method Details
.detect(raw_data) ⇒ Object
11
12
13
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 11
def self.detect(raw_data)
raw_data.size == DATA_LENGTH_BYTES && raw_data[0] == VERSION_TAG
end
|
Instance Method Details
#acceleration_x_g ⇒ Object
40
41
42
43
44
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 40
def acceleration_x_g
return @acceleration_x_g if defined?(@acceleration_x_g)
@acceleration_x_g = decode_16_bits_signed(raw_data[6..7], multiplier: 0.001)
end
|
#acceleration_y_g ⇒ Object
46
47
48
49
50
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 46
def acceleration_y_g
return @acceleration_y_g if defined?(@acceleration_y_g)
@acceleration_y_g = decode_16_bits_signed(raw_data[8..9], multiplier: 0.001)
end
|
#acceleration_z_g ⇒ Object
52
53
54
55
56
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 52
def acceleration_z_g
return @acceleration_z_g if defined?(@acceleration_z_g)
@acceleration_z_g = decode_16_bits_signed(raw_data[10..11], multiplier: 0.001)
end
|
#battery_v ⇒ Object
58
59
60
61
62
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 58
def battery_v
return @battery_v if defined?(@battery_v)
@battery_v = decode_16_bits_unsigned(raw_data[12..13], multiplier: 0.001)
end
|
#humidity_pct ⇒ Object
15
16
17
18
19
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 15
def humidity_pct
return @humidity_pct if defined?(@humidity_pct)
@humidity_pct = raw_data[1] * 0.5
end
|
#inspect ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 64
def inspect
<<~INSPECT.chomp
<#{self.class.name}
temperature: #{temperature_c} C,
humidity: #{humidity_pct} %,
pressure: #{pressure_hpa} hPa,
acceleration_x: #{acceleration_x_g} G,
acceleration_y: #{acceleration_y_g} G,
acceleration_z: #{acceleration_z_g} G,
battery: #{battery_v} V,
>
INSPECT
end
|
#pressure_hpa ⇒ Object
34
35
36
37
38
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 34
def pressure_hpa
return @pressure_hpa if defined?(@pressure_hpa)
@pressure_hpa = decode_16_bits_unsigned(raw_data[4..5], offset: 50_000, multiplier: 0.01)
end
|
#temperature_c ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/ruuvi_decoder/v3_data.rb', line 21
def temperature_c
return @temperature_c if defined?(@temperature_c)
sign = raw_data[2].nobits?(0x80) ? 1 : -1
decimal = raw_data[2] & 0x7F
return @temperature_c = nil if decimal > 127
fraction = raw_data[3] * 0.01
return @temperature_c = nil if raw_data[3] > 99
@temperature_c = sign * (decimal + fraction)
end
|