boneio 1.6.0.dev10__tar.gz → 1.6.0.dev11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boneio-1.6.0.dev10/boneio.egg-info → boneio-1.6.0.dev11}/PKG-INFO +1 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/cover.py +17 -3
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/__init__.py +6 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/binary_sensor.py +71 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/detectors.py +62 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/event.py +34 -11
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/__init__.py +4 -0
- boneio-1.6.0.dev11/boneio/components/input/remote/mqtt.py +148 -0
- boneio-1.6.0.dev11/boneio/components/virtual_switch.py +260 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/const.py +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/init-certs-cloud.sh +2 -2
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_util.py +210 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/containers.py +101 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/events/bus.py +67 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/action_conditions.py +4 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/inputs.py +14 -3
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/manager.py +104 -2
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/remote_input_registrar.py +98 -29
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/scheduler.py +122 -4
- boneio-1.6.0.dev11/boneio/core/manager/virtual_switches.py +187 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/posture.py +28 -0
- boneio-1.6.0.dev11/boneio/core/utils/naming.py +78 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/oled.py +100 -2
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/base.py +13 -3
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina219.py +39 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/base.py +9 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/MANIFEST.sha256 +5 -5
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +5 -1
- {boneio-1.6.0.dev10/boneio/core/cloud/data → boneio-1.6.0.dev11/boneio/migrations/assets/docker/nodered}/docker-compose-cloud.yaml +10 -3
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +11 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-migrate-v2 +21 -4
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio-helpers +1 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.0.json +1 -1
- boneio-1.6.0.dev11/boneio/migrations/plans/1.3.0.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.4.json +1 -1
- boneio-1.6.0.dev11/boneio/migrations/plans/1.4.4.sig +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.13.json +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.13.sig +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.14.json +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.14.sig +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.15.json +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.15.sig +0 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.16.json +1 -0
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.16.sig +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.5.json +1 -1
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.5.sig +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.8.json +1 -1
- boneio-1.6.0.dev11/boneio/migrations/plans/1.6.8.sig +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/manifest.json +1 -1
- boneio-1.6.0.dev11/boneio/migrations/plans/manifest.sig +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/runner.py +45 -1
- boneio-1.6.0.dev11/boneio/migrations/versions/v1_6_15_web_port_reaches_caddy.py +93 -0
- boneio-1.6.0.dev11/boneio/migrations/versions/v1_6_16_release_floor_ordering.py +75 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/runner.py +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions.yaml +34 -2
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/condition.yaml +4 -3
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_inputs.yaml +23 -2
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/schema.yaml +218 -2
- boneio-1.6.0.dev11/boneio/version.py +2 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/app.py +24 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/AccountsView-CaVxf1WE.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/AppInitContext-vTo66GKy.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/BackupSection-B7T0lpXM.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/BindingMatrix-BMthGEb3.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/DeviceControlSection-Dxx97pLu.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/DiagnosticsView-ChPJmL7r.js +5 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/EntityCard-CEvBedbs.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/EntityGrid-BiDlj33Y.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/FactoryResetSection-Cx8qW7uA.js +1 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/FormInputToggle-rzxH8pqC.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/FormInputToggle-DyEACPW5.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/HaDashboardWizard-oyJNrasu.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/HostnameSection-CMwzYnOp.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/InputsView-Bm0Y6_KN.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LocationSection-CqIrebEn.js +2 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LoggerForm-BdfZQ70T.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/LongPressWrapper-DJfAXNKc.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/MigrationsSection-Dd9ZZ9FR.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/ModbusView-Bsm_bCJZ.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/MqttPasswordsSection-C3IWNe6d.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/NodeRedManagement-m3ER-TbJ.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/NodeRedView-BTn8YfcX.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/OutputsView-b-gJRTTo.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SecurityView-OkBQkWLY.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SensorView-Bb4Iy4v2.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/Sparkline-CNZW64p4.js +3 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/SystemState-07mfSamd.js +2 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TemplatesView-CKgbUhBU.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TilePicker-CBQSN1KB.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/TimezoneSection-ClEsYyQF.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/UISettings-U8FLkxyD.js +100 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ViewToggle-B8OpHNHc.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/ViewToggle-i1Ti0oPo.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/aiConfig-1DdO0VbB.js +2 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/aiWizardPrompt-Dc7dZBzw.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/aiWizardPrompt-DgFk985o.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/axios-DJBeJS4R.js +10 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/configCache-BS98BpF9.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/dialog-BHkRvqJ3.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/editor.worker-O-CH8JUO.js +26 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/fa-DFicOgEn.js +1 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/formatters-zOiGPJLh.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/formatters-Cc0QIRxb.js +1 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/gi-tOlGxC0X.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/gi-_T3Az7Xl.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/index-BFy6Y45i.css +2 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/index-CBcR1pl2.js +48 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-DUFfd7ef.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/monaco-BggK1re0.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/monaco-Cc1HzfNY.js +884 -0
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/chunk-QTnfLwEv.js → boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/rolldown-runtime-hePW80VL.js +1 -1
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/select-DXweKMhj.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/tabs-box-S5EvhXSU.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/utils-DOQQTBMN.js +1 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/assets/yaml.worker-CeS-z5zL.js +243 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/index.html +9 -9
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +38 -2
- {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/config.schema.json +1665 -130
- {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/event.schema.json +133 -7
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/schema/osdp.schema.json +160 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +5 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/schedule.schema.json +43 -7
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/schema/virtual_switch.schema.json +1316 -0
- {boneio-1.6.0.dev10/boneio/webui → boneio-1.6.0.dev11/boneio/webui/frontend-dist}/schema/web.schema.json +22 -0
- boneio-1.6.0.dev11/boneio/webui/frontend-dist/sw.js +1 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_core.py +69 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/outputs.py +25 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/system.py +39 -11
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/timezone_sudoers.py +9 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/binary_sensor.schema.json +38 -2
- {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/config.schema.json +1665 -130
- {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/event.schema.json +133 -7
- boneio-1.6.0.dev11/boneio/webui/schema/osdp.schema.json +160 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_inputs.schema.json +5 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/schedule.schema.json +43 -7
- boneio-1.6.0.dev11/boneio/webui/schema/virtual_switch.schema.json +1316 -0
- {boneio-1.6.0.dev10/boneio/webui/frontend-dist → boneio-1.6.0.dev11/boneio/webui}/schema/web.schema.json +22 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/websocket_manager.py +81 -31
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11/boneio.egg-info}/PKG-INFO +1 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/SOURCES.txt +63 -55
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/pyproject.toml +5 -1
- boneio-1.6.0.dev10/boneio/migrations/assets/docker/nodered/docker-compose-cloud.yaml +0 -38
- boneio-1.6.0.dev10/boneio/migrations/plans/1.3.0.sig +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/1.4.4.sig +0 -2
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.13.json +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.13.sig +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.14.json +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.14.sig +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.5.sig +0 -2
- boneio-1.6.0.dev10/boneio/migrations/plans/1.6.8.sig +0 -1
- boneio-1.6.0.dev10/boneio/migrations/plans/manifest.sig +0 -1
- boneio-1.6.0.dev10/boneio/version.py +0 -2
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/AccountsView-CnpfWttp.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ActionFields-DdxRdghF.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/AppInitContext-CsffdB9c.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/BackupSection-C-s4grNN.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/BindingMatrix-v4xUWZve.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/DeviceControlSection-BCbLcOdY.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/DiagnosticsView-S3oihgRt.js +0 -5
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EditItemDialog-4MJOMxut.js +0 -66
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EntityCard-DVABYB5e.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/EntityGrid-BDdmT0qN.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/FactoryResetSection-JXPSCIxk.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/HaDashboardWizard-C-JU3G7o.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/HostnameSection-7ChfKRnB.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/InputsView-pNQ5bDeL.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LocationSection-BYIirRkB.js +0 -2
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LoggerForm-j61zOvFL.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/LongPressWrapper-BKkWvoC1.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/MigrationsSection-CMsxxM8Z.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ModbusView-BXWGyG8_.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/MqttPasswordsSection-B06BwIjN.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/NodeRedManagement-xGq4lRe5.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/NodeRedView-Ct08K8xu.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/OutputsView-BJsN8UeA.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/ScheduleSection-C9WBcKXt.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SecurityView-0SxjKU8S.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SensorView-Swy1YACU.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/Sparkline-D-2-v-7o.js +0 -10
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/SystemState-z4xQfIoI.js +0 -2
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TemplatesView-BS7_4Cl3.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TilePicker-BfaetPZz.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/TimezoneSection-Rb1FiEzP.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/UISettings-Dol9Rhqn.js +0 -33
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/aiConfig-_hPXvgdY.js +0 -2
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/axios-uEi8e3Ln.js +0 -10
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/configCache-CLN4xEny.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/coverUtils-Cf4Uxn2U.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/createLucideIcon-BEjh8B3y.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/editor.worker-Cn2oRESe.js +0 -26
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/fa-BEzM11bH.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/index-b1MgMQ6k.js +0 -40
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/index-lVrZSgFS.css +0 -2
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-DFz5x1Al.js +0 -13
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/monaco-Dpn-hvLa.js +0 -872
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/select-D3PIwbEj.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/tabs-box-Byn-MOyS.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/utils-B6KiDbIe.js +0 -1
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/assets/yaml.worker-8qQfrID5.js +0 -221
- boneio-1.6.0.dev10/boneio/webui/frontend-dist/sw.js +0 -1
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/LICENSE +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/MANIFEST.in +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/README.md +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_32_5.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/input.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_32_10.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_48_4.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/bonecli.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/remote.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/time_based.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/cover/venetian.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/group/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/group/output_group.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/base.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/input/remote/esphome.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/controller.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/irrigation/water_source.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/basic.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/buzzer.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/mcp.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/pca.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/pcf.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/output/remote.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/sensor/virtual_energy.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/alarm_panel.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/gate_cover.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/components/template/thermostat.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/cli.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/hashing.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/migration.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/models.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/auth/store.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/data/docker-compose.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/registration.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/cloud/secrets.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/config_helper.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/input_bindings.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v2_transition.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v4_wled_cache.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/migrations/v5_ina_screen.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/package-lock.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/package.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/provenance.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/schema_converter.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/secret_masking.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_compat.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/config/yaml_patch.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/diagnostics/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/diagnostics/collect.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/discovery.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/events/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/canopen.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/covers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/display.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/irrigation.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/modbus.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/outputs.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/remote.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/security_alert.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/sensors.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/sun.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/alarm.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/gate_cover.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates/thermostat.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/templates.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/manager/update.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/basic.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/basic_mqtt.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/composite.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/local.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/lox.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/mqtt.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/messaging/queue.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/net/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/net/discovery_guard.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/base.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/can.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/esphome.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/mqtt.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/wled.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/remote/wled_cache.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/certificate.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/security/framing.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/base.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/sun.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/sensor/system.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/state/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/state/manager.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/host_data.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system/monitor.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/system_ops.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/async_updater.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/conditions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/filter.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/font_util.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/logger.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/overlay.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/sun.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/timeperiod.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/core/utils/util.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/config.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/event.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/mqtt.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/24x16/output24x16A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/config.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/event.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/mqtt.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/32x10/output32x10A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/config.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/event.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/mqtt.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/48x4/output48x4A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/can_master.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/can_slave.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/config.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/event.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/mqtt.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover/outputCover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/config.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/cover.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/event.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/event_all.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/exceptions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/analog/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/analog/adc.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/bridge.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/client.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/interface.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/node.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/node_id.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/can/test_od.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/early_oled.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/display/fonts/danube__.ttf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/gpio/input/manager.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/bus.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina219_driver.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina226.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/ina226_driver.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/mcp9808.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/i2c/pct2075.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/onewire/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/onewire/dallas.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/homeassistant.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/interlock.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/integration/lox_template.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/actions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/daemon.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-containers +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-helpers-heal +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/helpers/boneio-system +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/issue.d/10-boneio.issue +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/journald/journald.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/kernel/postinst-boneio-overlay +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/migrations-recovery.pem +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/migrations.pem +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/modules-load.d/onewire.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sshd/10-boneio-hardening.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/sudoers/boneio-timedatectl +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-helpers-heal.service +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/boneio.service +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/avahi-daemon-defer.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/bb-usb-gadgets-defer.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/mosquitto-priority.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/timer-no-persistent.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/dropins/user-manager-defer.conf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/linger-marker +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/assets/wheels/pyyaml-6.0.3-cp313-cp313-linux_armv7l.whl +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/boneio-migrate +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/install-helper.sh +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.1.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.1.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.2.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.3.2.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.0.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.0.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.3.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.4.3.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.0.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.0.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.1.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.1.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.10.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.10.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.11.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.11.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.12.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.12.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.13.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.13.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.14.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.14.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.15.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.15.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.16.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.16.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.17.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.17.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.18.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.18.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.2.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.2.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.3.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.3.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.4.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.4.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.5.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.5.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.6.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.6.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.7.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.7.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.8.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.8.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.9.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.5.9.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.0.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.0.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.1.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.1.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.10.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.10.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.11.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.11.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.12.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.12.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.2.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.2.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.3.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.3.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.4.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.4.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.6.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.6.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.7.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.7.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.9.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/plans/1.6.9.sig +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_10_disable_console_setup.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_11_timer_catchup.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_12_oled_splash_off_critical_path.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_13_mosquitto_priority.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_14_journal_apparent_size.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_15_prune_orphan_journals.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_16_login_linger.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_17_defer_user_manager.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_18_fix_hostname_once.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_2_libyaml.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_3_libyaml_retry.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_4_onewire_modules.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_5_overlay_kernel_hook.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_6_boot_service_order.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_7_journald_limits.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_8_apparmor_prune.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_5_9_defer_nonessential.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_0_nodered_admin_auth.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_10_narrow_sudo_rules.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_11_drop_docker_group.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_12_console_shows_ip.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_13_custom_certificate.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_14_certificate_lifetime.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_1_mosquitto_passwd_perms.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_2_drop_build_sudo_rule.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_3_firewall_rule_gaps.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_4_ssh_login_hardening.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_5_trust_transition.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_6_retire_legacy_helper.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_7_timedatectl_sudoers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_8_system_helper.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/migrations/versions/v1_6_9_ntp_servers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/cli.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/client.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/coordinator.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/defro-drx.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/thessla.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/ventclear.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/hvac/wanas415.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/inverters/sofar.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/n4dsc08.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/other/r4dcb08.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/cwt.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/gdfs.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/gdfx.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/pt100.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/qdw90a.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/sht20.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/devices/sensors/sht30.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/base.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/numeric.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/select.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/switch.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/derived/text.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/binary.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/numeric.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/sensor/text.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/binary.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/entities/writeable/numeric.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/mock_coordinator.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/modbus/utils.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/actions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/events.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/files.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/logs.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/mqtt.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/models/state.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions_sensor.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/actions_switch.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/filters.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/filters_adc.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/id.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_devices.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/remote_outputs.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/temp_unit.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/schema/update_interval.yaml +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/action_validation.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/bind.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/dashboard_cards.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/longPress-Dx7OCSyP.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio-192.png +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio-512.png +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio.svg +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/ina226.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/location.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/frontend-dist/workbox-7e79c025.js +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/hvac_svg_templates.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/auth.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/csrf.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/middleware/policy.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/modbus_card_templates.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/rate_limit.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/accounts.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/auth.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/can.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_actions.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_backups.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_discovery.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/config_files.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/covers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/dashboard.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/dev_fake_device.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/diagnostics.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/irrigation.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/migrations.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/modbus.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/mqtt_reference.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/nodered.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/onboarding.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/remote_devices.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/schedule.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/security.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/sensors.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/sun.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/templates.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/tools.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/routes/update.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/adc.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/areas.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/boneio.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/can.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/cover.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/dallas.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ds2482.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ina219.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/ina226.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/irrigation.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/lm75.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/location.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/logger.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/lox_udp.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mcp23017.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mcp9808.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/modbus.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/modbus_devices.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/mqtt.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/oled.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/output.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/output_group.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/pca9685.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/pcf8575.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_devices.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/remote_outputs.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/sensor.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/template.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/security_headers.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/services/__init__.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/services/logs.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/sudo_rate_limiter.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio/webui/web_server.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/dependency_links.txt +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/entry_points.txt +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/requires.txt +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/boneio.egg-info/top_level.txt +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/setup.cfg +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/setup.py +0 -0
- {boneio-1.6.0.dev10 → boneio-1.6.0.dev11}/tests/test_py313_compatibility.py +0 -0
|
@@ -210,9 +210,23 @@ class BaseCover(BaseCoverABC, BasicMqtt):
|
|
|
210
210
|
async def stop(self, on_exit=False) -> None:
|
|
211
211
|
if self._movement_thread and self._movement_thread.is_alive():
|
|
212
212
|
self._stop_event.set()
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
|
|
214
|
+
# Halting is three blocking operations: waiting for the movement
|
|
215
|
+
# thread to notice the stop event, and two relay writes that go out
|
|
216
|
+
# over I2C behind a bus lock shared with every other device. Run
|
|
217
|
+
# inline they were the *event loop's* wait — up to half a second of
|
|
218
|
+
# frozen loop on every cover stop, and a cover stop is the first
|
|
219
|
+
# thing `toggle`, `toggle_open` and `toggle_close` do, so an
|
|
220
|
+
# ordinary button press paid it. Nothing reads GPIO while the loop
|
|
221
|
+
# is stopped. Order is unchanged: join first, then de-energise.
|
|
222
|
+
thread = self._movement_thread
|
|
223
|
+
|
|
224
|
+
def _halt() -> None:
|
|
225
|
+
thread.join(timeout=0.5)
|
|
226
|
+
self._open_relay.turn_off()
|
|
227
|
+
self._close_relay.turn_off()
|
|
228
|
+
|
|
229
|
+
await asyncio.get_running_loop().run_in_executor(None, _halt)
|
|
216
230
|
# Send relay states to WebSocket (not MQTT - that's handled by output_type check)
|
|
217
231
|
with suppress(RuntimeError):
|
|
218
232
|
asyncio.create_task(self._open_relay.async_send_state())
|
|
@@ -9,11 +9,16 @@ Sub-packages:
|
|
|
9
9
|
|
|
10
10
|
from boneio.components.input.binary_sensor import GpioInputBinarySensor
|
|
11
11
|
from boneio.components.input.event import GpioEventButton
|
|
12
|
-
from boneio.components.input.remote import
|
|
12
|
+
from boneio.components.input.remote import (
|
|
13
|
+
ESPHomeBinarySensorInput,
|
|
14
|
+
MqttBinarySensorInput,
|
|
15
|
+
RemoteInputBase,
|
|
16
|
+
)
|
|
13
17
|
|
|
14
18
|
__all__ = [
|
|
15
19
|
"GpioInputBinarySensor",
|
|
16
20
|
"GpioEventButton",
|
|
17
21
|
"ESPHomeBinarySensorInput",
|
|
22
|
+
"MqttBinarySensorInput",
|
|
18
23
|
"RemoteInputBase",
|
|
19
24
|
]
|
|
@@ -8,12 +8,18 @@ from typing import cast
|
|
|
8
8
|
|
|
9
9
|
from boneio.components.input.detectors import BinarySensorDetector
|
|
10
10
|
from boneio.const import PRESSED, RELEASED, BinaryStateTypes, ClickTypes
|
|
11
|
+
from boneio.core.utils.timeperiod import parse_time_to_ms
|
|
11
12
|
from boneio.hardware.gpio.input import GpioBaseClass, get_gpio_manager
|
|
12
13
|
from boneio.models import InputState
|
|
13
14
|
from boneio.models.events import InputEvent
|
|
14
15
|
|
|
15
16
|
_LOGGER = logging.getLogger(__name__)
|
|
16
17
|
|
|
18
|
+
# Matches the binary_sensor bounce_time default in schema.yaml. Needed on the
|
|
19
|
+
# hot-reload path, which reads the YAML without running Cerberus, so an
|
|
20
|
+
# omitted bounce_time arrives as None rather than as the schema default.
|
|
21
|
+
DEFAULT_BOUNCE_TIME_MS = 120
|
|
22
|
+
|
|
17
23
|
|
|
18
24
|
class GpioInputBinarySensor(GpioBaseClass):
|
|
19
25
|
"""Represent Gpio binary sensor on input boards."""
|
|
@@ -57,6 +63,71 @@ class GpioInputBinarySensor(GpioBaseClass):
|
|
|
57
63
|
if kwargs.get("initial_send", False):
|
|
58
64
|
gpio_manager.register_on_start_callback(self._send_initial_state)
|
|
59
65
|
|
|
66
|
+
def update_inverted(self, inverted: bool) -> bool:
|
|
67
|
+
"""Apply a new ``inverted`` setting to a running sensor.
|
|
68
|
+
|
|
69
|
+
Polarity is decided in ``__init__`` and baked into the detector, so a
|
|
70
|
+
config reload alone used to leave the running sensor on the old
|
|
71
|
+
polarity until the application was restarted.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
inverted: New inverted flag from the reloaded config.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
True if the polarity actually changed (caller should re-publish
|
|
78
|
+
the state), False if it was already set that way.
|
|
79
|
+
"""
|
|
80
|
+
inverted = bool(inverted)
|
|
81
|
+
if inverted == self._inverted:
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
self._inverted = inverted
|
|
85
|
+
self._click_type = (RELEASED, PRESSED) if inverted else (PRESSED, RELEASED)
|
|
86
|
+
|
|
87
|
+
# Re-read the pin and re-anchor the detector with the new polarity.
|
|
88
|
+
gpio_manager = get_gpio_manager(loop=self._loop)
|
|
89
|
+
current_value = gpio_manager.read_value(self._pin)
|
|
90
|
+
is_pressed = current_value if inverted else not current_value
|
|
91
|
+
self._detector.resync(inverted=inverted, current_state=is_pressed)
|
|
92
|
+
|
|
93
|
+
_LOGGER.info(
|
|
94
|
+
"Binary sensor %s (%s): inverted changed to %s without restart",
|
|
95
|
+
self._name,
|
|
96
|
+
self._pin,
|
|
97
|
+
inverted,
|
|
98
|
+
)
|
|
99
|
+
return True
|
|
100
|
+
|
|
101
|
+
def update_bounce_time(self, bounce_time) -> bool:
|
|
102
|
+
"""Apply a new debounce window to a running sensor.
|
|
103
|
+
|
|
104
|
+
Like ``inverted``, ``bounce_time`` is read in ``__init__`` and handed to
|
|
105
|
+
the detector, so a config reload used to leave the old window in place
|
|
106
|
+
until the application was restarted.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
bounce_time: Value straight from the reloaded config — a TimePeriod
|
|
110
|
+
at startup, but a bare number of milliseconds (WebUI) or a string
|
|
111
|
+
such as "120ms" (hand-written YAML) on the hot-reload path, which
|
|
112
|
+
skips Cerberus coercion. ``None`` means the schema default.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
True if the window actually changed.
|
|
116
|
+
"""
|
|
117
|
+
seconds = parse_time_to_ms(bounce_time, DEFAULT_BOUNCE_TIME_MS) / 1000.0
|
|
118
|
+
if seconds == self._bounce_time:
|
|
119
|
+
return False
|
|
120
|
+
|
|
121
|
+
self._bounce_time = seconds
|
|
122
|
+
self._detector.set_debounce(seconds)
|
|
123
|
+
_LOGGER.info(
|
|
124
|
+
"Binary sensor %s (%s): bounce_time changed to %.0fms without restart",
|
|
125
|
+
self._name,
|
|
126
|
+
self._pin,
|
|
127
|
+
seconds * 1000,
|
|
128
|
+
)
|
|
129
|
+
return True
|
|
130
|
+
|
|
60
131
|
def _send_initial_state(self) -> None:
|
|
61
132
|
"""Send initial state after setup."""
|
|
62
133
|
self.send_current_state()
|
|
@@ -135,6 +135,14 @@ class MultiClickDetector:
|
|
|
135
135
|
self._delay_click_types.add(first)
|
|
136
136
|
break
|
|
137
137
|
|
|
138
|
+
def set_debounce(self, debounce_seconds: float) -> None:
|
|
139
|
+
"""Change the debounce window on a running detector.
|
|
140
|
+
|
|
141
|
+
Only the window is replaced; timestamps already recorded stay valid
|
|
142
|
+
and are simply compared against the new window from now on.
|
|
143
|
+
"""
|
|
144
|
+
self._debounce_seconds = debounce_seconds
|
|
145
|
+
|
|
138
146
|
def _finalize_clicks(self) -> None:
|
|
139
147
|
"""Finalize a multi-click sequence."""
|
|
140
148
|
count = self._state.click_count
|
|
@@ -415,13 +423,18 @@ class MultiClickDetector:
|
|
|
415
423
|
GPIO state to detect missed RELEASE edge events.
|
|
416
424
|
"""
|
|
417
425
|
if not self._state.last_press_loop_ts or self._state.last_release_ts:
|
|
418
|
-
# Button released or invalid state
|
|
426
|
+
# Button released or invalid state. Drop the handle as well: this
|
|
427
|
+
# chain is ending here, and a handle left pointing at a timer that
|
|
428
|
+
# has already fired reads as "a long press is running" to the
|
|
429
|
+
# release path, which then emits a phantom final LONG on the next
|
|
430
|
+
# ordinary click.
|
|
419
431
|
_LOGGER.debug(
|
|
420
432
|
"Periodic long skipped for %s: press_ts=%s, release_ts=%s",
|
|
421
433
|
self._name,
|
|
422
434
|
self._state.last_press_loop_ts is not None,
|
|
423
435
|
self._state.last_release_ts,
|
|
424
436
|
)
|
|
437
|
+
self._state.long_hold_periodic_timer = None
|
|
425
438
|
return
|
|
426
439
|
|
|
427
440
|
now = self._loop.time()
|
|
@@ -570,6 +583,27 @@ class MultiClickDetector:
|
|
|
570
583
|
return
|
|
571
584
|
|
|
572
585
|
_LOGGER.debug("PRESSED: %s (%s)", self._name, self._pin)
|
|
586
|
+
|
|
587
|
+
# End any long-hold chain still running from the previous press.
|
|
588
|
+
# It can still be running only because that press never saw its
|
|
589
|
+
# release — the edge was lost while the event loop was blocked, or
|
|
590
|
+
# it was swallowed as a bounce. Left alone, the old chain keeps
|
|
591
|
+
# rescheduling itself and now measures against *this* press, so its
|
|
592
|
+
# safety timeout never trips and nothing can ever cancel it: the
|
|
593
|
+
# handle below is about to be overwritten. Every such press adds
|
|
594
|
+
# another immortal chain emitting LONG five times a second.
|
|
595
|
+
if self._state.long_hold_periodic_timer:
|
|
596
|
+
_LOGGER.warning(
|
|
597
|
+
"New press on %s (%s) while a long-hold chain was still "
|
|
598
|
+
"running — the previous release was never seen. Ending it.",
|
|
599
|
+
self._name,
|
|
600
|
+
self._pin,
|
|
601
|
+
)
|
|
602
|
+
self._state.long_hold_periodic_timer.cancel()
|
|
603
|
+
self._state.long_hold_periodic_timer = None
|
|
604
|
+
self._state.executed_long_actions = set()
|
|
605
|
+
self._state.last_repeat_times = {}
|
|
606
|
+
|
|
573
607
|
self._state.last_press_ts = timestamp_s
|
|
574
608
|
self._state.last_press_loop_ts = self._loop.time() # Store loop time for duration calc
|
|
575
609
|
self._state.last_release_ts = None # Reset release timestamp for new press
|
|
@@ -847,6 +881,33 @@ class BinarySensorDetector:
|
|
|
847
881
|
self._pin = pin
|
|
848
882
|
self._state = BinarySensorState()
|
|
849
883
|
|
|
884
|
+
def set_debounce(self, debounce_seconds: float) -> None:
|
|
885
|
+
"""Change the debounce window on a running detector.
|
|
886
|
+
|
|
887
|
+
Only the window is replaced; timestamps already recorded stay valid
|
|
888
|
+
and are simply compared against the new window from now on.
|
|
889
|
+
"""
|
|
890
|
+
self._debounce_seconds = debounce_seconds
|
|
891
|
+
|
|
892
|
+
def resync(self, inverted: bool, current_state: bool) -> None:
|
|
893
|
+
"""Apply a new polarity to a running detector.
|
|
894
|
+
|
|
895
|
+
Called when ``inverted`` is changed in the config and reloaded, so the
|
|
896
|
+
user does not have to restart the application for it to take effect.
|
|
897
|
+
|
|
898
|
+
Args:
|
|
899
|
+
inverted: New inverted flag.
|
|
900
|
+
current_state: Pressed state as read from the pin right now, already
|
|
901
|
+
interpreted with the *new* polarity. Without re-anchoring it the
|
|
902
|
+
cached state would still describe the old polarity and the next
|
|
903
|
+
edge would be dropped by the "state unchanged" guard.
|
|
904
|
+
"""
|
|
905
|
+
self._inverted = bool(inverted)
|
|
906
|
+
self._state.current_state = bool(current_state)
|
|
907
|
+
# Drop the debounce anchor — the pending window belongs to the old
|
|
908
|
+
# polarity and would swallow the first edge after the change.
|
|
909
|
+
self._state.last_press_ts = None
|
|
910
|
+
|
|
850
911
|
def handle_event(self, event: gpiod.EdgeEvent) -> None:
|
|
851
912
|
"""Process a GPIO edge event for binary sensor.
|
|
852
913
|
|
|
@@ -7,7 +7,7 @@ import time
|
|
|
7
7
|
|
|
8
8
|
from boneio.components.input.detectors import MultiClickDetector
|
|
9
9
|
from boneio.const import ClickTypes
|
|
10
|
-
from boneio.core.utils import
|
|
10
|
+
from boneio.core.utils.timeperiod import parse_time_to_ms
|
|
11
11
|
from boneio.hardware.gpio.input import GpioBaseClass, get_gpio_manager
|
|
12
12
|
|
|
13
13
|
_LOGGER = logging.getLogger(__name__)
|
|
@@ -16,25 +16,31 @@ _LOGGER = logging.getLogger(__name__)
|
|
|
16
16
|
DEFAULT_DOUBLE_CLICK_DURATION_MS = 220
|
|
17
17
|
DEFAULT_LONG_PRESS_DURATION_MS = 400
|
|
18
18
|
DEFAULT_SEQUENCE_WINDOW_MS = 500
|
|
19
|
+
# Matches the event bounce_time default in schema.yaml. Needed on the hot-reload
|
|
20
|
+
# path, which reads the YAML without running Cerberus, so an omitted bounce_time
|
|
21
|
+
# arrives as None rather than as the schema default.
|
|
22
|
+
DEFAULT_BOUNCE_TIME_MS = 30
|
|
19
23
|
|
|
20
24
|
|
|
21
25
|
def _to_milliseconds(value, default_ms: int) -> int:
|
|
22
26
|
"""Convert a value to milliseconds.
|
|
23
27
|
|
|
24
28
|
Args:
|
|
25
|
-
value:
|
|
26
|
-
|
|
29
|
+
value: TimePeriod, bare number of milliseconds, string with a unit
|
|
30
|
+
(e.g. "300ms"), or None.
|
|
31
|
+
default_ms: Default value in milliseconds if value is None or unusable.
|
|
27
32
|
|
|
28
33
|
Returns:
|
|
29
|
-
Value in milliseconds as integer
|
|
34
|
+
Value in milliseconds as integer.
|
|
35
|
+
|
|
36
|
+
Note:
|
|
37
|
+
Strings have to be handled here, not just TimePeriod: Cerberus coerces
|
|
38
|
+
these fields at startup, but the hot-reload path reads the YAML without
|
|
39
|
+
validating, and EventForm writes them as strings like "300ms". Falling
|
|
40
|
+
back to the default for those quietly reset every custom click timing on
|
|
41
|
+
each reload.
|
|
30
42
|
"""
|
|
31
|
-
|
|
32
|
-
return default_ms
|
|
33
|
-
if isinstance(value, TimePeriod):
|
|
34
|
-
return int(value.total_milliseconds)
|
|
35
|
-
if isinstance(value, (int, float)):
|
|
36
|
-
return int(value)
|
|
37
|
-
return default_ms
|
|
43
|
+
return parse_time_to_ms(value, default_ms)
|
|
38
44
|
|
|
39
45
|
|
|
40
46
|
class GpioEventButton(GpioBaseClass):
|
|
@@ -173,6 +179,7 @@ class GpioEventButton(GpioBaseClass):
|
|
|
173
179
|
enable_triple_click: bool | None = None,
|
|
174
180
|
long_press_mqtt_mode: str | None = None,
|
|
175
181
|
max_long_press_duration: int | float | None = None,
|
|
182
|
+
bounce_time: object | None = None,
|
|
176
183
|
) -> None:
|
|
177
184
|
"""Update timing parameters for click detection.
|
|
178
185
|
|
|
@@ -189,6 +196,9 @@ class GpioEventButton(GpioBaseClass):
|
|
|
189
196
|
enable_triple_click: Enable triple click detection
|
|
190
197
|
long_press_mqtt_mode: 'single' or 'periodic' for MQTT long press events
|
|
191
198
|
max_long_press_duration: Safety timeout for long press in ms (default: 120000ms)
|
|
199
|
+
bounce_time: Debounce window — a TimePeriod at startup, but a bare
|
|
200
|
+
number of milliseconds or a string such as "30ms" on the
|
|
201
|
+
hot-reload path, which skips Cerberus coercion
|
|
192
202
|
"""
|
|
193
203
|
from boneio.const import CLICK_SEQUENCES
|
|
194
204
|
|
|
@@ -260,3 +270,16 @@ class GpioEventButton(GpioBaseClass):
|
|
|
260
270
|
if long_press_mqtt_mode is not None:
|
|
261
271
|
self._long_press_mqtt_mode = long_press_mqtt_mode
|
|
262
272
|
_LOGGER.debug("Updated long_press_mqtt_mode to %s for %s", long_press_mqtt_mode, self._name)
|
|
273
|
+
|
|
274
|
+
# bounce_time is handed to the detector in __init__, so it needs pushing
|
|
275
|
+
# through explicitly — None here means "back to the schema default".
|
|
276
|
+
seconds = parse_time_to_ms(bounce_time, DEFAULT_BOUNCE_TIME_MS) / 1000.0
|
|
277
|
+
if seconds != self._bounce_time:
|
|
278
|
+
self._bounce_time = seconds
|
|
279
|
+
self._detector.set_debounce(seconds)
|
|
280
|
+
_LOGGER.info(
|
|
281
|
+
"Event input %s (%s): bounce_time changed to %.0fms without restart",
|
|
282
|
+
self._name,
|
|
283
|
+
self._pin,
|
|
284
|
+
seconds * 1000,
|
|
285
|
+
)
|
|
@@ -8,6 +8,8 @@ the same duck-type interface as :class:`GpioBaseClass`.
|
|
|
8
8
|
Subpackages:
|
|
9
9
|
base: ``RemoteInputBase`` — shared logic (EventBus, actions, MultiClickDetector)
|
|
10
10
|
esphome: ``ESPHomeBinarySensorInput`` — ESPHome native API
|
|
11
|
+
mqtt: ``MqttBinarySensorInput`` — any device that publishes a state on a
|
|
12
|
+
topic, most usefully another boneIO
|
|
11
13
|
# future:
|
|
12
14
|
# can_esphome: CAN bus → ESPHome device
|
|
13
15
|
# can_boneio: CAN bus → another boneIO Black
|
|
@@ -15,8 +17,10 @@ Subpackages:
|
|
|
15
17
|
|
|
16
18
|
from boneio.components.input.remote.base import RemoteInputBase
|
|
17
19
|
from boneio.components.input.remote.esphome import ESPHomeBinarySensorInput
|
|
20
|
+
from boneio.components.input.remote.mqtt import MqttBinarySensorInput
|
|
18
21
|
|
|
19
22
|
__all__ = [
|
|
20
23
|
"RemoteInputBase",
|
|
21
24
|
"ESPHomeBinarySensorInput",
|
|
25
|
+
"MqttBinarySensorInput",
|
|
22
26
|
]
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""MQTT binary sensor input — a remote input carried over MQTT.
|
|
2
|
+
|
|
3
|
+
The obvious use is mirroring another boneIO: a peer publishes its inputs at
|
|
4
|
+
``<its topic prefix>/input/<input id>``, and this subscribes to exactly that,
|
|
5
|
+
so a button on one controller can drive a relay on another with nothing in
|
|
6
|
+
between but the broker.
|
|
7
|
+
|
|
8
|
+
It is not limited to boneIO. Anything that publishes an on/off payload on a
|
|
9
|
+
topic works — an ESPHome device in MQTT mode, a Zigbee bridge, a script — by
|
|
10
|
+
giving the entry an explicit ``topic``.
|
|
11
|
+
|
|
12
|
+
What it is *not* for: a flag you flip by hand from Home Assistant. That is a
|
|
13
|
+
`virtual_switch`, which boneIO owns and persists. This is for mirroring
|
|
14
|
+
something that already exists somewhere else.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import json
|
|
20
|
+
import logging
|
|
21
|
+
|
|
22
|
+
from boneio.components.input.remote.base import RemoteInputBase
|
|
23
|
+
from boneio.core.events import EventBus
|
|
24
|
+
|
|
25
|
+
_LOGGER = logging.getLogger(__name__)
|
|
26
|
+
|
|
27
|
+
#: Payloads that mean "on". Three vocabularies at once, because the three
|
|
28
|
+
#: things people point this at do not agree: boneIO publishes pressed/released,
|
|
29
|
+
#: ESPHome publishes ON/OFF, and everything else publishes true/1.
|
|
30
|
+
_TRUTHY = frozenset({"on", "true", "1", "pressed", "open", "opening", "active"})
|
|
31
|
+
_FALSY = frozenset({"off", "false", "0", "released", "closed", "closing", "inactive"})
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class MqttBinarySensorInput(RemoteInputBase):
|
|
35
|
+
"""A remote input whose state arrives on an MQTT topic.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
device_id: ID of the remote device, from ``remote_devices``.
|
|
39
|
+
sensor_id: The input's id on that device.
|
|
40
|
+
topic: Topic to subscribe to.
|
|
41
|
+
id: Local input id.
|
|
42
|
+
name: Display name.
|
|
43
|
+
event_bus: EventBus.
|
|
44
|
+
actions: Parsed actions, keyed by click type.
|
|
45
|
+
**kwargs: Forwarded to :class:`RemoteInputBase`.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
def __init__(
|
|
49
|
+
self,
|
|
50
|
+
*,
|
|
51
|
+
device_id: str,
|
|
52
|
+
sensor_id: str,
|
|
53
|
+
topic: str,
|
|
54
|
+
id: str,
|
|
55
|
+
name: str,
|
|
56
|
+
event_bus: EventBus,
|
|
57
|
+
actions: dict,
|
|
58
|
+
**kwargs,
|
|
59
|
+
) -> None:
|
|
60
|
+
self._device_id = device_id
|
|
61
|
+
self._sensor_id = sensor_id
|
|
62
|
+
self._topic = topic
|
|
63
|
+
|
|
64
|
+
super().__init__(
|
|
65
|
+
id=id,
|
|
66
|
+
name=name,
|
|
67
|
+
pin=f"mqtt:{device_id}:{sensor_id}",
|
|
68
|
+
event_bus=event_bus,
|
|
69
|
+
actions=actions,
|
|
70
|
+
**kwargs,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
_LOGGER.debug(
|
|
74
|
+
"Created MQTT binary sensor input %s (mode=%s, topic=%s)",
|
|
75
|
+
id,
|
|
76
|
+
self._mode,
|
|
77
|
+
topic,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def topic(self) -> str:
|
|
82
|
+
"""The topic this input listens on."""
|
|
83
|
+
return self._topic
|
|
84
|
+
|
|
85
|
+
@staticmethod
|
|
86
|
+
def parse_state(payload: str) -> bool | None:
|
|
87
|
+
"""Read an on/off payload, or None if it is not one.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
True or False, or None when the payload means nothing here — in
|
|
91
|
+
which case the caller leaves the state alone rather than guessing,
|
|
92
|
+
because a wrong guess silently drives a relay.
|
|
93
|
+
"""
|
|
94
|
+
text = (payload or "").strip().strip('"').lower()
|
|
95
|
+
if text in _TRUTHY:
|
|
96
|
+
return True
|
|
97
|
+
if text in _FALSY:
|
|
98
|
+
return False
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
async def on_mqtt_message(self, _topic: str, payload: str) -> None:
|
|
102
|
+
"""Handle a message on the subscribed topic.
|
|
103
|
+
|
|
104
|
+
Two payload shapes are understood. A plain on/off state is the usual
|
|
105
|
+
one. A JSON object with ``event_type`` is what a boneIO *event* input
|
|
106
|
+
publishes — a click that has already been classified — and in event
|
|
107
|
+
mode it is passed through as-is rather than re-derived from a state
|
|
108
|
+
this side never saw.
|
|
109
|
+
|
|
110
|
+
Args:
|
|
111
|
+
_topic: The topic it arrived on; unused, one subscription per input.
|
|
112
|
+
payload: The message.
|
|
113
|
+
"""
|
|
114
|
+
text = (payload or "").strip()
|
|
115
|
+
|
|
116
|
+
if text.startswith("{"):
|
|
117
|
+
try:
|
|
118
|
+
event_type = json.loads(text).get("event_type")
|
|
119
|
+
except ValueError:
|
|
120
|
+
event_type = None
|
|
121
|
+
if event_type:
|
|
122
|
+
if self._mode == "event":
|
|
123
|
+
self.press_callback(click_type=event_type, duration=None)
|
|
124
|
+
else:
|
|
125
|
+
_LOGGER.debug(
|
|
126
|
+
"Input %s got a click event but is in binary_sensor mode; "
|
|
127
|
+
"set `mode: event` to use it.",
|
|
128
|
+
self.id,
|
|
129
|
+
)
|
|
130
|
+
return
|
|
131
|
+
|
|
132
|
+
state = self.parse_state(text)
|
|
133
|
+
if state is None:
|
|
134
|
+
_LOGGER.warning(
|
|
135
|
+
"Input %s: cannot read %r as a state. Expected on/off, "
|
|
136
|
+
"true/false, 1/0 or pressed/released.",
|
|
137
|
+
self.id,
|
|
138
|
+
payload,
|
|
139
|
+
)
|
|
140
|
+
return
|
|
141
|
+
|
|
142
|
+
if self._inverted:
|
|
143
|
+
state = not state
|
|
144
|
+
|
|
145
|
+
if self._mode == "event":
|
|
146
|
+
self._feed_detector(is_pressed=state)
|
|
147
|
+
else:
|
|
148
|
+
self._handle_binary_state_change(state)
|