boneio 1.6.0.dev32__tar.gz → 1.6.0.dev34__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 (946) hide show
  1. {boneio-1.6.0.dev32/boneio.egg-info → boneio-1.6.0.dev34}/PKG-INFO +1 -1
  2. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/remote.py +5 -0
  3. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/sensor/virtual_energy.py +31 -19
  4. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/config_helper.py +38 -4
  5. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/provenance.py +7 -4
  6. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_util.py +36 -49
  7. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/containers.py +2 -2
  8. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/events/bus.py +8 -2
  9. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/inputs.py +11 -3
  10. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/manager.py +25 -7
  11. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/alarm.py +39 -20
  12. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/basic.py +6 -0
  13. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/composite.py +4 -0
  14. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/mqtt.py +6 -0
  15. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system_ops.py +10 -0
  16. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/MANIFEST.sha256 +2 -2
  17. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-containers +3 -1
  18. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-system +87 -0
  19. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.17.json +1 -0
  20. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.17.sig +1 -0
  21. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.18.json +1 -0
  22. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.18.sig +1 -0
  23. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.21.json +1 -1
  24. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.21.sig +0 -0
  25. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.22.json +1 -1
  26. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.22.sig +1 -0
  27. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.26.json +1 -0
  28. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.26.sig +1 -0
  29. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.27.json +1 -0
  30. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.27.sig +1 -0
  31. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.29.json +1 -0
  32. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.29.sig +1 -0
  33. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.30.json +1 -0
  34. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.30.sig +1 -0
  35. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.31.json +1 -1
  36. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.31.sig +0 -0
  37. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.32.json +1 -1
  38. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.32.sig +1 -0
  39. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.33.json +1 -0
  40. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.33.sig +1 -0
  41. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.39.json +1 -0
  42. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.39.sig +2 -0
  43. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.40.json +1 -0
  44. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.40.sig +1 -0
  45. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.5.json +1 -1
  46. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.5.sig +1 -0
  47. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.8.json +1 -1
  48. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.8.sig +1 -0
  49. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.9.json +1 -0
  50. boneio-1.6.0.dev34/boneio/migrations/plans/1.6.9.sig +1 -0
  51. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/manifest.json +1 -1
  52. boneio-1.6.0.dev34/boneio/migrations/plans/manifest.sig +0 -0
  53. boneio-1.6.0.dev34/boneio/migrations/versions/v1_6_39_containers_pull_timeout.py +41 -0
  54. boneio-1.6.0.dev34/boneio/migrations/versions/v1_6_40_disk_usage.py +43 -0
  55. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/runner.py +1 -1
  56. boneio-1.6.0.dev34/boneio/version.py +2 -0
  57. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/app.py +1 -0
  58. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AccountsView-B8MM055J.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AccountsView-CSXSpOS4.js +1 -1
  59. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AccountsView-CSXSpOS4.js.gz +0 -0
  60. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AppInitContext-BTWWlW51.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AppInitContext-kJFzie2b.js +1 -1
  61. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AppInitContext-kJFzie2b.js.gz +0 -0
  62. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BackupSection-DM0UHZbn.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BackupSection-Ztj9IqaM.js +1 -1
  63. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BackupSection-Ztj9IqaM.js.gz +0 -0
  64. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BindingMatrix-z4nufsAw.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BindingMatrix-vz1HRgOK.js +1 -1
  65. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BindingMatrix-vz1HRgOK.js.gz +0 -0
  66. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DeviceControlSection-Du5Yfeti.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DeviceControlSection-ClD01EqT.js +1 -1
  67. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DeviceControlSection-ClD01EqT.js.gz +0 -0
  68. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DiagnosticsView-DsaN3_X1.js +5 -0
  69. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DiagnosticsView-DsaN3_X1.js.gz +0 -0
  70. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/EntityGrid-wmINq3qf.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/EntityGrid-DkCZl4Ex.js +1 -1
  71. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/EntityGrid-DkCZl4Ex.js.gz +0 -0
  72. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FactoryResetSection-C_ZLXAWX.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FactoryResetSection-BoxwCSfi.js +1 -1
  73. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FactoryResetSection-BoxwCSfi.js.gz +0 -0
  74. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FormInputToggle-BSbhRpjY.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FormInputToggle-_QKboN_m.js +2 -2
  75. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FormInputToggle-_QKboN_m.js.gz +0 -0
  76. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HaDashboardWizard-B7au6Wri.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HaDashboardWizard-D_WBE8Xp.js +1 -1
  77. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HaDashboardWizard-D_WBE8Xp.js.gz +0 -0
  78. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HostnameSection-BmzrosBH.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HostnameSection-CDv-K27C.js +1 -1
  79. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HostnameSection-CDv-K27C.js.gz +0 -0
  80. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/InputsView-DanA2G7X.js +1 -0
  81. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/InputsView-DanA2G7X.js.gz +0 -0
  82. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LoadingState-ClbkgjGg.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LoadingState-Imhtv6yU.js +1 -1
  83. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LocationSection-IiFhNF7g.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LocationSection-D2CLhYVj.js +2 -2
  84. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LocationSection-D2CLhYVj.js.gz +0 -0
  85. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LoggerForm-CK3xQ9SL.js +1 -0
  86. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LoggerForm-CK3xQ9SL.js.gz +0 -0
  87. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LongPressWrapper-_SJQ2NWz.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LongPressWrapper-BsarZuoK.js +1 -1
  88. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LongPressWrapper-BsarZuoK.js.gz +0 -0
  89. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MigrationsSection-CTdDa7Po.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MigrationsSection-CbvNdwv4.js +1 -1
  90. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MigrationsSection-CbvNdwv4.js.gz +0 -0
  91. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/ModbusView-DpGTjZTV.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/ModbusView-DlznAyaI.js +1 -1
  92. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/ModbusView-DlznAyaI.js.gz +0 -0
  93. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MqttPasswordsSection-bwzS1q3h.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MqttPasswordsSection-Bo3XZhi4.js +1 -1
  94. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MqttPasswordsSection-Bo3XZhi4.js.gz +0 -0
  95. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedManagement-CG1iO9QV.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedManagement-IvXYKjFx.js +1 -1
  96. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedManagement-IvXYKjFx.js.gz +0 -0
  97. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedView-CP86NnC4.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedView-CvHaeVuP.js +1 -1
  98. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedView-CvHaeVuP.js.gz +0 -0
  99. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NumericInput-CrVNlFps.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NumericInput-Bw0XKSHb.js +1 -1
  100. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NumericInput-Bw0XKSHb.js.gz +0 -0
  101. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/OutputsView-BILwW2hW.js +1 -0
  102. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/OutputsView-BILwW2hW.js.gz +0 -0
  103. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SecurityView-CVM0NXLY.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SecurityView-BwXDK_cg.js +1 -1
  104. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SecurityView-BwXDK_cg.js.gz +0 -0
  105. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SensorView-DbfEzDIa.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SensorView-pEFTQ0EY.js +1 -1
  106. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SensorView-pEFTQ0EY.js.gz +0 -0
  107. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/Sparkline-6iDv_8hd.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/Sparkline-CGzZ8JIa.js +2 -2
  108. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/Sparkline-CGzZ8JIa.js.gz +0 -0
  109. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SystemState-BhyEmwpc.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SystemState-DfBI-y6w.js +2 -2
  110. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SystemState-DfBI-y6w.js.gz +0 -0
  111. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TemplatesView-CYXaTLv9.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TemplatesView-1O-xFYJW.js +1 -1
  112. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TemplatesView-1O-xFYJW.js.gz +0 -0
  113. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TilePicker-m3yxcPhF.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TilePicker-DK7aB1YH.js +1 -1
  114. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TilePicker-DK7aB1YH.js.gz +0 -0
  115. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TimezoneSection-DJ8AR56R.js +1 -0
  116. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TimezoneSection-DJ8AR56R.js.gz +0 -0
  117. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UISettings-ed4yBFdO.js +102 -0
  118. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UISettings-ed4yBFdO.js.gz +0 -0
  119. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-CQYdYjx2.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-I0YWMsBB.js +1 -1
  120. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-I0YWMsBB.js.gz +0 -0
  121. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/ViewToggle-CVWoIKqI.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/ViewToggle-sL23XpBa.js +1 -1
  122. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiConfig-DVnVdo7X.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiConfig-Cg4qXxu9.js +1 -1
  123. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiConfig-Cg4qXxu9.js.gz +0 -0
  124. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiWizardPrompt-7WoQr0ex.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiWizardPrompt-CQbWx1cn.js +1 -1
  125. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiWizardPrompt-CQbWx1cn.js.gz +0 -0
  126. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/dialog-DMaCttcv.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/dialog-BxLQlili.js +1 -1
  127. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/dialog-BxLQlili.js.gz +0 -0
  128. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/fa-ChDOCx3T.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/fa-Dri4B5-B.js +1 -1
  129. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/fa-Dri4B5-B.js.gz +0 -0
  130. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/gi-DiFRP1nv.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/gi-DtGhRxvF.js +1 -1
  131. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/groupByArea-B-SYJ_YG.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/groupByArea-DG7QcJ3T.js +1 -1
  132. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/groupByArea-DG7QcJ3T.js.gz +0 -0
  133. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-CZXkUu7y.css +2 -0
  134. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-ybynnlsQ.css.gz → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-CZXkUu7y.css.gz +0 -0
  135. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-M58OAI5C.js +42 -0
  136. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-M58OAI5C.js.gz +0 -0
  137. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-BedqtZ2k.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-C7FHdIAl.js +1 -1
  138. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-C7FHdIAl.js.gz +0 -0
  139. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-DMGc7LhS.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-XKptoelx.js +3 -3
  140. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-XKptoelx.js.gz +0 -0
  141. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/select-iQAUlBVk.js → boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/select-BO6jtq8Y.js +1 -1
  142. boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/select-BO6jtq8Y.js.gz +0 -0
  143. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/index.html +5 -5
  144. boneio-1.6.0.dev34/boneio/webui/frontend-dist/sw.js +1 -0
  145. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/policy.py +2 -0
  146. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_actions.py +109 -177
  147. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_core.py +0 -8
  148. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/diagnostics.py +55 -0
  149. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/migrations.py +3 -1
  150. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/modbus.py +28 -37
  151. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/nodered.py +45 -5
  152. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/onboarding.py +126 -1
  153. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/system.py +9 -13
  154. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34/boneio.egg-info}/PKG-INFO +1 -1
  155. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/SOURCES.txt +91 -85
  156. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.17.json +0 -1
  157. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.17.sig +0 -1
  158. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.18.json +0 -1
  159. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.18.sig +0 -1
  160. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.21.sig +0 -1
  161. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.22.sig +0 -3
  162. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.26.json +0 -1
  163. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.26.sig +0 -1
  164. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.27.json +0 -1
  165. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.27.sig +0 -1
  166. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.29.json +0 -1
  167. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.29.sig +0 -1
  168. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.30.json +0 -1
  169. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.30.sig +0 -1
  170. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.31.sig +0 -1
  171. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.32.sig +0 -1
  172. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.33.json +0 -1
  173. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.33.sig +0 -1
  174. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.5.sig +0 -2
  175. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.8.sig +0 -1
  176. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.9.json +0 -1
  177. boneio-1.6.0.dev32/boneio/migrations/plans/1.6.9.sig +0 -1
  178. boneio-1.6.0.dev32/boneio/migrations/plans/manifest.sig +0 -0
  179. boneio-1.6.0.dev32/boneio/version.py +0 -2
  180. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AccountsView-B8MM055J.js.gz +0 -0
  181. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AppInitContext-BTWWlW51.js.gz +0 -0
  182. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BackupSection-DM0UHZbn.js.gz +0 -0
  183. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BindingMatrix-z4nufsAw.js.gz +0 -0
  184. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DeviceControlSection-Du5Yfeti.js.gz +0 -0
  185. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DiagnosticsView-BWDA4UsB.js +0 -5
  186. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DiagnosticsView-BWDA4UsB.js.gz +0 -0
  187. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/EntityGrid-wmINq3qf.js.gz +0 -0
  188. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FactoryResetSection-C_ZLXAWX.js.gz +0 -0
  189. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FormInputToggle-BSbhRpjY.js.gz +0 -0
  190. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HaDashboardWizard-B7au6Wri.js.gz +0 -0
  191. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HostnameSection-BmzrosBH.js.gz +0 -0
  192. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/InputsView-BTAirVol.js +0 -1
  193. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/InputsView-BTAirVol.js.gz +0 -0
  194. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LocationSection-IiFhNF7g.js.gz +0 -0
  195. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LoggerForm-Cv1Nu2mF.js +0 -1
  196. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LoggerForm-Cv1Nu2mF.js.gz +0 -0
  197. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LongPressWrapper-_SJQ2NWz.js.gz +0 -0
  198. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MigrationsSection-CTdDa7Po.js.gz +0 -0
  199. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/ModbusView-DpGTjZTV.js.gz +0 -0
  200. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MqttPasswordsSection-bwzS1q3h.js.gz +0 -0
  201. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedManagement-CG1iO9QV.js.gz +0 -0
  202. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedView-CP86NnC4.js.gz +0 -0
  203. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NumericInput-CrVNlFps.js.gz +0 -0
  204. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/OutputsView-DpPWBGjT.js +0 -1
  205. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/OutputsView-DpPWBGjT.js.gz +0 -0
  206. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SecurityView-CVM0NXLY.js.gz +0 -0
  207. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SensorView-DbfEzDIa.js.gz +0 -0
  208. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/Sparkline-6iDv_8hd.js.gz +0 -0
  209. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SystemState-BhyEmwpc.js.gz +0 -0
  210. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TemplatesView-CYXaTLv9.js.gz +0 -0
  211. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TilePicker-m3yxcPhF.js.gz +0 -0
  212. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TimezoneSection-BnYRnY2X.js +0 -1
  213. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TimezoneSection-BnYRnY2X.js.gz +0 -0
  214. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UISettings-BJ9YtcaR.js +0 -102
  215. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UISettings-BJ9YtcaR.js.gz +0 -0
  216. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-CQYdYjx2.js.gz +0 -0
  217. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiConfig-DVnVdo7X.js.gz +0 -0
  218. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiWizardPrompt-7WoQr0ex.js.gz +0 -0
  219. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/dialog-DMaCttcv.js.gz +0 -0
  220. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/fa-ChDOCx3T.js.gz +0 -0
  221. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/groupByArea-B-SYJ_YG.js.gz +0 -0
  222. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-DZyKGqZn.js +0 -42
  223. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-DZyKGqZn.js.gz +0 -0
  224. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-ybynnlsQ.css +0 -2
  225. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-BedqtZ2k.js.gz +0 -0
  226. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-DMGc7LhS.js.gz +0 -0
  227. boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/select-iQAUlBVk.js.gz +0 -0
  228. boneio-1.6.0.dev32/boneio/webui/frontend-dist/sw.js +0 -1
  229. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/LICENSE +0 -0
  230. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/MANIFEST.in +0 -0
  231. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/README.md +0 -0
  232. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/__init__.py +0 -0
  233. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/input.yaml +0 -0
  234. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_24_16.yaml +0 -0
  235. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_32_10.yaml +0 -0
  236. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_32_5.yaml +0 -0
  237. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_cover.yaml +0 -0
  238. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  239. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/input.yaml +0 -0
  240. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_24_16.yaml +0 -0
  241. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_32_10.yaml +0 -0
  242. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_32_5.yaml +0 -0
  243. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_cover.yaml +0 -0
  244. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  245. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/input.yaml +0 -0
  246. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_24_16.yaml +0 -0
  247. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_32_10.yaml +0 -0
  248. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_32_5.yaml +0 -0
  249. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_cover.yaml +0 -0
  250. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  251. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/input.yaml +0 -0
  252. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_24_16.yaml +0 -0
  253. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_32_10.yaml +0 -0
  254. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_cover.yaml +0 -0
  255. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  256. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/input.yaml +0 -0
  257. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_24_16.yaml +0 -0
  258. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_32_10.yaml +0 -0
  259. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_cover.yaml +0 -0
  260. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  261. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/input.yaml +0 -0
  262. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_24_16.yaml +0 -0
  263. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_32_10.yaml +0 -0
  264. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_48_4.yaml +0 -0
  265. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_cover.yaml +0 -0
  266. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  267. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/input.yaml +0 -0
  268. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_24_16.yaml +0 -0
  269. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_32_10.yaml +0 -0
  270. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_48_4.yaml +0 -0
  271. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_cover.yaml +0 -0
  272. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  273. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/input.yaml +0 -0
  274. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_24_16.yaml +0 -0
  275. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_32_10.yaml +0 -0
  276. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_48_4.yaml +0 -0
  277. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_cover.yaml +0 -0
  278. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
  279. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/input.yaml +0 -0
  280. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_24_16.yaml +0 -0
  281. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_32_10.yaml +0 -0
  282. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_48_4.yaml +0 -0
  283. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_cover.yaml +0 -0
  284. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_cover_mix.yaml +0 -0
  285. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/bonecli.py +0 -0
  286. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/__init__.py +0 -0
  287. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/__init__.py +0 -0
  288. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/cover.py +0 -0
  289. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/remote.py +0 -0
  290. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/time_based.py +0 -0
  291. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/venetian.py +0 -0
  292. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/group/__init__.py +0 -0
  293. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/group/output_group.py +0 -0
  294. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/__init__.py +0 -0
  295. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/binary_sensor.py +0 -0
  296. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/detectors.py +0 -0
  297. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/event.py +0 -0
  298. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/__init__.py +0 -0
  299. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/base.py +0 -0
  300. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/esphome.py +0 -0
  301. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/mqtt.py +0 -0
  302. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/__init__.py +0 -0
  303. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/controller.py +0 -0
  304. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/water_source.py +0 -0
  305. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/__init__.py +0 -0
  306. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/basic.py +0 -0
  307. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/buzzer.py +0 -0
  308. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/mcp.py +0 -0
  309. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/pca.py +0 -0
  310. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/pcf.py +0 -0
  311. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/sensor/__init__.py +0 -0
  312. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/__init__.py +0 -0
  313. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/alarm_panel.py +0 -0
  314. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/gate_cover.py +0 -0
  315. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/thermostat.py +0 -0
  316. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/virtual_switch.py +0 -0
  317. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/const.py +0 -0
  318. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/__init__.py +0 -0
  319. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/atomic_file.py +0 -0
  320. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/__init__.py +0 -0
  321. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/cli.py +0 -0
  322. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/hashing.py +0 -0
  323. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/jwt_secret.py +0 -0
  324. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/migration.py +0 -0
  325. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/models.py +0 -0
  326. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/store.py +0 -0
  327. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/__init__.py +0 -0
  328. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/__init__.py +0 -0
  329. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/docker-compose.yaml +0 -0
  330. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
  331. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/registration.py +0 -0
  332. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/secrets.py +0 -0
  333. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/__init__.py +0 -0
  334. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/input_bindings.py +0 -0
  335. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/__init__.py +0 -0
  336. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
  337. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v2_transition.py +0 -0
  338. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
  339. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
  340. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v6_input_keys.py +0 -0
  341. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v7_mqtt_password_secret.py +0 -0
  342. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/package-lock.json +0 -0
  343. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/package.json +0 -0
  344. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/schema_converter.py +0 -0
  345. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/secret_masking.py +0 -0
  346. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/write_lock.py +0 -0
  347. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_compat.py +0 -0
  348. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_patch.py +0 -0
  349. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/diagnostics/__init__.py +0 -0
  350. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/diagnostics/collect.py +0 -0
  351. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/discovery.py +0 -0
  352. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/events/__init__.py +0 -0
  353. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/__init__.py +0 -0
  354. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/action_conditions.py +0 -0
  355. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/canopen.py +0 -0
  356. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/covers.py +0 -0
  357. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/display.py +0 -0
  358. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/irrigation.py +0 -0
  359. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/modbus.py +0 -0
  360. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/outputs.py +0 -0
  361. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/remote.py +0 -0
  362. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/remote_input_registrar.py +0 -0
  363. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/scheduler.py +0 -0
  364. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/security_alert.py +0 -0
  365. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/sensors.py +0 -0
  366. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/sun.py +0 -0
  367. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/__init__.py +0 -0
  368. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/gate_cover.py +0 -0
  369. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/thermostat.py +0 -0
  370. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates.py +0 -0
  371. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/update.py +0 -0
  372. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/virtual_switches.py +0 -0
  373. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/__init__.py +0 -0
  374. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/basic_mqtt.py +0 -0
  375. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/broker_tls.py +0 -0
  376. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/local.py +0 -0
  377. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/lox.py +0 -0
  378. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/mqtt_tls.py +0 -0
  379. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/queue.py +0 -0
  380. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/net/__init__.py +0 -0
  381. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/net/discovery_guard.py +0 -0
  382. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/nodered_guard.py +0 -0
  383. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/recovery.py +0 -0
  384. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/__init__.py +0 -0
  385. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/base.py +0 -0
  386. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/can.py +0 -0
  387. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/esphome.py +0 -0
  388. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/mqtt.py +0 -0
  389. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/wled.py +0 -0
  390. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/wled_cache.py +0 -0
  391. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/__init__.py +0 -0
  392. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/certificate.py +0 -0
  393. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/framing.py +0 -0
  394. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/posture.py +0 -0
  395. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/__init__.py +0 -0
  396. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/base.py +0 -0
  397. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/sun.py +0 -0
  398. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/system.py +0 -0
  399. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/state/__init__.py +0 -0
  400. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/state/manager.py +0 -0
  401. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/__init__.py +0 -0
  402. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/host_data.py +0 -0
  403. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/monitor.py +0 -0
  404. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/__init__.py +0 -0
  405. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/async_updater.py +0 -0
  406. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/conditions.py +0 -0
  407. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/filter.py +0 -0
  408. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/font_util.py +0 -0
  409. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/logger.py +0 -0
  410. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/naming.py +0 -0
  411. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/overlay.py +0 -0
  412. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/sun.py +0 -0
  413. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/timeperiod.py +0 -0
  414. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/util.py +0 -0
  415. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/adc.yaml +0 -0
  416. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  417. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/config.yaml +0 -0
  418. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/event.yaml +0 -0
  419. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/mqtt.yaml +0 -0
  420. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  421. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/adc.yaml +0 -0
  422. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  423. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/config.yaml +0 -0
  424. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/event.yaml +0 -0
  425. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/mqtt.yaml +0 -0
  426. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  427. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/adc.yaml +0 -0
  428. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
  429. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/config.yaml +0 -0
  430. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/event.yaml +0 -0
  431. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/mqtt.yaml +0 -0
  432. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/output48x4A.yaml +0 -0
  433. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/__init__.py +0 -0
  434. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/can_master.yaml +0 -0
  435. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/can_slave.yaml +0 -0
  436. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/adc.yaml +0 -0
  437. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  438. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/config.yaml +0 -0
  439. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/cover.yaml +0 -0
  440. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/event.yaml +0 -0
  441. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/mqtt.yaml +0 -0
  442. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/outputCover.yaml +0 -0
  443. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/adc.yaml +0 -0
  444. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  445. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/config.yaml +0 -0
  446. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/cover.yaml +0 -0
  447. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/event.yaml +0 -0
  448. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  449. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  450. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/adc.yaml +0 -0
  451. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  452. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  453. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  454. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  455. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/event_all.yaml +0 -0
  456. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  457. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  458. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  459. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  460. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  461. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  462. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/exceptions.py +0 -0
  463. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/__init__.py +0 -0
  464. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/analog/__init__.py +0 -0
  465. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/analog/adc.py +0 -0
  466. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/__init__.py +0 -0
  467. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/bridge.py +0 -0
  468. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/client.py +0 -0
  469. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/interface.py +0 -0
  470. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/node.py +0 -0
  471. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/node_id.py +0 -0
  472. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/test_od.py +0 -0
  473. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/__init__.py +0 -0
  474. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/early_oled.py +0 -0
  475. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  476. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/oled.py +0 -0
  477. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/__init__.py +0 -0
  478. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  479. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
  480. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  481. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  482. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/__init__.py +0 -0
  483. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/base.py +0 -0
  484. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/manager.py +0 -0
  485. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/__init__.py +0 -0
  486. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/bus.py +0 -0
  487. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina219.py +0 -0
  488. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina219_driver.py +0 -0
  489. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina226.py +0 -0
  490. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina226_driver.py +0 -0
  491. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/mcp9808.py +0 -0
  492. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/pct2075.py +0 -0
  493. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/onewire/__init__.py +0 -0
  494. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/onewire/dallas.py +0 -0
  495. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/__init__.py +0 -0
  496. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  497. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/base.py +0 -0
  498. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  499. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  500. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/udev_wait.py +0 -0
  501. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/__init__.py +0 -0
  502. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/homeassistant.py +0 -0
  503. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/interlock.py +0 -0
  504. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/lox_template.py +0 -0
  505. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/__init__.py +0 -0
  506. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/actions.py +0 -0
  507. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/apt/52boneio-periodic +0 -0
  508. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/apt/52boneio-unattended +0 -0
  509. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/daemon.json +0 -0
  510. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
  511. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +0 -0
  512. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml +0 -0
  513. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
  514. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
  515. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-helpers-heal +0 -0
  516. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-migrate-v2 +0 -0
  517. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/issue.d/10-boneio.issue +0 -0
  518. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/journald/boneio-console.conf +0 -0
  519. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/journald/journald.conf +0 -0
  520. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/kernel/postinst-boneio-overlay +0 -0
  521. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/migrations-recovery.pem +0 -0
  522. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/migrations.pem +0 -0
  523. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
  524. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
  525. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/motd/20-boneio +0 -0
  526. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/overlays/BONEIO-BLACK-PINS-v0.2-v0.3.dtbo +0 -0
  527. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/10-boneio-hardening.conf +0 -0
  528. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/15-boneio-penalties.conf +0 -0
  529. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/20-boneio-banner.conf +0 -0
  530. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/boneio-banner +0 -0
  531. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio +0 -0
  532. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio-helpers +0 -0
  533. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio-timedatectl +0 -0
  534. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-dpkg-recover.service +0 -0
  535. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-helpers-heal.service +0 -0
  536. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
  537. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
  538. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio.service +0 -0
  539. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/apt-daily-priority.conf +0 -0
  540. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/avahi-daemon-defer.conf +0 -0
  541. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/bb-usb-gadgets-defer.conf +0 -0
  542. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/mosquitto-priority.conf +0 -0
  543. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/timer-no-persistent.conf +0 -0
  544. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/user-manager-defer.conf +0 -0
  545. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/linger-marker +0 -0
  546. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
  547. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
  548. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
  549. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
  550. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
  551. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
  552. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/wheels/pyyaml-6.0.3-cp313-cp313-linux_armv7l.whl +0 -0
  553. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/boneio-migrate +0 -0
  554. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/install-helper.sh +0 -0
  555. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
  556. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.0.json +0 -0
  557. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.0.sig +0 -0
  558. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.1.json +0 -0
  559. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.1.sig +0 -0
  560. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.2.json +0 -0
  561. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.2.sig +0 -0
  562. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.0.json +0 -0
  563. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.0.sig +0 -0
  564. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.3.json +0 -0
  565. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.3.sig +0 -0
  566. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.4.json +0 -0
  567. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.4.sig +0 -0
  568. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.0.json +0 -0
  569. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.0.sig +0 -0
  570. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.1.json +0 -0
  571. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.1.sig +0 -0
  572. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.10.json +0 -0
  573. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.10.sig +0 -0
  574. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.11.json +0 -0
  575. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.11.sig +0 -0
  576. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.12.json +0 -0
  577. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.12.sig +0 -0
  578. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.13.json +0 -0
  579. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.13.sig +0 -0
  580. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.14.json +0 -0
  581. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.14.sig +0 -0
  582. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.15.json +0 -0
  583. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.15.sig +0 -0
  584. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.16.json +0 -0
  585. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.16.sig +0 -0
  586. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.17.json +0 -0
  587. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.17.sig +0 -0
  588. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.18.json +0 -0
  589. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.18.sig +0 -0
  590. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.2.json +0 -0
  591. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.2.sig +0 -0
  592. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.3.json +0 -0
  593. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.3.sig +0 -0
  594. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.4.json +0 -0
  595. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.4.sig +0 -0
  596. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.5.json +0 -0
  597. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.5.sig +0 -0
  598. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.6.json +0 -0
  599. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.6.sig +0 -0
  600. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.7.json +0 -0
  601. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.7.sig +0 -0
  602. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.8.json +0 -0
  603. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.8.sig +0 -0
  604. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.9.json +0 -0
  605. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.9.sig +0 -0
  606. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.0.json +0 -0
  607. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.0.sig +0 -0
  608. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.1.json +0 -0
  609. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.1.sig +0 -0
  610. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.10.json +0 -0
  611. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.10.sig +0 -0
  612. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.11.json +0 -0
  613. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.11.sig +0 -0
  614. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.12.json +0 -0
  615. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.12.sig +0 -0
  616. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.13.json +0 -0
  617. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.13.sig +0 -0
  618. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.14.json +0 -0
  619. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.14.sig +0 -0
  620. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.15.json +0 -0
  621. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.15.sig +0 -0
  622. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.16.json +0 -0
  623. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.16.sig +0 -0
  624. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.19.json +0 -0
  625. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.19.sig +0 -0
  626. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.2.json +0 -0
  627. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.2.sig +0 -0
  628. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.20.json +0 -0
  629. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.20.sig +0 -0
  630. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.23.json +0 -0
  631. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.23.sig +0 -0
  632. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.24.json +0 -0
  633. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.24.sig +0 -0
  634. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.25.json +0 -0
  635. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.25.sig +0 -0
  636. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.28.json +0 -0
  637. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.28.sig +0 -0
  638. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.3.json +0 -0
  639. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.3.sig +0 -0
  640. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.34.json +0 -0
  641. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.34.sig +0 -0
  642. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.35.json +0 -0
  643. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.35.sig +0 -0
  644. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.36.json +0 -0
  645. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.36.sig +0 -0
  646. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.37.json +0 -0
  647. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.37.sig +0 -0
  648. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.38.json +0 -0
  649. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.38.sig +0 -0
  650. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.4.json +0 -0
  651. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.4.sig +0 -0
  652. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.6.json +0 -0
  653. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.6.sig +0 -0
  654. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.7.json +0 -0
  655. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.7.sig +0 -0
  656. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/runner.py +0 -0
  657. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/__init__.py +0 -0
  658. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
  659. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
  660. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
  661. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
  662. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
  663. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
  664. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
  665. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_10_disable_console_setup.py +0 -0
  666. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_11_timer_catchup.py +0 -0
  667. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_12_oled_splash_off_critical_path.py +0 -0
  668. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_13_mosquitto_priority.py +0 -0
  669. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_14_journal_apparent_size.py +0 -0
  670. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_15_prune_orphan_journals.py +0 -0
  671. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_16_login_linger.py +0 -0
  672. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_17_defer_user_manager.py +0 -0
  673. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_18_fix_hostname_once.py +0 -0
  674. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
  675. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
  676. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
  677. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
  678. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_5_overlay_kernel_hook.py +0 -0
  679. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_6_boot_service_order.py +0 -0
  680. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_7_journald_limits.py +0 -0
  681. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_8_apparmor_prune.py +0 -0
  682. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_9_defer_nonessential.py +0 -0
  683. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_0_nodered_admin_auth.py +0 -0
  684. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py +0 -0
  685. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_11_drop_docker_group.py +0 -0
  686. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_12_console_shows_ip.py +0 -0
  687. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_13_custom_certificate.py +0 -0
  688. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_14_certificate_lifetime.py +0 -0
  689. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_15_web_port_reaches_caddy.py +0 -0
  690. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_16_release_floor_ordering.py +0 -0
  691. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_17_service_password.py +0 -0
  692. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_18_os_updates.py +0 -0
  693. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_19_helper_apt_purge.py +0 -0
  694. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py +0 -0
  695. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_20_drop_packagekit.py +0 -0
  696. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_21_caddy_pinned.py +0 -0
  697. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_22_security_autoupdates.py +0 -0
  698. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_23_helper_fstab_options.py +0 -0
  699. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_24_boot_partition_nofail.py +0 -0
  700. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_25_journal_to_serial_console.py +0 -0
  701. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_26_kernel_check_old_images.py +0 -0
  702. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_27_startup_overlay_repair.py +0 -0
  703. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_28_ssh_login_screen.py +0 -0
  704. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_29_service_password_change.py +0 -0
  705. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py +0 -0
  706. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_30_os_update_apt_cache.py +0 -0
  707. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_31_overlay_v02_v03_inputs.py +0 -0
  708. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_32_mqtt_broker_tls.py +0 -0
  709. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_33_os_update_measured_space.py +0 -0
  710. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_34_nodered_admin_auth_again.py +0 -0
  711. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_35_ssh_guessing_penalty.py +0 -0
  712. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_36_helper_drops_kmem.py +0 -0
  713. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_37_drop_kmem_group.py +0 -0
  714. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_38_ssh_penalty_per_block.py +0 -0
  715. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py +0 -0
  716. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_4_ssh_login_hardening.py +0 -0
  717. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_5_trust_transition.py +0 -0
  718. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_6_retire_legacy_helper.py +0 -0
  719. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_7_timedatectl_sudoers.py +0 -0
  720. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_8_system_helper.py +0 -0
  721. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_9_ntp_servers.py +0 -0
  722. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/__init__.py +0 -0
  723. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/cli.py +0 -0
  724. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/client.py +0 -0
  725. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/coordinator.py +0 -0
  726. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/__init__.py +0 -0
  727. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
  728. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
  729. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
  730. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  731. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  732. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  733. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  734. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  735. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/defro-drx.json +0 -0
  736. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
  737. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  738. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/thessla.json +0 -0
  739. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  740. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/wanas415.json +0 -0
  741. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/inverters/sofar.json +0 -0
  742. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
  743. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/n4dsc08.json +0 -0
  744. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  745. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
  746. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/cwt.json +0 -0
  747. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  748. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/gdfs.json +0 -0
  749. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/gdfx.json +0 -0
  750. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  751. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/pt100.json +0 -0
  752. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
  753. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/sht20.json +0 -0
  754. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/sht30.json +0 -0
  755. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/__init__.py +0 -0
  756. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/base.py +0 -0
  757. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/__init__.py +0 -0
  758. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/numeric.py +0 -0
  759. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/select.py +0 -0
  760. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/switch.py +0 -0
  761. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/text.py +0 -0
  762. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/__init__.py +0 -0
  763. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/binary.py +0 -0
  764. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/numeric.py +0 -0
  765. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/text.py +0 -0
  766. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/__init__.py +0 -0
  767. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/binary.py +0 -0
  768. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/numeric.py +0 -0
  769. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/mock_coordinator.py +0 -0
  770. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/utils.py +0 -0
  771. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/__init__.py +0 -0
  772. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/actions.py +0 -0
  773. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/events.py +0 -0
  774. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/files.py +0 -0
  775. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/logs.py +0 -0
  776. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/mqtt.py +0 -0
  777. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/state.py +0 -0
  778. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions.yaml +0 -0
  779. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions_sensor.yaml +0 -0
  780. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions_switch.yaml +0 -0
  781. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/condition.yaml +0 -0
  782. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/filters.yaml +0 -0
  783. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/filters_adc.yaml +0 -0
  784. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/id.yaml +0 -0
  785. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_devices.yaml +0 -0
  786. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_inputs.yaml +0 -0
  787. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_outputs.yaml +0 -0
  788. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/schema.yaml +0 -0
  789. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/temp_unit.yaml +0 -0
  790. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/update_interval.yaml +0 -0
  791. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/action_validation.py +0 -0
  792. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/bind.py +0 -0
  793. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/dashboard_cards.py +0 -0
  794. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/axios-DyqbZVcF.js +0 -0
  795. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/axios-DyqbZVcF.js.gz +0 -0
  796. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
  797. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
  798. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  799. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf.gz +0 -0
  800. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/configCache-DZ0vWq_Z.js +0 -0
  801. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js +0 -0
  802. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js.gz +0 -0
  803. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/formatters-Cc0QIRxb.js +0 -0
  804. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
  805. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css.gz +0 -0
  806. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/rolldown-runtime-hePW80VL.js +0 -0
  807. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js +0 -0
  808. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js.gz +0 -0
  809. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
  810. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js.gz +0 -0
  811. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js +0 -0
  812. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js.gz +0 -0
  813. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio-192.png +0 -0
  814. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio-512.png +0 -0
  815. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio.svg +0 -0
  816. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  817. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
  818. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
  819. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
  820. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
  821. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
  822. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/config.schema.json +0 -0
  823. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
  824. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
  825. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
  826. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
  827. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
  828. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
  829. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
  830. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
  831. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/location.schema.json +0 -0
  832. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
  833. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
  834. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
  835. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
  836. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
  837. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
  838. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
  839. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
  840. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/osdp.schema.json +0 -0
  841. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
  842. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
  843. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
  844. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
  845. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
  846. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
  847. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
  848. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/schedule.schema.json +0 -0
  849. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
  850. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
  851. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
  852. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/virtual_switch.schema.json +0 -0
  853. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
  854. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/workbox-7e79c025.js +0 -0
  855. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/hvac_svg_templates.py +0 -0
  856. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/input_validation.py +0 -0
  857. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/__init__.py +0 -0
  858. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/auth.py +0 -0
  859. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/csrf.py +0 -0
  860. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/proxy.py +0 -0
  861. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/modbus_card_templates.py +0 -0
  862. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/rate_limit.py +0 -0
  863. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/__init__.py +0 -0
  864. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/app.py +0 -0
  865. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/server.py +0 -0
  866. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/index.html +0 -0
  867. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/recovery.css +0 -0
  868. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/recovery.js +0 -0
  869. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/__init__.py +0 -0
  870. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/accounts.py +0 -0
  871. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/auth.py +0 -0
  872. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/can.py +0 -0
  873. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config.py +0 -0
  874. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_backups.py +0 -0
  875. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_discovery.py +0 -0
  876. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_files.py +0 -0
  877. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/covers.py +0 -0
  878. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/dashboard.py +0 -0
  879. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/dev_fake_device.py +0 -0
  880. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/irrigation.py +0 -0
  881. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/mqtt_reference.py +0 -0
  882. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/mqtt_tls.py +0 -0
  883. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/os_update.py +0 -0
  884. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/outputs.py +0 -0
  885. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/remote_devices.py +0 -0
  886. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/schedule.py +0 -0
  887. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/security.py +0 -0
  888. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/sensors.py +0 -0
  889. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/sun.py +0 -0
  890. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/templates.py +0 -0
  891. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/timezone_sudoers.py +0 -0
  892. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/tools.py +0 -0
  893. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/update.py +0 -0
  894. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/adc.schema.json +0 -0
  895. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/areas.schema.json +0 -0
  896. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/binary_sensor.schema.json +0 -0
  897. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/boneio.schema.json +0 -0
  898. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/can.schema.json +0 -0
  899. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/config.schema.json +0 -0
  900. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/cover.schema.json +0 -0
  901. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/dallas.schema.json +0 -0
  902. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ds2482.schema.json +0 -0
  903. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/event.schema.json +0 -0
  904. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ina219.schema.json +0 -0
  905. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ina226.schema.json +0 -0
  906. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/irrigation.schema.json +0 -0
  907. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/lm75.schema.json +0 -0
  908. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/location.schema.json +0 -0
  909. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/logger.schema.json +0 -0
  910. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/lox_udp.schema.json +0 -0
  911. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mcp23017.schema.json +0 -0
  912. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mcp9808.schema.json +0 -0
  913. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/modbus.schema.json +0 -0
  914. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  915. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mqtt.schema.json +0 -0
  916. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/oled.schema.json +0 -0
  917. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/osdp.schema.json +0 -0
  918. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/output.schema.json +0 -0
  919. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/output_group.schema.json +0 -0
  920. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/pca9685.schema.json +0 -0
  921. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/pcf8575.schema.json +0 -0
  922. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_devices.schema.json +0 -0
  923. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_inputs.schema.json +0 -0
  924. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_outputs.schema.json +0 -0
  925. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/schedule.schema.json +0 -0
  926. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/sensor.schema.json +0 -0
  927. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/template.schema.json +0 -0
  928. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  929. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/virtual_switch.schema.json +0 -0
  930. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/web.schema.json +0 -0
  931. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/security_events.py +0 -0
  932. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/security_headers.py +0 -0
  933. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/services/__init__.py +0 -0
  934. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/services/logs.py +0 -0
  935. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/static_assets.py +0 -0
  936. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/sudo_rate_limiter.py +0 -0
  937. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/web_server.py +0 -0
  938. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/websocket_manager.py +0 -0
  939. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/dependency_links.txt +0 -0
  940. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/entry_points.txt +0 -0
  941. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/requires.txt +0 -0
  942. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/top_level.txt +0 -0
  943. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/pyproject.toml +0 -0
  944. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/setup.cfg +0 -0
  945. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/setup.py +0 -0
  946. {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/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.dev32
3
+ Version: 1.6.0.dev34
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
@@ -300,6 +300,7 @@ class RemoteOutputBase:
300
300
 
301
301
  success = await self._device_manager.control_output(
302
302
  output_id=self._output_id,
303
+ message_bus=self._message_bus,
303
304
  action="ON",
304
305
  )
305
306
  if success:
@@ -326,6 +327,7 @@ class RemoteOutputBase:
326
327
 
327
328
  success = await self._device_manager.control_output(
328
329
  output_id=self._output_id,
330
+ message_bus=self._message_bus,
329
331
  action="OFF",
330
332
  )
331
333
  if success:
@@ -417,6 +419,7 @@ class RemoteOutputBase:
417
419
 
418
420
  success = await self._device_manager.control_output(
419
421
  output_id=self._output_id,
422
+ message_bus=self._message_bus,
420
423
  action="ON",
421
424
  brightness=brightness,
422
425
  )
@@ -484,6 +487,7 @@ class RemoteOutputBase:
484
487
  )
