41
41
import time
42
42
from adafruit_bus_device import i2c_device
43
43
44
+ try :
45
+ from typing import Tuple
46
+ from busio import I2C
47
+ except ImportError :
48
+ pass
44
49
45
50
# include "Arduino.h"
46
51
# include <Adafruit_I2CDevice.h>
@@ -113,7 +118,7 @@ class SHTC3:
113
118
114
119
"""
115
120
116
- def __init__ (self , i2c_bus ) :
121
+ def __init__ (self , i2c_bus : I2C ) -> None :
117
122
self .i2c_device = i2c_device .I2CDevice (i2c_bus , _SHTC3_DEFAULT_ADDR )
118
123
119
124
self ._buffer = bytearray (6 )
@@ -124,15 +129,15 @@ def __init__(self, i2c_bus):
124
129
if self ._chip_id != _SHTC3_CHIP_ID :
125
130
raise RuntimeError ("Failed to find an SHTC3 sensor - check your wiring!" )
126
131
127
- def _write_command (self , command ) :
132
+ def _write_command (self , command : int ) -> None :
128
133
"""helper function to write a command to the i2c device"""
129
134
self ._buffer [0 ] = command >> 8
130
135
self ._buffer [1 ] = command & 0xFF
131
136
132
137
with self .i2c_device as i2c :
133
138
i2c .write (self ._buffer , start = 0 , end = 2 )
134
139
135
- def _get_chip_id (self ): # readCommand(SHTC3_READID, data, 3);
140
+ def _get_chip_id (self ) -> int : # readCommand(SHTC3_READID, data, 3);
136
141
"""Determines the chip id of the sensor"""
137
142
self ._write_command (_SHTC3_READID )
138
143
time .sleep (0.001 )
@@ -141,7 +146,7 @@ def _get_chip_id(self): # readCommand(SHTC3_READID, data, 3);
141
146
142
147
return unpack_from (">H" , self ._buffer )[0 ] & 0x083F
143
148
144
- def reset (self ):
149
+ def reset (self ) -> None :
145
150
"""Perform a soft reset of the sensor, resetting all settings to their power-on defaults"""
146
151
self .sleeping = False
147
152
try :
@@ -153,12 +158,12 @@ def reset(self):
153
158
time .sleep (0.001 )
154
159
155
160
@property
156
- def sleeping (self ):
161
+ def sleeping (self ) -> bool :
157
162
"""Determines the sleep state of the sensor"""
158
163
return self ._cached_sleep
159
164
160
165
@sleeping .setter
161
- def sleeping (self , sleep_enabled ) :
166
+ def sleeping (self , sleep_enabled : bool ) -> None :
162
167
if sleep_enabled :
163
168
self ._write_command (_SHTC3_SLEEP )
164
169
else :
@@ -169,26 +174,26 @@ def sleeping(self, sleep_enabled):
169
174
# lowPowerMode(bool readmode) { _lpMode = readmode
170
175
171
176
@property
172
- def low_power (self ):
177
+ def low_power (self ) -> bool :
173
178
"""Enables the less accurate low power mode, trading accuracy for power consumption"""
174
179
return self ._low_power
175
180
176
181
@low_power .setter
177
- def low_power (self , low_power_enabled ) :
182
+ def low_power (self , low_power_enabled : bool ) -> None :
178
183
self ._low_power = low_power_enabled
179
184
180
185
@property
181
- def relative_humidity (self ):
186
+ def relative_humidity (self ) -> float :
182
187
"""The current relative humidity in % rH. This is a value from 0-100%."""
183
188
return self .measurements [1 ]
184
189
185
190
@property
186
- def temperature (self ):
191
+ def temperature (self ) -> float :
187
192
"""The current temperature in degrees Celsius"""
188
193
return self .measurements [0 ]
189
194
190
195
@property
191
- def measurements (self ):
196
+ def measurements (self ) -> Tuple [ float , float ] :
192
197
"""both `temperature` and `relative_humidity`, read simultaneously"""
193
198
194
199
self .sleeping = False
@@ -239,7 +244,7 @@ def measurements(self):
239
244
# Test data [0xBE, 0xEF] should yield 0x92
240
245
241
246
@staticmethod
242
- def _crc8 (buffer ) :
247
+ def _crc8 (buffer : bytearray ) -> int :
243
248
"""verify the crc8 checksum"""
244
249
crc = 0xFF
245
250
for byte in buffer :
0 commit comments