rpi-dht 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/rpi/dht/base.rb +20 -18
- data/lib/rpi/dht/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0a69dfa6fd94bf7b56d6f66f5973b05b61abbe62cbf0661f18b5d2f59ca59c4
|
4
|
+
data.tar.gz: ab93cdc389917a0324393ef7b31d8a77e0eaea99fc18e06728c19257aeab85b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27dfb4cbe157a5225a271af035ed60a22b20d6302cd2a391a0047e232198ccaeb257d88c79d9bb5baf166408803969b5e5d9e949d54e61af0d99db2b3d63bede
|
7
|
+
data.tar.gz: 13fece35fa376964d948a4869dfb8e6bae18a01e20213493f18d984da4acf59c323aacfbef8f8331098fbcf3e7083406276d59d01ee1883ac8a0eae869456915
|
data/Gemfile.lock
CHANGED
data/lib/rpi/dht/base.rb
CHANGED
@@ -25,6 +25,7 @@ module RPi
|
|
25
25
|
tries.to_i.times do
|
26
26
|
value = ignore_exception { read!(pin) }
|
27
27
|
return value if value.is_a?(Hash)
|
28
|
+
sleep 0.1
|
28
29
|
end
|
29
30
|
|
30
31
|
nil
|
@@ -100,38 +101,39 @@ module RPi
|
|
100
101
|
# ...
|
101
102
|
# ...
|
102
103
|
|
103
|
-
# end_part (useless)
|
104
|
+
# end_part (useless), but it's an indicator that 40 pairs before this is the data
|
104
105
|
# after data, it ends with short period of falses then eternal trues
|
105
106
|
# [false, false, false, ...]
|
106
107
|
# [true, true, true, true, true, true, true, true, true, ...]
|
107
|
-
|
108
|
+
|
109
|
+
# take last 82 elements and make pairs
|
110
|
+
pair = 2
|
111
|
+
end_part_pair = pair
|
112
|
+
*low_high_pairs, end_part =
|
113
|
+
break_by_high_or_low.last(VALID_BYTE_SIZE * BITS_IN_BYTE * pair + end_part_pair)
|
114
|
+
.each_slice(2).to_a
|
108
115
|
|
109
116
|
# https://i.gyazo.com/baba7ce475e945c732491a6afc9e4b9a.png
|
110
117
|
# low_high_pairs = [
|
111
118
|
# ture / false array pair = 1bit
|
112
119
|
# 8elements of them = 1byte worth of data
|
113
120
|
# [
|
114
|
-
# [[
|
115
|
-
# [[
|
116
|
-
# [[
|
117
|
-
# [[
|
118
|
-
# [[
|
119
|
-
# [[
|
120
|
-
# [[
|
121
|
-
# [[
|
121
|
+
# [[false, false ...], [true, true ...]], 1
|
122
|
+
# [[false, false ...], [true, true ...]], 2
|
123
|
+
# [[false, false ...], [true, true ...]], 3
|
124
|
+
# [[false, false ...], [true, true ...]], 4
|
125
|
+
# [[false, false ...], [true, true ...]], 5
|
126
|
+
# [[false, false ...], [true, true ...]], 6
|
127
|
+
# [[false, false ...], [true, true ...]], 7
|
128
|
+
# [[false, false ...], [true, true ...]], 8
|
122
129
|
# ]
|
123
130
|
|
124
131
|
# ...
|
125
132
|
# total of 5 bytes
|
126
133
|
# ]
|
127
134
|
|
128
|
-
response_signal_part_chopped_off =
|
129
|
-
low_high_pairs.each_slice(8).collect(&:reverse).to_a.reverse.last(
|
130
|
-
VALID_BYTE_SIZE
|
131
|
-
)
|
132
|
-
|
133
135
|
valid_bytes =
|
134
|
-
|
136
|
+
low_high_pairs.each_slice(8).to_a.select do |pair|
|
135
137
|
pair.all? { |x| x.is_a?(Array) }
|
136
138
|
end
|
137
139
|
|
@@ -157,13 +159,13 @@ module RPi
|
|
157
159
|
# [false, false, false, ...],
|
158
160
|
# ...
|
159
161
|
# ]
|
160
|
-
all_falses = valid_bytes.collect { |byte| byte.collect(&:
|
162
|
+
all_falses = valid_bytes.collect { |byte| byte.collect(&:first) }.flatten(1)
|
161
163
|
average_50us_false_size = all_falses.sum(&:size) / all_falses.size.to_f
|
162
164
|
|
163
165
|
# https://i.gyazo.com/085693e497f9105bc66392d05112e0d3.png
|
164
166
|
@byte_strings =
|
165
167
|
valid_bytes.collect do |byte|
|
166
|
-
byte.collect { |
|
168
|
+
byte.collect { |_, trues| average_50us_false_size <= trues.size ? 1 : 0 }.join
|
167
169
|
end
|
168
170
|
end
|
169
171
|
|
data/lib/rpi/dht/version.rb
CHANGED