485
488
  success = await self._device_manager.control_output(
486
489
  output_id=self._output_id,
490
+ message_bus=self._message_bus,
487
491
  action="OFF",
488
492
  )
489
493
  if not success:
@@ -646,6 +650,7 @@ class RemoteOutputBase:
646
650
  return
647
651
  success = await self._device_manager.control_output(
648
652
  output_id=self._output_id,
653
+ message_bus=self._message_bus,
649
654
  action="OFF",
650
655
  )
651
656
  if success:
@@ -25,6 +25,10 @@ if TYPE_CHECKING:
25
25
 
26
26
  _LOGGER = logging.getLogger(__name__)
27
27
 
28
+ # How long to wait, once the broker has the subscription, for a stored total.
29
+ # None arriving means the counter has never been published.
30
+ RESTORE_GRACE_SECONDS = 15.0
31
+
28
32
 
29
33
  class VirtualEnergySensor:
30
34
  """Virtual energy/water sensor linked to an output.
@@ -72,6 +76,7 @@ class VirtualEnergySensor:
72
76
  self._area = area
73
77
 
74
78
  self._virtual_sensors_task = None
79
+ self._restore_task: asyncio.Task | None = None
75
80
 
76
81
  # Counters
77
82
  self._energy_consumed_Wh = 0.0
@@ -145,7 +150,8 @@ class VirtualEnergySensor:
145
150
 
146
151
  def start_tracking(self):
147
152
  """Start tracking consumption (called when output turns ON)."""
148
- self._last_on_timestamp = time.time()
153
+ if self._last_on_timestamp is None: # ON while already on keeps the stretch
154
+ self._last_on_timestamp = time.time()
149
155
  if self._virtual_sensors_task is not None and not self._virtual_sensors_task.done():
150
156
  return # Already running
151
157
  self._virtual_sensors_task = self._loop.create_task(self._tracking_loop())
@@ -169,20 +175,9 @@ class VirtualEnergySensor:
169
175
  async def _tracking_loop(self):
170
176
  """Periodically update and send state every 30 seconds while output is ON."""
171
177
  try:
172
- # Wait for state restore before sending any state.
173
- # This prevents overwriting the retained MQTT value with 0.
174
- # Timeout of 5s ensures we don't hang if MQTT is down.
175
- try:
176
- await asyncio.wait_for(self._restore_done.wait(), timeout=5.0)
177
- except TimeoutError:
178
- _LOGGER.warning(
179
- "State restore timeout for %s, starting with energy=%.4f Wh", self._id, self._energy_consumed_Wh
180
- )
181
- self._restore_done.set()
182
-
183
- # Reset on_timestamp after restore so we don't count
184
- # the time elapsed during the restore wait.
185
- self._last_on_timestamp = time.time()
178
+ # Publishing before the stored total is known would replace it
179
+ # with what was counted since boot.
180
+ await self._restore_done.wait()
186
181
 
187
182
  while self._output.state == ON:
188
183
  self._update_consumption()
@@ -194,7 +189,9 @@ class VirtualEnergySensor:
194
189
  def _update_consumption(self):
195
190
  """Update consumption counters based on elapsed time."""
196
191
  now = time.time()
197
- if self._output.state == ON and self._last_on_timestamp is not None:
192
+ # Not the output's state: by the time OFF is handled it is already
193
+ # off, and the stretch since the last update would be lost.
194
+ if self._last_on_timestamp is not None:
198
195
  elapsed = now - self._last_on_timestamp
199
196
 
200
197
  if self._sensor_type == "power" and self._power_usage is not None:
@@ -215,14 +212,17 @@ class VirtualEnergySensor:
215
212
  """
