boneio 1.6.0.dev6__tar.gz → 1.6.0.dev8__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 (712) hide show
  1. {boneio-1.6.0.dev6/boneio.egg-info → boneio-1.6.0.dev8}/PKG-INFO +1 -1
  2. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/const.py +8 -0
  3. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/data/init-certs-cloud.sh +11 -1
  4. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/registration.py +1 -2
  5. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/config_helper.py +49 -3
  6. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/security/posture.py +75 -16
  7. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/integration/homeassistant.py +3 -5
  8. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/MANIFEST.sha256 +1 -1
  9. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +15 -2
  10. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.4.4.json +1 -1
  11. boneio-1.6.0.dev8/boneio/migrations/plans/1.4.4.sig +2 -0
  12. boneio-1.6.0.dev8/boneio/migrations/plans/1.6.13.json +1 -0
  13. boneio-1.6.0.dev8/boneio/migrations/plans/1.6.13.sig +1 -0
  14. boneio-1.6.0.dev8/boneio/migrations/plans/1.6.14.json +1 -0
  15. boneio-1.6.0.dev8/boneio/migrations/plans/1.6.14.sig +1 -0
  16. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/manifest.json +1 -1
  17. boneio-1.6.0.dev8/boneio/migrations/plans/manifest.sig +1 -0
  18. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/runner.py +48 -2
  19. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_13_custom_certificate.py +7 -0
  20. boneio-1.6.0.dev8/boneio/migrations/versions/v1_6_14_certificate_lifetime.py +48 -0
  21. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/runner.py +1 -0
  22. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/schema.yaml +7 -1
  23. boneio-1.6.0.dev8/boneio/version.py +2 -0
  24. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/bind.py +50 -13
  25. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/AccountsView-CtAKf-Jh.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/AccountsView-BUm_P1Uw.js +1 -1
  26. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/ActionFields-00jnigwc.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/ActionFields-B--1CfM2.js +1 -1
  27. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/BackupSection-wLp_QeJD.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/BackupSection-BSZn5Skg.js +1 -1
  28. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/BindingMatrix-DqbowdSa.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/BindingMatrix-CpzvZ7i_.js +1 -1
  29. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/DeviceControlSection-Ww98-XKE.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/DeviceControlSection-CnyJz996.js +1 -1
  30. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/DiagnosticsView-B0ABEIej.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/DiagnosticsView-jzQIu7C-.js +1 -1
  31. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/EditItemDialog-DSaSr1V2.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/EditItemDialog-D_EXUFV4.js +2 -2
  32. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/EntityCard-MBcnQMqn.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/EntityCard-CzrB7v4W.js +1 -1
  33. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/FactoryResetSection-HrIaeWkh.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/FactoryResetSection-DU5Xczix.js +1 -1
  34. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/FormInputToggle-VnOgafWV.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/FormInputToggle--GD_ZMhY.js +1 -1
  35. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/HaDashboardWizard-Dusa_1tc.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/HaDashboardWizard-Cjn4NcOy.js +1 -1
  36. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/HostnameSection-C2JY6tSi.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/HostnameSection-CcgeB7c9.js +1 -1
  37. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/InputsView-P0Et4B_z.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/InputsView-D7ALwZZ2.js +1 -1
  38. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/LocationSection-DJC9Nn1t.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/LocationSection-Dbk0Rss6.js +2 -2
  39. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/LoggerForm-C7eIfgE5.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/LoggerForm-br7_NVmx.js +1 -1
  40. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/MigrationsSection-CyRlGDFu.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/MigrationsSection-B0Do-lCH.js +1 -1
  41. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/ModbusView-CpQSNUsc.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/ModbusView-B5YLw-nZ.js +1 -1
  42. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/MqttPasswordsSection-Dkxvg2F4.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/MqttPasswordsSection-B628jQwJ.js +1 -1
  43. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/NodeRedManagement-BphMNx2Y.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/NodeRedManagement-B6OKfz_P.js +1 -1
  44. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/OutputsView-D2lNpDf4.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/OutputsView-BcttMcsW.js +1 -1
  45. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/ScheduleSection-DUAIOUfk.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/ScheduleSection-CxiZBMjJ.js +1 -1
  46. boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/SecurityView-Bvk8xFtu.js +1 -0
  47. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/SensorView-CRFFyoc0.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/SensorView-C--UO0_x.js +1 -1
  48. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/SystemState-DW1QWwMH.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/SystemState-DC-bxOGD.js +1 -1
  49. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/TemplatesView-DQaBD8OP.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/TemplatesView-BgXYpvO7.js +1 -1
  50. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/TilePicker-BqXH6IvA.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/TilePicker-BJiurvDz.js +1 -1
  51. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/TimezoneSection-ceIcx6zy.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/TimezoneSection-CQ8UzB3r.js +1 -1
  52. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/UISettings-D9dRIfil.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/UISettings-CKiOXI3V.js +3 -3
  53. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/index-B6IpVqZQ.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/index-DTsVYLUw.js +6 -6
  54. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/monaco-DSHG8wk7.js → boneio-1.6.0.dev8/boneio/webui/frontend-dist/assets/monaco-DdPCJ1g6.js +1 -1
  55. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/index.html +1 -1
  56. {boneio-1.6.0.dev6/boneio/webui → boneio-1.6.0.dev8/boneio/webui/frontend-dist}/schema/config.schema.json +1 -1
  57. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/web.schema.json +1 -1
  58. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/sw.js +1 -1
  59. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config_core.py +6 -3
  60. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/remote_devices.py +14 -12
  61. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/security.py +59 -21
  62. {boneio-1.6.0.dev6/boneio/webui/frontend-dist → boneio-1.6.0.dev8/boneio/webui}/schema/config.schema.json +1 -1
  63. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/web.schema.json +1 -1
  64. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8/boneio.egg-info}/PKG-INFO +1 -1
  65. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio.egg-info/SOURCES.txt +33 -30
  66. boneio-1.6.0.dev6/boneio/migrations/plans/1.4.4.sig +0 -1
  67. boneio-1.6.0.dev6/boneio/migrations/plans/1.6.13.json +0 -1
  68. boneio-1.6.0.dev6/boneio/migrations/plans/1.6.13.sig +0 -1
  69. boneio-1.6.0.dev6/boneio/migrations/plans/manifest.sig +0 -1
  70. boneio-1.6.0.dev6/boneio/version.py +0 -2
  71. boneio-1.6.0.dev6/boneio/webui/frontend-dist/assets/SecurityView-qRhXLFuR.js +0 -1
  72. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/LICENSE +0 -0
  73. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/MANIFEST.in +0 -0
  74. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/README.md +0 -0
  75. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/__init__.py +0 -0
  76. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/input.yaml +0 -0
  77. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/output_24_16.yaml +0 -0
  78. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/output_32_10.yaml +0 -0
  79. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/output_32_5.yaml +0 -0
  80. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/output_cover.yaml +0 -0
  81. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  82. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/input.yaml +0 -0
  83. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/output_24_16.yaml +0 -0
  84. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/output_32_10.yaml +0 -0
  85. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/output_32_5.yaml +0 -0
  86. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/output_cover.yaml +0 -0
  87. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  88. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/input.yaml +0 -0
  89. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/output_24_16.yaml +0 -0
  90. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/output_32_10.yaml +0 -0
  91. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/output_32_5.yaml +0 -0
  92. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/output_cover.yaml +0 -0
  93. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  94. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.5/input.yaml +0 -0
  95. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.5/output_24_16.yaml +0 -0
  96. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.5/output_32_10.yaml +0 -0
  97. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.5/output_cover.yaml +0 -0
  98. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  99. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.6/input.yaml +0 -0
  100. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.6/output_24_16.yaml +0 -0
  101. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.6/output_32_10.yaml +0 -0
  102. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.6/output_cover.yaml +0 -0
  103. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  104. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/input.yaml +0 -0
  105. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/output_24_16.yaml +0 -0
  106. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/output_32_10.yaml +0 -0
  107. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/output_48_4.yaml +0 -0
  108. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/output_cover.yaml +0 -0
  109. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  110. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/input.yaml +0 -0
  111. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/output_24_16.yaml +0 -0
  112. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/output_32_10.yaml +0 -0
  113. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/output_48_4.yaml +0 -0
  114. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/output_cover.yaml +0 -0
  115. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  116. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/input.yaml +0 -0
  117. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/output_24_16.yaml +0 -0
  118. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/output_32_10.yaml +0 -0
  119. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/output_48_4.yaml +0 -0
  120. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/output_cover.yaml +0 -0
  121. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
  122. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/bonecli.py +0 -0
  123. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/__init__.py +0 -0
  124. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/cover/__init__.py +0 -0
  125. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/cover/cover.py +0 -0
  126. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/cover/remote.py +0 -0
  127. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/cover/time_based.py +0 -0
  128. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/cover/venetian.py +0 -0
  129. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/group/__init__.py +0 -0
  130. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/group/output_group.py +0 -0
  131. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/__init__.py +0 -0
  132. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/binary_sensor.py +0 -0
  133. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/detectors.py +0 -0
  134. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/event.py +0 -0
  135. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/remote/__init__.py +0 -0
  136. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/remote/base.py +0 -0
  137. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/input/remote/esphome.py +0 -0
  138. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/irrigation/__init__.py +0 -0
  139. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/irrigation/controller.py +0 -0
  140. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/irrigation/water_source.py +0 -0
  141. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/__init__.py +0 -0
  142. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/basic.py +0 -0
  143. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/buzzer.py +0 -0
  144. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/mcp.py +0 -0
  145. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/pca.py +0 -0
  146. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/pcf.py +0 -0
  147. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/output/remote.py +0 -0
  148. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/sensor/__init__.py +0 -0
  149. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/sensor/virtual_energy.py +0 -0
  150. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/template/__init__.py +0 -0
  151. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/template/alarm_panel.py +0 -0
  152. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/template/gate_cover.py +0 -0
  153. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/components/template/thermostat.py +0 -0
  154. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/__init__.py +0 -0
  155. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/__init__.py +0 -0
  156. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/cli.py +0 -0
  157. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/hashing.py +0 -0
  158. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/migration.py +0 -0
  159. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/models.py +0 -0
  160. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/auth/store.py +0 -0
  161. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/__init__.py +0 -0
  162. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/data/__init__.py +0 -0
  163. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/data/docker-compose-cloud.yaml +0 -0
  164. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/data/docker-compose.yaml +0 -0
  165. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/cloud/secrets.py +0 -0
  166. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/__init__.py +0 -0
  167. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/input_bindings.py +0 -0
  168. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/migrations/__init__.py +0 -0
  169. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
  170. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/migrations/v2_transition.py +0 -0
  171. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
  172. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
  173. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/package-lock.json +0 -0
  174. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/package.json +0 -0
  175. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/provenance.py +0 -0
  176. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/schema_converter.py +0 -0
  177. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/secret_masking.py +0 -0
  178. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/yaml_compat.py +0 -0
  179. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/yaml_patch.py +0 -0
  180. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/config/yaml_util.py +0 -0
  181. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/containers.py +0 -0
  182. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/diagnostics/__init__.py +0 -0
  183. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/diagnostics/collect.py +0 -0
  184. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/discovery.py +0 -0
  185. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/events/__init__.py +0 -0
  186. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/events/bus.py +0 -0
  187. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/__init__.py +0 -0
  188. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/action_conditions.py +0 -0
  189. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/canopen.py +0 -0
  190. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/covers.py +0 -0
  191. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/display.py +0 -0
  192. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/inputs.py +0 -0
  193. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/irrigation.py +0 -0
  194. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/manager.py +0 -0
  195. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/modbus.py +0 -0
  196. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/outputs.py +0 -0
  197. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/remote.py +0 -0
  198. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/remote_input_registrar.py +0 -0
  199. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/scheduler.py +0 -0
  200. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/security_alert.py +0 -0
  201. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/sensors.py +0 -0
  202. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/sun.py +0 -0
  203. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/templates/__init__.py +0 -0
  204. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/templates/alarm.py +0 -0
  205. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/templates/gate_cover.py +0 -0
  206. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/templates/thermostat.py +0 -0
  207. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/templates.py +0 -0
  208. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/manager/update.py +0 -0
  209. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/__init__.py +0 -0
  210. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/basic.py +0 -0
  211. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/basic_mqtt.py +0 -0
  212. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/composite.py +0 -0
  213. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/local.py +0 -0
  214. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/lox.py +0 -0
  215. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/mqtt.py +0 -0
  216. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/messaging/queue.py +0 -0
  217. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/net/__init__.py +0 -0
  218. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/net/discovery_guard.py +0 -0
  219. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/__init__.py +0 -0
  220. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/base.py +0 -0
  221. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/can.py +0 -0
  222. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/esphome.py +0 -0
  223. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/mqtt.py +0 -0
  224. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/wled.py +0 -0
  225. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/remote/wled_cache.py +0 -0
  226. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/security/__init__.py +0 -0
  227. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/security/certificate.py +0 -0
  228. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/security/framing.py +0 -0
  229. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/sensor/__init__.py +0 -0
  230. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/sensor/base.py +0 -0
  231. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/sensor/sun.py +0 -0
  232. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/sensor/system.py +0 -0
  233. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/state/__init__.py +0 -0
  234. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/state/manager.py +0 -0
  235. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/system/__init__.py +0 -0
  236. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/system/host_data.py +0 -0
  237. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/system/monitor.py +0 -0
  238. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/system_ops.py +0 -0
  239. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/__init__.py +0 -0
  240. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/async_updater.py +0 -0
  241. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/conditions.py +0 -0
  242. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/filter.py +0 -0
  243. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/font_util.py +0 -0
  244. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/logger.py +0 -0
  245. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/overlay.py +0 -0
  246. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/sun.py +0 -0
  247. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/timeperiod.py +0 -0
  248. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/core/utils/util.py +0 -0
  249. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/adc.yaml +0 -0
  250. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  251. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/config.yaml +0 -0
  252. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/event.yaml +0 -0
  253. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/mqtt.yaml +0 -0
  254. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  255. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/adc.yaml +0 -0
  256. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  257. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/config.yaml +0 -0
  258. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/event.yaml +0 -0
  259. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/mqtt.yaml +0 -0
  260. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  261. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/adc.yaml +0 -0
  262. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
  263. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/config.yaml +0 -0
  264. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/event.yaml +0 -0
  265. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/mqtt.yaml +0 -0
  266. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/48x4/output48x4A.yaml +0 -0
  267. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/__init__.py +0 -0
  268. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/can_master.yaml +0 -0
  269. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/can_slave.yaml +0 -0
  270. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/adc.yaml +0 -0
  271. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  272. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/config.yaml +0 -0
  273. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/cover.yaml +0 -0
  274. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/event.yaml +0 -0
  275. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/mqtt.yaml +0 -0
  276. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover/outputCover.yaml +0 -0
  277. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/adc.yaml +0 -0
  278. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  279. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/config.yaml +0 -0
  280. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/cover.yaml +0 -0
  281. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/event.yaml +0 -0
  282. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  283. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  284. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/adc.yaml +0 -0
  285. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  286. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  287. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  288. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  289. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/event_all.yaml +0 -0
  290. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  291. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  292. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  293. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  294. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  295. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  296. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/exceptions.py +0 -0
  297. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/__init__.py +0 -0
  298. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/analog/__init__.py +0 -0
  299. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/analog/adc.py +0 -0
  300. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/__init__.py +0 -0
  301. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/bridge.py +0 -0
  302. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/client.py +0 -0
  303. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/interface.py +0 -0
  304. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/node.py +0 -0
  305. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/node_id.py +0 -0
  306. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/can/test_od.py +0 -0
  307. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/display/__init__.py +0 -0
  308. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/display/early_oled.py +0 -0
  309. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  310. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/display/oled.py +0 -0
  311. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/__init__.py +0 -0
  312. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  313. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
  314. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  315. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  316. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/input/__init__.py +0 -0
  317. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/input/base.py +0 -0
  318. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/gpio/input/manager.py +0 -0
  319. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/__init__.py +0 -0
  320. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/bus.py +0 -0
  321. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/ina219.py +0 -0
  322. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/ina219_driver.py +0 -0
  323. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/ina226.py +0 -0
  324. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/ina226_driver.py +0 -0
  325. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/mcp9808.py +0 -0
  326. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/i2c/pct2075.py +0 -0
  327. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/onewire/__init__.py +0 -0
  328. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/onewire/dallas.py +0 -0
  329. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/sensor/__init__.py +0 -0
  330. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  331. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/sensor/temperature/base.py +0 -0
  332. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  333. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  334. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/integration/__init__.py +0 -0
  335. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/integration/interlock.py +0 -0
  336. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/integration/lox_template.py +0 -0
  337. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/__init__.py +0 -0
  338. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/actions.py +0 -0
  339. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/daemon.json +0 -0
  340. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
  341. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml +0 -0
  342. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
  343. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
  344. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/helpers/boneio-containers +0 -0
  345. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/helpers/boneio-helpers-heal +0 -0
  346. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/helpers/boneio-migrate-v2 +0 -0
  347. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/helpers/boneio-system +0 -0
  348. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/issue.d/10-boneio.issue +0 -0
  349. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/journald/journald.conf +0 -0
  350. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/kernel/postinst-boneio-overlay +0 -0
  351. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/migrations-recovery.pem +0 -0
  352. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/migrations.pem +0 -0
  353. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
  354. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
  355. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/sshd/10-boneio-hardening.conf +0 -0
  356. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/sudoers/boneio +0 -0
  357. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/sudoers/boneio-helpers +0 -0
  358. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/sudoers/boneio-timedatectl +0 -0
  359. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/boneio-helpers-heal.service +0 -0
  360. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
  361. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
  362. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/boneio.service +0 -0
  363. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/dropins/avahi-daemon-defer.conf +0 -0
  364. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/dropins/bb-usb-gadgets-defer.conf +0 -0
  365. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/dropins/mosquitto-priority.conf +0 -0
  366. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/dropins/timer-no-persistent.conf +0 -0
  367. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/dropins/user-manager-defer.conf +0 -0
  368. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/linger-marker +0 -0
  369. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
  370. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
  371. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
  372. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
  373. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
  374. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
  375. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/assets/wheels/pyyaml-6.0.3-cp313-cp313-linux_armv7l.whl +0 -0
  376. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/bootstrap/boneio-migrate +0 -0
  377. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/bootstrap/install-helper.sh +0 -0
  378. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
  379. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.0.json +0 -0
  380. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.0.sig +0 -0
  381. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.1.json +0 -0
  382. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.1.sig +0 -0
  383. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.2.json +0 -0
  384. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.3.2.sig +0 -0
  385. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.4.0.json +0 -0
  386. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.4.0.sig +0 -0
  387. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.4.3.json +0 -0
  388. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.4.3.sig +0 -0
  389. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.0.json +0 -0
  390. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.0.sig +0 -0
  391. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.1.json +0 -0
  392. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.1.sig +0 -0
  393. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.10.json +0 -0
  394. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.10.sig +0 -0
  395. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.11.json +0 -0
  396. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.11.sig +0 -0
  397. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.12.json +0 -0
  398. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.12.sig +0 -0
  399. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.13.json +0 -0
  400. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.13.sig +0 -0
  401. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.14.json +0 -0
  402. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.14.sig +0 -0
  403. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.15.json +0 -0
  404. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.15.sig +0 -0
  405. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.16.json +0 -0
  406. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.16.sig +0 -0
  407. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.17.json +0 -0
  408. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.17.sig +0 -0
  409. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.18.json +0 -0
  410. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.18.sig +0 -0
  411. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.2.json +0 -0
  412. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.2.sig +0 -0
  413. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.3.json +0 -0
  414. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.3.sig +0 -0
  415. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.4.json +0 -0
  416. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.4.sig +0 -0
  417. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.5.json +0 -0
  418. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.5.sig +0 -0
  419. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.6.json +0 -0
  420. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.6.sig +0 -0
  421. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.7.json +0 -0
  422. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.7.sig +0 -0
  423. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.8.json +0 -0
  424. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.8.sig +0 -0
  425. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.9.json +0 -0
  426. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.5.9.sig +0 -0
  427. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.0.json +0 -0
  428. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.0.sig +0 -0
  429. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.1.json +0 -0
  430. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.1.sig +0 -0
  431. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.10.json +0 -0
  432. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.10.sig +0 -0
  433. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.11.json +0 -0
  434. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.11.sig +0 -0
  435. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.12.json +0 -0
  436. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.12.sig +0 -0
  437. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.2.json +0 -0
  438. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.2.sig +0 -0
  439. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.3.json +0 -0
  440. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.3.sig +0 -0
  441. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.4.json +0 -0
  442. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.4.sig +0 -0
  443. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.5.json +0 -0
  444. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.5.sig +0 -0
  445. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.6.json +0 -0
  446. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.6.sig +0 -0
  447. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.7.json +0 -0
  448. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.7.sig +0 -0
  449. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.8.json +0 -0
  450. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.8.sig +0 -0
  451. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.9.json +0 -0
  452. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/plans/1.6.9.sig +0 -0
  453. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/__init__.py +0 -0
  454. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
  455. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
  456. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
  457. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
  458. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
  459. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
  460. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
  461. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_10_disable_console_setup.py +0 -0
  462. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_11_timer_catchup.py +0 -0
  463. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_12_oled_splash_off_critical_path.py +0 -0
  464. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_13_mosquitto_priority.py +0 -0
  465. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_14_journal_apparent_size.py +0 -0
  466. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_15_prune_orphan_journals.py +0 -0
  467. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_16_login_linger.py +0 -0
  468. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_17_defer_user_manager.py +0 -0
  469. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_18_fix_hostname_once.py +0 -0
  470. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
  471. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
  472. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
  473. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
  474. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_5_overlay_kernel_hook.py +0 -0
  475. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_6_boot_service_order.py +0 -0
  476. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_7_journald_limits.py +0 -0
  477. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_8_apparmor_prune.py +0 -0
  478. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_5_9_defer_nonessential.py +0 -0
  479. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_0_nodered_admin_auth.py +0 -0
  480. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py +0 -0
  481. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_11_drop_docker_group.py +0 -0
  482. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_12_console_shows_ip.py +0 -0
  483. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py +0 -0
  484. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py +0 -0
  485. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py +0 -0
  486. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_4_ssh_login_hardening.py +0 -0
  487. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_5_trust_transition.py +0 -0
  488. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_6_retire_legacy_helper.py +0 -0
  489. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_7_timedatectl_sudoers.py +0 -0
  490. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_8_system_helper.py +0 -0
  491. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/migrations/versions/v1_6_9_ntp_servers.py +0 -0
  492. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/__init__.py +0 -0
  493. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/cli.py +0 -0
  494. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/client.py +0 -0
  495. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/coordinator.py +0 -0
  496. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/__init__.py +0 -0
  497. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
  498. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
  499. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
  500. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  501. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  502. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  503. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  504. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  505. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/defro-drx.json +0 -0
  506. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
  507. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  508. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/thessla.json +0 -0
  509. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  510. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/hvac/wanas415.json +0 -0
  511. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/inverters/sofar.json +0 -0
  512. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
  513. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/other/n4dsc08.json +0 -0
  514. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  515. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
  516. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/cwt.json +0 -0
  517. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  518. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/gdfs.json +0 -0
  519. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/gdfx.json +0 -0
  520. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  521. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/pt100.json +0 -0
  522. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
  523. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/sht20.json +0 -0
  524. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/devices/sensors/sht30.json +0 -0
  525. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/__init__.py +0 -0
  526. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/base.py +0 -0
  527. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/derived/__init__.py +0 -0
  528. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/derived/numeric.py +0 -0
  529. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/derived/select.py +0 -0
  530. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/derived/switch.py +0 -0
  531. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/derived/text.py +0 -0
  532. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/sensor/__init__.py +0 -0
  533. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/sensor/binary.py +0 -0
  534. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/sensor/numeric.py +0 -0
  535. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/sensor/text.py +0 -0
  536. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/writeable/__init__.py +0 -0
  537. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/writeable/binary.py +0 -0
  538. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/entities/writeable/numeric.py +0 -0
  539. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/mock_coordinator.py +0 -0
  540. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/modbus/utils.py +0 -0
  541. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/__init__.py +0 -0
  542. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/actions.py +0 -0
  543. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/events.py +0 -0
  544. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/files.py +0 -0
  545. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/logs.py +0 -0
  546. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/mqtt.py +0 -0
  547. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/models/state.py +0 -0
  548. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/actions.yaml +0 -0
  549. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/actions_sensor.yaml +0 -0
  550. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/actions_switch.yaml +0 -0
  551. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/condition.yaml +0 -0
  552. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/filters.yaml +0 -0
  553. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/filters_adc.yaml +0 -0
  554. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/id.yaml +0 -0
  555. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/remote_devices.yaml +0 -0
  556. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/remote_inputs.yaml +0 -0
  557. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/remote_outputs.yaml +0 -0
  558. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/temp_unit.yaml +0 -0
  559. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/schema/update_interval.yaml +0 -0
  560. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/action_validation.py +0 -0
  561. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/app.py +0 -0
  562. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/dashboard_cards.py +0 -0
  563. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/AppInitContext-CsffdB9c.js +0 -0
  564. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/EntityGrid-BDdmT0qN.js +0 -0
  565. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/LongPressWrapper-BKkWvoC1.js +0 -0
  566. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/NodeRedView-Ct08K8xu.js +0 -0
  567. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/Sparkline-D-2-v-7o.js +0 -0
  568. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/ViewToggle-B8OpHNHc.js +0 -0
  569. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/aiConfig-_hPXvgdY.js +0 -0
  570. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/aiWizardPrompt-Dc7dZBzw.js +0 -0
  571. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/axios-uEi8e3Ln.js +0 -0
  572. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
  573. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/chunk-QTnfLwEv.js +0 -0
  574. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
  575. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  576. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/configCache-CLN4xEny.js +0 -0
  577. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/coverUtils-Cf4Uxn2U.js +0 -0
  578. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/createLucideIcon-BEjh8B3y.js +0 -0
  579. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/editor.worker-Cn2oRESe.js +0 -0
  580. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/fa-BEzM11bH.js +0 -0
  581. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/formatters-zOiGPJLh.js +0 -0
  582. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/gi-tOlGxC0X.js +0 -0
  583. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/index-lVrZSgFS.css +0 -0
  584. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/longPress-Dx7OCSyP.js +0 -0
  585. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
  586. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/monaco-DUFfd7ef.js +0 -0
  587. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/monaco-Dpn-hvLa.js +0 -0
  588. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/select-D3PIwbEj.js +0 -0
  589. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/tabs-box-Byn-MOyS.js +0 -0
  590. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/utils-B6KiDbIe.js +0 -0
  591. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
  592. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/assets/yaml.worker-8qQfrID5.js +0 -0
  593. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/boneio-192.png +0 -0
  594. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/boneio-512.png +0 -0
  595. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/boneio.svg +0 -0
  596. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  597. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
  598. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
  599. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
  600. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
  601. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
  602. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
  603. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
  604. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
  605. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
  606. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
  607. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
  608. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
  609. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
  610. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/location.schema.json +0 -0
  611. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
  612. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
  613. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
  614. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
  615. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
  616. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
  617. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
  618. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
  619. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
  620. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
  621. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
  622. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
  623. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
  624. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
  625. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
  626. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/schedule.schema.json +0 -0
  627. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
  628. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
  629. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
  630. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/frontend-dist/workbox-7e79c025.js +0 -0
  631. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/hvac_svg_templates.py +0 -0
  632. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/middleware/__init__.py +0 -0
  633. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/middleware/auth.py +0 -0
  634. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/middleware/csrf.py +0 -0
  635. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/middleware/policy.py +0 -0
  636. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/modbus_card_templates.py +0 -0
  637. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/rate_limit.py +0 -0
  638. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/__init__.py +0 -0
  639. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/accounts.py +0 -0
  640. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/auth.py +0 -0
  641. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/can.py +0 -0
  642. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config.py +0 -0
  643. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config_actions.py +0 -0
  644. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config_backups.py +0 -0
  645. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config_discovery.py +0 -0
  646. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/config_files.py +0 -0
  647. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/covers.py +0 -0
  648. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/dashboard.py +0 -0
  649. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/dev_fake_device.py +0 -0
  650. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/diagnostics.py +0 -0
  651. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/irrigation.py +0 -0
  652. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/migrations.py +0 -0
  653. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/modbus.py +0 -0
  654. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/mqtt_reference.py +0 -0
  655. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/nodered.py +0 -0
  656. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/onboarding.py +0 -0
  657. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/outputs.py +0 -0
  658. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/schedule.py +0 -0
  659. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/sensors.py +0 -0
  660. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/sun.py +0 -0
  661. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/system.py +0 -0
  662. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/templates.py +0 -0
  663. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/timezone_sudoers.py +0 -0
  664. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/tools.py +0 -0
  665. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/routes/update.py +0 -0
  666. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/adc.schema.json +0 -0
  667. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/areas.schema.json +0 -0
  668. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/binary_sensor.schema.json +0 -0
  669. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/boneio.schema.json +0 -0
  670. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/can.schema.json +0 -0
  671. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/cover.schema.json +0 -0
  672. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/dallas.schema.json +0 -0
  673. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/ds2482.schema.json +0 -0
  674. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/event.schema.json +0 -0
  675. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/ina219.schema.json +0 -0
  676. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/ina226.schema.json +0 -0
  677. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/irrigation.schema.json +0 -0
  678. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/lm75.schema.json +0 -0
  679. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/location.schema.json +0 -0
  680. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/logger.schema.json +0 -0
  681. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/lox_udp.schema.json +0 -0
  682. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/mcp23017.schema.json +0 -0
  683. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/mcp9808.schema.json +0 -0
  684. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/modbus.schema.json +0 -0
  685. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  686. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/mqtt.schema.json +0 -0
  687. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/oled.schema.json +0 -0
  688. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/output.schema.json +0 -0
  689. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/output_group.schema.json +0 -0
  690. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/pca9685.schema.json +0 -0
  691. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/pcf8575.schema.json +0 -0
  692. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/remote_devices.schema.json +0 -0
  693. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/remote_inputs.schema.json +0 -0
  694. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/remote_outputs.schema.json +0 -0
  695. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/schedule.schema.json +0 -0
  696. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/sensor.schema.json +0 -0
  697. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/template.schema.json +0 -0
  698. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  699. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/security_headers.py +0 -0
  700. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/services/__init__.py +0 -0
  701. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/services/logs.py +0 -0
  702. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/sudo_rate_limiter.py +0 -0
  703. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/web_server.py +0 -0
  704. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio/webui/websocket_manager.py +0 -0
  705. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio.egg-info/dependency_links.txt +0 -0
  706. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio.egg-info/entry_points.txt +0 -0
  707. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio.egg-info/requires.txt +0 -0
  708. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/boneio.egg-info/top_level.txt +0 -0
  709. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/pyproject.toml +0 -0
  710. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/setup.cfg +0 -0
  711. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/setup.py +0 -0
  712. {boneio-1.6.0.dev6 → boneio-1.6.0.dev8}/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.dev6
