boneIO 0.8.0.dev3__tar.gz → 0.8.0.dev5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/PKG-INFO +1 -1
  2. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/bonecli.py +6 -6
  3. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/const.py +1 -2
  4. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/cwt.json +4 -1
  5. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/modbuscli.py +14 -6
  6. boneIO-0.8.0.dev5/boneio/modbus/r4dcb08.json +91 -0
  7. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/oled.py +18 -6
  8. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/schema.yaml +1 -0
  9. boneIO-0.8.0.dev5/boneio/version.py +2 -0
  10. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/pyproject.toml +1 -1
  11. boneIO-0.8.0.dev3/boneio/modbus/r4dcb08.json +0 -76
  12. boneIO-0.8.0.dev3/boneio/version.py +0 -2
  13. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/LICENSE +0 -0
  14. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/README.md +0 -0
  15. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/__init__.py +0 -0
  16. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/cover.py +0 -0
  17. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/__init__.py +0 -0
  18. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/adc.yaml +0 -0
  19. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/binary_sensor.yaml +0 -0
  20. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/config.yaml +0 -0
  21. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/cover.yaml +0 -0
  22. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/event.yaml +0 -0
  23. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/event_all.yaml +0 -0
  24. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/led32x4A.yaml +0 -0
  25. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/output24x16A.yaml +0 -0
  26. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/output24x16A_v0.3.yaml +0 -0
  27. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/example_config/output32x5A.yaml +0 -0
  28. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/fonts/danube__.ttf +0 -0
  29. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/group/__init__.py +0 -0
  30. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/group/output.py +0 -0
  31. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/__init__.py +0 -0
  32. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/async_updater.py +0 -0
  33. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/click_timer.py +0 -0
  34. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/config.py +0 -0
  35. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/events.py +0 -0
  36. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/exceptions.py +0 -0
  37. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/filter.py +0 -0
  38. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/gpio.py +0 -0
  39. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/ha_discovery.py +0 -0
  40. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/loader.py +0 -0
  41. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/logger.py +0 -0
  42. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/mqtt.py +0 -0
  43. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/oled.py +0 -0
  44. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/onewire/W1ThermSensor.py +0 -0
  45. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/onewire/__init__.py +0 -0
  46. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/onewire/ds2482.py +0 -0
  47. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/onewire/onewire.py +0 -0
  48. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/pcf8575.py +0 -0
  49. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/queue.py +0 -0
  50. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/sensor/ina_219_smbus.py +0 -0
  51. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/state_manager.py +0 -0
  52. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/stats.py +0 -0
  53. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/timeperiod.py +0 -0
  54. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/util.py +0 -0
  55. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/helper/yaml_util.py +0 -0
  56. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/input/__init__.py +0 -0
  57. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/input/gpio.py +0 -0
  58. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/input/gpio_new.py +0 -0
  59. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/manager.py +0 -0
  60. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/__init__.py +0 -0
  61. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/client.py +0 -0
  62. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/dts1964_3f.json +0 -0
  63. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/orno-or-we-517.json +0 -0
  64. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/pt100.json +0 -0
  65. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/sdm120.json +0 -0
  66. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/sdm630.json +0 -0
  67. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/sensor.py +0 -0
  68. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/socomec_e23.json +0 -0
  69. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/sofar.json +0 -0
  70. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/modbus/utils.py +0 -0
  71. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/mqtt_client.py +0 -0
  72. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/__init__.py +0 -0
  73. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/basic.py +0 -0
  74. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/gpio.py +0 -0
  75. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/mcp.py +0 -0
  76. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/pca.py +0 -0
  77. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/relay/pcf.py +0 -0
  78. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/runner.py +0 -0
  79. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/actions.yaml +0 -0
  80. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/actions_sensor.yaml +0 -0
  81. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/actions_switch.yaml +0 -0
  82. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/filters.yaml +0 -0
  83. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/filters_adc.yaml +0 -0
  84. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/id.yaml +0 -0
  85. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/temp_unit.yaml +0 -0
  86. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/schema/update_interval.yaml +0 -0
  87. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/__init__.py +0 -0
  88. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/adc.py +0 -0
  89. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/gpio.py +0 -0
  90. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/gpio_new.py +0 -0
  91. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/ina219.py +0 -0
  92. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/temp/__init__.py +0 -0
  93. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/temp/dallas.py +0 -0
  94. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/temp/lm75.py +0 -0
  95. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/boneio/sensor/temp/mcp9808.py +0 -0
  96. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/tests/32_5_config.yaml +0 -0
  97. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/tests/bandit.yaml +0 -0
  98. {boneIO-0.8.0.dev3 → boneIO-0.8.0.dev5}/tests/relay_32_5.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: boneIO
