|
23 | 23 |
|
24 | 24 |
|
25 | 25 | class KMeterISOUnit:
|
| 26 | + CELSIUS = 0 |
| 27 | + FAHRENHEIT = 1 |
| 28 | + |
26 | 29 | def __init__(self, i2c: I2C | PAHUBUnit, address: int | list | tuple = KMETER_ADDR):
|
27 |
| - """! Kmeter Initialize Function |
28 |
| - addr: 1 ~ 127 |
29 |
| - """ |
| 30 | + #! Kmeter Initialize Function |
| 31 | + #! @param address: 0x08 ~ 0x77 |
30 | 32 | self.kmeter_i2c = i2c
|
31 |
| - if address >= 0x01 and address <= 0x7F: |
| 33 | + if address >= 0x08 and address <= 0x77: |
32 | 34 | self.unit_addr = address
|
33 | 35 | if self.unit_addr not in self.kmeter_i2c.scan():
|
34 | 36 | raise UnitError("Kmeter iso unit maybe not connect")
|
35 | 37 |
|
36 |
| - def get_kmeter_thermo(self, temp=0): |
37 |
| - """! get thermocouple temperature value.""" |
38 |
| - buff = self.kmeter_i2c.readfrom_mem(self.unit_addr, TEMP_CELSIUS_REG + (4 * temp), 4) |
| 38 | + def get_thermocouple_temperature(self, scale=CELSIUS) -> float: |
| 39 | + #! get thermocouple temperature value. |
| 40 | + buff = self.kmeter_i2c.readfrom_mem(self.unit_addr, TEMP_CELSIUS_REG + (4 * scale), 4) |
39 | 41 | return round((self.int_convert(buff) / 100), 2)
|
40 | 42 |
|
41 |
| - def get_kmeter_internal(self, temp=0): |
42 |
| - """! get internal temperature value.""" |
43 |
| - buff = self.kmeter_i2c.readfrom_mem(self.unit_addr, TEMP_INT_CELSIUS_REG + (4 * temp), 4) |
| 43 | + def get_internal_temperature(self, scale=CELSIUS) -> float: |
| 44 | + #! get internal temperature value. |
| 45 | + buff = self.kmeter_i2c.readfrom_mem(self.unit_addr, TEMP_INT_CELSIUS_REG + (4 * scale), 4) |
44 | 46 | return round(self.int_convert(buff) / 100, 2)
|
45 | 47 |
|
46 |
| - @property |
47 |
| - def get_data_available_status(self): |
48 |
| - """! get temperature measurement value is ready?""" |
| 48 | + def is_ready(self) -> bool: |
| 49 | + #! get temperature measurement value is ready? |
49 | 50 | status = self.kmeter_i2c.readfrom_mem(self.unit_addr, TEMP_READY_REG, 1)[0]
|
50 | 51 | return False if status else True
|
51 | 52 |
|
52 |
| - def get_kmeter_thermo_string(self, temp=0): |
53 |
| - """! get thermocouple temperature string value.""" |
| 53 | + def get_thermocouple_temperature_string(self, scale=CELSIUS) -> str: |
| 54 | + #! get thermocouple temperature string value. |
54 | 55 | return self.kmeter_i2c.readfrom_mem(
|
55 |
| - self.unit_addr, TEMP_STR_CELSIUS_REG + (temp * 0x10), 1 |
| 56 | + self.unit_addr, TEMP_STR_CELSIUS_REG + (scale * 0x10), 1 |
56 | 57 | ).decode() + str(
|
57 | 58 | float(
|
58 | 59 | self.kmeter_i2c.readfrom_mem(
|
59 |
| - self.unit_addr, TEMP_STR_CELSIUS_REG + (temp * 0x10), 8 |
| 60 | + self.unit_addr, TEMP_STR_CELSIUS_REG + (scale * 0x10), 8 |
60 | 61 | ).decode()
|
61 | 62 | )
|
62 | 63 | )
|
63 | 64 |
|
64 |
| - def get_kmeter_internal_string(self, temp=0): |
65 |
| - """! get internal temperature string value.""" |
| 65 | + def get_internal_temperature_string(self, scale=CELSIUS) -> str: |
| 66 | + #! get internal temperature string value. |
66 | 67 | return self.kmeter_i2c.readfrom_mem(
|
67 |
| - self.unit_addr, TEMP_INTSTR_CELSIUS_REG + (temp * 0x10), 1 |
| 68 | + self.unit_addr, TEMP_INTSTR_CELSIUS_REG + (scale * 0x10), 1 |
68 | 69 | ).decode() + str(
|
69 | 70 | float(
|
70 | 71 | self.kmeter_i2c.readfrom_mem(
|
71 |
| - self.unit_addr, TEMP_INTSTR_CELSIUS_REG + (temp * 0x10), 8 |
| 72 | + self.unit_addr, TEMP_INTSTR_CELSIUS_REG + (scale * 0x10), 8 |
72 | 73 | ).decode()
|
73 | 74 | )
|
74 | 75 | )
|
75 | 76 |
|
76 |
| - def get_device_spec(self, mode) -> int: |
77 |
| - """! Get device firmware version and i2c address. |
78 |
| - mode: 0xFE and 0xFF |
79 |
| - """ |
| 77 | + def get_device_info(self, mode) -> int: |
| 78 | + #! Get device firmware version and i2c address. |
| 79 | + #! @param mode: 0xFE and 0xFF |
80 | 80 | if mode >= FIRM_VER_REG and mode <= I2C_ADDR_REG:
|
81 | 81 | return self.kmeter_i2c.readfrom_mem(self.unit_addr, mode, 1)[0]
|
82 | 82 |
|
83 |
| - def set_i2c_address(self, addr) -> None: |
84 |
| - """! Set i2c address. |
85 |
| - addr: 1 to 127 |
86 |
| - """ |
87 |
| - if addr >= 0x01 and addr <= 0x7F: |
88 |
| - if addr != self.unit_addr: |
89 |
| - self.kmeter_i2c.writeto_mem(self.unit_addr, I2C_ADDR_REG, struct.pack("b", addr)) |
90 |
| - self.unit_addr = addr |
| 83 | + def set_i2c_address(self, address=0x66) -> None: |
| 84 | + #! Set i2c address. |
| 85 | + #! @param address: 0x08 ~ 0x77 |
| 86 | + if address >= 0x08 and address <= 0x77: |
| 87 | + if address != self.unit_addr: |
| 88 | + self.kmeter_i2c.writeto_mem( |
| 89 | + self.unit_addr, I2C_ADDR_REG, struct.pack("b", address) |
| 90 | + ) |
| 91 | + self.unit_addr = address |
91 | 92 | time.sleep_ms(200)
|
92 | 93 |
|
93 | 94 | def int_convert(self, value):
|
|
0 commit comments