3
+ Version: 1.6.0.dev8
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
@@ -97,6 +97,14 @@ HOST = "host"
97
97
  USERNAME = "username"
98
98
  PASSWORD = "password"
99
99
  PORT = "port"
100
+
101
+ #: The port the device's built-in reverse proxy publishes HTTPS on.
102
+ #:
103
+ #: Set in docker-compose.yaml as HTTPS_PORT and defaulted there too; this is
104
+ #: the same number, for the parts of the application that need to name the
105
+ #: proxy without reading the compose file. It lives here rather than beside the
106
+ #: web server so that core can use it without importing the web layer.
107
+ DEFAULT_PROXY_PORT = 8443
100
108
  ONLINE = "online"
101
109
  OFFLINE = "offline"
102
110
  TOPIC = "topic"
@@ -74,6 +74,13 @@ fi
74
74
  # Generate Caddyfile
75
75
  cat > /tmp/Caddyfile << EOF
76
76
  {
77
+ # Six months, not the twelve hours Caddy defaults to — see the
78
+ # non-cloud script. The intermediate has to outlive the leaves.
79
+ pki {
80
+ ca local {
81
+ intermediate_lifetime 365d
82
+ }
83
+ }
77
84
  # Global options - empty for internal issuer
78
85
  }
79
86
 
