boneIO 1.3.1__tar.gz → 1.3.1.dev1__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 (439) hide show
  1. {boneio-1.3.1/boneio.egg-info → boneio-1.3.1.dev1}/PKG-INFO +1 -1
  2. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/input.yaml +14 -0
  3. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/input.yaml +14 -0
  4. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/input.yaml +14 -0
  5. {boneio-1.3.1/boneio/boards/0.6 → boneio-1.3.1.dev1/boneio/boards/0.5}/input.yaml +12 -0
  6. {boneio-1.3.1/boneio/boards/0.7 → boneio-1.3.1.dev1/boneio/boards/0.6}/input.yaml +12 -0
  7. {boneio-1.3.1/boneio/boards/0.5 → boneio-1.3.1.dev1/boneio/boards/0.7}/input.yaml +12 -0
  8. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/input.yaml +12 -0
  9. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/cover/cover.py +44 -59
  10. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/cover/time_based.py +28 -25
  11. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/cover/venetian.py +80 -72
  12. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/group/output_group.py +3 -2
  13. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/irrigation/controller.py +2 -2
  14. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/output/basic.py +1 -3
  15. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/output/mcp.py +18 -10
  16. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/template/alarm_panel.py +3 -2
  17. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/template/gate_cover.py +25 -15
  18. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/template/thermostat.py +8 -7
  19. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/registration.py +28 -10
  20. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/migrations/v1_proxy_port.py +4 -3
  21. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/schema_converter.py +5 -4
  22. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/action_conditions.py +8 -2
  23. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/canopen.py +52 -18
  24. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/covers.py +1 -1
  25. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/inputs.py +6 -12
  26. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/irrigation.py +18 -20
  27. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/update.py +41 -39
  28. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/base.py +3 -3
  29. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/system/host_data.py +4 -2
  30. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/async_updater.py +50 -35
  31. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/util.py +2 -2
  32. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/display/early_oled.py +16 -22
  33. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/expanders/mcp23017.py +14 -12
  34. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/input/base.py +45 -55
  35. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/input/manager.py +85 -72
  36. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/bus.py +12 -8
  37. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/ina219.py +2 -4
  38. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/mcp9808.py +1 -1
  39. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/onewire/dallas.py +6 -4
  40. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/sensor/temperature/base.py +1 -1
  41. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/integration/homeassistant.py +0 -40
  42. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/actions.py +4 -8
  43. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/runner.py +2 -2
  44. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/cli.py +4 -2
  45. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/client.py +64 -64
  46. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/coordinator.py +23 -27
  47. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/base.py +3 -9
  48. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/derived/numeric.py +1 -3
  49. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/sensor/numeric.py +1 -3
  50. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/sensor/text.py +2 -6
  51. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/writeable/binary.py +1 -3
  52. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/writeable/numeric.py +1 -3
  53. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/__init__.py +0 -2
  54. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/state.py +1 -8
  55. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/schema.yaml +6 -8
  56. boneio-1.3.1.dev1/boneio/version.py +2 -0
  57. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/app.py +92 -36
  58. boneio-1.3.1/boneio/webui/frontend-dist/assets/ConfigEditor-wi_Mieo6.js → boneio-1.3.1.dev1/boneio/webui/frontend-dist/assets/ConfigEditor-DcU5XNy1.js +1 -1
  59. boneio-1.3.1/boneio/webui/frontend-dist/assets/index-C_7FDXG5.js → boneio-1.3.1.dev1/boneio/webui/frontend-dist/assets/index-BoLwm6vF.js +30 -30
  60. boneio-1.3.1/boneio/webui/frontend-dist/assets/useTranslation-BsWm27qn.js → boneio-1.3.1.dev1/boneio/webui/frontend-dist/assets/useTranslation-Dwuk-AFr.js +2 -2
  61. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/index.html +2 -2
  62. {boneio-1.3.1/boneio/webui → boneio-1.3.1.dev1/boneio/webui/frontend-dist}/schema/binary_sensor.schema.json +2 -11
  63. {boneio-1.3.1/boneio/webui → boneio-1.3.1.dev1/boneio/webui/frontend-dist}/schema/config.schema.json +4 -22
  64. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/event.schema.json +2 -11
  65. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/sw.js +1 -1
  66. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/caddy.py +4 -4
  67. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/can.py +16 -15
  68. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/config.py +0 -3
  69. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/outputs.py +1 -1
  70. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/timezone_sudoers.py +3 -2
  71. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/tools.py +4 -4
  72. {boneio-1.3.1/boneio/webui/frontend-dist → boneio-1.3.1.dev1/boneio/webui}/schema/binary_sensor.schema.json +2 -11
  73. {boneio-1.3.1/boneio/webui/frontend-dist → boneio-1.3.1.dev1/boneio/webui}/schema/config.schema.json +4 -22
  74. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/event.schema.json +2 -11
  75. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/services/logs.py +3 -2
  76. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/web_server.py +5 -9
  77. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/websocket_manager.py +13 -11
  78. {boneio-1.3.1 → boneio-1.3.1.dev1/boneio.egg-info}/PKG-INFO +1 -1
  79. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio.egg-info/SOURCES.txt +3 -3
  80. boneio-1.3.1/boneio/version.py +0 -2
  81. {boneio-1.3.1 → boneio-1.3.1.dev1}/LICENSE +0 -0
  82. {boneio-1.3.1 → boneio-1.3.1.dev1}/MANIFEST.in +0 -0
  83. {boneio-1.3.1 → boneio-1.3.1.dev1}/README.md +0 -0
  84. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/__init__.py +0 -0
  85. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/output_24_16.yaml +0 -0
  86. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/output_32_10.yaml +0 -0
  87. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/output_32_5.yaml +0 -0
  88. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/output_cover.yaml +0 -0
  89. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  90. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/output_24_16.yaml +0 -0
  91. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/output_32_10.yaml +0 -0
  92. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/output_32_5.yaml +0 -0
  93. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/output_cover.yaml +0 -0
  94. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  95. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/output_24_16.yaml +0 -0
  96. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/output_32_10.yaml +0 -0
  97. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/output_32_5.yaml +0 -0
  98. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/output_cover.yaml +0 -0
  99. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  100. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.5/output_24_16.yaml +0 -0
  101. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.5/output_32_10.yaml +0 -0
  102. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.5/output_cover.yaml +0 -0
  103. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  104. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.6/output_24_16.yaml +0 -0
  105. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.6/output_32_10.yaml +0 -0
  106. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.6/output_cover.yaml +0 -0
  107. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  108. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.7/output_24_16.yaml +0 -0
  109. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.7/output_32_10.yaml +0 -0
  110. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.7/output_48_4.yaml +0 -0
  111. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.7/output_cover.yaml +0 -0
  112. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  113. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/output_24_16.yaml +0 -0
  114. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/output_32_10.yaml +0 -0
  115. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/output_48_4.yaml +0 -0
  116. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/output_cover.yaml +0 -0
  117. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  118. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/bonecli.py +0 -0
  119. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/__init__.py +0 -0
  120. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/cover/__init__.py +0 -0
  121. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/group/__init__.py +0 -0
  122. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/input/__init__.py +0 -0
  123. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/input/binary_sensor.py +0 -0
  124. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/input/detectors.py +0 -0
  125. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/input/event.py +0 -0
  126. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/irrigation/__init__.py +0 -0
  127. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/irrigation/water_source.py +0 -0
  128. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/output/__init__.py +0 -0
  129. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/output/pca.py +0 -0
  130. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/output/pcf.py +0 -0
  131. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/sensor/__init__.py +0 -0
  132. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/sensor/virtual_energy.py +0 -0
  133. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/components/template/__init__.py +0 -0
  134. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/const.py +0 -0
  135. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/__init__.py +0 -0
  136. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/__init__.py +0 -0
  137. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/data/__init__.py +0 -0
  138. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/data/docker-compose-cloud.yaml +0 -0
  139. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/data/docker-compose.yaml +0 -0
  140. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
  141. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/cloud/secrets.py +0 -0
  142. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/__init__.py +0 -0
  143. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/config_helper.py +0 -0
  144. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/migrations/__init__.py +0 -0
  145. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/migrations/v2_transition.py +0 -0
  146. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/package-lock.json +0 -0
  147. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/package.json +0 -0
  148. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/config/yaml_util.py +0 -0
  149. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/discovery.py +0 -0
  150. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/events/__init__.py +0 -0
  151. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/events/bus.py +0 -0
  152. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/__init__.py +0 -0
  153. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/display.py +0 -0
  154. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/manager.py +0 -0
  155. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/modbus.py +0 -0
  156. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/outputs.py +0 -0
  157. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/remote.py +0 -0
  158. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/sensors.py +0 -0
  159. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/templates/__init__.py +0 -0
  160. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/templates/alarm.py +0 -0
  161. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/templates/gate_cover.py +0 -0
  162. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/templates/thermostat.py +0 -0
  163. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/manager/templates.py +0 -0
  164. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/__init__.py +0 -0
  165. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/basic.py +0 -0
  166. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/basic_mqtt.py +0 -0
  167. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/composite.py +0 -0
  168. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/local.py +0 -0
  169. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/lox.py +0 -0
  170. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/loxone.py +0 -0
  171. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/mqtt.py +0 -0
  172. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/messaging/queue.py +0 -0
  173. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/__init__.py +0 -0
  174. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/can.py +0 -0
  175. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/esphome.py +0 -0
  176. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/mqtt.py +0 -0
  177. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/remote/wled.py +0 -0
  178. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/sensor/__init__.py +0 -0
  179. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/sensor/base.py +0 -0
  180. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/sensor/system.py +0 -0
  181. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/state/__init__.py +0 -0
  182. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/state/manager.py +0 -0
  183. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/system/__init__.py +0 -0
  184. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/system/monitor.py +0 -0
  185. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/__init__.py +0 -0
  186. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/conditions.py +0 -0
  187. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/filter.py +0 -0
  188. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/font_util.py +0 -0
  189. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/logger.py +0 -0
  190. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/core/utils/timeperiod.py +0 -0
  191. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/adc.yaml +0 -0
  192. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  193. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/config.yaml +0 -0
  194. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/event.yaml +0 -0
  195. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/mqtt.yaml +0 -0
  196. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  197. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/adc.yaml +0 -0
  198. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  199. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/config.yaml +0 -0
  200. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/event.yaml +0 -0
  201. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/mqtt.yaml +0 -0
  202. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  203. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/adc.yaml +0 -0
  204. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
  205. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/config.yaml +0 -0
  206. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/event.yaml +0 -0
  207. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/mqtt.yaml +0 -0
  208. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/48x4/output48x4A.yaml +0 -0
  209. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/__init__.py +0 -0
  210. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/can_master.yaml +0 -0
  211. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/can_slave.yaml +0 -0
  212. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/adc.yaml +0 -0
  213. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  214. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/config.yaml +0 -0
  215. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/cover.yaml +0 -0
  216. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/event.yaml +0 -0
  217. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/mqtt.yaml +0 -0
  218. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover/outputCover.yaml +0 -0
  219. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/adc.yaml +0 -0
  220. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  221. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/config.yaml +0 -0
  222. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/cover.yaml +0 -0
  223. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/event.yaml +0 -0
  224. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  225. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  226. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/adc.yaml +0 -0
  227. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  228. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  229. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  230. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  231. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/event_all.yaml +0 -0
  232. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  233. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  234. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  235. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  236. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  237. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  238. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/exceptions.py +0 -0
  239. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/__init__.py +0 -0
  240. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/analog/__init__.py +0 -0
  241. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/analog/adc.py +0 -0
  242. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/__init__.py +0 -0
  243. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/bridge.py +0 -0
  244. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/client.py +0 -0
  245. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/interface.py +0 -0
  246. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/node.py +0 -0
  247. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/node_id.py +0 -0
  248. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/can/test_od.py +0 -0
  249. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/display/__init__.py +0 -0
  250. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  251. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/display/oled.py +0 -0
  252. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/__init__.py +0 -0
  253. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  254. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  255. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  256. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/gpio/input/__init__.py +0 -0
  257. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/__init__.py +0 -0
  258. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/ina219_driver.py +0 -0
  259. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/i2c/pct2075.py +0 -0
  260. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/onewire/__init__.py +0 -0
  261. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/onewire/bus.py +0 -0
  262. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/onewire/ds2482.py +0 -0
  263. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/sensor/__init__.py +0 -0
  264. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  265. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  266. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  267. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/integration/__init__.py +0 -0
  268. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/integration/interlock.py +0 -0
  269. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/integration/lox_template.py +0 -0
  270. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/__init__.py +0 -0
  271. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/MANIFEST.sha256 +0 -0
  272. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/docker/daemon.json +0 -0
  273. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
  274. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/docker/nodered/nginx/default.conf +0 -0
  275. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
  276. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/journald/journald.conf +0 -0
  277. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
  278. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/sudoers/boneio +0 -0
  279. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
  280. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/systemd/boneio.service +0 -0
  281. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
  282. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
  283. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
  284. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
  285. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
  286. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
  287. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/bootstrap/boneio-migrate +0 -0
  288. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/bootstrap/install-helper.sh +0 -0
  289. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
  290. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/versions/__init__.py +0 -0
  291. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
  292. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
  293. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
  294. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/__init__.py +0 -0
  295. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/__init__.py +0 -0
  296. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
  297. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
  298. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  299. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  300. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  301. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  302. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  303. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  304. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  305. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/inverters/sofar.json +0 -0
  306. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/inverters/thessla.json +0 -0
  307. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
  308. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/other/n4dsc08.json +0 -0
  309. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  310. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/other/wanas415.json +0 -0
  311. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
  312. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/cwt.json +0 -0
  313. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/dts1964_3f.json +0 -0
  314. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  315. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/gdfs.json +0 -0
  316. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/gdfx.json +0 -0
  317. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  318. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/pt100.json +0 -0
  319. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/sht20.json +0 -0
  320. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/devices/sensors/sht30.json +0 -0
  321. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/__init__.py +0 -0
  322. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/derived/__init__.py +0 -0
  323. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/derived/select.py +0 -0
  324. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/derived/switch.py +0 -0
  325. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/derived/text.py +0 -0
  326. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/sensor/__init__.py +0 -0
  327. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/sensor/binary.py +0 -0
  328. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/entities/writeable/__init__.py +0 -0
  329. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/modbus/utils.py +0 -0
  330. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/actions.py +0 -0
  331. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/events.py +0 -0
  332. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/files.py +0 -0
  333. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/logs.py +0 -0
  334. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/models/mqtt.py +0 -0
  335. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/runner.py +0 -0
  336. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/actions.yaml +0 -0
  337. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/actions_sensor.yaml +0 -0
  338. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/actions_switch.yaml +0 -0
  339. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/condition.yaml +0 -0
  340. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/filters.yaml +0 -0
  341. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/filters_adc.yaml +0 -0
  342. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/id.yaml +0 -0
  343. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/remote_devices.yaml +0 -0
  344. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/temp_unit.yaml +0 -0
  345. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/schema/update_interval.yaml +0 -0
  346. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/action_validation.py +0 -0
  347. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/aiConfig-LL3nlemJ.js +0 -0
  348. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/aiWizardPrompt-CmumVq54.js +0 -0
  349. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/codicon-DCmgc-ay.ttf +0 -0
  350. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/editor.worker-BVjSvWeP.js +0 -0
  351. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/index-C_S5rhz7.css +0 -0
  352. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/json.worker-CqOJL4FD.js +0 -0
  353. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/monaco-B9WiNxkw.css +0 -0
  354. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/monaco-CAZoGZNF.js +0 -0
  355. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/rolldown-runtime-Dw2cE7zH.js +0 -0
  356. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/vendor-BD5Ml_Uz.js +0 -0
  357. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-BJd1pjeW.js +0 -0
  358. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/assets/yaml.worker-nZQZSRZ7.js +0 -0
  359. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/boneio-192.png +0 -0
  360. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/boneio-512.png +0 -0
  361. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/boneio.svg +0 -0
  362. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  363. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
  364. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
  365. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
  366. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
  367. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
  368. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
  369. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
  370. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
  371. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
  372. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
  373. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
  374. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
  375. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
  376. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
  377. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
  378. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
  379. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
  380. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
  381. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
  382. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
  383. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
  384. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
  385. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
  386. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
  387. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
  388. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
  389. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
  390. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/frontend-dist/workbox-4eca85ba.js +0 -0
  391. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/middleware/__init__.py +0 -0
  392. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/middleware/auth.py +0 -0
  393. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/__init__.py +1 -1
  394. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/auth.py +0 -0
  395. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/covers.py +0 -0
  396. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/irrigation.py +0 -0
  397. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/migrations.py +0 -0
  398. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/modbus.py +0 -0
  399. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/remote_devices.py +0 -0
  400. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/sensors.py +0 -0
  401. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/system.py +0 -0
  402. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/templates.py +0 -0
  403. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/routes/update.py +0 -0
  404. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/adc.schema.json +0 -0
  405. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/areas.schema.json +0 -0
  406. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/boneio.schema.json +0 -0
  407. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/can.schema.json +0 -0
  408. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/cover.schema.json +0 -0
  409. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/dallas.schema.json +0 -0
  410. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/ds2482.schema.json +0 -0
  411. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/ina219.schema.json +0 -0
  412. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/irrigation.schema.json +0 -0
  413. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/lm75.schema.json +0 -0
  414. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/logger.schema.json +0 -0
  415. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/lox_udp.schema.json +0 -0
  416. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/mcp23017.schema.json +0 -0
  417. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/mcp9808.schema.json +0 -0
  418. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/modbus.schema.json +0 -0
  419. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  420. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/mqtt.schema.json +0 -0
  421. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/oled.schema.json +0 -0
  422. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/output.schema.json +0 -0
  423. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/output_group.schema.json +0 -0
  424. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/pca9685.schema.json +0 -0
  425. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/pcf8575.schema.json +0 -0
  426. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/remote_devices.schema.json +0 -0
  427. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/sensor.schema.json +0 -0
  428. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/template.schema.json +0 -0
  429. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  430. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/schema/web.schema.json +0 -0
  431. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio/webui/services/__init__.py +0 -0
  432. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio.egg-info/dependency_links.txt +0 -0
  433. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio.egg-info/entry_points.txt +0 -0
  434. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio.egg-info/requires.txt +0 -0
  435. {boneio-1.3.1 → boneio-1.3.1.dev1}/boneio.egg-info/top_level.txt +0 -0
  436. {boneio-1.3.1 → boneio-1.3.1.dev1}/pyproject.toml +0 -0
  437. {boneio-1.3.1 → boneio-1.3.1.dev1}/setup.cfg +0 -0
  438. {boneio-1.3.1 → boneio-1.3.1.dev1}/setup.py +0 -0
  439. {boneio-1.3.1 → boneio-1.3.1.dev1}/tests/test_py313_compatibility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.3.1