3
- Version: 0.8.0.dev3
3
+ Version: 0.8.0.dev5
4
4
  Summary: Python App for BoneIO
5
5
  License: GNU General Public License v3.0
6
6
  Author-email: Paweł Szafer <pszafer@gmail.com>
@@ -113,7 +113,7 @@ def get_arguments() -> argparse.Namespace:
113
113
  modbus_parser.add_argument(
114
114
  "--bytesize",
115
115
  type=int,
116
- required=True,
116
+ required=False,
117
117
  default=8,
118
118
  help="Bytesize",
119
119
  )
@@ -121,7 +121,7 @@ def get_arguments() -> argparse.Namespace:
121
121
  modbus_parser.add_argument(
122
122
  "--stopbits",
123
123
  type=int,
124
- required=True,
124
+ required=False,
125
125
  default=1,
126
126
  help="stopbits",
127
127
  )
@@ -131,7 +131,7 @@ def get_arguments() -> argparse.Namespace:
131
131
  type=str,
132
132
  choices=["P", "E", "N"],
133
133
  default="N",
134
- required=True,
134
+ required=False,
135
135
  help="Parity",
136
136
  )
137
137
 
@@ -142,7 +142,7 @@ def get_arguments() -> argparse.Namespace:
142
142
  set_modbus_parser.add_argument(
143
143
  "--device",
144
144
  type=str,
145
- choices=["cwt"],
145
+ choices=["cwt", "r4dcb08"],
146
146
  help="Choose device to set modbus address/baudrate",
147
147
  required=True,
148
148
  )
@@ -156,8 +156,8 @@ def get_arguments() -> argparse.Namespace:
156
156
  set_modbus_parser_group.add_argument(
157
157
  "--new-baudrate",
158
158
  type=int,
159
- choices=[2400, 4800, 9600, 19200],
160
- help="Choose new baudrate to set",
159
+ choices=[1200, 2400, 4800, 9600, 19200],
160
+ help="Choose new baudrate to set. CWT doesn't work on 1200.",
161
161
  )
162
162
 
163
163
  get_modbus_parser = modbus_sub_parser.add_parser("get")
@@ -71,8 +71,7 @@ SHOW_HA = "show_in_ha"
71
71
  # OLED CONST
72
72
  OLED = "oled"
73
73
  FONTS = "fonts"
74
- OLED_PIN = ("",)
75
- "P9_41"
74
+ OLED_PIN = "P9_41"
76
75
  GIGABYTE = 1073741824
77
76
  MEGABYTE = 1048576
78
77
  WIDTH = 128
@@ -2,7 +2,10 @@
2
2
  "model": "CWT Temp and Humidity sensor",
3
3
  "set_base": {
4
4
  "set_address_address": 2000,
5
- "set_baudrate_address": 2001
5
+ "set_baudrate": {
6
+ "address": 2001,
7
+ "possible_baudrates": [2400, 4800, 9600, 19200]
8
+ }
6
9
  },