@@ -91,7 +98,10 @@ ${CLOUD_BLOCK}
91
98
 
92
99
  # HTTPS with self-signed certificate (catch-all for hostname and IP access)
93
100
  https:// {
94
- tls internal {
101
+ tls {
102
+ issuer internal {
103
+ lifetime 180d
104
+ }
95
105
  on_demand
96
106
  }
97
107
 
@@ -27,6 +27,7 @@ from boneio.core.cloud.secrets import MASTER_SECRET as DEFAULT_MASTER_SECRET
27
27
  from boneio.core.system.monitor import get_network_info
28
28
 
29
29
  from boneio.core import containers
30
+ from boneio.core.system.monitor import get_network_info
30
31
 
31
32
  _LOGGER = logging.getLogger(__name__)
32
33
 
@@ -688,8 +689,6 @@ async def set_enabled(config_helper, enabled: bool, local_ip: str | None = None)
688
689
  serial = getattr(config_helper, "serial_number", None)
689
690
  if not local_ip:
690
691
  try:
691
- from boneio.core.system.monitor import get_network_info
692
-
693
692
  local_ip = (get_network_info() or {}).get("ip", "")
694
693
  except Exception as err: # noqa: BLE001
695
694
  _LOGGER.warning("Could not read this device's address: %s", err)
@@ -15,6 +15,8 @@ from boneio.const import (
15
15
  ALARM_CONTROL_PANEL,
16
16
  BINARY_SENSOR,
17
17
  BONEIO,
18
+ DEFAULT_PROXY_PORT,
19
+ IP,
18
20
  BUTTON,
19
21
  CLIMATE,
20
22
  COVER,
@@ -45,6 +47,7 @@ class ConfigHelper:
45
47
  is_web_active: bool = False,
46
48
  web_port: int = 8090,
47
49
  proxy_port: int | None = None,
50
+ expose: str = "all",
48
51
  config_file_path: str | None = None,
49
52
  send_boneio_autodiscovery: bool = True,
50
53
  receive_boneio_autodiscovery: bool = True,
@@ -98,6 +101,7 @@ class ConfigHelper:
98
101
  self._device_type = device_type
99
102
  self._web_port = web_port
100
103
  self._proxy_port = proxy_port
104
+ self._expose = expose
101
105
  self._fetch_old_discovery = None
102
106
 
103
107
  self._autodiscovery_messages = {
@@ -183,12 +187,54 @@ class ConfigHelper:
183
187
 
184
188
  @property
185
189
  def http_proto(self) -> str:
186
- return "https" if self._proxy_port else "http"
190
+ """The scheme anything linking to this panel should use."""
191
+ return "https" if self._behind_proxy else "http"
192
+
193
+ @property
194
+ def _behind_proxy(self) -> bool:
195
+ """Whether the panel is reached through the reverse proxy.
196
+
197
+ Either because somebody named its port, or because the panel's own
198
+ port has been taken off the network and the proxy is the only way in.
199
+ """
200
+ return bool(self._proxy_port) or self._expose == "proxy"
201
+
202
+ @property
203
+ def configuration_url(self) -> str | None:
204
+ """The address anything linking to this panel should use.
205
+
206
+ Home Assistant puts this on the device page, and the panel shows it so
207
+ an operator can see what was published without opening Home Assistant.
208
+ Both read it here rather than each deciding for itself: the wording in
209
+ the panel drifted away from what discovery actually sends within a day
210
+ of being written, because it described the rule instead of asking.
211
+
212
+ Returns:
213
+ The URL, or None when there is no address to build one from.
214
+ """
215
+ if self._cloud_registration and self.serial_number:
216
+ # Registered with the cloud: a real certificate on a public name,
217
+ # pointing at the local address. Nothing else can beat that.
218
+ return f"https://{self.serial_number}.black.boneio.app:{DEFAULT_PROXY_PORT}"
219
+ address = (self._network_info or {}).get(IP)
220
+ if not (self._is_web_active and address):
221
+ return None
222
+ return f"{self.http_proto}://{address}:{self.web_configuration_port}"
187
223
 
188
224
  @property
189
225
  def web_configuration_port(self) -> int:
190
- """Get port for HA discovery URL. Uses proxy_port if set, otherwise web_port."""
191
- return self._proxy_port if self._proxy_port else self._web_port
226
+ """The port to put in a link to this panel.
227
+
228
+ The configured proxy port when there is one. Otherwise the panel's own
229
+ port — unless that port has been taken off the network, in which case
230
+ it answers nothing and linking to it would hand Home Assistant a dead
231
+ address. Then it is the port the built-in proxy serves on.
232
+ """
233
+ if self._proxy_port:
234
+ return self._proxy_port
235
+ if self._expose == "proxy":
236
+ return DEFAULT_PROXY_PORT
237
+ return self._web_port
192
238
 
193
239
  @property
194
240
  def topic_prefix(self) -> str:
@@ -64,6 +64,14 @@ class Check:
64
64
  state: State
65
65
  detail: str
66
66
  remedy: str = ""
67
+ #: A fact about this device that belongs with the finding and must not be
68
+ #: translated away: the error a service reported, a name, a path.
69
+ #:
70
+ #: The panel replaces title, detail and remedy with its own wording, keyed
71
+ #: by check id — so anything the backend varies at runtime is lost the
72
+ #: moment somebody writes a translation for it. This is shown verbatim
73
+ #: underneath instead.
74
+ context: str = ""
67
75
  #: Where in the panel this is fixed, when it can be fixed there. A bare
68
76
  #: name is a Settings section; ``system:<anchor>`` is the System page.
69
77
  #: None means there is no control — the remedy is a file or a shell.
@@ -82,6 +90,7 @@ class Check:
82
90
  "state": str(self.state),
83
91
  "detail": self.detail,
84
92
  "remedy": self.remedy,
93
+ "context": self.context,
85
94
  "settings_section": self.settings_section,
86
95
  }
87
96
 
@@ -213,6 +222,9 @@ def evaluate(
213
222
  anonymous_allowed: bool,
214
223
  auth_required: bool,
215
224
  cloud_active: bool,
225
+ proxy_serving: bool | None = None,
226
+ custom_certificate: bool = False,
227
+ cloud_error: str | None = None,
216
228
  ) -> Posture:
217
229
  """Work out what is still unlocked.
218
230
 
@@ -222,6 +234,10 @@ def evaluate(
222
234
  anonymous_allowed: Whether the anonymous opt-out is set.
223
235
  auth_required: Whether requests currently need a token.
224
236
  cloud_active: Whether cloud registration is serving a real certificate.
237
+ proxy_serving: Whether the reverse proxy is answering for this
238
+ panel right now. None when nobody looked.
239
+ custom_certificate: Whether an uploaded certificate is installed.
240
+ cloud_error: What cloud registration last failed with, if anything.
225
241
 
226
242
  Returns:
227
243
  The full set of checks.
@@ -269,20 +285,35 @@ def evaluate(
269
285
  Check(
270
286
  id="web_exposed_in_clear",
271
287
  title="Panel served in the clear",
272
- severity=Severity.WARNING,
288
+ # Three states, not two. Telling somebody to move the panel behind
289
+ # a proxy that is not serving it is advice we would then refuse to
290
+ # carry out, and they would find that out by clicking. Where the
291
+ # proxy is not answering this drops to advice and points at the
292
+ # proxy instead of at the panel.
293
+ severity=Severity.WARNING if proxy_serving is not False else Severity.INFO,
273
294
  state=State.OK if behind_proxy else State.FAILED,
274
295
  detail=(
275
- "The panel answers on its own port on every network interface, "
276
- "without TLS. Anyone who can see the traffic sees the login "
277
- "form, the token it hands back, and a configuration that "
278
- "carries passwords."
279
- if not behind_proxy
280
- else "The panel is reachable only through the encrypted proxy."
296
+ "The panel is reachable only through the encrypted proxy."
297
+ if behind_proxy
298
+ else (
299
+ "The panel answers on its own port on every network "
300
+ "interface, without TLS. Anyone who can see the traffic "
301
+ "sees the login form, the token it hands back, and a "
302
+ "configuration that carries passwords."
303
+ if proxy_serving is not False
304
+ else "The panel answers on its own port on every network "
305
+ "interface, without TLS — and the proxy that would replace "
306
+ "it is not serving this panel, so closing that port now "
307
+ "would leave the device reachable on nothing."
308
+ )
281
309
  ),
282
310
  remedy=(
283
- "Move it behind the proxy from the Security section. The panel "
284
- "then answers on https and through an SSH tunnel, and not on "
285
- "the local network in the clear."
311
+ "Move it behind the proxy. It then answers over HTTPS and "
312
+ "through an SSH tunnel, and not on the local network in the "
313
+ "clear."
314
+ if proxy_serving is not False
315
+ else "Get the proxy serving this panel first — check that "
316
+ "HTTPS answers on its port — and this becomes one click."
286
317
  ),
287
318
  settings_section="security",
288
319
  )
@@ -312,6 +343,7 @@ def evaluate(
312
343
  )
313
344
 
314
345
  web = config.get("web") if isinstance(config.get("web"), dict) else {}
346
+ cloud_enabled = bool((web.get("cloud") or {}).get("enabled"))
315
347
  has_legacy = _legacy_web_auth(config)
316
348
  checks.append(
317
349
  Check(
@@ -342,15 +374,42 @@ def evaluate(
342
374
  id="certificate",
343
375
  title="HTTPS certificate",
344
376
  severity=Severity.INFO,
345
- state=State.OK if cloud_active else State.FAILED,
377
+ # Four states. This used to have two, and told an operator to
378
+ # enable cloud registration on a device where it was already on and
379
+ # failing with an error the application had in hand — while a
380
+ # second route to a trusted certificate, uploading one, had been
381
+ # added and this check knew nothing about it.
382
+ state=State.OK if (custom_certificate or cloud_active) else State.FAILED,
346
383
  detail=(
347
- "Served with a certificate browsers trust."
384
+ "Served with the certificate you uploaded."
385
+ if custom_certificate
386
+ else "Served with a certificate browsers trust."
348
387
  if cloud_active
349
- else "Served with a self-signed certificate, so browsers warn "
350
- "on every visit and people learn to click through the warning."
388
+ else (
389
+ "Cloud registration is switched on but is not serving a "
390
+ "certificate, so the panel is still served with a "
391
+ "self-signed one."
392
+ if cloud_enabled and cloud_error
393
+ else "Cloud registration is switched on but has not "
394
+ "produced a certificate yet, so the panel is still served "
395
+ "with a self-signed one."
396
+ if cloud_enabled
397
+ else "Served with a self-signed certificate, so browsers "
398
+ "warn on every visit and people learn to click through the "
399
+ "warning."
400
+ )
351
401
  ),
352
- remedy="Enable boneIO Cloud registration to get a trusted certificate.",
353
- settings_section="web",
402
+ remedy=(
403
+ ""
404
+ if custom_certificate or cloud_active
405
+ else "Sort out the registration error, or upload a certificate "
406
+ "of your own below."
407
+ if cloud_enabled
408
+ else "Enable boneIO Cloud registration, or upload a certificate "
409
+ "of your own below."
410
+ ),
411
+ context=cloud_error or "",
412
+ settings_section="security",
354
413
  )
355
414
  )
356
415
 
@@ -82,11 +82,9 @@ def ha_availabilty_message(
82
82
  topic = config_helper.topic_prefix if topic is None else topic
83
83
  device_name = config_helper.name if device_name is None else device_name
84
84
  model = f"boneIO Black {config_helper.device_type.title().replace('X', 'x')}"
85
- if config_helper.cloud_registration and config_helper.serial_number:
86
- # PWA-registered device: use the public PWA domain with TLS
87
- web_url = f"https://{config_helper.serial_number}.black.boneio.app:8443"
88
- elif config_helper.is_web_active and config_helper.network_info and IP in config_helper.network_info:
89
- web_url = f"{config_helper.http_proto}://{config_helper.network_info[IP]}:{config_helper.web_configuration_port}"
85
+ # Decided in one place, which the panel reads too. Built here, the panel's
86
+ # description of it drifted out of date within a day.
87
+ web_url = config_helper.configuration_url or web_url
90
88
 
91
89
  web_url_dict = {
92
90
  "configuration_url": web_url
@@ -4,7 +4,7 @@
4
4
 
5
5
  f2ed05c6f5934a15f12571139bdc225804f67b8c83561cc39868f7b2296d2697 docker/daemon.json
6
6
  22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c docker/nodered/caddy/502.html
7
- 217e3cc6e24ae8241d23b15cfecaa477ac05fe031078cd72c472d36a11835443 docker/nodered/caddy/init-certs.sh
7
+ 93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388 docker/nodered/caddy/init-certs.sh
8
8
  fba1a5bc6a6b6aaaff8cced9f6ee1350a16ad1a5ddde2af366c198881698d264 docker/nodered/docker-compose-cloud.yaml
9
9
  cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6 docker/nodered/docker-compose.yaml
10
10
  bff00753c72fb17609a6f7b3a58ef78b7b394da12d19fd65b875f2889695e2b4 docker/nodered/node-red/settings.js
@@ -42,7 +42,10 @@ if [ -f "$CUSTOM_CERT" ] && [ -f "$CUSTOM_KEY" ]; then
42
42
  TLS_DIRECTIVE="tls $CUSTOM_CERT $CUSTOM_KEY"
43
43
  else
44
44
  echo "Serving Caddy's own certificate (no uploaded one found)"
45
- TLS_DIRECTIVE="tls internal {
45
+ TLS_DIRECTIVE="tls {
46
+ issuer internal {
47
+ lifetime 180d
48
+ }
46
49
  on_demand
47
50
  }"
48
51
  fi
@@ -50,7 +53,17 @@ fi
50
53
  # Generate Caddyfile
51
54
  cat > /tmp/Caddyfile << EOF
52
55
  {
53
- # Global options - empty for internal issuer
56
+ # The device's own certificate authority issues for six months rather
57
+ # than the twelve hours Caddy defaults to. Nobody trusts this authority
58
+ # until they choose to, and when they do — by installing the root on
59
+ # their own machines, or by clicking through once — a certificate that
60
+ # expires the same evening undoes that daily. The intermediate has to
61
+ # outlive the leaves it signs, or Caddy refuses to start.
62
+ pki {
63
+ ca local {
64
+ intermediate_lifetime 365d
65
+ }
66
+ }
54
67
  }
55
68
 
56
69
  # HTTP — redirect to HTTPS.
@@ -1 +1 @@
1
- [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"217e3cc6e24ae8241d23b15cfecaa477ac05fe031078cd72c472d36a11835443","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/502.html","expected_sha256":"22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/caddy/502.html","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/docker-compose.yaml","expected_sha256":"cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/docker-compose.yaml","template_vars":{}},{"action":"remove_file","path":"/home/boneio/docker/nodered/nginx/default.conf"}]
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/502.html","expected_sha256":"22dfe7d55e5ed85ea0f4149b7776b7504a12b91905701657a88840ae1208087c","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/caddy/502.html","template_vars":{}},{"action":"install_file","dst":"/home/boneio/docker/nodered/docker-compose.yaml","expected_sha256":"cd90e1bcb6488669179c8e7a40a6265923e0fea045cc79d5b7559ebb309131b6","group":"boneio","mode":420,"owner":"boneio","src":"docker/nodered/docker-compose.yaml","template_vars":{}},{"action":"remove_file","path":"/home/boneio/docker/nodered/nginx/default.conf"}]
@@ -0,0 +1,2 @@
1
+ �
2
+ MU0���W��r�Z������/�y c] 9�Y��*g;O�u���OU���W����k�Q�
@@ -0,0 +1 @@
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}}]
@@ -0,0 +1 @@
1
+ �,�L�5�02i%�u��G�c:m �����CM 0�z���X>j��v]Bo��~�|�;<f
@@ -0,0 +1 @@
1
+ [{"action":"install_file","dst":"/home/boneio/docker/nodered/caddy/init-certs.sh","expected_sha256":"93342a62f024235b2deefd2cd833ef72d7a9cf14a8ad0727ab0dc422e78e8388","group":"boneio","mode":493,"owner":"boneio","src":"docker/nodered/caddy/init-certs.sh","template_vars":{}}]
@@ -0,0 +1 @@
1
+ �,�L�5�02i%�u��G�c:m �����CM 0�z���X>j��v]Bo��~�|�;<f
@@ -1 +1 @@
1
- {"plans":{"1.3.0":"3199d74a6dda33162bbee4fc650a5a0d70d5372258f3305ad92501215e22a7fd","1.3.1":"580381a4f6f40fc1bd4e903e591ad0d5c1db27daaccafc6f79dabf8c3b84259a","1.3.2":"7a69ffaf0c41438be25a656dcdc87783daac0eae79218d023648ef9d708e373f","1.4.0":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.4.3":"a8cfbabff09d21944a822c4a70f23a7ee14960c4054de151c9fbc7cdb29adff5","1.4.4":"27ebf198e03c882c21572a9be02f63e8ffe6a610f6f395d7116ad9e258b4dac7","1.5.0":"52d9d118da099abda0e0153cd16892e201681f6e4d3c6e5790284d1ac469a407","1.5.1":"d283cb8c01024338fb614ae2199744d883379f59579423e4eb9234f5c59ebdd8","1.5.10":"889e2f12614e6e67d342571c1c3bab8940659bfbbf43fa30a6847e73decb85d1","1.5.11":"4906e4de2b3a9c2f0b0181817c9dc168cb910ba6941691d4e86b8387802b624a","1.5.12":"c0a0dc085bb33d9718e869ed5effc2c1581deffd7ed0d5adc119b94312181625","1.5.13":"bfe58c8756f9b5f5e55d5acbb6f7cfc469d201004d312c14e022eb7c52369b7d","1.5.14":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.15":"0687a735cb4aaf8f8f74ad6e228ca1b14e045cba8821991c7d19fc9beaeac766","1.5.16":"3544ac754f39d56ecf2b06300b7cca1b6f8723f99885cd11bd690f1a704d3728","1.5.17":"cf1e9e0ff6812cb7092a82dd588392d625decbe3680fe003dfc554f9045809d3","1.5.18":"1fd873effa66b632217d674745722f712a48b36bb79957fefae722757a74bc30","1.5.2":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.3":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.4":"e86174ba5aff6f257f8a3f4721c7942885cd203469a9d8ddc15dbe6c704e0f45","1.5.5":"f93ed2d4342e447eb9900a0150331113918f2a8b3baeeb795c07231d80f0337c","1.5.6":"e3d90e6ceb20d760f1e9fa63224c5a070a16b3ca6e7dc4cc2c594138e929cce8","1.5.7":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.8":"f075b84fb04f4043658a28402d963494dd58481f164c0b371cec94322fe6d131","1.5.9":"ac170fc924019fc2acd69a90a82ba5c2552dce7a2c01a05e5407443e7a9e5af7","1.6.0":"c8286514d1a4f1805e727e13d3c350bb390378c6f31ad6920030412d61ec9b3f","1.6.1":"aa1d3934091853fc21208993930c1bf92e17136428d1d0baaefabfa65d13e7fa","1.6.10":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.6.11":"d136203e08e3b052254403815d4ccedb555b0a297686fe97952d275eb1f322eb","1.6.12":"c328d4e36bd6277e01cef0140993e23970f4dff84425f3eba236cdd9a8954355","1.6.13":"035a0d32c891746e315fd228f8107680c856d9d128e3b4a19f6629256b3ef9b1","1.6.2":"6ef96b5e00a04a929d16f0e4a136bfcc5b8132a466d6907a99b2c8516a8952d5","1.6.3":"5c10db827bcb92b9322d4aa5751076b825da87c6d18d6953847ba72317cca862","1.6.4":"baf2bb1c2ec7c1bfccfc514ef1cef67907e056e4f7153bb5932ecb835c9cff78","1.6.5":"358dacbc8d16b1b665167de3bc1c42d101d82733502048f345184d1841ce03f2","1.6.6":"535bb041b99d5ac1bc9028ea88bc2fbf3dbadc80ea8dea236cc219123c194114","1.6.7":"d59af413e270e6f34b1b9a1c8c4acef35328f00e26fad447cfe214545af78d8f","1.6.8":"7175f827b99c602df80436db588c87277ce50f2734051a444163b048f5d0b23e","1.6.9":"732d5a9bcd2e496a260263a643c78a6346e9f3cef5b48fe59ac6b120bd03ba4e"},"release":"1.6.0.dev6"}
1
+ {"plans":{"1.3.0":"3199d74a6dda33162bbee4fc650a5a0d70d5372258f3305ad92501215e22a7fd","1.3.1":"580381a4f6f40fc1bd4e903e591ad0d5c1db27daaccafc6f79dabf8c3b84259a","1.3.2":"7a69ffaf0c41438be25a656dcdc87783daac0eae79218d023648ef9d708e373f","1.4.0":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.4.3":"a8cfbabff09d21944a822c4a70f23a7ee14960c4054de151c9fbc7cdb29adff5","1.4.4":"8658ec11d4b2d32e2e5c6154a7b052f518aecdd4d610a99a05a462aded671079","1.5.0":"52d9d118da099abda0e0153cd16892e201681f6e4d3c6e5790284d1ac469a407","1.5.1":"d283cb8c01024338fb614ae2199744d883379f59579423e4eb9234f5c59ebdd8","1.5.10":"889e2f12614e6e67d342571c1c3bab8940659bfbbf43fa30a6847e73decb85d1","1.5.11":"4906e4de2b3a9c2f0b0181817c9dc168cb910ba6941691d4e86b8387802b624a","1.5.12":"c0a0dc085bb33d9718e869ed5effc2c1581deffd7ed0d5adc119b94312181625","1.5.13":"bfe58c8756f9b5f5e55d5acbb6f7cfc469d201004d312c14e022eb7c52369b7d","1.5.14":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.15":"0687a735cb4aaf8f8f74ad6e228ca1b14e045cba8821991c7d19fc9beaeac766","1.5.16":"3544ac754f39d56ecf2b06300b7cca1b6f8723f99885cd11bd690f1a704d3728","1.5.17":"cf1e9e0ff6812cb7092a82dd588392d625decbe3680fe003dfc554f9045809d3","1.5.18":"1fd873effa66b632217d674745722f712a48b36bb79957fefae722757a74bc30","1.5.2":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.3":"39fccb7582e13e7e3436861fde7b83ddb8057788cbde792f2f0cf7003f068850","1.5.4":"e86174ba5aff6f257f8a3f4721c7942885cd203469a9d8ddc15dbe6c704e0f45","1.5.5":"f93ed2d4342e447eb9900a0150331113918f2a8b3baeeb795c07231d80f0337c","1.5.6":"e3d90e6ceb20d760f1e9fa63224c5a070a16b3ca6e7dc4cc2c594138e929cce8","1.5.7":"a0464f11e05128cba8881e6295e591fce1ed1e8d43ab0e16710effb8e543d810","1.5.8":"f075b84fb04f4043658a28402d963494dd58481f164c0b371cec94322fe6d131","1.5.9":"ac170fc924019fc2acd69a90a82ba5c2552dce7a2c01a05e5407443e7a9e5af7","1.6.0":"c8286514d1a4f1805e727e13d3c350bb390378c6f31ad6920030412d61ec9b3f","1.6.1":"aa1d3934091853fc21208993930c1bf92e17136428d1d0baaefabfa65d13e7fa","1.6.10":"41c3a16e7819857a4b826e944fcfb4f79c58e7192cb151b106a3acd7487d5771","1.6.11":"d136203e08e3b052254403815d4ccedb555b0a297686fe97952d275eb1f322eb","1.6.12":"c328d4e36bd6277e01cef0140993e23970f4dff84425f3eba236cdd9a8954355","1.6.13":"6e4a259795749084d2d01f97750a57528662898edf14a3a990ccfaffd414ac44","1.6.14":"6e4a259795749084d2d01f97750a57528662898edf14a3a990ccfaffd414ac44","1.6.2":"6ef96b5e00a04a929d16f0e4a136bfcc5b8132a466d6907a99b2c8516a8952d5","1.6.3":"5c10db827bcb92b9322d4aa5751076b825da87c6d18d6953847ba72317cca862","1.6.4":"baf2bb1c2ec7c1bfccfc514ef1cef67907e056e4f7153bb5932ecb835c9cff78","1.6.5":"358dacbc8d16b1b665167de3bc1c42d101d82733502048f345184d1841ce03f2","1.6.6":"535bb041b99d5ac1bc9028ea88bc2fbf3dbadc80ea8dea236cc219123c194114","1.6.7":"d59af413e270e6f34b1b9a1c8c4acef35328f00e26fad447cfe214545af78d8f","1.6.8":"7175f827b99c602df80436db588c87277ce50f2734051a444163b048f5d0b23e","1.6.9":"732d5a9bcd2e496a260263a643c78a6346e9f3cef5b48fe59ac6b120bd03ba4e"},"release":"1.6.0.dev8"}
@@ -0,0 +1 @@
1
+ �\�c1�U����[(O��+p��F�t�m43'�F���J��)�=�98Kf�k�_D[+��s6
@@ -116,12 +116,15 @@ class MigrationInfo:
116
116
  module_name: Full dotted module path.
117
117
  description: Human-readable description.
118
118
  requires_root: Whether ``boneio-migrate`` helper is needed.
119
+ superseded_by: A later migration that redoes everything this one does,
120
+ so a device applying both from scratch can skip this one.
119
121
  """
120
122
 
121
123
  version: str
122
124
  module_name: str
123
125
  description: str
124
126
  requires_root: bool = True
127
+ superseded_by: str | None = None
125
128
 
126
129
  def version_tuple(self) -> tuple[int, ...]:
127
130
  """Return version as comparable integer tuple."""
@@ -576,6 +579,7 @@ class MigrationRunner:
576
579
  version = getattr(mod, "VERSION", None)
577
580
  description = getattr(mod, "DESCRIPTION", module_name)
578
581
  requires_root = getattr(mod, "REQUIRES_ROOT", True)
582
+ superseded_by = getattr(mod, "SUPERSEDED_BY", None)
579
583
 
580
584
  if version is None:
581
585
  _LOGGER.warning("Migration module %s has no VERSION, skipping.", full_name)
@@ -587,6 +591,7 @@ class MigrationRunner:
587
591
  module_name=full_name,
588
592
  description=description,
589
593
  requires_root=requires_root,
594
+ superseded_by=superseded_by,
590
595
  )
591
596
  )
