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