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.
- {boneio-1.6.0.dev32/boneio.egg-info → boneio-1.6.0.dev34}/PKG-INFO +1 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/remote.py +5 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/sensor/virtual_energy.py +31 -19
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/config_helper.py +38 -4
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/provenance.py +7 -4
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_util.py +36 -49
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/containers.py +2 -2
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/events/bus.py +8 -2
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/inputs.py +11 -3
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/manager.py +25 -7
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/alarm.py +39 -20
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/basic.py +6 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/composite.py +4 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/mqtt.py +6 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system_ops.py +10 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/MANIFEST.sha256 +2 -2
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-containers +3 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-system +87 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.17.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.17.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.18.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.18.sig +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.21.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.21.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.22.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.22.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.26.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.26.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.27.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.27.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.29.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.29.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.30.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.30.sig +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.31.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.31.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.32.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.32.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.33.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.33.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.39.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.39.sig +2 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.40.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.40.sig +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.5.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.5.sig +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.8.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.8.sig +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.9.json +1 -0
- boneio-1.6.0.dev34/boneio/migrations/plans/1.6.9.sig +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/manifest.json +1 -1
- boneio-1.6.0.dev34/boneio/migrations/plans/manifest.sig +0 -0
- boneio-1.6.0.dev34/boneio/migrations/versions/v1_6_39_containers_pull_timeout.py +41 -0
- boneio-1.6.0.dev34/boneio/migrations/versions/v1_6_40_disk_usage.py +43 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/runner.py +1 -1
- boneio-1.6.0.dev34/boneio/version.py +2 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/app.py +1 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AccountsView-CSXSpOS4.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/AppInitContext-kJFzie2b.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BackupSection-Ztj9IqaM.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/BindingMatrix-vz1HRgOK.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DeviceControlSection-ClD01EqT.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DiagnosticsView-DsaN3_X1.js +5 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/DiagnosticsView-DsaN3_X1.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/EntityGrid-DkCZl4Ex.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FactoryResetSection-BoxwCSfi.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/FormInputToggle-_QKboN_m.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HaDashboardWizard-D_WBE8Xp.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/HostnameSection-CDv-K27C.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/InputsView-DanA2G7X.js +1 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/InputsView-DanA2G7X.js.gz +0 -0
- 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
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LocationSection-D2CLhYVj.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LoggerForm-CK3xQ9SL.js +1 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LoggerForm-CK3xQ9SL.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/LongPressWrapper-BsarZuoK.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MigrationsSection-CbvNdwv4.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/ModbusView-DlznAyaI.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/MqttPasswordsSection-Bo3XZhi4.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedManagement-IvXYKjFx.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NodeRedView-CvHaeVuP.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/NumericInput-Bw0XKSHb.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/OutputsView-BILwW2hW.js +1 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/OutputsView-BILwW2hW.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SecurityView-BwXDK_cg.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SensorView-pEFTQ0EY.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/Sparkline-CGzZ8JIa.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/SystemState-DfBI-y6w.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TemplatesView-1O-xFYJW.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TilePicker-DK7aB1YH.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TimezoneSection-DJ8AR56R.js +1 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/TimezoneSection-DJ8AR56R.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UISettings-ed4yBFdO.js +102 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UISettings-ed4yBFdO.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-I0YWMsBB.js.gz +0 -0
- 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
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiConfig-Cg4qXxu9.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/aiWizardPrompt-CQbWx1cn.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/dialog-BxLQlili.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/fa-Dri4B5-B.js.gz +0 -0
- 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
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/groupByArea-DG7QcJ3T.js.gz +0 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-CZXkUu7y.css +2 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-M58OAI5C.js +42 -0
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/index-M58OAI5C.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-C7FHdIAl.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/monaco-XKptoelx.js.gz +0 -0
- 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
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/assets/select-BO6jtq8Y.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/index.html +5 -5
- boneio-1.6.0.dev34/boneio/webui/frontend-dist/sw.js +1 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/policy.py +2 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_actions.py +109 -177
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_core.py +0 -8
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/diagnostics.py +55 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/migrations.py +3 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/modbus.py +28 -37
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/nodered.py +45 -5
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/onboarding.py +126 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/system.py +9 -13
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34/boneio.egg-info}/PKG-INFO +1 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/SOURCES.txt +91 -85
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.17.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.17.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.18.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.18.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.21.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.22.sig +0 -3
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.26.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.26.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.27.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.27.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.29.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.29.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.30.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.30.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.31.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.32.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.33.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.33.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.5.sig +0 -2
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.8.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.9.json +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/1.6.9.sig +0 -1
- boneio-1.6.0.dev32/boneio/migrations/plans/manifest.sig +0 -0
- boneio-1.6.0.dev32/boneio/version.py +0 -2
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AccountsView-B8MM055J.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/AppInitContext-BTWWlW51.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BackupSection-DM0UHZbn.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/BindingMatrix-z4nufsAw.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DeviceControlSection-Du5Yfeti.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DiagnosticsView-BWDA4UsB.js +0 -5
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/DiagnosticsView-BWDA4UsB.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/EntityGrid-wmINq3qf.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FactoryResetSection-C_ZLXAWX.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/FormInputToggle-BSbhRpjY.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HaDashboardWizard-B7au6Wri.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/HostnameSection-BmzrosBH.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/InputsView-BTAirVol.js +0 -1
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/InputsView-BTAirVol.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LocationSection-IiFhNF7g.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LoggerForm-Cv1Nu2mF.js +0 -1
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LoggerForm-Cv1Nu2mF.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/LongPressWrapper-_SJQ2NWz.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MigrationsSection-CTdDa7Po.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/ModbusView-DpGTjZTV.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/MqttPasswordsSection-bwzS1q3h.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedManagement-CG1iO9QV.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NodeRedView-CP86NnC4.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/NumericInput-CrVNlFps.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/OutputsView-DpPWBGjT.js +0 -1
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/OutputsView-DpPWBGjT.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SecurityView-CVM0NXLY.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SensorView-DbfEzDIa.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/Sparkline-6iDv_8hd.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/SystemState-BhyEmwpc.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TemplatesView-CYXaTLv9.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TilePicker-m3yxcPhF.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TimezoneSection-BnYRnY2X.js +0 -1
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/TimezoneSection-BnYRnY2X.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UISettings-BJ9YtcaR.js +0 -102
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UISettings-BJ9YtcaR.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/UpdateSafetyNotice-CQYdYjx2.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiConfig-DVnVdo7X.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/aiWizardPrompt-7WoQr0ex.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/dialog-DMaCttcv.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/fa-ChDOCx3T.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/groupByArea-B-SYJ_YG.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-DZyKGqZn.js +0 -42
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-DZyKGqZn.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/index-ybynnlsQ.css +0 -2
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-BedqtZ2k.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/monaco-DMGc7LhS.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/assets/select-iQAUlBVk.js.gz +0 -0
- boneio-1.6.0.dev32/boneio/webui/frontend-dist/sw.js +0 -1
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/LICENSE +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/MANIFEST.in +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/README.md +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/input.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/boards/1.1/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/bonecli.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/cover.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/remote.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/time_based.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/cover/venetian.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/group/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/group/output_group.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/binary_sensor.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/detectors.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/event.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/esphome.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/input/remote/mqtt.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/controller.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/irrigation/water_source.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/basic.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/buzzer.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/mcp.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/pca.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/output/pcf.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/alarm_panel.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/gate_cover.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/template/thermostat.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/components/virtual_switch.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/const.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/atomic_file.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/cli.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/hashing.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/jwt_secret.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/migration.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/models.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/auth/store.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/docker-compose.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/registration.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/cloud/secrets.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/input_bindings.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v2_transition.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v6_input_keys.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/migrations/v7_mqtt_password_secret.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/package-lock.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/package.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/schema_converter.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/secret_masking.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/write_lock.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_compat.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/config/yaml_patch.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/diagnostics/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/diagnostics/collect.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/discovery.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/events/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/action_conditions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/canopen.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/covers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/display.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/irrigation.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/modbus.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/outputs.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/remote.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/remote_input_registrar.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/scheduler.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/security_alert.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/sensors.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/sun.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/gate_cover.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates/thermostat.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/templates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/update.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/manager/virtual_switches.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/basic_mqtt.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/broker_tls.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/local.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/lox.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/mqtt_tls.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/messaging/queue.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/net/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/net/discovery_guard.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/nodered_guard.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/recovery.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/can.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/esphome.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/mqtt.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/wled.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/remote/wled_cache.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/certificate.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/framing.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/security/posture.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/sun.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/sensor/system.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/state/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/state/manager.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/host_data.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/system/monitor.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/async_updater.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/conditions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/filter.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/font_util.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/logger.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/naming.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/overlay.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/sun.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/timeperiod.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/core/utils/util.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/config.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/event.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/mqtt.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/24x16/output24x16A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/config.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/event.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/mqtt.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/32x10/output32x10A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/config.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/event.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/mqtt.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/48x4/output48x4A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/can_master.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/can_slave.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/config.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/event.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/mqtt.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover/outputCover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/config.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/cover.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/event.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/event_all.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/exceptions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/analog/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/analog/adc.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/bridge.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/client.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/interface.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/node.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/node_id.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/can/test_od.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/early_oled.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/fonts/danube__.ttf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/display/oled.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/gpio/input/manager.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/bus.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina219.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina219_driver.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina226.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/ina226_driver.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/mcp9808.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/i2c/pct2075.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/onewire/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/onewire/dallas.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/hardware/udev_wait.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/homeassistant.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/interlock.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/integration/lox_template.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/actions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/apt/52boneio-periodic +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/apt/52boneio-unattended +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/daemon.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-helpers-heal +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/helpers/boneio-migrate-v2 +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/issue.d/10-boneio.issue +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/journald/boneio-console.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/journald/journald.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/kernel/postinst-boneio-overlay +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/migrations-recovery.pem +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/migrations.pem +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/motd/20-boneio +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/overlays/BONEIO-BLACK-PINS-v0.2-v0.3.dtbo +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/10-boneio-hardening.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/15-boneio-penalties.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/20-boneio-banner.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sshd/boneio-banner +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio-helpers +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/sudoers/boneio-timedatectl +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-dpkg-recover.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-helpers-heal.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/boneio.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/apt-daily-priority.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/avahi-daemon-defer.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/bb-usb-gadgets-defer.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/mosquitto-priority.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/timer-no-persistent.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/dropins/user-manager-defer.conf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/linger-marker +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
- {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
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/boneio-migrate +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/install-helper.sh +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.0.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.0.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.1.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.1.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.2.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.3.2.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.0.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.0.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.3.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.3.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.4.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.4.4.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.0.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.0.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.1.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.1.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.10.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.10.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.11.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.11.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.12.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.12.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.13.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.13.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.14.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.14.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.15.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.15.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.16.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.16.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.17.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.17.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.18.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.18.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.2.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.2.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.3.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.3.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.4.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.4.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.5.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.5.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.6.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.6.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.7.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.7.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.8.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.8.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.9.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.5.9.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.0.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.0.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.1.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.1.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.10.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.10.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.11.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.11.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.12.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.12.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.13.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.13.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.14.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.14.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.15.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.15.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.16.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.16.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.19.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.19.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.2.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.2.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.20.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.20.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.23.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.23.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.24.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.24.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.25.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.25.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.28.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.28.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.3.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.3.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.34.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.34.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.35.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.35.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.36.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.36.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.37.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.37.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.38.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.38.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.4.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.4.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.6.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.6.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.7.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/plans/1.6.7.sig +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/runner.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_10_disable_console_setup.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_11_timer_catchup.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_12_oled_splash_off_critical_path.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_13_mosquitto_priority.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_14_journal_apparent_size.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_15_prune_orphan_journals.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_16_login_linger.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_17_defer_user_manager.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_18_fix_hostname_once.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_5_overlay_kernel_hook.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_6_boot_service_order.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_7_journald_limits.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_8_apparmor_prune.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_5_9_defer_nonessential.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_0_nodered_admin_auth.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_11_drop_docker_group.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_12_console_shows_ip.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_13_custom_certificate.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_14_certificate_lifetime.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_15_web_port_reaches_caddy.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_16_release_floor_ordering.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_17_service_password.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_18_os_updates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_19_helper_apt_purge.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_20_drop_packagekit.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_21_caddy_pinned.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_22_security_autoupdates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_23_helper_fstab_options.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_24_boot_partition_nofail.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_25_journal_to_serial_console.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_26_kernel_check_old_images.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_27_startup_overlay_repair.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_28_ssh_login_screen.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_29_service_password_change.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_30_os_update_apt_cache.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_31_overlay_v02_v03_inputs.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_32_mqtt_broker_tls.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_33_os_update_measured_space.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_34_nodered_admin_auth_again.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_35_ssh_guessing_penalty.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_36_helper_drops_kmem.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_37_drop_kmem_group.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_38_ssh_penalty_per_block.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_4_ssh_login_hardening.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_5_trust_transition.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_6_retire_legacy_helper.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_7_timedatectl_sudoers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_8_system_helper.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/migrations/versions/v1_6_9_ntp_servers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/cli.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/client.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/coordinator.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/defro-drx.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/thessla.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/ventclear.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/hvac/wanas415.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/inverters/sofar.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/n4dsc08.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/other/r4dcb08.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/cwt.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/gdfs.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/gdfx.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/pt100.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/sht20.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/devices/sensors/sht30.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/base.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/numeric.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/select.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/switch.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/derived/text.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/binary.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/numeric.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/sensor/text.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/binary.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/entities/writeable/numeric.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/mock_coordinator.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/modbus/utils.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/actions.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/events.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/files.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/logs.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/mqtt.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/models/state.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions_sensor.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/actions_switch.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/condition.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/filters.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/filters_adc.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/id.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_devices.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_inputs.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/remote_outputs.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/schema.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/temp_unit.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/schema/update_interval.yaml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/action_validation.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/bind.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/dashboard_cards.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/axios-DyqbZVcF.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/axios-DyqbZVcF.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/configCache-DZ0vWq_Z.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/formatters-Cc0QIRxb.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/rolldown-runtime-hePW80VL.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js.gz +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio-192.png +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio-512.png +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio.svg +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/config.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/location.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/osdp.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/schedule.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/virtual_switch.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/frontend-dist/workbox-7e79c025.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/hvac_svg_templates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/input_validation.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/auth.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/csrf.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/middleware/proxy.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/modbus_card_templates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/rate_limit.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/app.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/server.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/index.html +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/recovery.css +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/recovery/static/recovery.js +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/accounts.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/auth.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/can.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_backups.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_discovery.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/config_files.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/covers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/dashboard.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/dev_fake_device.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/irrigation.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/mqtt_reference.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/mqtt_tls.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/os_update.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/outputs.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/remote_devices.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/schedule.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/security.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/sensors.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/sun.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/templates.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/timezone_sudoers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/tools.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/routes/update.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/adc.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/areas.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/binary_sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/boneio.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/can.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/config.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/cover.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/dallas.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ds2482.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/event.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ina219.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/ina226.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/irrigation.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/lm75.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/location.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/logger.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/lox_udp.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mcp23017.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mcp9808.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/modbus.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/modbus_devices.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/mqtt.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/oled.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/osdp.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/output.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/output_group.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/pca9685.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/pcf8575.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_devices.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_inputs.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/remote_outputs.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/schedule.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/template.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/virtual_switch.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/schema/web.schema.json +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/security_events.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/security_headers.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/services/__init__.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/services/logs.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/static_assets.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/sudo_rate_limiter.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/web_server.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio/webui/websocket_manager.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/dependency_links.txt +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/entry_points.txt +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/requires.txt +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/boneio.egg-info/top_level.txt +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/pyproject.toml +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/setup.cfg +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/setup.py +0 -0
- {boneio-1.6.0.dev32 → boneio-1.6.0.dev34}/tests/test_py313_compatibility.py +0 -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
|
|
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
|
-
#
|
|
173
|
-
#
|
|
174
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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)
|