216
213
 
217
214
  async def on_message(_topic, payload):
215
+ if self._restore_done.is_set():
216
+ return # Late, after giving up: the counter is already published.
218
217
  try:
219
218
  data = json.loads(payload)
220
219
  if isinstance(data, dict):
220
+ # Added, not assigned: the output may have been on since boot.
221
221
  if "energy" in data:
222
- self._energy_consumed_Wh = float(data["energy"])
222
+ self._energy_consumed_Wh += float(data["energy"])
223
223
  _LOGGER.info("Restored energy state for %s: %.4f Wh", self._id, self._energy_consumed_Wh)
224
224
  if "water" in data:
225
- self._water_consumed_L = float(data["water"])
225
+ self._water_consumed_L += float(data["water"])
226
226
  _LOGGER.info("Restored water state for %s: %.4f L", self._id, self._water_consumed_L)
227
227
  except Exception as e:
228
228
  _LOGGER.warning("Failed to restore state for %s: %s", self._id, e)
@@ -230,8 +230,20 @@ class VirtualEnergySensor:
230
230
  self._restore_done.set()
231
231
  await self._message_bus.unsubscribe_and_stop_listen(self._sensor_topic)
232
232
 
233
+ async def restore():
234
+ await self._message_bus.subscribe_and_listen(self._sensor_topic, on_message)
235
+ # The grace starts once the broker has the subscription, not at
236
+ # boot: connecting can take longer than any fixed timeout.
237
+ await self._message_bus.wait_until_subscribed()
238
+ try:
239
+ await asyncio.wait_for(self._restore_done.wait(), timeout=RESTORE_GRACE_SECONDS)
240
+ except TimeoutError:
241
+ _LOGGER.info("No stored state for %s, counting from boot", self._id)
242
+ self._restore_done.set()
243
+ await self._message_bus.unsubscribe_and_stop_listen(self._sensor_topic)
244
+
233
245
  if self._message_bus is not None:
