@@ -184,46 +184,45 @@ def measure(self):
184
184
pulses = self ._get_pulses_bitbang ()
185
185
#print(len(pulses), "pulses:", [x for x in pulses])
186
186
187
- if len (pulses ) >= 80 :
188
- buf = array .array ('B' )
189
- for byte_start in range (0 , 80 , 16 ):
190
- buf .append (self ._pulses_to_binary (pulses , byte_start , byte_start + 16 ))
191
-
192
- if self ._dht11 :
193
- # humidity is 1 byte
194
- new_humidity = buf [0 ]
195
- # temperature is 1 byte
196
- new_temperature = buf [2 ]
197
- else :
198
- # humidity is 2 bytes
199
- new_humidity = ((buf [0 ]<< 8 ) | buf [1 ]) / 10
200
- # temperature is 2 bytes
201
- # MSB is sign, bits 0-14 are magnitude)
202
- raw_temperature = (((buf [2 ] & 0x7f )<< 8 ) | buf [3 ]) / 10
203
- # set sign
204
- if buf [2 ] & 0x80 :
205
- raw_temperature = - raw_temperature
206
- new_temperature = raw_temperature
207
- # calc checksum
208
- chk_sum = 0
209
- for b in buf [0 :4 ]:
210
- chk_sum += b
211
-
212
- # checksum is the last byte
213
- if chk_sum & 0xff != buf [4 ]:
214
- # check sum failed to validate
215
- raise RuntimeError ("Checksum did not validate. Try again." )
216
-
217
- if new_humidity < 0 or new_humidity > 100 :
218
- # We received unplausible data
219
- raise RuntimeError ("Received unplausible data. Try again." )
220
-
221
- elif len (pulses ) >= 10 :
187
+ if len (pulses ) < 10 :
188
+ # Probably a connection issue!
189
+ raise RuntimeError ("DHT sensor not found, check wiring" )
190
+
191
+ if len (pulses ) < 80 :
222
192
# We got *some* data just not 81 bits
223
193
raise RuntimeError ("A full buffer was not returned. Try again." )
194
+
195
+ buf = array .array ('B' )
196
+ for byte_start in range (0 , 80 , 16 ):
197
+ buf .append (self ._pulses_to_binary (pulses , byte_start , byte_start + 16 ))
198
+
199
+ if self ._dht11 :
200
+ # humidity is 1 byte
201
+ new_humidity = buf [0 ]
202
+ # temperature is 1 byte
203
+ new_temperature = buf [2 ]
224
204
else :
225
- # Probably a connection issue!
226
- raise RuntimeError ("DHT sensor not found, check wiring" )
205
+ # humidity is 2 bytes
206
+ new_humidity = ((buf [0 ]<< 8 ) | buf [1 ]) / 10
207
+ # temperature is 2 bytes
208
+ # MSB is sign, bits 0-14 are magnitude)
209
+ new_temperature = (((buf [2 ] & 0x7f )<< 8 ) | buf [3 ]) / 10
210
+ # set sign
211
+ if buf [2 ] & 0x80 :
212
+ new_temperature = - new_temperature
213
+ # calc checksum
214
+ chk_sum = 0
215
+ for b in buf [0 :4 ]:
216
+ chk_sum += b
217
+
218
+ # checksum is the last byte
219
+ if chk_sum & 0xff != buf [4 ]:
220
+ # check sum failed to validate
221
+ raise RuntimeError ("Checksum did not validate. Try again." )
222
+
223
+ if new_humidity < 0 or new_humidity > 100 :
224
+ # We received unplausible data
225
+ raise RuntimeError ("Received unplausible data. Try again." )
227
226
228
227
self ._temperature = new_temperature
229
228
self ._humidity = new_humidity
0 commit comments