7
10
  "registers_base": [
8
11
  {
@@ -9,7 +9,7 @@ from .utils import REGISTERS_BASE, allowed_operations
9
9
  _LOGGER = logging.getLogger(__name__)
10
10
  SET_BASE = "set_base"
11
11
  SET_ADDRESS = "set_address_address"
12
- SET_BAUDRATE = "set_baudrate_address"
12
+ SET_BAUDRATE = "set_baudrate"
13
13
 
14
14
 
15
15
  class ModbusHelper:
@@ -76,20 +76,23 @@ class ModbusHelper:
76
76
  return False
77
77
  return True
78
78
 
79
- def set_connection_speed(self, new_baudrate: int):
80
- ind = self.baud_rates.index(new_baudrate)
79
+ def set_connection_speed(self, new_baudrate: int) -> int:
80
+ baudrate_model = self._model[SET_BAUDRATE]
81
+ ind = baudrate_model["possible_baudrates"].index(new_baudrate)
81
82
  if ind:
82
83
  result = self._modbus.client.write_register(
83
- address=self._model[SET_BAUDRATE],
84
+ address=baudrate_model["address"],
84
85
  value=ind,
85
86
  unit=self._device_address,
86
87
  )
87
88
  if result.isError():
88
89
  _LOGGER.error("Operation failed.")
90
+ return 1
89
91
  else:
90
92
  _LOGGER.info(
91
93
  "Operation succeeded. Now restart device by disconnecting it."
92
94
  )
95
+ return 0
93
96
 
94
97
  def set_new_address(self, new_address: int):
95
98
  if 0 < new_address < 253:
@@ -128,6 +131,9 @@ async def async_run_modbus_set(
128
131
  if not first_reg_base:
129
132
  return False
130
133
  first_record = first_reg_base.get(REGISTERS, [])[0]
134
+ _LOGGER.debug(
135
+ f"Connecting with params uart: {uart}, baudrate: {baudrate}, stopbits: {stopbits}, bytesize: {bytesize}, parity: {parity}."
136
+ )
131
137
  modbus_helper = ModbusHelper(
132
138
  device=device,
133
139
  uart=uart,
@@ -144,8 +150,7 @@ async def async_run_modbus_set(
144
150
  _LOGGER.error("Can't connect with sensor. Exiting")
145
151
  return 1
146
152
  if new_baudrate:
147
- modbus_helper.set_connection_speed(new_baudrate=new_baudrate)
148
- return 0
153
+ return modbus_helper.set_connection_speed(new_baudrate=new_baudrate)
149
154
  if new_address:
150
155
  modbus_helper.set_new_address(new_address=new_address)
151
156
  return 0
@@ -164,6 +169,9 @@ async def async_run_modbus_get(
164
169
  parity: str = "N",
165
170
  ):
166
171
  """Run Modbus Get Function."""
172
+ _LOGGER.debug(
173
+ f"Connecting with params uart: {uart}, baudrate: {baudrate}, stopbits: {stopbits}, bytesize: {bytesize}, parity: {parity}."
174
+ )
167
175
  _modbus = Modbus(
168
176
  uart=UARTS[uart],
169
177
  baudrate=baudrate,
@@ -0,0 +1,91 @@
1
+ {
2
+ "model": "R4DCB08",
3
+ "set_base": {
4
+ "set_address_address": 254,
5
+ "set_baudrate": {
6
+ "address": 255,
7
+ "possible_baudrates": [1200, 2400, 4800, 9600, 19200]
8
+ }
9
+ },
10
+ "registers_base": [
11
+ {
12
+ "base": 0,
13
+ "length": 16,
14
+ "register_type": "holding",
15
+ "registers": [
16
+ {
17
+ "name": "Temperature 1",
18
+ "address": 0,
19
+ "unit_of_measurement": "°C",
20
+ "state_class": "measurement",
21
+ "device_class": "temperature",
22
+ "value_type": "S_WORD",
23
+ "filters": [{ "multiply": 0.1 }]
24
+ },
25
+ {
26
+ "name": "Temperature 2",
27
+ "address": 1,
28
+ "unit_of_measurement": "°C",
29
+ "state_class": "measurement",
30
+ "device_class": "temperature",
31
+ "value_type": "S_WORD",
32
+ "filters": [{ "multiply": 0.1 }]
33
+ },
34
+ {
35
+ "name": "Temperature 3",
36
+ "address": 2,
37
+ "unit_of_measurement": "°C",
38
+ "state_class": "measurement",
39
+ "device_class": "temperature",
40
+ "value_type": "S_WORD",
41
+ "filters": [{ "multiply": 0.1 }]
42
+ },
43
+ {
44
+ "name": "Temperature 4",
45
+ "address": 3,
46
+ "unit_of_measurement": "°C",
47
+ "state_class": "measurement",
48
+ "device_class": "temperature",
49
+ "value_type": "S_WORD",
50
+ "filters": [{ "multiply": 0.1 }]
51
+ },
52
+ {
53
+ "name": "Temperature 5",
54
+ "address": 4,
55
+ "unit_of_measurement": "°C",
56
+ "state_class": "measurement",
57
+ "device_class": "temperature",
58
+ "value_type": "S_WORD",
59
+ "filters": [{ "multiply": 0.1 }]
60
+ },
61
+ {
62
+ "name": "Temperature 6",
63
+ "address": 5,
64
+ "unit_of_measurement": "°C",
65
+ "state_class": "measurement",
66
+ "device_class": "temperature",
67
+ "value_type": "S_WORD",
68
+ "filters": [{ "multiply": 0.1 }]
69
+ },
70
+ {
71
+ "name": "Temperature 7",
72
+ "address": 6,
73
+ "unit_of_measurement": "°C",
74
+ "state_class": "measurement",
75
+ "device_class": "temperature",
76
+ "value_type": "S_WORD",
77
+ "filters": [{ "multiply": 0.1 }]
78
+ },
79
+ {
80
+ "name": "Temperature 8",
81
+ "address": 7,
82
+ "unit_of_measurement": "°C",
83
+ "state_class": "measurement",
84
+ "device_class": "temperature",
85
+ "value_type": "S_WORD",
86
+ "filters": [{ "multiply": 0.1 }]
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ }
@@ -26,8 +26,7 @@ fonts = {
26
26
  "big": make_font("DejaVuSans.ttf", 12),
27
27
  "small": make_font("DejaVuSans.ttf", 9),
28
28
  "extraSmall": make_font("DejaVuSans.ttf", 7),
29
- "danube": make_font("danube__.ttf", 15, local=True)
30
-
29
+ "danube": make_font("danube__.ttf", 15, local=True),
31
30
  }
32
31
 
33
32
  # screen_order = [UPTIME, NETWORK, CPU, DISK, MEMORY, SWAP]
@@ -96,7 +95,9 @@ class Oled:
96
95
 
97
96
  def _sleeptime(self):
98
97
  with canvas(self._device) as draw:
99
- draw.rectangle(self._device.bounding_box, outline="black", fill="black")
98
+ draw.rectangle(
99
+ self._device.bounding_box, outline="black", fill="black"
100
+ )
100
101
  self._sleep = True
101
102
 
102
103
  def _draw_uptime(self, data: dict, draw: ImageDraw) -> None:
@@ -116,7 +117,12 @@ class Oled:
116
117
  def _draw_output(self, data: dict, draw: ImageDraw) -> None:
117
118
  "Draw outputs of GPIO/MCP relays."
118
119
  cols = cycle(OUTPUT_COLS)
119
- draw.text((1, 1), f"Relay {self._current_screen}", font=fonts["small"], fill=WHITE)
120
+ draw.text(
121
+ (1, 1),
122
+ f"Relay {self._current_screen}",
123
+ font=fonts["small"],
124
+ fill=WHITE,
125
+ )
120
126
  i = 0
121
127
  j = next(cols)
122
128
  for k in data:
@@ -124,7 +130,10 @@ class Oled:
124
130
  j = next(cols)
125
131
  i = 0
126
132
  draw.text(
127
- (j, OUTPUT_ROWS[i]), f"{shorten_name(k)} {data[k]}", font=fonts["extraSmall"], fill=WHITE
133
+ (j, OUTPUT_ROWS[i]),
134
+ f"{shorten_name(k)} {data[k]}",
135
+ font=fonts["extraSmall"],
136
+ fill=WHITE,
128
137
  )
129
138
  i += 1
130
139
 
@@ -133,7 +142,10 @@ class Oled:
133
142
  data = self._host_data.get(self._current_screen)
134
143
  if data:
135
144
  with canvas(self._device) as draw:
136
- if self._output_groups and self._current_screen in self._output_groups:
145
+ if (
146
+ self._output_groups
147
+ and self._current_screen in self._output_groups
148
+ ):
137
149
  self._draw_output(data, draw)
138
150
  elif self._current_screen == UPTIME:
139
151
  self._draw_uptime(data, draw)
@@ -123,6 +123,7 @@ modbus:
123
123
  stopbits:
124
124
  type: integer
125
125
  default: 1
126
+ allowed: [1, 2]
126
127
  bytesize:
127
128
  type: integer
128
129
  default: 8
@@ -0,0 +1,2 @@
1
+ # flake8: noqa
2
+ __version__ = "0.8.0dev5"
@@ -30,7 +30,7 @@ dependencies = [
30
30
  "Adafruit-BBIO>=1.2.0",
31
31
  ]
32
32
  requires-python = ">=3.7"
33
- version = "0.8.0.dev3"
33
+ version = "0.8.0.dev5"
34
34
 
35
35
  [project.license]
36
36
  text = "GNU General Public License v3.0"
@@ -1,76 +0,0 @@
1
- {
2
- "model": "R4DCB08",
3
- "registers_base": [
4
- {
5
- "base": 0,
6
- "length": 16,
7
- "register_type": "holding",
8
- "registers": [
9
- {
10
- "name": "Temperature 1",
11
- "address": 0,
12
- "unit_of_measurement": "°C",
13
- "state_class": "measurement",
14
- "device_class": "temperature",
15
- "return_type": "multiply0_1"
16
- },
17
- {
18
- "name": "Temperature 2",
19
- "address": 1,
20
- "unit_of_measurement": "°C",
21
- "state_class": "measurement",
22
- "device_class": "temperature",
23
- "return_type": "multiply0_1"
24
- },
25
- {
26
- "name": "Temperature 3",
27
- "address": 2,
28
- "unit_of_measurement": "°C",
29
- "state_class": "measurement",
30
- "device_class": "temperature",
31
- "return_type": "multiply0_1"
32
- },
33
- {
34
- "name": "Temperature 4",
35
- "address": 3,
36
- "unit_of_measurement": "°C",
37
- "state_class": "measurement",
38
- "device_class": "temperature",
39
- "return_type": "multiply0_1"
40
- },
41
- {
42
- "name": "Temperature 5",
43
- "address": 4,
44
- "unit_of_measurement": "°C",
45
- "state_class": "measurement",
46
- "device_class": "temperature",
47
- "return_type": "multiply0_1"
48
- },
49
- {
50
- "name": "Temperature 6",
51
- "address": 5,
52
- "unit_of_measurement": "°C",
53
- "state_class": "measurement",
54
- "device_class": "temperature",
55
- "return_type": "multiply0_1"
56
- },
57
- {
58
- "name": "Temperature 7",
59
- "address": 6,
60
- "unit_of_measurement": "°C",
61
- "state_class": "measurement",
62
- "device_class": "temperature",
63
- "return_type": "multiply0_1"
64
- },
65
- {
66
- "name": "Temperature 8",
67
- "address": 7,
68
- "unit_of_measurement": "°C",
69
- "state_class": "measurement",
70
- "device_class": "temperature",
71
- "return_type": "multiply0_1"
72
- }
73
- ]
74
- }
75
- ]
76
- }
@@ -1,2 +0,0 @@
1
- # flake8: noqa
2
- __version__ = "0.8.0dev3"
File without changes
File without changes
File without changes