234
- asyncio.create_task(self._message_bus.subscribe_and_listen(self._sensor_topic, on_message))
246
+ self._restore_task = asyncio.create_task(restore())
235
247
 
236
248
  def get_current_power(self) -> float:
237
249
  """Get current power usage in W (0 if output is OFF)."""
@@ -3,6 +3,7 @@ Module to provide basic config options.
3
3
  """
4
4
  from __future__ import annotations
5
5
 
6
+ import copy
6
7
  import logging
7
8
  from typing import TYPE_CHECKING, Any
8
9
  import time as _time
@@ -24,16 +25,27 @@ from boneio.const import (
24
25
  LIGHT,
25
26
  NONE,
26
27
  NUMERIC,
28
+ OUTPUT,
27
29
  SELECT,
28
30
  SENSOR,
29
31
  SWITCH,
30
32
  TEXT_SENSOR,
31
33
  VALVE,
32
34
  )
35
+ from boneio.core.config.yaml_util import (
36
+ load_config_from_file,
37
+ load_yaml_file,
38
+ merge_board_config,
39
+ strip_default_values,
40
+ )
33
41
  from boneio.core.system import get_serial_from_mac
42
+ from boneio.exceptions import ConfigurationException
34
43
 
35
44
  _LOGGER = logging.getLogger(__name__)
36
45
 
46
+ # Sections merge_board_config fills in from the board (pins, expanders).
47
+ _BOARD_SECTIONS = (EVENT_ENTITY, BINARY_SENSOR, OUTPUT)
48
+
37
49
 
38
50
  class ConfigHelper:
39
51
  def __init__(
@@ -494,7 +506,6 @@ class ConfigHelper:
494
506
  raise ValueError("config_file_path not set in ConfigHelper")
495
507
 
496
508
  if self._config_cache is None or force_reload:
497
- from boneio.core.config.yaml_util import load_config_from_file
498
509
  _LOGGER.debug("Loading config from file: %s", self._config_file_path)
499
510
  config = load_config_from_file(self._config_file_path)
500
511
  if config is None:
@@ -532,8 +543,6 @@ class ConfigHelper:
532
543
  _t0 = _time.monotonic()
533
544
  _LOGGER.info("Fast-reloading config from: %s", self._config_file_path)
534
545
 
535
- from boneio.core.config.yaml_util import load_yaml_file, merge_board_config
536
-
537
546
  config_yaml = load_yaml_file(self._config_file_path)
538
547
  if config_yaml is None:
539
548
  raise ValueError(f"Failed to load config from: {self._config_file_path}")
@@ -563,9 +572,34 @@ class ConfigHelper:
563
572
  section,
564
573
  )
565
574
  return
566
- self._config_cache[section] = data
575
+ self._config_cache[section] = self._section_as_reloaded(section, data)
567
576
  _LOGGER.debug("Updated config section '%s' in-place", section)
568
577
 
578
+ def _section_as_reloaded(self, section: str, data: object) -> object:
579
+ """What a reload from the file would hold for a section just saved.
580
+
581
+ The file gets the section with empty fields and default action values
582
+ dropped, and a reload merges the board's pins and expanders back into
583
+ inputs and outputs. Patching the cache with the data as sent left
584
+ inputs without a pin until the next reload.
585
+
586
+ Args:
587
+ section: Top-level config key.
588
+ data: The section as it was saved.
589
+
590
+ Returns:
591
+ The section the way the reload path would see it.
592
+ """
593
+ cleaned = strip_default_values(copy.deepcopy(data), {}, section)
594
+ boneio = self._config_cache.get(BONEIO) if self._config_cache else None
595
+ if section not in _BOARD_SECTIONS or not isinstance(boneio, dict):
596
+ return cleaned
597
+ try:
598
+ return merge_board_config({BONEIO: dict(boneio), section: cleaned})[section]
599
+ except ConfigurationException as err:
600
+ _LOGGER.warning("Section '%s' kept unmerged in the config cache: %s", section, err)
601
+ return cleaned
602
+
569
603
  def get_section(self, section_name: str, force_reload: bool = False) -> Any:
570
604
  """Get a specific configuration section.