3
+ Version: 1.3.1.dev1
4
4
  Summary: Python App for BoneIO
5
5
  Author-email: Paweł Szafer <pszafer@gmail.com>
6
6
  License: GNU General Public License v3.0
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -53,20 +59,28 @@ input_mapping:
53
59
  pin: P9_13
54
60
  in_27:
55
61
  pin: P9_12
62
+ gpio_mode: gpio_pu
56
63
  in_28:
57
64
  pin: P9_11
65
+ gpio_mode: gpio_pu
58
66
  in_29:
59
67
  pin: P8_36
68
+ gpio_mode: gpio_pu
60
69
  in_30:
61
70
  pin: P8_35
71
+ gpio_mode: gpio_pu
62
72
  in_31:
63
73
  pin: P8_34
74
+ gpio_mode: gpio_pu
64
75
  in_32:
65
76
  pin: P8_33
77
+ gpio_mode: gpio_pu
66
78
  in_33:
67
79
  pin: P8_32
80
+ gpio_mode: gpio_pu
68
81
  in_34:
69
82
  pin: P8_31
83
+ gpio_mode: gpio_pu
70
84
  in_35:
71
85
  pin: P8_30
72
86
  in_36:
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -53,20 +59,28 @@ input_mapping:
53
59
  pin: P9_13
