boneio 1.6.0.dev10__tar.gz → 1.6.0.dev11__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 (773) hide show
  1. {boneio-1.6.0.dev10/boneio.egg-info → boneio-1.6.0.dev11}/PKG-INFO +1 -1
  2. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/cover.py +17 -3
  3. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/__init__.py +6 -1
  4. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/binary_sensor.py +71 -0
  5. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/detectors.py +62 -1
  6. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/event.py +34 -11
  7. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/__init__.py +4 -0
  8. boneio-1.6.0.dev11/boneio/components/input/remote/mqtt.py +148 -0
  9. boneio-1.6.0.dev11/boneio/components/virtual_switch.py +260 -0
  10. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/const.py +1 -0
  11. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/init-certs-cloud.sh +2 -2
  12. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_util.py +210 -1
  13. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/containers.py +101 -0
  14. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/events/bus.py +67 -1
  15. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/action_conditions.py +4 -0
  16. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/inputs.py +14 -3
  17. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/manager.py +104 -2
  18. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/remote_input_registrar.py +98 -29
  19. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/scheduler.py +122 -4
  20. boneio-1.6.0.dev11/boneio/core/manager/virtual_switches.py +187 -0
  21. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/posture.py +28 -0
  22. boneio-1.6.0.dev11/boneio/core/utils/naming.py +78 -0
  23. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/oled.py +100 -2
  24. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/base.py +13 -3
  25. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina219.py +39 -1
  26. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/base.py +9 -1
  27. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/MANIFEST.sha256 +5 -5
  28. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +5 -1
  29. {boneio-1.6.0.dev10/boneio/core/cloud/data → boneio-1.6.0.dev11/boneio/migrations/assets/docker/nodered}/docker-compose-cloud.yaml +10 -3
  30. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +11 -0
  31. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-migrate-v2 +21 -4
  32. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio-helpers +1 -1
  33. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.0.json +1 -1
  34. boneio-1.6.0.dev11/boneio/migrations/plans/1.3.0.sig +0 -0
  35. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.4.json +1 -1
  36. boneio-1.6.0.dev11/boneio/migrations/plans/1.4.4.sig +1 -0
  37. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.13.json +1 -0
  38. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.13.sig +1 -0
  39. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.14.json +1 -0
  40. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.14.sig +1 -0
  41. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.15.json +1 -0
  42. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.15.sig +0 -0
  43. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.16.json +1 -0
  44. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.16.sig +1 -0
  45. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.5.json +1 -1
  46. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.5.sig +1 -0
  47. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.8.json +1 -1
  48. boneio-1.6.0.dev11/boneio/migrations/plans/1.6.8.sig +1 -0
  49. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/manifest.json +1 -1
  50. boneio-1.6.0.dev11/boneio/migrations/plans/manifest.sig +1 -0
  51. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/runner.py +45 -1
  52. boneio-1.6.0.dev11/boneio/migrations/versions/v1_6_15_web_port_reaches_caddy.py +93 -0
  53. boneio-1.6.0.dev11/boneio/migrations/versions/v1_6_16_release_floor_ordering.py +75 -0
  54. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/runner.py +1 -0
  55. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions.yaml +34 -2
  56. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/condition.yaml +4 -3
  57. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_inputs.yaml +23 -2
  58. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/schema.yaml +218 -2
  59. boneio-1.6.0.dev11/boneio/version.py +2 -0
  60. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/app.py +24 -1
  61. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/AccountsView-CaVxf1WE.js +1 -0
  62. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/AppInitContext-vTo66GKy.js +1 -0
  63. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/BackupSection-B7T0lpXM.js +1 -0
  64. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/BindingMatrix-BMthGEb3.js +1 -0
  65. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/DeviceControlSection-Dxx97pLu.js +1 -0
  66. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/DiagnosticsView-ChPJmL7r.js +5 -0
  67. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/EntityCard-CEvBedbs.js +1 -0
  68. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/EntityGrid-BiDlj33Y.js +1 -0
  69. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/FactoryResetSection-Cx8qW7uA.js +1 -0
  70. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/FormInputToggle-rzxH8pqC.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/FormInputToggle-DyEACPW5.js +1 -1
  71. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/HaDashboardWizard-oyJNrasu.js +1 -0
  72. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/HostnameSection-CMwzYnOp.js +1 -0
  73. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/InputsView-Bm0Y6_KN.js +1 -0
  74. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LocationSection-CqIrebEn.js +2 -0
  75. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LoggerForm-BdfZQ70T.js +1 -0
  76. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LongPressWrapper-DJfAXNKc.js +1 -0
  77. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/MigrationsSection-Dd9ZZ9FR.js +1 -0
  78. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/ModbusView-Bsm_bCJZ.js +1 -0
  79. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/MqttPasswordsSection-C3IWNe6d.js +1 -0
  80. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/NodeRedManagement-m3ER-TbJ.js +1 -0
  81. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/NodeRedView-BTn8YfcX.js +1 -0
  82. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/OutputsView-b-gJRTTo.js +1 -0
  83. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SecurityView-OkBQkWLY.js +1 -0
  84. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SensorView-Bb4Iy4v2.js +1 -0
  85. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/Sparkline-CNZW64p4.js +3 -0
  86. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SystemState-07mfSamd.js +2 -0
  87. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TemplatesView-CKgbUhBU.js +1 -0
  88. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TilePicker-CBQSN1KB.js +1 -0
  89. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TimezoneSection-ClEsYyQF.js +1 -0
  90. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/UISettings-U8FLkxyD.js +100 -0
  91. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ViewToggle-B8OpHNHc.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/ViewToggle-i1Ti0oPo.js +1 -1
  92. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/aiConfig-1DdO0VbB.js +2 -0
  93. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/aiWizardPrompt-Dc7dZBzw.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/aiWizardPrompt-DgFk985o.js +1 -1
  94. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/axios-DJBeJS4R.js +10 -0
  95. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/configCache-BS98BpF9.js +1 -0
  96. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/dialog-BHkRvqJ3.js +1 -0
  97. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js +26 -0
  98. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/fa-DFicOgEn.js +1 -0
  99. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/formatters-zOiGPJLh.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/formatters-Cc0QIRxb.js +1 -1
  100. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/gi-tOlGxC0X.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/gi-_T3Az7Xl.js +1 -1
  101. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/index-BFy6Y45i.css +2 -0
  102. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/index-CBcR1pl2.js +48 -0
  103. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-DUFfd7ef.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/monaco-BggK1re0.js +1 -1
  104. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/monaco-Cc1HzfNY.js +884 -0
  105. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/chunk-QTnfLwEv.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/rolldown-runtime-hePW80VL.js +1 -1
  106. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/select-DXweKMhj.js +1 -0
  107. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/tabs-box-S5EvhXSU.js +1 -0
  108. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js +1 -0
  109. boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js +243 -0
  110. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/index.html +9 -9
  111. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +38 -2
  112. {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/config.schema.json +1665 -130
  113. {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/event.schema.json +133 -7
  114. boneio-1.6.0.dev11/boneio/webui/frontend-dist/schema/osdp.schema.json +160 -0
  115. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +5 -0
  116. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/schedule.schema.json +43 -7
  117. boneio-1.6.0.dev11/boneio/webui/frontend-dist/schema/virtual_switch.schema.json +1316 -0
  118. {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/web.schema.json +22 -0
  119. boneio-1.6.0.dev11/boneio/webui/frontend-dist/sw.js +1 -0
  120. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_core.py +69 -0
  121. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/outputs.py +25 -0
  122. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/system.py +39 -11
  123. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/timezone_sudoers.py +9 -1
  124. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/binary_sensor.schema.json +38 -2
  125. {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/config.schema.json +1665 -130
  126. {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/event.schema.json +133 -7
  127. boneio-1.6.0.dev11/boneio/webui/schema/osdp.schema.json +160 -0
  128. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_inputs.schema.json +5 -0
  129. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/schedule.schema.json +43 -7
  130. boneio-1.6.0.dev11/boneio/webui/schema/virtual_switch.schema.json +1316 -0
  131. {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/web.schema.json +22 -0
  132. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/websocket_manager.py +81 -31
  133. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11/boneio.egg-info}/PKG-INFO +1 -1
  134. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/SOURCES.txt +63 -55
  135. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/pyproject.toml +5 -1
  136. boneio-1.6.0.dev10/boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml +0 -38
  137. boneio-1.6.0.dev10/boneio/migrations/plans/1.3.0.sig +0 -1
  138. boneio-1.6.0.dev10/boneio/migrations/plans/1.4.4.sig +0 -2
  139. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.13.json +0 -1
  140. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.13.sig +0 -1
  141. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.14.json +0 -1
  142. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.14.sig +0 -1
  143. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.5.sig +0 -2
  144. boneio-1.6.0.dev10/boneio/migrations/plans/1.6.8.sig +0 -1
  145. boneio-1.6.0.dev10/boneio/migrations/plans/manifest.sig +0 -1
  146. boneio-1.6.0.dev10/boneio/version.py +0 -2
  147. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/AccountsView-CnpfWttp.js +0 -1
  148. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ActionFields-DdxRdghF.js +0 -1
  149. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/AppInitContext-CsffdB9c.js +0 -1
  150. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/BackupSection-C-s4grNN.js +0 -1
  151. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/BindingMatrix-v4xUWZve.js +0 -1
  152. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/DeviceControlSection-BCbLcOdY.js +0 -1
  153. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/DiagnosticsView-S3oihgRt.js +0 -5
  154. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EditItemDialog-4MJOMxut.js +0 -66
  155. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EntityCard-DVABYB5e.js +0 -1
  156. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EntityGrid-BDdmT0qN.js +0 -1
  157. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/FactoryResetSection-JXPSCIxk.js +0 -1
  158. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/HaDashboardWizard-C-JU3G7o.js +0 -1
  159. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/HostnameSection-7ChfKRnB.js +0 -1
  160. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/InputsView-pNQ5bDeL.js +0 -1
  161. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LocationSection-BYIirRkB.js +0 -2
  162. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LoggerForm-j61zOvFL.js +0 -1
  163. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LongPressWrapper-BKkWvoC1.js +0 -1
  164. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/MigrationsSection-CMsxxM8Z.js +0 -1
  165. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ModbusView-BXWGyG8_.js +0 -1
  166. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/MqttPasswordsSection-B06BwIjN.js +0 -1
  167. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/NodeRedManagement-xGq4lRe5.js +0 -1
  168. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/NodeRedView-Ct08K8xu.js +0 -1
  169. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/OutputsView-BJsN8UeA.js +0 -1
  170. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ScheduleSection-C9WBcKXt.js +0 -1
  171. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SecurityView-0SxjKU8S.js +0 -1
  172. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SensorView-Swy1YACU.js +0 -1
  173. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/Sparkline-D-2-v-7o.js +0 -10
  174. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SystemState-z4xQfIoI.js +0 -2
  175. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TemplatesView-BS7_4Cl3.js +0 -1
  176. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TilePicker-BfaetPZz.js +0 -1
  177. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TimezoneSection-Rb1FiEzP.js +0 -1
  178. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/UISettings-Dol9Rhqn.js +0 -33
  179. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/aiConfig-_hPXvgdY.js +0 -2
  180. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/axios-uEi8e3Ln.js +0 -10
  181. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/configCache-CLN4xEny.js +0 -1
  182. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/coverUtils-Cf4Uxn2U.js +0 -1
  183. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/createLucideIcon-BEjh8B3y.js +0 -1
  184. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/editor.worker-Cn2oRESe.js +0 -26
  185. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/fa-BEzM11bH.js +0 -1
  186. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/index-b1MgMQ6k.js +0 -40
  187. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/index-lVrZSgFS.css +0 -2
  188. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-DFz5x1Al.js +0 -13
  189. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-Dpn-hvLa.js +0 -872
  190. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/select-D3PIwbEj.js +0 -1
  191. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/tabs-box-Byn-MOyS.js +0 -1
  192. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/utils-B6KiDbIe.js +0 -1
  193. boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/yaml.worker-8qQfrID5.js +0 -221
  194. boneio-1.6.0.dev10/boneio/webui/frontend-dist/sw.js +0 -1
  195. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/LICENSE +0 -0
  196. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/MANIFEST.in +0 -0
  197. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/README.md +0 -0
  198. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/__init__.py +0 -0
  199. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/input.yaml +0 -0
  200. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_24_16.yaml +0 -0
  201. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_32_10.yaml +0 -0
  202. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_32_5.yaml +0 -0
  203. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_cover.yaml +0 -0
  204. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  205. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/input.yaml +0 -0
  206. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_24_16.yaml +0 -0
  207. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_32_10.yaml +0 -0
  208. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_32_5.yaml +0 -0
  209. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_cover.yaml +0 -0
  210. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  211. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/input.yaml +0 -0
  212. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_24_16.yaml +0 -0
  213. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_32_10.yaml +0 -0
  214. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_32_5.yaml +0 -0
  215. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_cover.yaml +0 -0
  216. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  217. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/input.yaml +0 -0
  218. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_24_16.yaml +0 -0
  219. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_32_10.yaml +0 -0
  220. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_cover.yaml +0 -0
  221. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  222. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/input.yaml +0 -0
  223. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_24_16.yaml +0 -0
  224. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_32_10.yaml +0 -0
  225. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_cover.yaml +0 -0
  226. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  227. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/input.yaml +0 -0
  228. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_24_16.yaml +0 -0
  229. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_32_10.yaml +0 -0
  230. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_48_4.yaml +0 -0
  231. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_cover.yaml +0 -0
  232. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  233. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/input.yaml +0 -0
  234. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_24_16.yaml +0 -0
  235. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_32_10.yaml +0 -0
  236. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_48_4.yaml +0 -0
  237. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_cover.yaml +0 -0
  238. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  239. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/input.yaml +0 -0
  240. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_24_16.yaml +0 -0
  241. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_32_10.yaml +0 -0
  242. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_48_4.yaml +0 -0
  243. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_cover.yaml +0 -0
  244. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
  245. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/bonecli.py +0 -0
  246. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/__init__.py +0 -0
  247. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/__init__.py +0 -0
  248. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/remote.py +0 -0
  249. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/time_based.py +0 -0
  250. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/venetian.py +0 -0
  251. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/group/__init__.py +0 -0
  252. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/group/output_group.py +0 -0
  253. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/base.py +0 -0
  254. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/esphome.py +0 -0
  255. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/__init__.py +0 -0
  256. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/controller.py +0 -0
  257. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/water_source.py +0 -0
  258. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/__init__.py +0 -0
  259. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/basic.py +0 -0
  260. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/buzzer.py +0 -0
  261. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/mcp.py +0 -0
  262. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/pca.py +0 -0
  263. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/pcf.py +0 -0
  264. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/remote.py +0 -0
  265. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/sensor/__init__.py +0 -0
  266. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/sensor/virtual_energy.py +0 -0
  267. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/__init__.py +0 -0
  268. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/alarm_panel.py +0 -0
  269. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/gate_cover.py +0 -0
  270. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/thermostat.py +0 -0
  271. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/__init__.py +0 -0
  272. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/__init__.py +0 -0
  273. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/cli.py +0 -0
  274. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/hashing.py +0 -0
  275. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/migration.py +0 -0
  276. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/models.py +0 -0
  277. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/store.py +0 -0
  278. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/__init__.py +0 -0
  279. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/__init__.py +0 -0
  280. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/docker-compose.yaml +0 -0
  281. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/registration.py +0 -0
  282. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/secrets.py +0 -0
  283. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/__init__.py +0 -0
  284. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/config_helper.py +0 -0
  285. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/input_bindings.py +0 -0
  286. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/__init__.py +0 -0
  287. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
  288. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v2_transition.py +0 -0
  289. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
  290. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
  291. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/package-lock.json +0 -0
  292. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/package.json +0 -0
  293. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/provenance.py +0 -0
  294. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/schema_converter.py +0 -0
  295. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/secret_masking.py +0 -0
  296. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_compat.py +0 -0
  297. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_patch.py +0 -0
  298. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/diagnostics/__init__.py +0 -0
  299. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/diagnostics/collect.py +0 -0
  300. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/discovery.py +0 -0
  301. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/events/__init__.py +0 -0
  302. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/__init__.py +0 -0
  303. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/canopen.py +0 -0
  304. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/covers.py +0 -0
  305. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/display.py +0 -0
  306. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/irrigation.py +0 -0
  307. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/modbus.py +0 -0
  308. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/outputs.py +0 -0
  309. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/remote.py +0 -0
  310. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/security_alert.py +0 -0
  311. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/sensors.py +0 -0
  312. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/sun.py +0 -0
  313. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/__init__.py +0 -0
  314. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/alarm.py +0 -0
  315. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/gate_cover.py +0 -0
  316. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/thermostat.py +0 -0
  317. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates.py +0 -0
  318. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/update.py +0 -0
  319. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/__init__.py +0 -0
  320. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/basic.py +0 -0
  321. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/basic_mqtt.py +0 -0
  322. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/composite.py +0 -0
  323. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/local.py +0 -0
  324. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/lox.py +0 -0
  325. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/mqtt.py +0 -0
  326. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/queue.py +0 -0
  327. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/net/__init__.py +0 -0
  328. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/net/discovery_guard.py +0 -0
  329. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/__init__.py +0 -0
  330. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/base.py +0 -0
  331. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/can.py +0 -0
  332. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/esphome.py +0 -0
  333. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/mqtt.py +0 -0
  334. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/wled.py +0 -0
  335. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/wled_cache.py +0 -0
  336. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/__init__.py +0 -0
  337. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/certificate.py +0 -0
  338. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/framing.py +0 -0
  339. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/__init__.py +0 -0
  340. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/base.py +0 -0
  341. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/sun.py +0 -0
  342. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/system.py +0 -0
  343. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/state/__init__.py +0 -0
  344. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/state/manager.py +0 -0
  345. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/__init__.py +0 -0
  346. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/host_data.py +0 -0
  347. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/monitor.py +0 -0
  348. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system_ops.py +0 -0
  349. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/__init__.py +0 -0
  350. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/async_updater.py +0 -0
  351. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/conditions.py +0 -0
  352. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/filter.py +0 -0
  353. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/font_util.py +0 -0
  354. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/logger.py +0 -0
  355. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/overlay.py +0 -0
  356. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/sun.py +0 -0
  357. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/timeperiod.py +0 -0
  358. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/util.py +0 -0
  359. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/adc.yaml +0 -0
  360. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  361. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/config.yaml +0 -0
  362. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/event.yaml +0 -0
  363. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/mqtt.yaml +0 -0
  364. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  365. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/adc.yaml +0 -0
  366. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  367. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/config.yaml +0 -0
  368. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/event.yaml +0 -0
  369. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/mqtt.yaml +0 -0
  370. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  371. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/adc.yaml +0 -0
  372. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
  373. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/config.yaml +0 -0
  374. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/event.yaml +0 -0
  375. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/mqtt.yaml +0 -0
  376. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/output48x4A.yaml +0 -0
  377. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/__init__.py +0 -0
  378. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/can_master.yaml +0 -0
  379. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/can_slave.yaml +0 -0
  380. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/adc.yaml +0 -0
  381. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  382. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/config.yaml +0 -0
  383. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/cover.yaml +0 -0
  384. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/event.yaml +0 -0
  385. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/mqtt.yaml +0 -0
  386. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/outputCover.yaml +0 -0
  387. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/adc.yaml +0 -0
  388. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  389. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/config.yaml +0 -0
  390. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/cover.yaml +0 -0
  391. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/event.yaml +0 -0
  392. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  393. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  394. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/adc.yaml +0 -0
  395. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  396. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  397. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  398. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  399. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/event_all.yaml +0 -0
  400. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  401. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  402. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  403. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  404. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  405. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  406. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/exceptions.py +0 -0
  407. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/__init__.py +0 -0
  408. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/analog/__init__.py +0 -0
  409. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/analog/adc.py +0 -0
  410. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/__init__.py +0 -0
  411. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/bridge.py +0 -0
  412. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/client.py +0 -0
  413. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/interface.py +0 -0
  414. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/node.py +0 -0
  415. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/node_id.py +0 -0
  416. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/test_od.py +0 -0
  417. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/__init__.py +0 -0
  418. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/early_oled.py +0 -0
  419. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  420. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/__init__.py +0 -0
  421. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  422. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
  423. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  424. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  425. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/__init__.py +0 -0
  426. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/manager.py +0 -0
  427. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/__init__.py +0 -0
  428. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/bus.py +0 -0
  429. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina219_driver.py +0 -0
  430. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina226.py +0 -0
  431. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina226_driver.py +0 -0
  432. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/mcp9808.py +0 -0
  433. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/pct2075.py +0 -0
  434. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/onewire/__init__.py +0 -0
  435. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/onewire/dallas.py +0 -0
  436. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/__init__.py +0 -0
  437. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  438. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  439. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  440. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/__init__.py +0 -0
  441. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/homeassistant.py +0 -0
  442. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/interlock.py +0 -0
  443. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/lox_template.py +0 -0
  444. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/__init__.py +0 -0
  445. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/actions.py +0 -0
  446. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/daemon.json +0 -0
  447. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
  448. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
  449. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-containers +0 -0
  450. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-helpers-heal +0 -0
  451. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-system +0 -0
  452. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/issue.d/10-boneio.issue +0 -0
  453. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/journald/journald.conf +0 -0
  454. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/kernel/postinst-boneio-overlay +0 -0
  455. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/migrations-recovery.pem +0 -0
  456. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/migrations.pem +0 -0
  457. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
  458. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
  459. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sshd/10-boneio-hardening.conf +0 -0
  460. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio +0 -0
  461. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio-timedatectl +0 -0
  462. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-helpers-heal.service +0 -0
  463. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
  464. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
  465. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio.service +0 -0
  466. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/avahi-daemon-defer.conf +0 -0
  467. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/bb-usb-gadgets-defer.conf +0 -0
  468. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/mosquitto-priority.conf +0 -0
  469. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/timer-no-persistent.conf +0 -0
  470. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/user-manager-defer.conf +0 -0
  471. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/linger-marker +0 -0
  472. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
  473. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
  474. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
  475. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
  476. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
  477. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
  478. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/wheels/pyyaml-6.0.3-cp313-cp313-linux_armv7l.whl +0 -0
  479. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/boneio-migrate +0 -0
  480. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/install-helper.sh +0 -0
  481. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
  482. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.1.json +0 -0
  483. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.1.sig +0 -0
  484. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.2.json +0 -0
  485. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.2.sig +0 -0
  486. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.0.json +0 -0
  487. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.0.sig +0 -0
  488. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.3.json +0 -0
  489. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.3.sig +0 -0
  490. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.0.json +0 -0
  491. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.0.sig +0 -0
  492. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.1.json +0 -0
  493. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.1.sig +0 -0
  494. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.10.json +0 -0
  495. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.10.sig +0 -0
  496. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.11.json +0 -0
  497. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.11.sig +0 -0
  498. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.12.json +0 -0
  499. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.12.sig +0 -0
  500. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.13.json +0 -0
  501. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.13.sig +0 -0
  502. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.14.json +0 -0
  503. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.14.sig +0 -0
  504. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.15.json +0 -0
  505. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.15.sig +0 -0
  506. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.16.json +0 -0
  507. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.16.sig +0 -0
  508. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.17.json +0 -0
  509. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.17.sig +0 -0
  510. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.18.json +0 -0
  511. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.18.sig +0 -0
  512. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.2.json +0 -0
  513. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.2.sig +0 -0
  514. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.3.json +0 -0
  515. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.3.sig +0 -0
  516. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.4.json +0 -0
  517. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.4.sig +0 -0
  518. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.5.json +0 -0
  519. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.5.sig +0 -0
  520. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.6.json +0 -0
  521. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.6.sig +0 -0
  522. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.7.json +0 -0
  523. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.7.sig +0 -0
  524. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.8.json +0 -0
  525. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.8.sig +0 -0
  526. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.9.json +0 -0
  527. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.9.sig +0 -0
  528. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.0.json +0 -0
  529. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.0.sig +0 -0
  530. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.1.json +0 -0
  531. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.1.sig +0 -0
  532. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.10.json +0 -0
  533. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.10.sig +0 -0
  534. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.11.json +0 -0
  535. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.11.sig +0 -0
  536. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.12.json +0 -0
  537. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.12.sig +0 -0
  538. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.2.json +0 -0
  539. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.2.sig +0 -0
  540. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.3.json +0 -0
  541. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.3.sig +0 -0
  542. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.4.json +0 -0
  543. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.4.sig +0 -0
  544. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.6.json +0 -0
  545. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.6.sig +0 -0
  546. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.7.json +0 -0
  547. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.7.sig +0 -0
  548. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.9.json +0 -0
  549. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.9.sig +0 -0
  550. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/__init__.py +0 -0
  551. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
  552. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
  553. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
  554. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
  555. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
  556. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
  557. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
  558. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_10_disable_console_setup.py +0 -0
  559. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_11_timer_catchup.py +0 -0
  560. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_12_oled_splash_off_critical_path.py +0 -0
  561. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_13_mosquitto_priority.py +0 -0
  562. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_14_journal_apparent_size.py +0 -0
  563. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_15_prune_orphan_journals.py +0 -0
  564. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_16_login_linger.py +0 -0
  565. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_17_defer_user_manager.py +0 -0
  566. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_18_fix_hostname_once.py +0 -0
  567. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
  568. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
  569. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
  570. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
  571. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_5_overlay_kernel_hook.py +0 -0
  572. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_6_boot_service_order.py +0 -0
  573. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_7_journald_limits.py +0 -0
  574. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_8_apparmor_prune.py +0 -0
  575. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_9_defer_nonessential.py +0 -0
  576. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_0_nodered_admin_auth.py +0 -0
  577. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py +0 -0
  578. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_11_drop_docker_group.py +0 -0
  579. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_12_console_shows_ip.py +0 -0
  580. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_13_custom_certificate.py +0 -0
  581. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_14_certificate_lifetime.py +0 -0
  582. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py +0 -0
  583. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py +0 -0
  584. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py +0 -0
  585. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_4_ssh_login_hardening.py +0 -0
  586. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_5_trust_transition.py +0 -0
  587. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_6_retire_legacy_helper.py +0 -0
  588. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_7_timedatectl_sudoers.py +0 -0
  589. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_8_system_helper.py +0 -0
  590. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_9_ntp_servers.py +0 -0
  591. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/__init__.py +0 -0
  592. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/cli.py +0 -0
  593. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/client.py +0 -0
  594. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/coordinator.py +0 -0
  595. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/__init__.py +0 -0
  596. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
  597. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
  598. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
  599. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  600. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  601. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  602. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  603. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  604. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/defro-drx.json +0 -0
  605. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
  606. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  607. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/thessla.json +0 -0
  608. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  609. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/wanas415.json +0 -0
  610. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/inverters/sofar.json +0 -0
  611. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
  612. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/n4dsc08.json +0 -0
  613. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  614. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
  615. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/cwt.json +0 -0
  616. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  617. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/gdfs.json +0 -0
  618. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/gdfx.json +0 -0
  619. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  620. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/pt100.json +0 -0
  621. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
  622. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/sht20.json +0 -0
  623. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/sht30.json +0 -0
  624. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/__init__.py +0 -0
  625. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/base.py +0 -0
  626. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/__init__.py +0 -0
  627. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/numeric.py +0 -0
  628. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/select.py +0 -0
  629. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/switch.py +0 -0
  630. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/text.py +0 -0
  631. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/__init__.py +0 -0
  632. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/binary.py +0 -0
  633. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/numeric.py +0 -0
  634. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/text.py +0 -0
  635. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/__init__.py +0 -0
  636. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/binary.py +0 -0
  637. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/numeric.py +0 -0
  638. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/mock_coordinator.py +0 -0
  639. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/utils.py +0 -0
  640. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/__init__.py +0 -0
  641. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/actions.py +0 -0
  642. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/events.py +0 -0
  643. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/files.py +0 -0
  644. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/logs.py +0 -0
  645. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/mqtt.py +0 -0
  646. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/state.py +0 -0
  647. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions_sensor.yaml +0 -0
  648. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions_switch.yaml +0 -0
  649. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/filters.yaml +0 -0
  650. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/filters_adc.yaml +0 -0
  651. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/id.yaml +0 -0
  652. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_devices.yaml +0 -0
  653. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_outputs.yaml +0 -0
  654. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/temp_unit.yaml +0 -0
  655. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/update_interval.yaml +0 -0
  656. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/action_validation.py +0 -0
  657. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/bind.py +0 -0
  658. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/dashboard_cards.py +0 -0
  659. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
  660. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
  661. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  662. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/longPress-Dx7OCSyP.js +0 -0
  663. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
  664. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
  665. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio-192.png +0 -0
  666. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio-512.png +0 -0
  667. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio.svg +0 -0
  668. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  669. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
  670. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
  671. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
  672. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
  673. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
  674. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
  675. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
  676. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
  677. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
  678. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
  679. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
  680. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/location.schema.json +0 -0
  681. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
  682. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
  683. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
  684. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
  685. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
  686. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
  687. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
  688. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
  689. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
  690. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
  691. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
  692. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
  693. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
  694. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
  695. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
  696. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
  697. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
  698. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/workbox-7e79c025.js +0 -0
  699. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/hvac_svg_templates.py +0 -0
  700. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/__init__.py +0 -0
  701. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/auth.py +0 -0
  702. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/csrf.py +0 -0
  703. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/policy.py +0 -0
  704. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/modbus_card_templates.py +0 -0
  705. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/rate_limit.py +0 -0
  706. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/__init__.py +0 -0
  707. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/accounts.py +0 -0
  708. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/auth.py +0 -0
  709. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/can.py +0 -0
  710. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config.py +0 -0
  711. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_actions.py +0 -0
  712. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_backups.py +0 -0
  713. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_discovery.py +0 -0
  714. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_files.py +0 -0
  715. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/covers.py +0 -0
  716. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/dashboard.py +0 -0
  717. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/dev_fake_device.py +0 -0
  718. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/diagnostics.py +0 -0
  719. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/irrigation.py +0 -0
  720. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/migrations.py +0 -0
  721. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/modbus.py +0 -0
  722. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/mqtt_reference.py +0 -0
  723. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/nodered.py +0 -0
  724. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/onboarding.py +0 -0
  725. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/remote_devices.py +0 -0
  726. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/schedule.py +0 -0
  727. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/security.py +0 -0
  728. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/sensors.py +0 -0
  729. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/sun.py +0 -0
  730. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/templates.py +0 -0
  731. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/tools.py +0 -0
  732. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/update.py +0 -0
  733. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/adc.schema.json +0 -0
  734. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/areas.schema.json +0 -0
  735. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/boneio.schema.json +0 -0
  736. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/can.schema.json +0 -0
  737. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/cover.schema.json +0 -0
  738. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/dallas.schema.json +0 -0
  739. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ds2482.schema.json +0 -0
  740. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ina219.schema.json +0 -0
  741. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ina226.schema.json +0 -0
  742. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/irrigation.schema.json +0 -0
  743. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/lm75.schema.json +0 -0
  744. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/location.schema.json +0 -0
  745. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/logger.schema.json +0 -0
  746. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/lox_udp.schema.json +0 -0
  747. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mcp23017.schema.json +0 -0
  748. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mcp9808.schema.json +0 -0
  749. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/modbus.schema.json +0 -0
  750. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  751. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mqtt.schema.json +0 -0
  752. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/oled.schema.json +0 -0
  753. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/output.schema.json +0 -0
  754. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/output_group.schema.json +0 -0
  755. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/pca9685.schema.json +0 -0
  756. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/pcf8575.schema.json +0 -0
  757. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_devices.schema.json +0 -0
  758. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_outputs.schema.json +0 -0
  759. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/sensor.schema.json +0 -0
  760. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/template.schema.json +0 -0
  761. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  762. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/security_headers.py +0 -0
  763. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/services/__init__.py +0 -0
  764. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/services/logs.py +0 -0
  765. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/sudo_rate_limiter.py +0 -0
  766. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/web_server.py +0 -0
  767. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/dependency_links.txt +0 -0
  768. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/entry_points.txt +0 -0
  769. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/requires.txt +0 -0
  770. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/top_level.txt +0 -0
  771. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/setup.cfg +0 -0
  772. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/setup.py +0 -0
  773. {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/tests/test_py313_compatibility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.6.0.dev10
3
+ Version: 1.6.0.dev11
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
@@ -210,9 +210,23 @@ class BaseCover(BaseCoverABC, BasicMqtt):
210
210
  async def stop(self, on_exit=False) -> None:
211
211
  if self._movement_thread and self._movement_thread.is_alive():
212
212
  self._stop_event.set()
213
- self._movement_thread.join(timeout=0.5)
214
- self._open_relay.turn_off()
215
- self._close_relay.turn_off()
213
+
214
+ # Halting is three blocking operations: waiting for the movement
215
+ # thread to notice the stop event, and two relay writes that go out
216
+ # over I2C behind a bus lock shared with every other device. Run
217
+ # inline they were the *event loop's* wait — up to half a second of
218
+ # frozen loop on every cover stop, and a cover stop is the first
219
+ # thing `toggle`, `toggle_open` and `toggle_close` do, so an
220
+ # ordinary button press paid it. Nothing reads GPIO while the loop
221
+ # is stopped. Order is unchanged: join first, then de-energise.
222
+ thread = self._movement_thread
223
+
224
+ def _halt() -> None:
225
+ thread.join(timeout=0.5)
226
+ self._open_relay.turn_off()
227
+ self._close_relay.turn_off()
228
+
229
+ await asyncio.get_running_loop().run_in_executor(None, _halt)
216
230
  # Send relay states to WebSocket (not MQTT - that's handled by output_type check)
217
231
  with suppress(RuntimeError):
218
232
  asyncio.create_task(self._open_relay.async_send_state())
@@ -9,11 +9,16 @@ Sub-packages:
9
9
 
10
10
  from boneio.components.input.binary_sensor import GpioInputBinarySensor
11
11
  from boneio.components.input.event import GpioEventButton
12
- from boneio.components.input.remote import ESPHomeBinarySensorInput, RemoteInputBase
12
+ from boneio.components.input.remote import (
13
+ ESPHomeBinarySensorInput,
14
+ MqttBinarySensorInput,
15
+ RemoteInputBase,
16
+ )
13
17
 
14
18
  __all__ = [
15
19
  "GpioInputBinarySensor",
16
20
  "GpioEventButton",
17
21
  "ESPHomeBinarySensorInput",
22
+ "MqttBinarySensorInput",
18
23
  "RemoteInputBase",
19
24
  ]
@@ -8,12 +8,18 @@ from typing import cast
8
8
 
9
9
  from boneio.components.input.detectors import BinarySensorDetector
10
10
  from boneio.const import PRESSED, RELEASED, BinaryStateTypes, ClickTypes
11
+ from boneio.core.utils.timeperiod import parse_time_to_ms
11
12
  from boneio.hardware.gpio.input import GpioBaseClass, get_gpio_manager
12
13
  from boneio.models import InputState
13
14
  from boneio.models.events import InputEvent
14
15
 
15
16
  _LOGGER = logging.getLogger(__name__)
16
17
 
18
+ # Matches the binary_sensor bounce_time default in schema.yaml. Needed on the
19
+ # hot-reload path, which reads the YAML without running Cerberus, so an
20
+ # omitted bounce_time arrives as None rather than as the schema default.
21
+ DEFAULT_BOUNCE_TIME_MS = 120
22
+
17
23
 
18
24
  class GpioInputBinarySensor(GpioBaseClass):
19
25
  """Represent Gpio binary sensor on input boards."""
@@ -57,6 +63,71 @@ class GpioInputBinarySensor(GpioBaseClass):
57
63
  if kwargs.get("initial_send", False):
58
64
  gpio_manager.register_on_start_callback(self._send_initial_state)
59
65
 
66
+ def update_inverted(self, inverted: bool) -> bool:
67
+ """Apply a new ``inverted`` setting to a running sensor.
68
+
69
+ Polarity is decided in ``__init__`` and baked into the detector, so a
70
+ config reload alone used to leave the running sensor on the old
71
+ polarity until the application was restarted.
72
+
73
+ Args:
74
+ inverted: New inverted flag from the reloaded config.
75
+
76
+ Returns:
77
+ True if the polarity actually changed (caller should re-publish
78
+ the state), False if it was already set that way.
79
+ """
80
+ inverted = bool(inverted)
81
+ if inverted == self._inverted:
82
+ return False
83
+
84
+ self._inverted = inverted
85
+ self._click_type = (RELEASED, PRESSED) if inverted else (PRESSED, RELEASED)
86
+
87
+ # Re-read the pin and re-anchor the detector with the new polarity.
88
+ gpio_manager = get_gpio_manager(loop=self._loop)
89
+ current_value = gpio_manager.read_value(self._pin)
90
+ is_pressed = current_value if inverted else not current_value
91
+ self._detector.resync(inverted=inverted, current_state=is_pressed)
92
+
93
+ _LOGGER.info(
94
+ "Binary sensor %s (%s): inverted changed to %s without restart",
95
+ self._name,
96
+ self._pin,
97
+ inverted,
98
+ )
99
+ return True
100
+
101
+ def update_bounce_time(self, bounce_time) -> bool:
102
+ """Apply a new debounce window to a running sensor.
103
+
104
+ Like ``inverted``, ``bounce_time`` is read in ``__init__`` and handed to
105
+ the detector, so a config reload used to leave the old window in place
106
+ until the application was restarted.
107
+
108
+ Args:
109
+ bounce_time: Value straight from the reloaded config — a TimePeriod
110
+ at startup, but a bare number of milliseconds (WebUI) or a string
111
+ such as "120ms" (hand-written YAML) on the hot-reload path, which
112
+ skips Cerberus coercion. ``None`` means the schema default.
113
+
114
+ Returns:
115
+ True if the window actually changed.
116
+ """
117
+ seconds = parse_time_to_ms(bounce_time, DEFAULT_BOUNCE_TIME_MS) / 1000.0
118
+ if seconds == self._bounce_time:
119
+ return False
120
+
121
+ self._bounce_time = seconds
122
+ self._detector.set_debounce(seconds)
123
+ _LOGGER.info(
124
+ "Binary sensor %s (%s): bounce_time changed to %.0fms without restart",
125
+ self._name,
126
+ self._pin,
127
+ seconds * 1000,
128
+ )
129
+ return True
130
+
60
131
  def _send_initial_state(self) -> None:
61
132
  """Send initial state after setup."""
62
133
  self.send_current_state()
@@ -135,6 +135,14 @@ class MultiClickDetector:
135
135
  self._delay_click_types.add(first)
136
136
  break
137
137
 
138
+ def set_debounce(self, debounce_seconds: float) -> None:
139
+ """Change the debounce window on a running detector.
140
+
141
+ Only the window is replaced; timestamps already recorded stay valid
142
+ and are simply compared against the new window from now on.
143
+ """
144
+ self._debounce_seconds = debounce_seconds
145
+
138
146
  def _finalize_clicks(self) -> None:
139
147
  """Finalize a multi-click sequence."""
140
148
  count = self._state.click_count
@@ -415,13 +423,18 @@ class MultiClickDetector:
415
423
  GPIO state to detect missed RELEASE edge events.
416
424
  """
417
425
  if not self._state.last_press_loop_ts or self._state.last_release_ts:
418
- # Button released or invalid state
426
+ # Button released or invalid state. Drop the handle as well: this
427
+ # chain is ending here, and a handle left pointing at a timer that
428
+ # has already fired reads as "a long press is running" to the
429
+ # release path, which then emits a phantom final LONG on the next
430
+ # ordinary click.
419
431
  _LOGGER.debug(
420
432
  "Periodic long skipped for %s: press_ts=%s, release_ts=%s",
421
433
  self._name,
422
434
  self._state.last_press_loop_ts is not None,
423
435
  self._state.last_release_ts,
424
436
  )
437
+ self._state.long_hold_periodic_timer = None
425
438
  return
426
439
 
427
440
  now = self._loop.time()
@@ -570,6 +583,27 @@ class MultiClickDetector:
570
583
  return
571
584
 
572
585
  _LOGGER.debug("PRESSED: %s (%s)", self._name, self._pin)
586
+
587
+ # End any long-hold chain still running from the previous press.
588
+ # It can still be running only because that press never saw its
589
+ # release — the edge was lost while the event loop was blocked, or
590
+ # it was swallowed as a bounce. Left alone, the old chain keeps
591
+ # rescheduling itself and now measures against *this* press, so its
592
+ # safety timeout never trips and nothing can ever cancel it: the
593
+ # handle below is about to be overwritten. Every such press adds
594
+ # another immortal chain emitting LONG five times a second.
595
+ if self._state.long_hold_periodic_timer:
596
+ _LOGGER.warning(
597
+ "New press on %s (%s) while a long-hold chain was still "
598
+ "running — the previous release was never seen. Ending it.",
599
+ self._name,
600
+ self._pin,
601
+ )
602
+ self._state.long_hold_periodic_timer.cancel()
603
+ self._state.long_hold_periodic_timer = None
604
+ self._state.executed_long_actions = set()
605
+ self._state.last_repeat_times = {}
606
+
573
607
  self._state.last_press_ts = timestamp_s
574
608
  self._state.last_press_loop_ts = self._loop.time() # Store loop time for duration calc
575
609
  self._state.last_release_ts = None # Reset release timestamp for new press
@@ -847,6 +881,33 @@ class BinarySensorDetector:
847
881
  self._pin = pin
848
882
  self._state = BinarySensorState()
849
883
 
884
+ def set_debounce(self, debounce_seconds: float) -> None:
885
+ """Change the debounce window on a running detector.
886
+
887
+ Only the window is replaced; timestamps already recorded stay valid
888
+ and are simply compared against the new window from now on.
889
+ """
890
+ self._debounce_seconds = debounce_seconds
891
+
892
+ def resync(self, inverted: bool, current_state: bool) -> None:
893
+ """Apply a new polarity to a running detector.
894
+
895
+ Called when ``inverted`` is changed in the config and reloaded, so the
896
+ user does not have to restart the application for it to take effect.
897
+
898
+ Args:
899
+ inverted: New inverted flag.
900
+ current_state: Pressed state as read from the pin right now, already
901
+ interpreted with the *new* polarity. Without re-anchoring it the
902
+ cached state would still describe the old polarity and the next
903
+ edge would be dropped by the "state unchanged" guard.
904
+ """
905
+ self._inverted = bool(inverted)
906
+ self._state.current_state = bool(current_state)
907
+ # Drop the debounce anchor — the pending window belongs to the old
908
+ # polarity and would swallow the first edge after the change.
909
+ self._state.last_press_ts = None
910
+
850
911
  def handle_event(self, event: gpiod.EdgeEvent) -> None:
851
912
  """Process a GPIO edge event for binary sensor.
852
913
 
@@ -7,7 +7,7 @@ import time
7
7
 
8
8
  from boneio.components.input.detectors import MultiClickDetector
9
9
  from boneio.const import ClickTypes
10
- from boneio.core.utils import TimePeriod
10
+ from boneio.core.utils.timeperiod import parse_time_to_ms
11
11
  from boneio.hardware.gpio.input import GpioBaseClass, get_gpio_manager
12
12
 
13
13
  _LOGGER = logging.getLogger(__name__)
@@ -16,25 +16,31 @@ _LOGGER = logging.getLogger(__name__)
16
16
  DEFAULT_DOUBLE_CLICK_DURATION_MS = 220
17
17
  DEFAULT_LONG_PRESS_DURATION_MS = 400
18
18
  DEFAULT_SEQUENCE_WINDOW_MS = 500
19
+ # Matches the event bounce_time default in schema.yaml. Needed on the hot-reload
20
+ # path, which reads the YAML without running Cerberus, so an omitted bounce_time
21
+ # arrives as None rather than as the schema default.
22
+ DEFAULT_BOUNCE_TIME_MS = 30
19
23
 
20
24
 
21
25
  def _to_milliseconds(value, default_ms: int) -> int:
22
26
  """Convert a value to milliseconds.
23
27
 
24
28
  Args:
25
- value: Can be int, float, TimePeriod, or None
26
- default_ms: Default value in milliseconds if value is None
29
+ value: TimePeriod, bare number of milliseconds, string with a unit
30
+ (e.g. "300ms"), or None.
31
+ default_ms: Default value in milliseconds if value is None or unusable.
27
32
 
28
33
  Returns:
29
- Value in milliseconds as integer
34
+ Value in milliseconds as integer.
35
+
36
+ Note:
37
+ Strings have to be handled here, not just TimePeriod: Cerberus coerces
38
+ these fields at startup, but the hot-reload path reads the YAML without
39
+ validating, and EventForm writes them as strings like "300ms". Falling
40
+ back to the default for those quietly reset every custom click timing on
41
+ each reload.
30
42
  """
31
- if value is None:
32
- return default_ms
33
- if isinstance(value, TimePeriod):
34
- return int(value.total_milliseconds)
35
- if isinstance(value, (int, float)):
36
- return int(value)
37
- return default_ms
43
+ return parse_time_to_ms(value, default_ms)
38
44
 
39
45
 
40
46
  class GpioEventButton(GpioBaseClass):
@@ -173,6 +179,7 @@ class GpioEventButton(GpioBaseClass):
173
179
  enable_triple_click: bool | None = None,
174
180
  long_press_mqtt_mode: str | None = None,
175
181
  max_long_press_duration: int | float | None = None,
182
+ bounce_time: object | None = None,
176
183
  ) -> None:
177
184
  """Update timing parameters for click detection.
178
185
 
@@ -189,6 +196,9 @@ class GpioEventButton(GpioBaseClass):
189
196
  enable_triple_click: Enable triple click detection
190
197
  long_press_mqtt_mode: 'single' or 'periodic' for MQTT long press events
191
198
  max_long_press_duration: Safety timeout for long press in ms (default: 120000ms)
199
+ bounce_time: Debounce window — a TimePeriod at startup, but a bare
200
+ number of milliseconds or a string such as "30ms" on the
201
+ hot-reload path, which skips Cerberus coercion
192
202
  """
193
203
  from boneio.const import CLICK_SEQUENCES
194
204
 
@@ -260,3 +270,16 @@ class GpioEventButton(GpioBaseClass):
260
270
  if long_press_mqtt_mode is not None:
261
271
  self._long_press_mqtt_mode = long_press_mqtt_mode
262
272
  _LOGGER.debug("Updated long_press_mqtt_mode to %s for %s", long_press_mqtt_mode, self._name)
273
+
274
+ # bounce_time is handed to the detector in __init__, so it needs pushing
275
+ # through explicitly — None here means "back to the schema default".
276
+ seconds = parse_time_to_ms(bounce_time, DEFAULT_BOUNCE_TIME_MS) / 1000.0
277
+ if seconds != self._bounce_time:
278
+ self._bounce_time = seconds
279
+ self._detector.set_debounce(seconds)
280
+ _LOGGER.info(
281
+ "Event input %s (%s): bounce_time changed to %.0fms without restart",
282
+ self._name,
283
+ self._pin,
284
+ seconds * 1000,
285
+ )
@@ -8,6 +8,8 @@ the same duck-type interface as :class:`GpioBaseClass`.
8
8
  Subpackages:
9
9
  base: ``RemoteInputBase`` — shared logic (EventBus, actions, MultiClickDetector)
10
10
  esphome: ``ESPHomeBinarySensorInput`` — ESPHome native API
11
+ mqtt: ``MqttBinarySensorInput`` — any device that publishes a state on a
12
+ topic, most usefully another boneIO
11
13
  # future:
12
14
  # can_esphome: CAN bus → ESPHome device
13
15
  # can_boneio: CAN bus → another boneIO Black
@@ -15,8 +17,10 @@ Subpackages:
15
17
 
16
18
  from boneio.components.input.remote.base import RemoteInputBase
17
19
  from boneio.components.input.remote.esphome import ESPHomeBinarySensorInput
20
+ from boneio.components.input.remote.mqtt import MqttBinarySensorInput
18
21
 
19
22
  __all__ = [
20
23
  "RemoteInputBase",
21
24
  "ESPHomeBinarySensorInput",
25
+ "MqttBinarySensorInput",
22
26
  ]
@@ -0,0 +1,148 @@
1
+ """MQTT binary sensor input — a remote input carried over MQTT.
2
+
3
+ The obvious use is mirroring another boneIO: a peer publishes its inputs at
4
+ ``<its topic prefix>/input/<input id>``, and this subscribes to exactly that,
5
+ so a button on one controller can drive a relay on another with nothing in
6
+ between but the broker.
7
+
8
+ It is not limited to boneIO. Anything that publishes an on/off payload on a
9
+ topic works — an ESPHome device in MQTT mode, a Zigbee bridge, a script — by
10
+ giving the entry an explicit ``topic``.
11
+
12
+ What it is *not* for: a flag you flip by hand from Home Assistant. That is a
13
+ `virtual_switch`, which boneIO owns and persists. This is for mirroring
14
+ something that already exists somewhere else.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import json
20
+ import logging
21
+
22
+ from boneio.components.input.remote.base import RemoteInputBase
23
+ from boneio.core.events import EventBus
24
+
25
+ _LOGGER = logging.getLogger(__name__)
26
+
27
+ #: Payloads that mean "on". Three vocabularies at once, because the three
28
+ #: things people point this at do not agree: boneIO publishes pressed/released,
29
+ #: ESPHome publishes ON/OFF, and everything else publishes true/1.
30
+ _TRUTHY = frozenset({"on", "true", "1", "pressed", "open", "opening", "active"})
31
+ _FALSY = frozenset({"off", "false", "0", "released", "closed", "closing", "inactive"})
32
+
33
+
34
+ class MqttBinarySensorInput(RemoteInputBase):
35
+ """A remote input whose state arrives on an MQTT topic.
36
+
37
+ Args:
38
+ device_id: ID of the remote device, from ``remote_devices``.
39
+ sensor_id: The input's id on that device.
40
+ topic: Topic to subscribe to.
41
+ id: Local input id.
42
+ name: Display name.
43
+ event_bus: EventBus.
44
+ actions: Parsed actions, keyed by click type.
45
+ **kwargs: Forwarded to :class:`RemoteInputBase`.
46
+ """
47
+
48
+ def __init__(
49
+ self,
50
+ *,
51
+ device_id: str,
52
+ sensor_id: str,
53
+ topic: str,
54
+ id: str,
55
+ name: str,
56
+ event_bus: EventBus,
57
+ actions: dict,
58
+ **kwargs,
59
+ ) -> None:
60
+ self._device_id = device_id
61
+ self._sensor_id = sensor_id
62
+ self._topic = topic
63
+
64
+ super().__init__(
65
+ id=id,
66
+ name=name,
67
+ pin=f"mqtt:{device_id}:{sensor_id}",
68
+ event_bus=event_bus,
69
+ actions=actions,
70
+ **kwargs,
71
+ )
72
+
73
+ _LOGGER.debug(
74
+ "Created MQTT binary sensor input %s (mode=%s, topic=%s)",
75
+ id,
76
+ self._mode,
77
+ topic,
78
+ )
79
+
80
+ @property
81
+ def topic(self) -> str:
82
+ """The topic this input listens on."""
83
+ return self._topic
84
+
85
+ @staticmethod
86
+ def parse_state(payload: str) -> bool | None:
87
+ """Read an on/off payload, or None if it is not one.
88
+
89
+ Returns:
90
+ True or False, or None when the payload means nothing here — in
91
+ which case the caller leaves the state alone rather than guessing,
92
+ because a wrong guess silently drives a relay.
93
+ """
94
+ text = (payload or "").strip().strip('"').lower()
95
+ if text in _TRUTHY:
96
+ return True
97
+ if text in _FALSY:
98
+ return False
99
+ return None
100
+
101
+ async def on_mqtt_message(self, _topic: str, payload: str) -> None:
102
+ """Handle a message on the subscribed topic.
103
+
104
+ Two payload shapes are understood. A plain on/off state is the usual
105
+ one. A JSON object with ``event_type`` is what a boneIO *event* input
106
+ publishes — a click that has already been classified — and in event
107
+ mode it is passed through as-is rather than re-derived from a state
108
+ this side never saw.
109
+
110
+ Args:
111
+ _topic: The topic it arrived on; unused, one subscription per input.
112
+ payload: The message.
113
+ """
114
+ text = (payload or "").strip()
115
+
116
+ if text.startswith("{"):
117
+ try:
118
+ event_type = json.loads(text).get("event_type")
119
+ except ValueError:
120
+ event_type = None
121
+ if event_type:
122
+ if self._mode == "event":
123
+ self.press_callback(click_type=event_type, duration=None)
124
+ else:
125
+ _LOGGER.debug(
126
+ "Input %s got a click event but is in binary_sensor mode; "
127
+ "set `mode: event` to use it.",
128
+ self.id,
129
+ )
130
+ return
131
+
132
+ state = self.parse_state(text)
133
+ if state is None:
134
+ _LOGGER.warning(
135
+ "Input %s: cannot read %r as a state. Expected on/off, "
136
+ "true/false, 1/0 or pressed/released.",
137
+ self.id,
138
+ payload,
139
+ )
140
+ return
141
+
142
+ if self._inverted:
143
+ state = not state
144
+
145
+ if self._mode == "event":
146
+ self._feed_detector(is_pressed=state)
147
+ else:
148
+ self._handle_binary_state_change(state)