571
605
 
@@ -75,9 +75,12 @@ def looks_factory_fresh(
75
75
  return True
76
76
 
77
77
  root = Path(template_dir) if template_dir is not None else FACTORY_TEMPLATE_DIR
78
- try:
79
- variants = sorted(p for p in root.iterdir() if p.is_dir())
80
- except OSError:
78
+ # <variant>/ on older images, <revision>/<variant>/ since one image serves
79
+ # every board.
80
+ variants = sorted(
81
+ p.parent for p in [*root.glob("*/config.yaml"), *root.glob("*/*/config.yaml")]
82
+ )
83
+ if not variants:
81
84
  # No templates to compare against: the honest answer is "cannot tell",
82
85
  # and the safe reading of that is "assume it has been configured".
83
86
  _LOGGER.debug("No factory templates under %s — assuming configured", root)
@@ -85,7 +88,7 @@ def looks_factory_fresh(
85
88
 
86
89
  for variant in variants:
87
90
  if current == _digest(variant / "config.yaml"):
88
- _LOGGER.debug("Configuration matches the %s template", variant.name)
91
+ _LOGGER.debug("Configuration matches the %s template", variant.relative_to(root))
89
92
  return True
90
93
 
91
94
  return False
@@ -158,55 +158,6 @@ _CACHE_FOREIGN_BUILD_ERRORS = (
158
158
  # ── YAML write serialization & background save tracking ──────────────────
159
159
  # Shared with yaml_patch: both rewrite the same files.
160
160
  _yaml_write_lock = CONFIG_WRITE_LOCK
161
- _yaml_pending_saves = 0
162
- _yaml_pending_lock = threading.Lock()
163
-
164
-
165
- def yaml_saves_pending() -> bool:
166
- """Return True if background YAML saves are still in progress."""
167
- return _yaml_pending_saves > 0
168
-
169
-
170
- def get_pending_yaml_saves_count() -> int:
171
- """Return count of pending background YAML saves."""
172
- return _yaml_pending_saves
173
-
174
-
175
- def wait_for_pending_yaml_saves(timeout: float = 30.0) -> bool:
176
- """Block until all pending YAML saves complete (or timeout).
177
-
178
- Args:
179
- timeout: Maximum seconds to wait.
180
-
181
- Returns:
182
- True if all saves completed, False if timed out.
183
- """
184
- deadline = time.monotonic() + timeout
185
- while yaml_saves_pending():
186
- if time.monotonic() > deadline:
187
- _LOGGER.warning(
188
- "Timed out waiting for %d pending YAML save(s)",
189
- _yaml_pending_saves,
190
- )
191
- return False
192
- time.sleep(0.1)
193
- return True
194
-
195
-
196
- def increment_pending_yaml_saves() -> None:
197
- """Increment pending YAML save counter."""
198
- global _yaml_pending_saves
199
- with _yaml_pending_lock:
200
- _yaml_pending_saves += 1
201
-
202
-
203
- def decrement_pending_yaml_saves() -> None:
204
- """Decrement pending YAML save counter."""
205
- global _yaml_pending_saves
206
- with _yaml_pending_lock:
207
- _yaml_pending_saves = max(0, _yaml_pending_saves - 1)
208
-
209
-
210
161
  # Cache for schema to avoid loading it multiple times (saves ~2-3s per config load)
211
162
  _SCHEMA_CACHE = None
212
163
  # Cache for board configs to avoid loading them multiple times
@@ -2359,6 +2310,42 @@ def update_config_section(config_file: str, section: str, data: dict | list) ->
2359
2310
  return {"status": "error", "message": f"Error saving section: {str(e)}"}
2360
2311
 
2361
2312
 
2313
+ def edit_config_section(
2314
+ config_file: str, mutate: Callable[[dict], tuple[str | None, Any]]
2315
+ ) -> tuple[str | None, Any, Any]:
2316
+ """Change one section starting from what the user's file holds.
2317
+
2318
+ Edits begin from the file, not from the running config: that one has the
2319
+ board's pins and the schema's defaults filled in, and writing it back put
2320
+ them into the user's file. The read, the change and the write happen under
2321
+ the write lock, so a save in between cannot be lost.
2322
+
2323
+ Args:
2324
+ config_file: Path to the main config.yaml file.
2325
+ mutate: Gets the whole config as the files hold it (includes followed,
2326
+ secrets resolved), changes one section in place and returns that
2327
+ section's name and whatever its caller wants back. A name of None
2328
+ means there was nothing to change and nothing is written. Anything
2329
+ it raises aborts the edit before anything is written.
2330
+
2331
+ Returns:
2332
+ The section's name, the section as written, and what ``mutate``
2333
+ returned; None and None in front of that when nothing was written.
2334
+
2335
+ Raises:
2336
+ ConfigurationException: When the section could not be written.
2337
+ """
2338
+ with _yaml_write_lock:
2339
+ config = load_yaml_file(config_file) or {}
2340
+ section, result = mutate(config)
2341
+ if section is None:
2342
+ return None, None, result
2343
+ status = update_config_section(config_file, section, config[section])
2344
+ if status["status"] == "error":
2345
+ raise ConfigurationException(status["message"])
2346
+ return section, strip_default_values(config[section], {}, section), result
2347
+
2348
+
2362
2349
  def update_yaml_field(config_file: str, section: str, field: str, value: str) -> dict:
2363
2350
  """Update a single field within a YAML section without overwriting other fields.
2364
2351
 
@@ -349,8 +349,8 @@ def restart_nodered(timeout: int = 120) -> Result:
349
349
  return run("restart-nodered", timeout=timeout)
350
350
 
351
351
 
352
- def pull_nodered(timeout: int = 600) -> Result:
353
- """Pull the Node-RED image."""
352
+ def pull_nodered(timeout: int = 960) -> Result:
353
+ """Pull the Node-RED image; outlasts the helper's own 900 s limit."""
354
354
  return run("pull-nodered", timeout=timeout)
355
355
 
356
356
 
@@ -372,8 +372,14 @@ class EventBus:
372
372
  return listener_job
373
373
 
374
374
  def remove_event_listener(self, event_type: str | None = None, entity_id: str | None = None, listener_id: str | None = None) -> None:
375
- """Remove event listener. Can remove by event_type, listener_id, or both."""
376
- if listener_id and listener_id in self._listener_id_index:
375
+ """Remove event listener. Can remove by event_type, listener_id, or both.
376
+
377
+ A ``listener_id`` the bus does not know removes nothing; it never
378
+ widens to every listener of ``event_type``.
379
+ """
380
+ if listener_id:
381
+ if listener_id not in self._listener_id_index:
382
+ return
377
383
  # Remove by listener_id
378
384
  for evt_type, ent_id in self._listener_id_index[listener_id]:
379
385
  if event_type and evt_type != event_type:
@@ -577,8 +577,15 @@ class InputManager:
577
577
  continue
578
578
  new_input_map[input_id] = {"pin": pin, "area": gpio.get("area"), "ha_type": ha_type}
579
579
 
580
- # Find inputs to remove (in current config but not in new config)
581
- current_input_ids = set(self._inputs.keys())
580
+ # Find inputs to remove (in current config but not in new config).
581
+ # Only the inputs these two sections own: remote inputs and the OLED
582
+ # button share the map but come from elsewhere, and dropping them here
583
+ # took their HA entities away on the first reload after start.
584
+ current_input_ids = {
585
+ input_id
586
+ for input_id, device in self._inputs.items()
587
+ if input_id != "oled_button" and not isinstance(device, RemoteInputBase)
588
+ }
582
589
  new_input_ids = set(new_input_map.keys())
583
590
 
584
591
  inputs_to_remove = current_input_ids - new_input_ids
@@ -619,7 +626,8 @@ class InputManager:
619
626
  _LOGGER.info("Removed input %s (type_changed=%s)", input_id, input_id in inputs_type_changed)
620
627
 
621
628
  # Check for area changes on remaining inputs
622
- for input_id, input_device in self._inputs.items():
629
+ for input_id in current_input_ids - inputs_to_remove - inputs_type_changed:
630
+ input_device = self._inputs[input_id]
623
631
  old_area = getattr(input_device, "area", None)
624
632
  new_area = new_input_map.get(input_id, {}).get("area")
625
633
 
@@ -172,6 +172,9 @@ class Manager:
172
172
  self._config_helper = config_helper
173
173
  self._config_file_path = config_file_path
174
174
  self._topic_prefix = config_helper.topic_prefix
175
+ # One reload at a time: they re-read the file and rebuild entity maps
176
+ # across awaits, so two interleaved runs corrupt each other's state.
177
+ self._reload_lock = asyncio.Lock()
175
178
 
176
179
  # Where the Sun is. Built even when `location:` is absent: an
177
180
  # unconfigured provider answers "not ready" and says so once, which is
@@ -827,7 +830,7 @@ class Manager:
827
830
 
828
831
  elif action == OUTPUT_OVER_MQTT:
829
832
  boneio_id = action_definition.get("boneio_id")
830
- action_output = action_definition.get("action_output")
833
+ action_output = action_definition.get("action_output", TOGGLE)
831
834
  action_to_execute = output_actions.get(action_output.upper())
832
835
  if boneio_id and action_to_execute:
833
836
  parsed_action = {
@@ -842,7 +845,7 @@ class Manager:
842
845
 
843
846
  elif action == COVER_OVER_MQTT:
844
847
  boneio_id = action_definition.get("boneio_id")
845
- action_cover = action_definition.get("action_cover")
848
+ action_cover = action_definition.get("action_cover", TOGGLE)
846
849
  action_to_execute = cover_actions.get(action_cover.upper())
847
850
  if boneio_id and action_to_execute:
848
851
  parsed_action = {
@@ -1491,11 +1494,12 @@ class Manager:
1491
1494
 
1492
1495
  _LOGGER.info("Reloading remote devices configuration")
1493
1496
  # Clean up old remote inputs and outputs before reload
1497
+ await self.inputs._remote_registrar.stop()
1494
1498
  self.inputs.unregister_remote_inputs()
1495
1499
  self.unregister_remote_outputs()
1496
1500
  await self.remote_devices.reload(remote_devices_config)
1497
1501
  # Re-register remote inputs and outputs from config
1498
- self.register_remote_inputs()
1502
+ await self.register_remote_inputs()
1499
1503
  self.register_remote_outputs()
1500
1504
  # Broadcast all input states so frontend picks up new/removed remote inputs
1501
1505
  self.inputs._broadcast_all_input_states()
@@ -1512,13 +1516,12 @@ class Manager:
1512
1516
  # previous callbacks would run the old actions alongside the new ones.
1513
1517
  await self.inputs._remote_registrar.stop()
1514
1518
  self.inputs.unregister_remote_inputs()
1515
- self.register_remote_inputs()
1516
- await self.inputs._remote_registrar.start()
1519
+ await self.register_remote_inputs()
1517
1520
  # Broadcast all input states so frontend picks up new/removed remote inputs
1518
1521
  self.inputs._broadcast_all_input_states()
1519
1522
  _LOGGER.info("Remote inputs configuration reloaded successfully")
1520
1523
 
1521
- def register_remote_inputs(self) -> None:
1524
+ async def register_remote_inputs(self) -> None:
1522
1525
  """Register remote inputs from the ``remote_inputs`` config section.
1523
1526
 
1524
1527
  Delegates to :meth:`InputManager.register_remote_inputs`.
@@ -1527,6 +1530,11 @@ class Manager:
1527
1530
  config = self._config_helper.get_config()
1528
1531
  remote_inputs_config = config.get("remote_inputs", [])
1529
1532
  self.inputs.register_remote_inputs(self.remote_devices, remote_inputs_config)
1533
+ # Subscribe here rather than wait for the next MQTT connect: at startup
1534
+ # the broker is usually connected long before remote inputs register,
1535
+ # and the inputs would stay deaf until the connection dropped. Before
1536
+ # the connect the bus only records the listener and subscribes it then.
1537
+ await self.inputs._remote_registrar.start()
1530
1538
 
1531
1539
  # Keep backward-compatible alias
1532
1540
  register_esphome_binary_sensors = register_remote_inputs
@@ -1842,6 +1850,16 @@ class Manager:
1842
1850
  - reloaded_sections: List of successfully reloaded sections
1843
1851
  - failed_sections: List of sections that failed to reload
1844
1852
  """
1853
+ async with self._reload_lock:
1854
+ return await self._reload_config_locked(reload_sections)
1855
+
1856
+ async def reload_inputs_serialized(self) -> None:
1857
+ """Reload inputs without racing a config reload already running."""
1858
+ async with self._reload_lock:
1859
+ await self.inputs.reload_inputs()
1860
+
1861
+ async def _reload_config_locked(self, reload_sections: list[str] | None) -> dict:
1862
+ """Body of :meth:`reload_config`; the caller holds ``_reload_lock``."""
1845
1863
  from boneio.const import BINARY_SENSOR, EVENT_ENTITY
1846
1864
 
1847
1865
  _LOGGER.info("Starting config reload")
@@ -2221,7 +2239,7 @@ class Manager:
2221
2239
  if msg_type == BUTTON and command == "set":
2222
2240
  if device_id == "inputs_reload" and message == "inputs_reload":
2223
2241
  _LOGGER.info("Reloading events and binary sensors actions")
2224
- asyncio.create_task(self.inputs.reload_inputs())
2242
+ asyncio.create_task(self.reload_inputs_serialized())
2225
2243
  elif device_id == "cover_reload" and message == "cover_reload":
2226
2244
  _LOGGER.info("Reloading covers actions")
2227
2245
  self.covers.reload_covers()
@@ -20,6 +20,27 @@ if TYPE_CHECKING:
20
20
  _LOGGER = logging.getLogger(__name__)
21
21
 
22
22
 
23
+ def _hash_plain_codes(template_list: list) -> bool:
24
+ """Hash the plain-text PIN codes of alarm panels in a template list.
25
+
26
+ Args:
27
+ template_list: ``template`` section entries, changed in place.
28
+
29
+ Returns:
30
+ True if any code was hashed.
31
+ """
32
+ changed = False
33
+ for entry in template_list:
34
+ if not isinstance(entry, dict) or entry.get("platform") != "alarm_control_panel":
35
+ continue
36
+ for code_cfg in entry.get("codes", []):
37
+ raw = str(code_cfg.get("code", ""))
38
+ if raw and not AlarmPinCode._is_sha256(raw):
39
+ code_cfg["code"] = AlarmPinCode.hash_code(raw)
40
+ changed = True
41
+ return changed
42
+
43
+
23
44
  class AlarmManager:
24
45
  """Manages alarm panel template entities.
25
46
 
@@ -276,26 +297,24 @@ class AlarmManager:
276
297
  """
277
298
  try:
278
299
  config_helper = self._manager._config_helper
279
- config = config_helper.get_config()
280
- template_list: list[dict] = config.get("template", [])
281
- changed = False
282
-
283
- for entry in template_list:
284
- if entry.get("platform") != "alarm_control_panel":
285
- continue
286
- for code_cfg in entry.get("codes", []):
287
- raw = str(code_cfg.get("code", ""))
288
- if raw and not AlarmPinCode._is_sha256(raw):
289
- code_cfg["code"] = AlarmPinCode.hash_code(raw)
290
- changed = True
291
-
292
- if changed:
293
- from boneio.core.config.yaml_util import update_config_section
294
- config_file = config_helper._config_file_path
295
- if config_file is None:
296
- _LOGGER.warning("Cannot migrate PIN codes: config_file_path not set")
297
- return
298
- update_config_section(config_file, "template", template_list)
300
+ # The running config, so what is in memory matches the file.
301
+ if not _hash_plain_codes(config_helper.get_config().get("template", [])):
302
+ return
303
+
304
+ from boneio.core.config.yaml_util import edit_config_section
305
+ config_file = config_helper._config_file_path
306
+ if config_file is None:
307
+ _LOGGER.warning("Cannot migrate PIN codes: config_file_path not set")
308
+ return
309
+
310
+ # The file from its own section: the running one has the schema's
311
+ # defaults filled in, and writing it back put them into the file.
312
+ def hash_in_file(file_config: dict) -> tuple[str | None, None]:
313
+ changed = _hash_plain_codes(file_config.get("template") or [])
314
+ return ("template" if changed else None), None
315
+
316
+ written, _, _ = edit_config_section(config_file, hash_in_file)
317
+ if written:
299
318
  _LOGGER.info(
300
319
  "Migrated plain-text alarm PIN codes to SHA-256 hashes in YAML"
301
320
  )
@@ -78,3 +78,9 @@ class MessageBus(ABC):
78
78
  """Unsubscribe from a topic and stop listening."""
79
79
  pass
80
80
 
81
+ async def wait_until_subscribed(self) -> None:
82
+ """Return once the broker holds this bus's subscriptions.
83
+
84
+ Until then a retained message cannot have arrived yet, so its absence
85
+ means nothing. Buses without a broker return at once.
86
+ """
@@ -97,3 +97,7 @@ class CompositeMessageBus(MessageBus):
97
97
  """Unsubscribe from a topic and stop listening on all buses."""
98
98
  for bus in self._buses:
99
99
  await bus.unsubscribe_and_stop_listen(topic)
100
+
101
+ async def wait_until_subscribed(self) -> None:
102
+ """Wait for every bus: one being up says nothing about another."""
103
+ await asyncio.gather(*(bus.wait_until_subscribed() for bus in self._buses))
@@ -76,6 +76,7 @@ class MQTTClient(MessageBus):
76
76
  self.asyncio_client = self.create_client()
77
77
  self.reconnect_interval = 1
78
78
  self._connection_established = False
79
+ self._subscribed = asyncio.Event()
79
80
  self.publish_queue: UniqueQueue = UniqueQueue()
80
81
  self._mqtt_energy_listeners: dict[str, Callable[..., Awaitable[None]]] = {}
81
82
  # Listeners that are told whether a message is a retained replay.
@@ -227,6 +228,10 @@ class MQTTClient(MessageBus):
227
228
  if self._connection_established:
228
229
  await self.subscribe(topics=[topic])
229
230
 
231
+ @override
232
+ async def wait_until_subscribed(self) -> None:
233
+ await self._subscribed.wait()
234
+
230
235
  @override
231
236
  async def unsubscribe_and_stop_listen(self, topic: str) -> None:
232
237
  await self.unsubscribe([topic])
@@ -476,6 +481,7 @@ class MQTTClient(MessageBus):
476
481
 
477
482
  topics = self._topics + list(self._mqtt_energy_listeners.keys()) + self._discovery_topics
478
483
  await self.subscribe(topics=topics)
484
+ self._subscribed.set()
479
485
  # Connected: the next outage starts the backoff from scratch
480
486
  # instead of waiting as long as the worst one before it.
481
487
  self.reconnect_interval = 1
@@ -379,3 +379,13 @@ def os_update_log(timeout: int = 30) -> Result:
379
379
  def os_autoupdate_set(enabled: bool, timeout: int = 60) -> Result:
380
380
  """Switch automatic security updates on or off. Never reboots either way."""
381
381
  return run("os-autoupdate-set", "on" if enabled else "off", timeout=timeout)
382
+
383
+
384
+ def disk_usage(timeout: int = 120) -> Result:
385
+ """Docker images, the journal and the apt cache, in bytes, as JSON."""
386
+ return run("disk-usage", timeout=timeout)
387
+
388
+
389
+ def disk_clean(target: str, timeout: int = 360) -> Result:
390
+ """Free space in ``docker`` (unused images) or ``apt`` (the package cache)."""
391
+ return run("disk-clean", target, timeout=timeout)