54
60
  in_27:
55
61
  pin: P9_12
62
+ gpio_mode: gpio_pu
56
63
  in_28:
57
64
  pin: P9_11
65
+ gpio_mode: gpio_pu
58
66
  in_29:
59
67
  pin: P8_36
68
+ gpio_mode: gpio_pu
60
69
  in_30:
61
70
  pin: P8_35
71
+ gpio_mode: gpio_pu
62
72
  in_31:
63
73
  pin: P8_34
74
+ gpio_mode: gpio_pu
64
75
  in_32:
65
76
  pin: P8_33
77
+ gpio_mode: gpio_pu
66
78
  in_33:
67
79
  pin: P8_32
80
+ gpio_mode: gpio_pu
68
81
  in_34:
69
82
  pin: P8_31
83
+ gpio_mode: gpio_pu
70
84
  in_35:
71
85
  pin: P8_30
72
86
  in_36:
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -53,20 +59,28 @@ input_mapping:
53
59
  pin: P9_13
54
60
  in_27:
55
61
  pin: P9_12
62
+ gpio_mode: gpio_pu
56
63
  in_28:
57
64
  pin: P9_11
65
+ gpio_mode: gpio_pu
58
66
  in_29:
59
67
  pin: P8_36
68
+ gpio_mode: gpio_pu
60
69
  in_30:
