33
33
from adafruit_bus_device import i2c_device
34
34
from micropython import const
35
35
36
+ try :
37
+ from typing import Tuple
38
+ from busio import I2C
39
+ except ImportError :
40
+ pass
41
+
36
42
__version__ = "0.0.0+auto.0"
37
43
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_SHT4x.git"
38
44
@@ -46,7 +52,7 @@ class CV:
46
52
"""struct helper"""
47
53
48
54
@classmethod
49
- def add_values (cls , value_tuples ) :
55
+ def add_values (cls , value_tuples : Tuple [ str , int , str , float ]) -> None :
50
56
"""Add CV values to the class"""
51
57
cls .string = {}
52
58
cls .delay = {}
@@ -58,7 +64,7 @@ def add_values(cls, value_tuples):
58
64
cls .delay [value ] = delay
59
65
60
66
@classmethod
61
- def is_valid (cls , value ) :
67
+ def is_valid (cls , value : int ) -> bool :
62
68
"""Validate that a given value is a member"""
63
69
return value in cls .string
64
70
@@ -126,14 +132,14 @@ class SHT4x:
126
132
127
133
"""
128
134
129
- def __init__ (self , i2c_bus , address = _SHT4X_DEFAULT_ADDR ):
135
+ def __init__ (self , i2c_bus : I2C , address : int = _SHT4X_DEFAULT_ADDR ) -> None :
130
136
self .i2c_device = i2c_device .I2CDevice (i2c_bus , address )
131
137
self ._buffer = bytearray (6 )
132
138
self .reset ()
133
139
self ._mode = Mode .NOHEAT_HIGHPRECISION # pylint: disable=no-member
134
140
135
141
@property
136
- def serial_number (self ):
142
+ def serial_number (self ) -> int :
137
143
"""The unique 32-bit serial number"""
138
144
self ._buffer [0 ] = _SHT4X_READSERIAL
139
145
with self .i2c_device as i2c :
@@ -153,37 +159,37 @@ def serial_number(self):
153
159
serial = (ser1 [0 ] << 24 ) + (ser1 [1 ] << 16 ) + (ser2 [0 ] << 8 ) + ser2 [1 ]
154
160
return serial
155
161
156
- def reset (self ):
162
+ def reset (self ) -> None :
157
163
"""Perform a soft reset of the sensor, resetting all settings to their power-on defaults"""
158
164
self ._buffer [0 ] = _SHT4X_SOFTRESET
159
165
with self .i2c_device as i2c :
160
166
i2c .write (self ._buffer , end = 1 )
161
167
time .sleep (0.001 )
162
168
163
169
@property
164
- def mode (self ):
170
+ def mode (self ) -> int :
165
171
"""The current sensor reading mode (heater and precision)"""
166
172
return self ._mode
167
173
168
174
@mode .setter
169
- def mode (self , new_mode ) :
175
+ def mode (self , new_mode : int ) -> None :
170
176
171
177
if not Mode .is_valid (new_mode ):
172
178
raise AttributeError ("mode must be a Mode" )
173
179
self ._mode = new_mode
174
180
175
181
@property
176
- def relative_humidity (self ):
182
+ def relative_humidity (self ) -> float :
177
183
"""The current relative humidity in % rH. This is a value from 0-100%."""
178
184
return self .measurements [1 ]
179
185
180
186
@property
181
- def temperature (self ):
187
+ def temperature (self ) -> float :
182
188
"""The current temperature in degrees Celsius"""
183
189
return self .measurements [0 ]
184
190
185
191
@property
186
- def measurements (self ):
192
+ def measurements (self ) -> Tuple [ float , float ] :
187
193
"""both `temperature` and `relative_humidity`, read simultaneously"""
188
194
189
195
temperature = None
@@ -226,7 +232,7 @@ def measurements(self):
226
232
# Test data [0xBE, 0xEF] should yield 0x92
227
233
228
234
@staticmethod
229
- def _crc8 (buffer ):
235
+ def _crc8 (buffer ) -> int :
230
236
"""verify the crc8 checksum"""
231
237
crc = 0xFF
232
238
for byte in buffer :
0 commit comments