boneio 1.4.0.dev9__tar.gz → 1.4.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.4.0.dev9/boneio.egg-info → boneio-1.4.0.dev11}/PKG-INFO +1 -1
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/remote.py +33 -2
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/yaml_util.py +3 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/irrigation.py +49 -39
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/manager.py +11 -1
- boneio-1.4.0.dev11/boneio/version.py +2 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/dashboard_cards.py +3 -1
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/config.py +7 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/irrigation.py +15 -17
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11/boneio.egg-info}/PKG-INFO +1 -1
- boneio-1.4.0.dev9/boneio/version.py +0 -2
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/LICENSE +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/MANIFEST.in +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/README.md +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/output_32_5.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/output_32_5.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/output_32_5.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.5/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.5/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.5/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.5/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.6/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.6/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.6/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.6/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/output_48_4.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/input.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/output_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/output_32_10.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/output_48_4.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/output_cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/bonecli.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/cover/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/cover/cover.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/cover/time_based.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/cover/venetian.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/group/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/group/output_group.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/binary_sensor.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/detectors.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/event.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/remote/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/remote/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/input/remote/esphome.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/irrigation/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/irrigation/controller.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/irrigation/water_source.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/basic.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/mcp.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/pca.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/output/pcf.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/sensor/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/sensor/virtual_energy.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/template/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/template/alarm_panel.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/template/gate_cover.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/components/template/thermostat.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/const.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/data/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/data/docker-compose-cloud.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/data/docker-compose.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/data/init-certs-cloud.sh +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/registration.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/cloud/secrets.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/config_helper.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/migrations/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/migrations/v1_proxy_port.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/migrations/v2_transition.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/package-lock.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/package.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/config/schema_converter.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/discovery.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/events/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/events/bus.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/action_conditions.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/canopen.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/covers.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/display.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/inputs.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/modbus.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/outputs.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/remote.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/remote_input_registrar.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/sensors.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/templates/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/templates/alarm.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/templates/gate_cover.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/templates/thermostat.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/templates.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/manager/update.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/basic.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/basic_mqtt.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/composite.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/local.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/lox.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/mqtt.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/messaging/queue.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/can.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/esphome.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/mqtt.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/remote/wled.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/sensor/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/sensor/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/sensor/system.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/state/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/state/manager.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/system/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/system/host_data.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/system/monitor.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/async_updater.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/conditions.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/filter.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/font_util.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/logger.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/timeperiod.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/core/utils/util.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/config.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/event.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/mqtt.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/24x16/output24x16A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/config.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/event.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/mqtt.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/32x10/output32x10A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/config.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/event.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/mqtt.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/48x4/output48x4A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/can_master.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/can_slave.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/config.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/event.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/mqtt.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover/outputCover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/config.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/cover.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/event.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/event_all.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/exceptions.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/analog/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/analog/adc.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/bridge.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/client.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/interface.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/node.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/node_id.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/can/test_od.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/display/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/display/early_oled.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/display/fonts/danube__.ttf +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/display/oled.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/expanders/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/input/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/input/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/gpio/input/manager.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/bus.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/ina219.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/ina219_driver.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/mcp9808.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/i2c/pct2075.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/onewire/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/onewire/bus.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/onewire/dallas.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/onewire/ds2482.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/sensor/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/sensor/temperature/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/sensor/temperature/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/integration/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/integration/homeassistant.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/integration/interlock.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/integration/lox_template.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/actions.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/MANIFEST.sha256 +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/docker/daemon.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/docker/nodered/docker-compose.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/docker/nodered/nginx/default.conf +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/docker/nodered/node-red/settings.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/journald/journald.conf +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/mosquitto/boneio.conf +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/sudoers/boneio +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/systemd/boneio-oled-boot.service +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/systemd/boneio.service +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/systemd/set-hostname-once.service +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/usr-local-bin/set-hostname-once.sh +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/usr-sbin/oled_boot_splash.sh +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/assets/usr-sbin/oled_msg.sh +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/bootstrap/boneio-migrate +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/bootstrap/install-helper.sh +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/bootstrap/sudoers-migrate +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/runner.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/versions/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/versions/v1_3_0_baseline.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/versions/v1_3_1_fix_oled_boot.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/versions/v1_3_2_cleanup_can_sudoers.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/migrations/versions/v1_4_0_fix_mqtt_sudoers.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/cli.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/client.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/coordinator.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/le-03mw.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/le-03mwct.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/hvac/eht-topventil-plus.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/hvac/ventclear.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/inverters/sofar.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/inverters/thessla.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/other/esp32_relay_x4_modbus.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/other/n4dsc08.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/other/r4dcb08.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/other/wanas415.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/boneio-edge-temp.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/cwt.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/dts1964_3f.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/gdfs.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/gdfx.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/pt100.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/sht20.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/devices/sensors/sht30.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/base.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/derived/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/derived/numeric.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/derived/select.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/derived/switch.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/derived/text.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/sensor/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/sensor/binary.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/sensor/numeric.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/sensor/text.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/writeable/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/writeable/binary.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/entities/writeable/numeric.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/modbus/utils.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/actions.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/events.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/files.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/logs.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/mqtt.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/models/state.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/runner.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/actions.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/actions_sensor.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/actions_switch.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/condition.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/filters.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/filters_adc.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/id.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/remote_devices.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/remote_inputs.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/remote_outputs.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/schema.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/temp_unit.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/schema/update_interval.yaml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/action_validation.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/app.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/ConfigEditor-Cs0wqNzh.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/aiConfig-DxFilBWK.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/aiWizardPrompt-CrWwS7zb.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/codicon-DCmgc-ay.ttf +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/editor.worker-BVjSvWeP.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/index-DvzU3Ztp.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/index-jCTJrr8b.css +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/json.worker-CqOJL4FD.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/monaco-B9WiNxkw.css +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/monaco-CAZoGZNF.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/rolldown-runtime-Dw2cE7zH.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/useTranslation-BbOWxWUU.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/vendor-BD5Ml_Uz.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/workbox-window.prod.es5-BJd1pjeW.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/assets/yaml.worker-nZQZSRZ7.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/boneio-192.png +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/boneio-512.png +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/boneio.svg +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/index.html +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/adc.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/areas.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/binary_sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/boneio.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/can.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/config.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/cover.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/dallas.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/ds2482.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/event.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/ina219.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/irrigation.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/lm75.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/logger.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/lox_udp.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/mcp23017.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/mcp9808.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/modbus.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/modbus_devices.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/mqtt.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/oled.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/output.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/output_group.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/pca9685.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/pcf8575.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/remote_devices.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/remote_inputs.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/remote_outputs.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/template.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/schema/web.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/sw.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/frontend-dist/workbox-4eca85ba.js +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/middleware/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/middleware/auth.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/auth.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/caddy.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/can.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/covers.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/migrations.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/modbus.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/outputs.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/remote_devices.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/sensors.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/system.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/templates.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/timezone_sudoers.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/tools.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/routes/update.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/adc.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/areas.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/binary_sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/boneio.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/can.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/config.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/cover.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/dallas.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/ds2482.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/event.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/ina219.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/irrigation.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/lm75.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/logger.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/lox_udp.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/mcp23017.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/mcp9808.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/modbus.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/modbus_devices.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/mqtt.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/oled.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/output.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/output_group.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/pca9685.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/pcf8575.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/remote_devices.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/remote_inputs.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/remote_outputs.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/template.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/schema/web.schema.json +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/services/__init__.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/services/logs.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/web_server.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio/webui/websocket_manager.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio.egg-info/SOURCES.txt +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio.egg-info/dependency_links.txt +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio.egg-info/entry_points.txt +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio.egg-info/requires.txt +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/boneio.egg-info/top_level.txt +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/pyproject.toml +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/setup.cfg +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/setup.py +0 -0
- {boneio-1.4.0.dev9 → boneio-1.4.0.dev11}/tests/test_py313_compatibility.py +0 -0
|
@@ -15,7 +15,7 @@ import logging
|
|
|
15
15
|
import time
|
|
16
16
|
from typing import TYPE_CHECKING, Any
|
|
17
17
|
|
|
18
|
-
from boneio.const import OFF, ON, SWITCH
|
|
18
|
+
from boneio.const import OFF, ON, OUTPUT, STATE, SWITCH
|
|
19
19
|
from boneio.core.events import EventBus, async_track_point_in_time, utcnow
|
|
20
20
|
from boneio.core.utils import callback
|
|
21
21
|
from boneio.core.utils.timeperiod import TimePeriod, parse_time_to_seconds
|
|
@@ -23,6 +23,7 @@ from boneio.models import OutputState
|
|
|
23
23
|
from boneio.models.events import OutputEvent
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
26
|
+
from boneio.core.messaging import MessageBus
|
|
26
27
|
from boneio.integration.interlock import SoftwareInterlockManager
|
|
27
28
|
|
|
28
29
|
_LOGGER = logging.getLogger(__name__)
|
|
@@ -62,6 +63,8 @@ class RemoteOutputBase:
|
|
|
62
63
|
output_id: str,
|
|
63
64
|
remote_source: str,
|
|
64
65
|
event_bus: EventBus,
|
|
66
|
+
message_bus: MessageBus | None = None,
|
|
67
|
+
topic_prefix: str = "",
|
|
65
68
|
output_type: str = SWITCH,
|
|
66
69
|
show_in_ha: bool = False,
|
|
67
70
|
area: str | None = None,
|
|
@@ -83,6 +86,8 @@ class RemoteOutputBase:
|
|
|
83
86
|
self._output_id = output_id
|
|
84
87
|
self._remote_source = remote_source
|
|
85
88
|
self._event_bus = event_bus
|
|
89
|
+
self._message_bus: MessageBus | None = message_bus
|
|
90
|
+
self._send_topic = f"{topic_prefix}/{OUTPUT}/{id}" if topic_prefix else ""
|
|
86
91
|
self._output_type = output_type
|
|
87
92
|
self.show_in_ha = show_in_ha
|
|
88
93
|
self.area: str | None = area
|
|
@@ -376,10 +381,21 @@ class RemoteOutputBase:
|
|
|
376
381
|
async def async_set_brightness(self, brightness: int, timestamp: float | None = None) -> None:
|
|
377
382
|
"""Set brightness on the remote light output.
|
|
378
383
|
|
|
384
|
+
Checks interlock before sending the brightness command. Setting
|
|
385
|
+
brightness implicitly turns the light ON, so interlock rules apply.
|
|
386
|
+
|
|
379
387
|
Args:
|
|
380
388
|
brightness: Brightness value (0-255).
|
|
381
389
|
timestamp: Optional timestamp for state tracking.
|
|
382
390
|
"""
|
|
391
|
+
# Brightness > 0 effectively turns ON — must check interlock
|
|
392
|
+
if brightness > 0 and not self.check_interlock():
|
|
393
|
+
_LOGGER.warning(
|
|
394
|
+
"Interlock active: cannot set brightness on remote output '%s'",
|
|
395
|
+
self._id,
|
|
396
|
+
)
|
|
397
|
+
return
|
|
398
|
+
|
|
383
399
|
if not self._resolve_device_manager():
|
|
384
400
|
_LOGGER.error("Remote output '%s' has no device manager, cannot set brightness", self._id)
|
|
385
401
|
return
|
|
@@ -466,7 +482,22 @@ class RemoteOutputBase:
|
|
|
466
482
|
# ------------------------------------------------------------------
|
|
467
483
|
|
|
468
484
|
def _emit_state_event(self) -> None:
|
|
469
|
-
"""Emit OutputEvent on EventBus for WebSocket/state tracking.
|
|
485
|
+
"""Emit OutputEvent on EventBus for WebSocket/state tracking.
|
|
486
|
+
|
|
487
|
+
Also publishes the current state to the MQTT state topic so that
|
|
488
|
+
Home Assistant (and any other MQTT consumer) sees the updated state.
|
|
489
|
+
"""
|
|
490
|
+
# Publish state to MQTT so HA sees the update
|
|
491
|
+
if self._message_bus and self._send_topic:
|
|
492
|
+
payload: dict[str, Any] = {STATE: self._state}
|
|
493
|
+
if self._brightness is not None:
|
|
494
|
+
payload["brightness"] = self._brightness
|
|
495
|
+
self._message_bus.send_message(
|
|
496
|
+
topic=self._send_topic,
|
|
497
|
+
payload=payload,
|
|
498
|
+
retain=True,
|
|
499
|
+
)
|
|
500
|
+
|
|
470
501
|
output_state = OutputState(
|
|
471
502
|
id=self._id,
|
|
472
503
|
name=self._name,
|
|
@@ -1118,6 +1118,9 @@ def strip_default_values(data: Any, schema: dict | None = None, section: str | N
|
|
|
1118
1118
|
"""Remove keys with default values from dict."""
|
|
1119
1119
|
cleaned = {}
|
|
1120
1120
|
for key, value in obj.items():
|
|
1121
|
+
# Skip empty strings and None values — they are never valid config
|
|
1122
|
+
if value is None or value == "":
|
|
1123
|
+
continue
|
|
1121
1124
|
# Special handling for nested structures
|
|
1122
1125
|
if key == "actions" and isinstance(value, dict):
|
|
1123
1126
|
# Clean actions recursively
|
|
@@ -276,17 +276,21 @@ class IrrigationManager:
|
|
|
276
276
|
# Build list of discovery IDs to remove
|
|
277
277
|
discovery_ids: list[tuple[str, str]] = [
|
|
278
278
|
(f"{ctrl.id}", "switch"),
|
|
279
|
-
(f"{ctrl.id}_auto_advance", "switch"),
|
|
280
|
-
(f"{ctrl.id}_reverse", "switch"),
|
|
281
279
|
(f"{ctrl.id}_skip_next_run", "switch"),
|
|
282
280
|
(f"{ctrl.id}_standby", "switch"),
|
|
283
281
|
(f"{ctrl.id}_multiplier", "number"),
|
|
284
282
|
(f"{ctrl.id}_repeat", "number"),
|
|
285
|
-
(f"{ctrl.id}_next_valve", "button"),
|
|
286
283
|
(f"{ctrl.id}_pause", "button"),
|
|
287
284
|
(f"{ctrl.id}_resume", "button"),
|
|
288
285
|
(f"{ctrl.id}_event", "event"),
|
|
289
286
|
]
|
|
287
|
+
# Multi-zone-only entities
|
|
288
|
+
if len(ctrl.zones) > 1:
|
|
289
|
+
discovery_ids.extend([
|
|
290
|
+
(f"{ctrl.id}_auto_advance", "switch"),
|
|
291
|
+
(f"{ctrl.id}_reverse", "switch"),
|
|
292
|
+
(f"{ctrl.id}_next_valve", "button"),
|
|
293
|
+
])
|
|
290
294
|
for zone in ctrl.zones:
|
|
291
295
|
discovery_ids.append((f"{ctrl.id}_zone_{zone.id}", "valve"))
|
|
292
296
|
discovery_ids.append((f"{ctrl.id}_zone_{zone.id}_enabled", "switch"))
|
|
@@ -338,8 +342,10 @@ class IrrigationManager:
|
|
|
338
342
|
async def handle_standby(_topic: str, payload: str, _ctrl: IrrigationController = ctrl) -> None:
|
|
339
343
|
await _ctrl.set_standby(payload.strip().upper() == ON)
|
|
340
344
|
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
# Subscribe multi-zone-only MQTT handlers
|
|
346
|
+
if len(ctrl.zones) > 1:
|
|
347
|
+
await self._subscribe_topic(ctrl._setting_cmd_topic("auto_advance"), handle_auto_advance)
|
|
348
|
+
await self._subscribe_topic(ctrl._setting_cmd_topic("reverse"), handle_reverse)
|
|
343
349
|
await self._subscribe_topic(ctrl._setting_cmd_topic("multiplier"), handle_multiplier)
|
|
344
350
|
await self._subscribe_topic(ctrl._setting_cmd_topic("repeat"), handle_repeat)
|
|
345
351
|
await self._subscribe_topic(ctrl._setting_cmd_topic("skip_next_run"), handle_skip_next)
|
|
@@ -401,29 +407,31 @@ class IrrigationManager:
|
|
|
401
407
|
payload=ha_irrigation_main_switch_message(ctrl.id, ctrl.name, cfg),
|
|
402
408
|
)
|
|
403
409
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
410
|
+
# Multi-zone-only switches: auto_advance, reverse
|
|
411
|
+
if len(ctrl.zones) > 1:
|
|
412
|
+
_pub(
|
|
413
|
+
id=f"{ctrl.id}_auto_advance",
|
|
414
|
+
ha_type="switch",
|
|
415
|
+
payload=ha_irrigation_switch_message(
|
|
416
|
+
ctrl.id,
|
|
417
|
+
ctrl.name,
|
|
418
|
+
suffix="auto_advance",
|
|
419
|
+
name=f"{ctrl.name} Auto Advance",
|
|
420
|
+
config_helper=cfg,
|
|
421
|
+
),
|
|
422
|
+
)
|
|
415
423
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
424
|
+
_pub(
|
|
425
|
+
id=f"{ctrl.id}_reverse",
|
|
426
|
+
ha_type="switch",
|
|
427
|
+
payload=ha_irrigation_switch_message(
|
|
428
|
+
ctrl.id,
|
|
429
|
+
ctrl.name,
|
|
430
|
+
suffix="reverse",
|
|
431
|
+
name=f"{ctrl.name} Reverse",
|
|
432
|
+
config_helper=cfg,
|
|
433
|
+
),
|
|
434
|
+
)
|
|
427
435
|
|
|
428
436
|
_pub(
|
|
429
437
|
id=f"{ctrl.id}_skip_next_run",
|
|
@@ -481,18 +489,20 @@ class IrrigationManager:
|
|
|
481
489
|
),
|
|
482
490
|
)
|
|
483
491
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
492
|
+
# Multi-zone-only button: next_valve
|
|
493
|
+
if len(ctrl.zones) > 1:
|
|
494
|
+
_pub(
|
|
495
|
+
id=f"{ctrl.id}_next_valve",
|
|
496
|
+
ha_type="button",
|
|
497
|
+
payload=ha_irrigation_button_message(
|
|
498
|
+
ctrl.id,
|
|
499
|
+
ctrl.name,
|
|
500
|
+
suffix="next_valve",
|
|
501
|
+
name=f"{ctrl.name} Next Valve",
|
|
502
|
+
payload_press=NEXT_VALVE,
|
|
503
|
+
config_helper=cfg,
|
|
504
|
+
),
|
|
505
|
+
)
|
|
496
506
|
|
|
497
507
|
_pub(
|
|
498
508
|
id=f"{ctrl.id}_pause",
|
|
@@ -1426,6 +1426,8 @@ class Manager:
|
|
|
1426
1426
|
output_id=output_id,
|
|
1427
1427
|
remote_source=remote_source,
|
|
1428
1428
|
event_bus=self._event_bus,
|
|
1429
|
+
message_bus=self._message_bus,
|
|
1430
|
+
topic_prefix=self._topic_prefix,
|
|
1429
1431
|
output_type=output_type,
|
|
1430
1432
|
show_in_ha=show_in_ha,
|
|
1431
1433
|
area=area,
|
|
@@ -1765,7 +1767,15 @@ class Manager:
|
|
|
1765
1767
|
if msg_type == OUTPUT and command == SET_BRIGHTNESS:
|
|
1766
1768
|
target_device = self.outputs.get_output(device_id)
|
|
1767
1769
|
if target_device and target_device.output_type != "none" and message != "":
|
|
1768
|
-
|
|
1770
|
+
brightness_val = int(message)
|
|
1771
|
+
# Brightness > 0 effectively turns ON — must respect interlock
|
|
1772
|
+
if brightness_val > 0 and hasattr(target_device, "check_interlock") and not target_device.check_interlock():
|
|
1773
|
+
_LOGGER.warning(
|
|
1774
|
+
"Interlock active: cannot set brightness on '%s'",
|
|
1775
|
+
device_id,
|
|
1776
|
+
)
|
|
1777
|
+
return
|
|
1778
|
+
target_device.set_brightness(brightness_val)
|
|
1769
1779
|
else:
|
|
1770
1780
|
_LOGGER.debug("Target device not found %s.", device_id)
|
|
1771
1781
|
return
|
|
@@ -184,7 +184,9 @@ def slider_tile(
|
|
|
184
184
|
"entity": entity,
|
|
185
185
|
"name": name,
|
|
186
186
|
"icon": icon,
|
|
187
|
-
"
|
|
187
|
+
"vertical": False,
|
|
188
|
+
"features": [{"type": "numeric-input", "style": "slider"}],
|
|
189
|
+
"features_position": "inline",
|
|
188
190
|
}
|
|
189
191
|
|
|
190
192
|
|
|
@@ -137,6 +137,13 @@ def invalidate_config_cache():
|
|
|
137
137
|
"""
|
|
138
138
|
_config_cache["data"] = None
|
|
139
139
|
_config_cache["mtime"] = 0
|
|
140
|
+
# Also invalidate ConfigHelper's internal cache so GET /api/config
|
|
141
|
+
# re-reads from disk instead of returning stale data.
|
|
142
|
+
try:
|
|
143
|
+
app_state = _get_app_state()
|
|
144
|
+
app_state.manager.config_helper._config_cache = None
|
|
145
|
+
except Exception:
|
|
146
|
+
pass
|
|
140
147
|
try:
|
|
141
148
|
config_file = _get_app_state().yaml_config_file
|
|
142
149
|
clear_config_cache(config_file)
|
|
@@ -609,22 +609,14 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
609
609
|
badges=[entity_badge(main_switch), entity_badge(next_run)],
|
|
610
610
|
))
|
|
611
611
|
|
|
612
|
-
# ── 2. Podlewanie ręczne — valve tiles
|
|
612
|
+
# ── 2. Podlewanie ręczne — valve tiles ──────────────────────────
|
|
613
613
|
cards.append(heading_card("Podlewanie ręczne", style="subtitle"))
|
|
614
|
-
zone_tiles: list[dict] = []
|
|
615
614
|
for zone in ctrl.zones:
|
|
616
615
|
zone_valve = eid("valve", f"zone_{zone.id}")
|
|
617
|
-
|
|
616
|
+
cards.append(tile_card(
|
|
618
617
|
zone_valve, zone.name, "mdi:sprinkler-variant",
|
|
619
618
|
state_content=["last_changed", "state"],
|
|
620
619
|
))
|
|
621
|
-
# Pack tiles into horizontal-stacks of 2
|
|
622
|
-
for i in range(0, len(zone_tiles), 2):
|
|
623
|
-
pair = zone_tiles[i : i + 2]
|
|
624
|
-
if len(pair) == 1:
|
|
625
|
-
cards.append(pair[0])
|
|
626
|
-
else:
|
|
627
|
-
cards.append(horizontal_stack(pair))
|
|
628
620
|
|
|
629
621
|
# ── 3. Czasy podlewania — tile cards with +/- buttons ──────────
|
|
630
622
|
cards.append(heading_card("Czasy podlewania", style="subtitle"))
|
|
@@ -634,8 +626,13 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
634
626
|
|
|
635
627
|
# ── 4. Ustawienia ─────────────────────────────────────────────────
|
|
636
628
|
cards.append(heading_card("Ustawienia", style="subtitle"))
|
|
637
|
-
|
|
638
|
-
|
|
629
|
+
# Multi-zone-only switches
|
|
630
|
+
if len(ctrl.zones) > 1:
|
|
631
|
+
for s in ("auto_advance", "standby", "skip_next_run", "reverse"):
|
|
632
|
+
cards.append(inline_tile(eid("switch", s)))
|
|
633
|
+
else:
|
|
634
|
+
for s in ("standby", "skip_next_run"):
|
|
635
|
+
cards.append(inline_tile(eid("switch", s)))
|
|
639
636
|
cards.append(inline_tile(
|
|
640
637
|
eid("number", "multiplier"),
|
|
641
638
|
features=[{"type": "numeric-input", "style": "buttons"}],
|
|
@@ -650,11 +647,12 @@ def _generate_irrigation_dashboard_cards(ctrl: Any, serial: str) -> list[dict]:
|
|
|
650
647
|
|
|
651
648
|
# ── 5. Sterowanie ─────────────────────────────────────────────────
|
|
652
649
|
cards.append(heading_card("Sterowanie", style="subtitle"))
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
tile_card(eid("button", "
|
|
656
|
-
|
|
657
|
-
|
|
650
|
+
control_tiles = []
|
|
651
|
+
if len(ctrl.zones) > 1:
|
|
652
|
+
control_tiles.append(tile_card(eid("button", "next_valve"), "Next valve", "mdi:skip-next"))
|
|
653
|
+
control_tiles.append(tile_card(eid("button", "pause"), "Pause", "mdi:pause"))
|
|
654
|
+
control_tiles.append(tile_card(eid("button", "resume"), "Resume", "mdi:play"))
|
|
655
|
+
cards.append(horizontal_stack(control_tiles))
|
|
658
656
|
|
|
659
657
|
# Water source select (if multiple)
|
|
660
658
|
if len(ctrl.water_sources) > 1:
|
|
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
|
|
File without changes
|