61
70
  pin: P8_35
71
+ gpio_mode: gpio_pu
62
72
  in_31:
63
73
  pin: P8_34
74
+ gpio_mode: gpio_pu
64
75
  in_32:
65
76
  pin: P8_33
77
+ gpio_mode: gpio_pu
66
78
  in_33:
67
79
  pin: P8_32
80
+ gpio_mode: gpio_pu
68
81
  in_34:
69
82
  pin: P8_31
83
+ gpio_mode: gpio_pu
70
84
  in_35:
71
85
  pin: P8_30
72
86
  in_36:
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -57,16 +63,22 @@ input_mapping:
57
63
  pin: P8_9
58
64
  in_29:
59
65
  pin: P8_36
66
+ gpio_mode: gpio_pu
60
67
  in_30:
61
68
  pin: P8_35
69
+ gpio_mode: gpio_pu
62
70
  in_31:
63
71
  pin: P8_34
72
+ gpio_mode: gpio_pu
64
73
  in_32:
65
74
  pin: P8_33
75
+ gpio_mode: gpio_pu
66
76
  in_33:
67
77
  pin: P8_32
78
+ gpio_mode: gpio_pu
68
79
  in_34:
69
80
  pin: P8_31
81
+ gpio_mode: gpio_pu
70
82
  in_35:
