boneio 1.5.0.dev11__tar.gz → 1.5.0.dev12__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.5.0.dev11/boneio.egg-info → boneio-1.5.0.dev12}/PKG-INFO +1 -1
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/template/gate_cover.py +6 -2
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/inputs.py +9 -7
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/remote.py +9 -2
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/templates/__init__.py +4 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/templates/gate_cover.py +53 -11
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/templates.py +40 -10
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/wled.py +46 -3
- boneio-1.5.0.dev12/boneio/version.py +2 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12/boneio.egg-info}/PKG-INFO +1 -1
- boneio-1.5.0.dev11/boneio/version.py +0 -2
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/LICENSE +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/MANIFEST.in +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/README.md +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/output_32_5.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/output_32_5.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/output_32_5.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.5/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.5/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.5/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.5/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.6/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.6/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.6/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.6/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/output_48_4.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/output_48_4.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/input.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/output_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/output_32_10.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/output_48_4.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/output_cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/boards/1.0/output_cover_mix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/bonecli.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/cover/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/cover/cover.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/cover/time_based.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/cover/venetian.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/group/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/group/output_group.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/binary_sensor.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/detectors.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/event.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/remote/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/remote/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/input/remote/esphome.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/irrigation/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/irrigation/controller.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/irrigation/water_source.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/basic.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/buzzer.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/mcp.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/pca.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/pcf.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/output/remote.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/sensor/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/sensor/virtual_energy.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/template/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/template/alarm_panel.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/components/template/thermostat.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/const.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/data/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/data/docker-compose-cloud.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/data/docker-compose.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/registration.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/cloud/secrets.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/config_helper.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/migrations/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/migrations/v2_transition.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/package-lock.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/package.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/schema_converter.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/config/yaml_util.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/discovery.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/events/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/events/bus.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/action_conditions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/canopen.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/covers.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/display.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/irrigation.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/manager.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/modbus.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/outputs.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/remote_input_registrar.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/sensors.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/templates/alarm.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/templates/thermostat.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/manager/update.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/basic.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/basic_mqtt.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/composite.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/local.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/lox.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/mqtt.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/messaging/queue.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/can.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/esphome.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/remote/mqtt.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/sensor/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/sensor/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/sensor/system.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/state/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/state/manager.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/system/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/system/host_data.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/system/monitor.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/async_updater.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/conditions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/filter.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/font_util.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/logger.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/timeperiod.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/core/utils/util.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/config.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/event.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/mqtt.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/24x16/output24x16A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/config.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/event.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/mqtt.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/32x10/output32x10A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/config.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/event.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/mqtt.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/48x4/output48x4A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/can_master.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/can_slave.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/config.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/event.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/mqtt.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover/outputCover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/config.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/cover.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/event.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/event_all.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/exceptions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/analog/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/analog/adc.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/bridge.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/client.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/interface.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/node.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/node_id.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/can/test_od.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/display/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/display/early_oled.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/display/fonts/danube__.ttf +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/display/oled.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/expanders/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/input/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/input/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/gpio/input/manager.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/bus.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/ina219.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/ina219_driver.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/mcp9808.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/i2c/pct2075.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/onewire/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/onewire/bus.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/onewire/dallas.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/onewire/ds2482.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/sensor/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/sensor/temperature/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/sensor/temperature/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/integration/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/integration/homeassistant.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/integration/interlock.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/integration/lox_template.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/actions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/MANIFEST.sha256 +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/daemon.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/nodered/caddy/502.html +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/nodered/caddy/init-certs.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/nodered/nginx/default.conf +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/journald/journald.conf +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/sudoers/boneio +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/systemd/boneio-oled-shutdown.service +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/systemd/boneio.service +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/bootstrap/boneio-migrate +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/bootstrap/install-helper.sh +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/runner.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_4_3_oled_shutdown.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_4_4_caddy.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_5_0_fix_oled_fifo_permissions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/migrations/versions/v1_5_1_ufw_lox_udp.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/cli.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/client.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/coordinator.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/dts1964_3f.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/hvac/thessla.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/hvac/ventclear.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/hvac/wanas415.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/inverters/sofar.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/other/n4dsc08.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/other/r4dcb08.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/cwt.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/gdfs.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/gdfx.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/pt100.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/sht20.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/devices/sensors/sht30.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/base.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/derived/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/derived/numeric.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/derived/select.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/derived/switch.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/derived/text.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/sensor/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/sensor/binary.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/sensor/numeric.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/sensor/text.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/writeable/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/writeable/binary.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/entities/writeable/numeric.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/mock_coordinator.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/modbus/utils.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/actions.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/events.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/files.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/logs.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/mqtt.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/models/state.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/runner.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/actions.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/actions_sensor.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/actions_switch.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/condition.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/filters.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/filters_adc.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/id.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/remote_devices.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/remote_inputs.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/remote_outputs.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/schema.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/temp_unit.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/schema/update_interval.yaml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/action_validation.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/app.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/dashboard_cards.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/BindingMatrix-sPbnkk3q.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/ConfigEditor-BW5p6czH.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/EditItemDialog-EXSzv1h-.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/EntityCard-Baa34yvR.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/EntityGrid-ZMMQCacx.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/HelpView-tDBff8mq.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/InputsView-3TWtNuVX.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/LogViewer-k5Gt8k2O.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/LongPressWrapper-B-jkbdNk.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/ModbusView-DtvRzQPY.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/NodeRedView-BPEkkqIb.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/OutputsView-DUnA3EG0.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/SearchableEntityPicker-Dr9uF-oT.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/SensorView-WmoZT5VM.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/Sparkline-P3-zEZpz.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/SudoPasswordDialog-fC4HRGtE.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/SystemState-BRigO9Bc.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/TemplatesView-CAXj1gAG.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/Tools-DfTLLXUx.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/UISettings-CEZ5cjTg.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/aiConfig-IRYCBmLm.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/aiWizardPrompt-D9OJ-cE7.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/basePath-CxHj-SSK.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/clipboard-CCtx29e-.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/css.worker-CvXBzhp8.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/dialog-DaAuWrWH.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/editor.worker-Cn2oRESe.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/formatters-zOiGPJLh.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/gi-B6VoRVMX.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/html.worker-BO6WuOEO.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/index-CpB8cnDC.css +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/index-mUeR1ZYi.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/json.worker-BkJRGcCJ.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/modbusDeviceCatalog-DAG4PZPN.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/monaco-61yH0vfd.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/monaco-Br_kD0ds.css +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/rolldown-runtime-QTnfLwEv.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/select-CT8v8aH8.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/tabs-box-DdJPCk-r.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/ts.worker-B0J26iPs.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/useTranslation-DWIecEyP.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/utils-BgjkKFNC.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/vendor-DjFmndpd.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/assets/yaml.worker-BKRoXlmz.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/boneio-192.png +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/boneio-512.png +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/boneio.svg +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/index.html +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/config.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/sw.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/frontend-dist/workbox-4918f2f6.js +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/hvac_svg_templates.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/middleware/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/middleware/auth.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/modbus_card_templates.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/auth.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/caddy.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/can.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/config.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/covers.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/dashboard.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/dev_fake_device.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/irrigation.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/migrations.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/modbus.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/outputs.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/remote_devices.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/sensors.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/system.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/templates.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/timezone_sudoers.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/tools.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/routes/update.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/adc.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/areas.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/binary_sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/boneio.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/can.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/config.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/cover.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/dallas.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/ds2482.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/event.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/ina219.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/irrigation.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/lm75.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/logger.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/lox_udp.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/mcp23017.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/mcp9808.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/modbus.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/modbus_devices.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/mqtt.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/oled.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/output.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/output_group.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/pca9685.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/pcf8575.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/remote_devices.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/remote_inputs.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/remote_outputs.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/template.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/schema/web.schema.json +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/services/__init__.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/services/logs.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/web_server.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio/webui/websocket_manager.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio.egg-info/SOURCES.txt +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio.egg-info/dependency_links.txt +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio.egg-info/entry_points.txt +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio.egg-info/requires.txt +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/boneio.egg-info/top_level.txt +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/pyproject.toml +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/setup.cfg +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/setup.py +0 -0
- {boneio-1.5.0.dev11 → boneio-1.5.0.dev12}/tests/test_py313_compatibility.py +0 -0
|
@@ -191,10 +191,14 @@ class BoneIOGateCover:
|
|
|
191
191
|
# -- MQTT ----------------------------------------------------------------
|
|
192
192
|
|
|
193
193
|
async def start(self) -> None:
|
|
194
|
-
"""Subscribe to MQTT command topic.
|
|
194
|
+
"""Subscribe to MQTT command topic and publish current state.
|
|
195
|
+
|
|
196
|
+
Initial sensor state is already set by TemplateManager during
|
|
197
|
+
configuration, so start() just subscribes and publishes.
|
|
198
|
+
"""
|
|
195
199
|
await self._message_bus.subscribe_and_listen(self._cmd_topic, self.handle_command)
|
|
196
200
|
self._publish_state()
|
|
197
|
-
_LOGGER.info("GateCover %s started, subscribed to %s", self._id, self._cmd_topic)
|
|
201
|
+
_LOGGER.info("GateCover %s started (state=%s), subscribed to %s", self._id, self._state, self._cmd_topic)
|
|
198
202
|
|
|
199
203
|
async def stop(self) -> None:
|
|
200
204
|
"""Unsubscribe from MQTT and cancel timers."""
|
|
@@ -801,16 +801,18 @@ class InputManager:
|
|
|
801
801
|
# Send event to MQTT for Home Assistant
|
|
802
802
|
self._publish_input_event_to_mqtt(input_instance, event)
|
|
803
803
|
|
|
804
|
-
#
|
|
805
|
-
#
|
|
806
|
-
#
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
# If publish_only is set, skip action execution (used for initial state sync)
|
|
804
|
+
# If publish_only is set, skip action execution AND template routing.
|
|
805
|
+
# publish_only events come from initial state sync (binary_sensor
|
|
806
|
+
# initial_send) — routing them to gate covers would cause spurious
|
|
807
|
+
# state transitions that trigger HA automations on every restart.
|
|
808
|
+
# Gate covers read sensor state silently during their own start().
|
|
810
809
|
if event.publish_only:
|
|
811
|
-
_LOGGER.debug("Skipping
|
|
810
|
+
_LOGGER.debug("Skipping actions and template routing for %s (publish_only=True)", event.entity_id)
|
|
812
811
|
return
|
|
813
812
|
|
|
813
|
+
# Route to template entities (gate covers, alarm panels)
|
|
814
|
+
self._manager.templates.on_input_event(event.entity_id, event.click_type)
|
|
815
|
+
|
|
814
816
|
# Cancel pending delayed actions if this event matches delay_cancel_on
|
|
815
817
|
# Check ALL click types' actions for delay_cancel_on (not just current click_type)
|
|
816
818
|
self._cancel_delayed_if_matching(input_instance, event.entity_id, event.click_type)
|
|
@@ -473,7 +473,11 @@ class RemoteDeviceManager:
|
|
|
473
473
|
action=action,
|
|
474
474
|
)
|
|
475
475
|
|
|
476
|
-
# For WLED devices, use HTTP JSON API
|
|
476
|
+
# For WLED devices, use fire-and-forget HTTP JSON API.
|
|
477
|
+
# WLED HTTP requests can stall for seconds when the device is
|
|
478
|
+
# unreachable (DNS timeout on .local), which blocks the EventBus
|
|
479
|
+
# worker and freezes ALL input events. Fire-and-forget schedules
|
|
480
|
+
# the request as a background task so the caller returns immediately.
|
|
477
481
|
if device.protocol == RemoteDeviceProtocol.WLED:
|
|
478
482
|
_LOGGER.debug("Controlling WLED '%s' segment '%s' on device '%s'", output_id, action, device_id)
|
|
479
483
|
# Parse segment_id - "main" means whole device, otherwise it's segment ID
|
|
@@ -482,7 +486,9 @@ class RemoteDeviceManager:
|
|
|
482
486
|
wled_rgb: tuple[int, int, int] | None = None
|
|
483
487
|
if rgb and len(rgb) >= 3:
|
|
484
488
|
wled_rgb = (rgb[0], rgb[1], rgb[2])
|
|
485
|
-
|
|
489
|
+
from boneio.core.remote.wled import WLEDRemoteDevice
|
|
490
|
+
wled_device = cast(WLEDRemoteDevice, device)
|
|
491
|
+
wled_device.control_light_fire_and_forget(
|
|
486
492
|
segment_id=segment_id,
|
|
487
493
|
action=action,
|
|
488
494
|
brightness=brightness,
|
|
@@ -494,6 +500,7 @@ class RemoteDeviceManager:
|
|
|
494
500
|
effect_speed=effect_speed,
|
|
495
501
|
effect_intensity=effect_intensity,
|
|
496
502
|
)
|
|
503
|
+
return True # Optimistic: task is scheduled
|
|
497
504
|
|
|
498
505
|
# For MQTT devices, use standard control_output
|
|
499
506
|
return await device.control_output(
|
|
@@ -145,6 +145,9 @@ class TemplateManager:
|
|
|
145
145
|
for alarm in self._alarms.items:
|
|
146
146
|
await alarm.start()
|
|
147
147
|
for gate in self._gates.items:
|
|
148
|
+
# Sync sensor state silently before start() publishes state.
|
|
149
|
+
# Done here (not in configure()) because GPIO manager is now running.
|
|
150
|
+
self._gates.sync_initial_state(gate)
|
|
148
151
|
await gate.start()
|
|
149
152
|
_LOGGER.info("TemplateManager started all entities")
|
|
150
153
|
|
|
@@ -242,6 +245,7 @@ class TemplateManager:
|
|
|
242
245
|
continue
|
|
243
246
|
gate = self._gates.get(eid)
|
|
244
247
|
if gate:
|
|
248
|
+
self._gates.sync_initial_state(gate)
|
|
245
249
|
await gate.start()
|
|
246
250
|
|
|
247
251
|
# Re-register all sensor EventBus listeners (clean slate)
|
|
@@ -143,10 +143,6 @@ class GateCoverManager:
|
|
|
143
143
|
self._input_map[sensor_id] = []
|
|
144
144
|
self._input_map[sensor_id].append(gate)
|
|
145
145
|
|
|
146
|
-
# Read current sensor states to set correct initial gate state.
|
|
147
|
-
# Without this, gate defaults to CLOSED which may be wrong.
|
|
148
|
-
self._sync_initial_state(closed_sensor_id, open_sensor_id)
|
|
149
|
-
|
|
150
146
|
# Publish HA discovery
|
|
151
147
|
self._publish_discovery(gate)
|
|
152
148
|
|
|
@@ -159,23 +155,69 @@ class GateCoverManager:
|
|
|
159
155
|
|
|
160
156
|
def _sync_initial_state(
|
|
161
157
|
self,
|
|
158
|
+
gate: BoneIOGateCover,
|
|
162
159
|
closed_sensor_id: str | None,
|
|
163
160
|
open_sensor_id: str | None,
|
|
164
161
|
) -> None:
|
|
165
|
-
"""
|
|
162
|
+
"""Read current sensor GPIO state and set gate cover's initial state.
|
|
166
163
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
Reads the binary sensor's ``is_active`` property directly —
|
|
165
|
+
no EventBus events are fired, no MQTT messages are published.
|
|
166
|
+
Gate cover's ``start()`` will publish the correct state later.
|
|
170
167
|
|
|
171
168
|
Args:
|
|
169
|
+
gate: The gate cover instance to initialize.
|
|
172
170
|
closed_sensor_id: ID of the closed contact sensor (or None).
|
|
173
171
|
open_sensor_id: ID of the open contact sensor (or None).
|
|
174
172
|
"""
|
|
173
|
+
from boneio.components.input.binary_sensor import GpioInputBinarySensor
|
|
174
|
+
from boneio.components.template.gate_cover import CYCLE_CLOSE, CYCLE_OPEN
|
|
175
|
+
from boneio.const import CLOSED, IDLE, OPEN
|
|
176
|
+
|
|
175
177
|
input_mgr = self._manager.inputs
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
178
|
+
|
|
179
|
+
if closed_sensor_id:
|
|
180
|
+
sensor = input_mgr._inputs.get(closed_sensor_id)
|
|
181
|
+
if sensor and isinstance(sensor, GpioInputBinarySensor):
|
|
182
|
+
is_closed = sensor.is_active
|
|
183
|
+
_LOGGER.debug(
|
|
184
|
+
"Gate %s: initial closed_sensor %s is_active=%s",
|
|
185
|
+
gate.id, closed_sensor_id, is_closed,
|
|
186
|
+
)
|
|
187
|
+
if is_closed:
|
|
188
|
+
gate._state = CLOSED
|
|
189
|
+
gate._current_operation = IDLE
|
|
190
|
+
gate._cycle_next = CYCLE_OPEN
|
|
191
|
+
elif not gate._has_open_sensor:
|
|
192
|
+
gate._state = OPEN
|
|
193
|
+
gate._current_operation = IDLE
|
|
194
|
+
|
|
195
|
+
if open_sensor_id:
|
|
196
|
+
sensor = input_mgr._inputs.get(open_sensor_id)
|
|
197
|
+
if sensor and isinstance(sensor, GpioInputBinarySensor):
|
|
198
|
+
is_open = sensor.is_active
|
|
199
|
+
_LOGGER.debug(
|
|
200
|
+
"Gate %s: initial open_sensor %s is_active=%s",
|
|
201
|
+
gate.id, open_sensor_id, is_open,
|
|
202
|
+
)
|
|
203
|
+
if is_open:
|
|
204
|
+
gate._state = OPEN
|
|
205
|
+
gate._current_operation = IDLE
|
|
206
|
+
gate._cycle_next = CYCLE_CLOSE
|
|
207
|
+
|
|
208
|
+
def sync_initial_state(self, gate: BoneIOGateCover) -> None:
|
|
209
|
+
"""Public entry point for setting gate's initial state from sensor GPIO.
|
|
210
|
+
|
|
211
|
+
Called by TemplateManager during start() when GPIO manager is ready.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
gate: Gate cover to sync.
|
|
215
|
+
"""
|
|
216
|
+
self._sync_initial_state(
|
|
217
|
+
gate,
|
|
218
|
+
gate._closed_sensor_id,
|
|
219
|
+
gate._open_sensor_id,
|
|
220
|
+
)
|
|
179
221
|
|
|
180
222
|
# -- Removal -------------------------------------------------------------
|
|
181
223
|
|
|
@@ -17,9 +17,9 @@ from boneio.components.template.alarm_panel import (
|
|
|
17
17
|
BoneIOAlarmPanel,
|
|
18
18
|
ZoneInput,
|
|
19
19
|
)
|
|
20
|
-
from boneio.components.template.gate_cover import BoneIOGateCover
|
|
20
|
+
from boneio.components.template.gate_cover import BoneIOGateCover, CYCLE_CLOSE, CYCLE_OPEN
|
|
21
21
|
from boneio.components.template.thermostat import BoneIOThermostat
|
|
22
|
-
from boneio.const import ALARM_CONTROL_PANEL, CLIMATE, COVER
|
|
22
|
+
from boneio.const import ALARM_CONTROL_PANEL, CLIMATE, CLOSED, COVER, IDLE, OPEN
|
|
23
23
|
from boneio.core.utils.timeperiod import parse_time_to_ms, parse_time_to_seconds
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
@@ -365,7 +365,7 @@ class TemplateManager:
|
|
|
365
365
|
|
|
366
366
|
# Read current sensor states to set correct initial gate state.
|
|
367
367
|
# Without this, gate defaults to CLOSED which may be wrong.
|
|
368
|
-
self._sync_gate_initial_state(closed_sensor_id, open_sensor_id)
|
|
368
|
+
self._sync_gate_initial_state(gate, closed_sensor_id, open_sensor_id)
|
|
369
369
|
|
|
370
370
|
# Publish HA discovery
|
|
371
371
|
self._publish_gate_cover_discovery(gate)
|
|
@@ -379,23 +379,53 @@ class TemplateManager:
|
|
|
379
379
|
|
|
380
380
|
def _sync_gate_initial_state(
|
|
381
381
|
self,
|
|
382
|
+
gate: BoneIOGateCover,
|
|
382
383
|
closed_sensor_id: str | None,
|
|
383
384
|
open_sensor_id: str | None,
|
|
384
385
|
) -> None:
|
|
385
|
-
"""
|
|
386
|
+
"""Read current sensor GPIO state and set gate cover's initial state.
|
|
386
387
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
388
|
+
Reads the binary sensor's ``is_active`` property directly —
|
|
389
|
+
no EventBus events are fired, no MQTT messages are published.
|
|
390
|
+
Gate cover's ``start()`` will publish the correct state later.
|
|
390
391
|
|
|
391
392
|
Args:
|
|
393
|
+
gate: The gate cover instance to initialize.
|
|
392
394
|
closed_sensor_id: ID of the closed contact sensor (or None).
|
|
393
395
|
open_sensor_id: ID of the open contact sensor (or None).
|
|
394
396
|
"""
|
|
397
|
+
from boneio.components.input.binary_sensor import GpioInputBinarySensor
|
|
398
|
+
|
|
395
399
|
input_mgr = self._manager.inputs
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
400
|
+
|
|
401
|
+
if closed_sensor_id:
|
|
402
|
+
sensor = input_mgr._inputs.get(closed_sensor_id)
|
|
403
|
+
if sensor and isinstance(sensor, GpioInputBinarySensor):
|
|
404
|
+
is_closed = sensor.is_active
|
|
405
|
+
_LOGGER.debug(
|
|
406
|
+
"Gate %s: initial closed_sensor %s is_active=%s",
|
|
407
|
+
gate.id, closed_sensor_id, is_closed,
|
|
408
|
+
)
|
|
409
|
+
if is_closed:
|
|
410
|
+
gate._state = CLOSED
|
|
411
|
+
gate._current_operation = IDLE
|
|
412
|
+
gate._cycle_next = CYCLE_OPEN
|
|
413
|
+
elif not gate._has_open_sensor:
|
|
414
|
+
gate._state = OPEN
|
|
415
|
+
gate._current_operation = IDLE
|
|
416
|
+
|
|
417
|
+
if open_sensor_id:
|
|
418
|
+
sensor = input_mgr._inputs.get(open_sensor_id)
|
|
419
|
+
if sensor and isinstance(sensor, GpioInputBinarySensor):
|
|
420
|
+
is_open = sensor.is_active
|
|
421
|
+
_LOGGER.debug(
|
|
422
|
+
"Gate %s: initial open_sensor %s is_active=%s",
|
|
423
|
+
gate.id, open_sensor_id, is_open,
|
|
424
|
+
)
|
|
425
|
+
if is_open:
|
|
426
|
+
gate._state = OPEN
|
|
427
|
+
gate._current_operation = IDLE
|
|
428
|
+
gate._cycle_next = CYCLE_CLOSE
|
|
399
429
|
|
|
400
430
|
# -- HA Discovery --------------------------------------------------------
|
|
401
431
|
|
|
@@ -169,10 +169,25 @@ class WLEDRemoteDevice(RemoteDevice):
|
|
|
169
169
|
_LOGGER.debug("Closed session for WLED '%s'", self._name)
|
|
170
170
|
|
|
171
171
|
async def _get_session(self) -> aiohttp.ClientSession:
|
|
172
|
-
"""Get or create aiohttp session.
|
|
172
|
+
"""Get or create aiohttp session.
|
|
173
|
+
|
|
174
|
+
Uses ``ThreadedResolver`` (system ``getaddrinfo`` via NSS) so that
|
|
175
|
+
mDNS ``.local`` hostnames are resolved correctly through Avahi.
|
|
176
|
+
The default aiohttp resolver (``AsyncResolver`` / c-ares) bypasses
|
|
177
|
+
NSS entirely, causing ``Name or service not known`` errors for
|
|
178
|
+
``.local`` names even when ``ping`` from the same host works fine.
|
|
179
|
+
|
|
180
|
+
Timeout is kept short (3s total, 2s connect) so that unreachable
|
|
181
|
+
devices do not block the caller.
|
|
182
|
+
"""
|
|
173
183
|
if self._session is None or self._session.closed:
|
|
174
|
-
timeout = aiohttp.ClientTimeout(total=
|
|
175
|
-
|
|
184
|
+
timeout = aiohttp.ClientTimeout(total=3, connect=2)
|
|
185
|
+
resolver = aiohttp.resolver.ThreadedResolver()
|
|
186
|
+
connector = aiohttp.TCPConnector(resolver=resolver)
|
|
187
|
+
self._session = aiohttp.ClientSession(
|
|
188
|
+
timeout=timeout,
|
|
189
|
+
connector=connector,
|
|
190
|
+
)
|
|
176
191
|
return self._session
|
|
177
192
|
|
|
178
193
|
async def _send_state(self, state: dict[str, Any]) -> bool:
|
|
@@ -366,6 +381,34 @@ class WLEDRemoteDevice(RemoteDevice):
|
|
|
366
381
|
)
|
|
367
382
|
|
|
368
383
|
return await self._send_state(state)
|
|
384
|
+
|
|
385
|
+
def control_light_fire_and_forget(
|
|
386
|
+
self,
|
|
387
|
+
**kwargs: Any,
|
|
388
|
+
) -> None:
|
|
389
|
+
"""Schedule ``control_light`` as a background task.
|
|
390
|
+
|
|
391
|
+
Use this when the caller must not be blocked by network I/O
|
|
392
|
+
(e.g. when called from the EventBus action handler). The task
|
|
393
|
+
runs independently; failures are logged but do not propagate.
|
|
394
|
+
|
|
395
|
+
Args:
|
|
396
|
+
**kwargs: Forwarded to :meth:`control_light`.
|
|
397
|
+
"""
|
|
398
|
+
asyncio.create_task(
|
|
399
|
+
self._control_light_safe(**kwargs),
|
|
400
|
+
name=f"wled_ff_{self._id}",
|
|
401
|
+
)
|
|
402
|
+
|
|
403
|
+
async def _control_light_safe(self, **kwargs: Any) -> None:
|
|
404
|
+
"""Wrapper that catches all exceptions so fire-and-forget tasks never crash."""
|
|
405
|
+
try:
|
|
406
|
+
await self.control_light(**kwargs)
|
|
407
|
+
except Exception as exc:
|
|
408
|
+
_LOGGER.error(
|
|
409
|
+
"WLED fire-and-forget failed for '%s': %s",
|
|
410
|
+
self._name, exc,
|
|
411
|
+
)
|
|
369
412
|
|
|
370
413
|
async def control_output(
|
|
371
414
|
self,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|