592
597
  except Exception as exc:
@@ -607,8 +612,49 @@ class MigrationRunner:
607
612
  _LOGGER.debug("Applied migrations: %s", applied)
608
613
 
609
614
  def _get_pending(self) -> list[MigrationInfo]:
610
- """Return migrations not yet applied."""
611
- return [m for m in self._all_migrations if m.version not in self._applied]
615
+ """Return migrations not yet applied, and not made pointless by a later one.
616
+
617
+ A file installed by one migration and replaced by a later one is
618
+ written twice on a device that applies both from scratch — three times
619
+ by the third revision, and so on. Each write is a signature check, a
620
+ digest check and a validator run through the privileged helper, which
621
+ on a controller is seconds, and each is another step that can fail on
622
+ the way to a result the next step throws away.
623
+
624
+ Only whole migrations are ever skipped, never individual actions. The
625
+ helper reads the plan from a signed file and is given nothing but a
626
+ version string; letting the application say which parts to run would
627
+ put it back in charge of what happens as root, which is the hole this
628
+ protocol exists to close. Choosing not to apply something can only ever
629
+ do less, so it is safe here.
630
+
631
+ A migration is skipped only when the one that supersedes it is itself
632
+ about to run or has already run — otherwise the work would be dropped
633
+ rather than deferred. ``test_migration_consistency`` checks that every
634
+ declared supersession really does cover everything the older migration
635
+ did, because getting that wrong loses a change silently.
636
+
637
+ Returns:
638
+ The migrations to apply, in version order.
639
+ """
640
+ pending = [m for m in self._all_migrations if m.version not in self._applied]
641
+ known = {m.version for m in self._all_migrations}
642
+ pending_versions = {m.version for m in pending}
643
+
644
+ kept = []
645
+ for migration in pending:
646
+ successor = migration.superseded_by
647
+ if successor and successor in known and (
648
+ successor in pending_versions or successor in self._applied
649
+ ):
650
+ _LOGGER.info(
651
+ "Skipping %s: %s does everything it does.",
652
+ migration.version,
653
+ successor,
654
+ )
655
+ continue
656
+ kept.append(migration)
657
+ return kept
612
658
 