71
83
  pin: P8_30
72
84
  in_36:
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -57,16 +63,22 @@ input_mapping:
57
63
  pin: P8_9
58
64
  in_29:
59
65
  pin: P8_36
66
+ gpio_mode: gpio_pu
60
67
  in_30:
61
68
  pin: P8_35
69
+ gpio_mode: gpio_pu
62
70
  in_31:
63
71
  pin: P8_34
72
+ gpio_mode: gpio_pu
64
73
  in_32:
65
74
  pin: P8_33
75
+ gpio_mode: gpio_pu
66
76
  in_33:
67
77
  pin: P8_32
78
+ gpio_mode: gpio_pu
68
79
  in_34:
69
80
  pin: P8_31
81
+ gpio_mode: gpio_pu
70
82
  in_35:
71
83
  pin: P8_30
72
84
  in_36:
@@ -1,8 +1,10 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  in_02:
5
6
  pin: P8_38
7
+ gpio_mode: gpio_pu
6
8
  in_03:
7
9
  pin: P8_39
8
10
  in_04:
@@ -17,8 +19,10 @@ input_mapping:
17
19
  pin: P8_44
18
20
  in_09:
19
21
  pin: P8_45
22
+ gpio_mode: gpio_pu
20
23
  in_10:
21
24
  pin: P8_46
