Class: RuuviDecoder::C5Data
Overview
Constant Summary
collapse
- MANUFACTURER_ID =
0x0499
- DATA_LENGTH_BYTES =
18
- VERSION_TAG =
0xC5
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/c5_data.rb', line 11
def self.detect(raw_data)
raw_data.size == DATA_LENGTH_BYTES && raw_data[0] == VERSION_TAG
end
|
Instance Method Details
#battery_v ⇒ Object
47
48
49
50
51
52
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 47
def battery_v
return @battery_v if defined?(@battery_v)
@battery_v = decode_bitmasked_unsigned(raw_power_info >> 5, 0x07FF, offset: 1600, multiplier: 0.001,
invalid: 2047)
end
|
#humidity_pct ⇒ Object
60
61
62
63
64
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 60
def humidity_pct
return @humidity_pct if defined?(@humidity_pct)
@humidity_pct = decode_16_bits_unsigned(raw_data[3..4], multiplier: 0.0025, invalid: 65_535)
end
|
#inspect ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 72
def inspect
" <\#{self.class.name}\n temperature: \#{temperature_c} C,\n humidity: \#{humidity_pct} %,\n pressure: \#{pressure_hpa} hPa,\n battery: \#{battery_v} V,\n tx_power: \#{tx_power_dbm} dBm,\n movement_counter: \#{movement_counter},\n sequence_number: \#{sequence_number},\n mac_address: \#{mac_address}\n >\n INSPECT\nend\n".chomp
|
#mac_address ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 15
def mac_address
return @mac_address if defined?(@mac_address)
@mac_address =
begin
bytes = raw_data[12..17]
if bytes.all?(0xff)
nil
else
bytes.map { |b| format('%02x', b) }.join(':')
end
end
end
|
#movement_counter ⇒ Object
35
36
37
38
39
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 35
def movement_counter
return @movement_counter if defined?(@movement_counter)
@movement_counter = decode_16_bits_unsigned([0, raw_data[9]], multiplier: 1, invalid: 255)
end
|
#pressure_hpa ⇒ Object
54
55
56
57
58
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 54
def pressure_hpa
return @pressure_hpa if defined?(@pressure_hpa)
@pressure_hpa = decode_16_bits_unsigned(raw_data[5..6], offset: 50_000, invalid: 65_535, multiplier: 0.01)
end
|
#sequence_number ⇒ Object
29
30
31
32
33
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 29
def sequence_number
return @sequence_number if defined?(@sequence_number)
@sequence_number = decode_16_bits_unsigned(raw_data[10..11], multiplier: 1, invalid: 65_535)
end
|
#temperature_c ⇒ Object
66
67
68
69
70
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 66
def temperature_c
return @temperature_c if defined?(@temperature_c)
@temperature_c = decode_16_bits_signed(raw_data[1..2], multiplier: 0.005, invalid: 0x8000)
end
|
#tx_power_dbm ⇒ Object
41
42
43
44
45
|
# File 'lib/ruuvi_decoder/c5_data.rb', line 41
def tx_power_dbm
return @tx_power_dbm if defined?(@tx_power_dbm)
@tx_power_dbm = decode_bitmasked_unsigned(raw_power_info, 0x001F, offset: -20, multiplier: 2, invalid: 31)
end
|