613
659
  def _apply_pending(
614
660
  self,
@@ -31,6 +31,13 @@ VERSION = "1.6.13"
31
31
  DESCRIPTION = "Allow an uploaded TLS certificate"
32
32
  REQUIRES_ROOT = True
33
33
 
34
+ #: 1.6.14 installs the same file with a later revision of it. A device applying
35
+ #: both from scratch would write it twice, each write a signature check, a
36
+ #: digest check and a validator run through the privileged helper — so this one
37
+ #: is skipped when the other is going to run anyway. A test checks the claim:
38
+ #: everything this migration does has to be something 1.6.14 also does.
39
+ SUPERSEDED_BY = "1.6.14"
40
+
34
41
  _BONEIO_HOME = "/home/boneio"
35
42
  _BONEIO_USER = "boneio"
36
43
 
@@ -0,0 +1,48 @@
1
+ """Stop the device's own certificate expiring twice a day.
2
+
3
+ Caddy's internal issuer defaults to a twelve-hour leaf. For a public site
4
+ renewed automatically that is a virtue; for a certificate nobody trusts until
5
+ they decide to, it undoes the decision daily. Somebody who clicks through the
6
+ warning once, or adds an exception, or installs this device's authority on
7
+ their laptop, is back to a fresh unknown certificate by the evening.
8
+
9
+ Six months instead. The intermediate is extended to a year with it, because
10
+ Caddy refuses to start when a leaf would outlive the intermediate signing it —
11
+ which is the part that makes this two settings rather than one.
12
+
13
+ This is a change to the script the container runs at start, so it only takes
14
+ effect when Caddy is next restarted. Nothing here restarts it: the certificate
15
+ in use is valid, and interrupting the panel to replace a working certificate
16
+ with a longer-lived one is not a trade worth making unasked.
17
+
18
+ To retry on a device, delete ``/var/lib/boneio/migrations.d/1.6.14.applied``
19
+ and restart boneIO.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from boneio.migrations.actions import InstallFile, MigrationAction
25
+
26
+ VERSION = "1.6.14"
27
+ DESCRIPTION = "Issue the device certificate for six months, not twelve hours"
28
+ REQUIRES_ROOT = True
29
+
30
+ _BONEIO_HOME = "/home/boneio"
31
+ _BONEIO_USER = "boneio"
32
+
33
+
34
+ def plan() -> list[MigrationAction]:
35
+ """Return the ordered list of migration actions.
36
+
37
+ Returns:
38
+ List of :class:`MigrationAction` to apply in order.
39
+ """
40
+ return [
41
+ InstallFile(
42
+ src="docker/nodered/caddy/init-certs.sh",
43
+ dst=f"{_BONEIO_HOME}/docker/nodered/caddy/init-certs.sh",
44
+ mode=0o755,
45
+ owner=_BONEIO_USER,
46
+ group=_BONEIO_USER,
47
+ ),
48
+ ]
@@ -212,6 +212,7 @@ async def async_run(
212
212
  is_web_active=web_active,
213
213
  web_port=web_config.get("port", 8090),
214
214
  proxy_port=web_config.get("proxy_port"),
215
+ expose=web_config.get("expose", "all"),
215
216
  ha_discovery=mqtt_config.get(HA_DISCOVERY, {}).get(ENABLED, False),
216
217
  ha_discovery_prefix=mqtt_config.get(HA_DISCOVERY, {}).get(TOPIC_PREFIX, "homeassistant"),
217
218
  config_file_path=config_file,
@@ -203,12 +203,18 @@ web:
203
203
  default: 8090
204
204
  meta:
205
205
  label: Port to run web server
206
+ # Not offered in the panel any more. It only ever chose the port in the
207
+ # link Home Assistant shows, the built-in proxy answers on 8443 either
208
+ # way, and a device reachable only through that proxy derives the port by
209
+ # itself. Kept here because the validator purges unknown keys: removing it
210
+ # would delete the setting from the config.yaml of the few people who have
211
+ # one, and change where their Home Assistant link points, silently.
206
212
  proxy_port:
207
213
  required: False
208
214
  type: integer
209
215
  nullable: True
210
216
  meta:
211
- label: Reverse proxy port (used in HA discovery URL). If not set, uses 'port' value.
217
+ label: Reverse proxy port for the Home Assistant link. Advanced; set it only when your own proxy fronts this panel on another port.
212
218
  expose:
213
219
  required: False
214
220
  type: string
@@ -0,0 +1,2 @@
1
+ # flake8: noqa
2
+ __version__ = "1.6.0.dev8"