25
+ gpio_mode: gpio_pu
22
26
  in_11:
23
27
  pin: P9_42
24
28
  in_12:
@@ -37,8 +41,10 @@ input_mapping:
37
41
  pin: P9_23
38
42
  in_19:
39
43
  pin: P9_22
44
+ gpio_mode: gpio_pu
40
45
  in_20:
41
46
  pin: P9_21
47
+ gpio_mode: gpio_pu
42
48
  in_21:
43
49
  pin: P9_18
44
50
  in_22:
@@ -57,16 +63,22 @@ input_mapping:
57
63
  pin: P8_9
58
64
  in_29:
59
65
  pin: P8_36
66
+ gpio_mode: gpio_pu
60
67
  in_30:
61
68
  pin: P8_35
69
+ gpio_mode: gpio_pu
62
70
  in_31:
63
71
  pin: P8_34
72
+ gpio_mode: gpio_pu
64
73
  in_32:
65
74
  pin: P8_33
75
+ gpio_mode: gpio_pu
66
76
  in_33:
67
77
  pin: P8_32
78
+ gpio_mode: gpio_pu
68
79
  in_34:
69
80
  pin: P8_31
81
+ gpio_mode: gpio_pu
70
82
  in_35:
71
83
  pin: P8_30
72
84
  in_36:
@@ -1,10 +1,12 @@
1
1
  input_mapping:
2
2
  in_01:
3
3
  pin: P8_37
4
+ gpio_mode: gpio_pu
4
5
  gpiochip: 1
5
6
  line: 14
6
7
  in_02:
7
8
  pin: P8_38
9
+ gpio_mode: gpio_pu
8
10
  gpiochip: 1
9
11
  line: 15
10
12
  in_03:
@@ -36,10 +38,12 @@ input_mapping:
36
38
  line: 9
37
39
  in_09:
38
40
  pin: P8_45
41
+ gpio_mode: gpio_pu
39
42
  gpiochip: 1
40
43
  line: 6
41
44
  in_10:
42
45
  pin: P8_46
46
+ gpio_mode: gpio_pu
43
47
  gpiochip: 1
44
48
  line: 7
45
49
  in_11:
@@ -76,10 +80,12 @@ input_mapping:
76
80
  line: 17
77
81
  in_19:
78
82
  pin: P9_22
83
+ gpio_mode: gpio_pu
79
84
  gpiochip: 3
80
85
  line: 2
81
86
  in_20:
82
87
  pin: P9_21
88
+ gpio_mode: gpio_pu
83
89
  gpiochip: 3
84
90
  line: 3
85
91
  in_21:
@@ -116,26 +122,32 @@ input_mapping:
116
122
  line: 5
117
123
  in_29:
118
124
  pin: P8_36
125
+ gpio_mode: gpio_pu
119
126
  gpiochip: 1
120
127
  line: 16
121
128
  in_30:
122
129
  pin: P8_35
130
+ gpio_mode: gpio_pu
123
131
  gpiochip: 3
124
132
  line: 8
125
133
  in_31:
126
134
  pin: P8_34
135
+ gpio_mode: gpio_pu
127
136
  gpiochip: 1
128
137
  line: 17
129
138
  in_32:
130
139
  pin: P8_33
140
+ gpio_mode: gpio_pu
131
141
  gpiochip: 3
132
142
  line: 9
133
143
  in_33:
134
144
  pin: P8_32
145
+ gpio_mode: gpio_pu
135
146
  gpiochip: 3
136
147
  line: 11
137
148
  in_34:
138
149
  pin: P8_31
150
+ gpio_mode: gpio_pu
139
151
  gpiochip: 3
140
152
  line: 10
141
153
  in_35:
@@ -7,7 +7,6 @@ import threading
7
7
  import time
8
8
  from abc import ABC, abstractmethod
9
9
  from collections.abc import Callable
10
- from contextlib import suppress
11
10
 
12
11
  from boneio.components.output import BasicOutput
13
12
  from boneio.const import (
@@ -21,33 +20,31 @@ from boneio.const import (
21
20
  from boneio.core.events import EventBus
22
21
  from boneio.core.messaging import BasicMqtt
23
22
  from boneio.core.utils import TimePeriod
24
- from boneio.models import CoverState, PositionDict, SavedPositionDict
23
+ from boneio.models import CoverState, PositionDict
25
24
  from boneio.models.events import CoverEvent
26
25
 
27
26
  _LOGGER = logging.getLogger(__name__)
28
27
 
29
-
30
28
  class BaseCoverABC(ABC):
31
29
  """Base cover class."""
32
30
 
33
31
  @abstractmethod
34
- def __init__(
35
- self,
36
- id: str,
32
+ def __init__(self, id: str,
37
33
  open_relay: BasicOutput,
38
34
  close_relay: BasicOutput,
39
35
  state_save: Callable,
40
36
  open_time: TimePeriod,
41
37
  close_time: TimePeriod,
42
38
  event_bus: EventBus,
43
- position: float = 100.0,
39
+ position: int = 100,
44
40
  **kwargs,
45
41
  ) -> None:
46
42
  pass
43
+
47
44
 
48
45
  @abstractmethod
49
46
  async def stop(self) -> None:
50
- """Stop cover."""
47
+ """Stop cover."""
51
48
  pass
52
49
 
53
50
  @abstractmethod
@@ -80,6 +77,7 @@ class BaseCoverABC(ABC):
80
77
  """Set cover position."""
81
78
  pass
82
79
 
80
+
83
81
  @property
84
82
  @abstractmethod
85
83
  def state(self) -> str:
@@ -105,16 +103,16 @@ class BaseCoverABC(ABC):
105
103
  def kind(self) -> str:
106
104
  pass
107
105
 
106
+
108
107
  @abstractmethod
109
- async def run_cover(self, current_operation: str, target_position: int | None = None, **kwargs) -> None:
108
+ async def run_cover(self, current_operation: str, target_position: float | None = None, target_tilt: float | None = None) -> None:
110
109
  """This function is called to run cover after calling open, close, toggle, toggle_open, toggle_close, set_cover_position"""
111
110
  pass
112
111
 
113
112
  @abstractmethod
114
- def send_state(self, state: str, json_position: PositionDict) -> None:
113
+ async def send_state(self, state: str, position: float) -> None:
115
114
  pass
116
115
 
117
-
118
116
  class BaseVenetianCoverABC:
119
117
  @property
120
118
  @abstractmethod
@@ -148,16 +146,14 @@ class BaseVenetianCoverABC:
148
146
 
149
147
 
150
148
  class BaseCover(BaseCoverABC, BasicMqtt):
151
- def __init__(
152
- self,
153
- id: str,
149
+ def __init__(self, id: str,
154
150
  open_relay: BasicOutput,
155
151
  close_relay: BasicOutput,
156
152
  state_save: Callable,
157
153
  open_time: TimePeriod,
158
154
  close_time: TimePeriod,
159
155
  event_bus: EventBus,
160
- position: float = 100.0,
156
+ position: int = 100,
161
157
  name: str | None = None,
162
158
  **kwargs,
163
159
  ) -> None:
@@ -173,20 +169,17 @@ class BaseCover(BaseCoverABC, BasicMqtt):
173
169
  self._open_time = open_time.total_milliseconds
174
170
  self._close_time = close_time.total_milliseconds
175
171
  self._position = position
176
- self._initial_position: float = position
172
+ self._initial_position = None
177
173
  self._current_operation = IDLE
178
174
  self._last_operation = CLOSING
179
175
  _LOGGER.debug(
180
176
  "BaseCover %s initialized: open_time=%dms, close_time=%dms, initial_position=%d%%",
181
- id,
182
- self._open_time,
183
- self._close_time,
184
- position,
177
+ id, self._open_time, self._close_time, position
185
178
  )
186
179
 
187
- self._last_timestamp = time.time()
180
+ self._last_timestamp = time.monotonic()
188
181
 
189
- self._last_update_time = 0.0
182
+ self._last_update_time = 0
190
183
  self._closed = position <= 0
191
184
 
192
185
  self._movement_thread = None
@@ -194,8 +187,17 @@ class BaseCover(BaseCoverABC, BasicMqtt):
194
187
 
195
188
  self._event_bus.add_sigterm_listener(self.on_exit)
196
189
 
197
- with suppress(RuntimeError):
198
- self._loop.call_soon_threadsafe(self._loop.call_later, 0.5, self.send_state, self.state, self.json_position)
190
+ try:
191
+ self._loop.call_soon_threadsafe(
192
+ self._loop.call_later,
193
+ 0.5,
194
+ self.send_state,
195
+ self.state,
196
+ self.json_position
197
+ )
198
+ except RuntimeError:
199
+ # Event loop is closed (e.g. during tests)
200
+ pass
199
201
 
200
202
  async def on_exit(self) -> None:
201
203
  """Stop on exit."""
@@ -208,9 +210,12 @@ class BaseCover(BaseCoverABC, BasicMqtt):
208
210
  self._open_relay.turn_off()
209
211
  self._close_relay.turn_off()
210
212
  # Send relay states to WebSocket (not MQTT - that's handled by output_type check)
211
- with suppress(RuntimeError):
213
+ try:
212
214
  asyncio.create_task(self._open_relay.async_send_state())
213
215
  asyncio.create_task(self._close_relay.async_send_state())
216
+ except RuntimeError:
217
+ # Event loop is closed (e.g. during tests or shutdown)
218
+ pass
214
219
  if self._current_operation in (OPENING, CLOSING):
215
220
  self._last_operation = self._current_operation
216
221
  self._current_operation = IDLE
@@ -223,10 +228,7 @@ class BaseCover(BaseCoverABC, BasicMqtt):
223
228
  estimated_time_s = (100 - self._position) / 100 * self._open_time / 1000
224
229
  _LOGGER.info(
225
230
  "Opening cover %s from position %d%%. Estimated time: %.1fs (open_time=%dms)",
226
- self._id,
227
- self._position,
228
- estimated_time_s,
229
- self._open_time,
231
+ self._id, self._position, estimated_time_s, self._open_time
230
232
  )
231
233
  self._last_operation = OPENING
232
234
  await self.run_cover(current_operation=OPENING)
@@ -238,10 +240,7 @@ class BaseCover(BaseCoverABC, BasicMqtt):
238
240
  estimated_time_s = self._position / 100 * self._close_time / 1000
239
241
  _LOGGER.info(
240
242
  "Closing cover %s from position %d%%. Estimated time: %.1fs (close_time=%dms)",
241
- self._id,
242
- self._position,
243
- estimated_time_s,
244
- self._close_time,
243
+ self._id, self._position, estimated_time_s, self._close_time
245
244
  )
246
245
  self._last_operation = CLOSING
247
246
  await self.run_cover(current_operation=CLOSING)
@@ -259,22 +258,14 @@ class BaseCover(BaseCoverABC, BasicMqtt):
259
258
  estimated_time_s = position_diff / 100 * self._open_time / 1000
260
259
  _LOGGER.info(
261
260
  "Setting cover %s position from %d%% to %d%% (OPENING). Estimated time: %.1fs (open_time=%dms)",
262
- self._id,
263
- self._position,
264
- position,
265
- estimated_time_s,
266
- self._open_time,
261
+ self._id, self._position, position, estimated_time_s, self._open_time
267
262
  )
268
263
  await self.run_cover(current_operation=OPENING, target_position=position)
269
264
  elif position < self._position:
270
265
  estimated_time_s = position_diff / 100 * self._close_time / 1000
271
266
  _LOGGER.info(
272
267
  "Setting cover %s position from %d%% to %d%% (CLOSING). Estimated time: %.1fs (close_time=%dms)",
273
- self._id,
274
- self._position,
275
- position,
276
- estimated_time_s,
277
- self._close_time,
268
+ self._id, self._position, position, estimated_time_s, self._close_time
278
269
  )
279
270
  await self.run_cover(current_operation=CLOSING, target_position=position)
280
271
 
@@ -316,9 +307,7 @@ class BaseCover(BaseCoverABC, BasicMqtt):
316
307
  """
317
308
  _LOGGER.debug(
318
309
  "Smart toggle cover %s (position=%d%%, threshold=%d%%)",
319
- self._id,
320
- self._position,
321
- always_open_till,
310
+ self._id, self._position, always_open_till,
322
311
  )
323
312
  if self._current_operation != IDLE:
324
313
  await self.stop()
@@ -343,10 +332,10 @@ class BaseCover(BaseCoverABC, BasicMqtt):
343
332
  @property
344
333
  def is_open(self) -> bool:
345
334
  """Whether the cover is currently open (position > 0).
346
-
335
+
347
336
  Used by the action conditions system to evaluate ``is_open`` / ``is_closed``
348
337
  checks for covers.
349
-
338
+
350
339
  Returns:
351
340
  True if the cover is not fully closed.
352
341
  """
@@ -354,8 +343,7 @@ class BaseCover(BaseCoverABC, BasicMqtt):
354
343
 
355
344
  @property
356
345
  def position(self) -> int:
357
- """Return current cover position as integer (0-100)."""
358
- return round(self._position)
346
+ return round(self._position, 0)
359
347
 
360
348
  @property
361
349
  def json_position(self) -> PositionDict:
@@ -377,18 +365,15 @@ class BaseCover(BaseCoverABC, BasicMqtt):
377
365
  kind=self.kind,
378
366
  timestamp=self._last_timestamp,
379
367
  current_operation=self._current_operation,
380
- **json_position,
368
+ **json_position
381
369
  )
382
- self._event_bus.trigger_event(CoverEvent(entity_id=self.id, state=event))
370
+ self._event_bus.trigger_event(CoverEvent(
371
+ entity_id=self.id,
372
+ state=event
373
+ ))
383
374
  self._message_bus.send_message(topic=f"{self._send_topic}/state", payload=state)
384
375
  self._message_bus.send_message(topic=f"{self._send_topic}/pos", payload=json.dumps(json_position))
385
376
 
386
- @property
387
- def saved_position(self) -> SavedPositionDict:
388
- """Raw float position for disk persistence."""
389
- return {"position": self._position}
390
-
391
377
  def send_state_and_save(self, json_position: PositionDict):
392
- """Send state to MQTT/WebSocket and save raw float position to disk."""
393
378
  self.send_state(self.state, json_position)
394
- self._state_save(self.saved_position)
379
+ self._state_save(json_position)