boneio 1.1.0.dev2__tar.gz → 1.1.0.dev4__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.
Files changed (415) hide show
  1. {boneio-1.1.0.dev2/boneio.egg-info → boneio-1.1.0.dev4}/PKG-INFO +2 -1
  2. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/config_helper.py +8 -0
  3. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/inputs.py +8 -0
  4. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/manager.py +32 -3
  5. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/remote.py +113 -4
  6. boneio-1.1.0.dev4/boneio/core/manager/update.py +341 -0
  7. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/remote/__init__.py +9 -0
  8. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/remote/base.py +2 -0
  9. boneio-1.1.0.dev4/boneio/core/remote/wled.py +572 -0
  10. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/integration/homeassistant.py +45 -2
  11. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/runner.py +3 -2
  12. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/actions.yaml +18 -0
  13. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/remote_devices.yaml +106 -3
  14. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/schema.yaml +12 -0
  15. boneio-1.1.0.dev4/boneio/version.py +2 -0
  16. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/app.py +2 -0
  17. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/cssMode-Ca1DAf9-.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/cssMode-CfBnHhQI.js +1 -1
  18. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/freemarker2-C5IgNKwL.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/freemarker2-Bh2BQpSG.js +1 -1
  19. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/handlebars-coN2SbcA.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/handlebars-D68RL95z.js +1 -1
  20. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/html-DauOMz0u.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/html-XKVYovyY.js +1 -1
  21. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/htmlMode-CmodurAE.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/htmlMode-QT0rbnhL.js +1 -1
  22. boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/index-D0XGmf2O.css +1 -0
  23. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/index-CeFOvpPM.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/index-NKuu8fvk.js +201 -201
  24. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/javascript-N6k9oxRy.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/javascript-CxT2_Xcl.js +1 -1
  25. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/jsonMode-DCkYHItT.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/jsonMode-mhlSbJro.js +1 -1
  26. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/liquid-CuYEfgul.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/liquid-D62PitRX.js +1 -1
  27. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/mdx-DEiUIP8w.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/mdx-C5xjvE7q.js +1 -1
  28. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/python-DBpf3_HZ.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/python-B5fpI3od.js +1 -1
  29. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/razor-S1P72cEP.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/razor-DaPtFLXE.js +1 -1
  30. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/tsMode-A2L2Jxa9.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/tsMode-ltYtI_us.js +1 -1
  31. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/typescript-CupJHRfY.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/typescript-DwdFtOSo.js +1 -1
  32. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/xml-DDPTy55c.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/xml-CiaIsyq7.js +1 -1
  33. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/yaml-CuImUjrc.js → boneio-1.1.0.dev4/boneio/webui/frontend-dist/assets/yaml-DWYHE4pc.js +1 -1
  34. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/index.html +2 -2
  35. {boneio-1.1.0.dev2/boneio/webui/schema → boneio-1.1.0.dev4/boneio/webui/frontend-dist/schem}/binary_sensor.schema.json +32 -0
  36. {boneio-1.1.0.dev2/boneio/webui/schema → boneio-1.1.0.dev4/boneio/webui/frontend-dist/schem}/config.schema.json +338 -3
  37. {boneio-1.1.0.dev2/boneio/webui/schema → boneio-1.1.0.dev4/boneio/webui/frontend-dist/schem}/event.schema.json +112 -0
  38. {boneio-1.1.0.dev2/boneio/webui/schema → boneio-1.1.0.dev4/boneio/webui/frontend-dist/schem}/mqtt.schema.json +13 -0
  39. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/remote_devices.schema.json +179 -1
  40. {boneio-1.1.0.dev2/boneio/webui/schema → boneio-1.1.0.dev4/boneio/webui/frontend-dist/schem}/web.schema.json +2 -2
  41. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/config.py +3 -0
  42. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/remote_devices.py +84 -0
  43. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/update.py +42 -1
  44. {boneio-1.1.0.dev2/boneio/webui/frontend-dist/schem → boneio-1.1.0.dev4/boneio/webui/schema}/binary_sensor.schema.json +32 -0
  45. {boneio-1.1.0.dev2/boneio/webui/frontend-dist/schem → boneio-1.1.0.dev4/boneio/webui/schema}/config.schema.json +338 -3
  46. {boneio-1.1.0.dev2/boneio/webui/frontend-dist/schem → boneio-1.1.0.dev4/boneio/webui/schema}/event.schema.json +112 -0
  47. {boneio-1.1.0.dev2/boneio/webui/frontend-dist/schem → boneio-1.1.0.dev4/boneio/webui/schema}/mqtt.schema.json +13 -0
  48. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/remote_devices.schema.json +179 -1
  49. {boneio-1.1.0.dev2/boneio/webui/frontend-dist/schem → boneio-1.1.0.dev4/boneio/webui/schema}/web.schema.json +2 -2
  50. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/web_server.py +34 -29
  51. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4/boneio.egg-info}/PKG-INFO +2 -1
  52. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio.egg-info/SOURCES.txt +19 -17
  53. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio.egg-info/requires.txt +1 -0
  54. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/pyproject.toml +1 -0
  55. boneio-1.1.0.dev2/boneio/version.py +0 -2
  56. boneio-1.1.0.dev2/boneio/webui/frontend-dist/assets/index-BGHXdp7U.css +0 -1
  57. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/LICENSE +0 -0
  58. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/MANIFEST.in +0 -0
  59. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/README.md +0 -0
  60. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/__init__.py +0 -0
  61. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/input.yaml +0 -0
  62. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/output_24_16.yaml +0 -0
  63. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/output_32_10.yaml +0 -0
  64. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/output_32_5.yaml +0 -0
  65. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/output_cover.yaml +0 -0
  66. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.2/output_cover_mix.yaml +0 -0
  67. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/input.yaml +0 -0
  68. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/output_24_16.yaml +0 -0
  69. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/output_32_10.yaml +0 -0
  70. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/output_32_5.yaml +0 -0
  71. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/output_cover.yaml +0 -0
  72. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.3/output_cover_mix.yaml +0 -0
  73. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/input.yaml +0 -0
  74. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/output_24_16.yaml +0 -0
  75. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/output_32_10.yaml +0 -0
  76. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/output_32_5.yaml +0 -0
  77. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/output_cover.yaml +0 -0
  78. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.4/output_cover_mix.yaml +0 -0
  79. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.5/input.yaml +0 -0
  80. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.5/output_24_16.yaml +0 -0
  81. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.5/output_32_10.yaml +0 -0
  82. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.5/output_cover.yaml +0 -0
  83. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.5/output_cover_mix.yaml +0 -0
  84. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.6/input.yaml +0 -0
  85. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.6/output_24_16.yaml +0 -0
  86. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.6/output_32_10.yaml +0 -0
  87. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.6/output_cover.yaml +0 -0
  88. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.6/output_cover_mix.yaml +0 -0
  89. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.7/input.yaml +0 -0
  90. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.7/output_24_16.yaml +0 -0
  91. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.7/output_32_10.yaml +0 -0
  92. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.7/output_cover.yaml +0 -0
  93. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.7/output_cover_mix.yaml +0 -0
  94. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.8/input.yaml +0 -0
  95. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.8/output_24_16.yaml +0 -0
  96. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.8/output_32_10.yaml +0 -0
  97. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.8/output_cover.yaml +0 -0
  98. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/boards/0.8/output_cover_mix.yaml +0 -0
  99. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/bonecli.py +0 -0
  100. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/__init__.py +0 -0
  101. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/cover/__init__.py +0 -0
  102. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/cover/cover.py +0 -0
  103. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/cover/previous.py +0 -0
  104. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/cover/time_based.py +0 -0
  105. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/cover/venetian.py +0 -0
  106. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/group/__init__.py +0 -0
  107. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/group/output_group.py +0 -0
  108. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/input/__init__.py +0 -0
  109. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/input/binary_sensor.py +0 -0
  110. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/input/detectors.py +0 -0
  111. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/input/event.py +0 -0
  112. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/output/__init__.py +0 -0
  113. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/output/basic.py +0 -0
  114. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/output/mcp.py +0 -0
  115. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/output/pca.py +0 -0
  116. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/output/pcf.py +0 -0
  117. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/sensor/__init__.py +0 -0
  118. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/components/sensor/virtual_energy.py +0 -0
  119. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/const.py +0 -0
  120. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/__init__.py +0 -0
  121. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/__init__.py +0 -0
  122. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/package-lock.json +0 -0
  123. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/package.json +0 -0
  124. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/schema_converter.py +0 -0
  125. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/config/yaml_util.py +0 -0
  126. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/discovery.py +0 -0
  127. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/events/__init__.py +0 -0
  128. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/events/bus.py +0 -0
  129. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/__init__.py +0 -0
  130. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/covers.py +0 -0
  131. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/display.py +0 -0
  132. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/modbus.py +0 -0
  133. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/outputs.py +0 -0
  134. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/manager/sensors.py +0 -0
  135. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/__init__.py +0 -0
  136. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/basic.py +0 -0
  137. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/basic_mqtt.py +0 -0
  138. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/local.py +0 -0
  139. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/mqtt.py +0 -0
  140. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/messaging/queue.py +0 -0
  141. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/remote/esphome.py +0 -0
  142. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/remote/mqtt.py +0 -0
  143. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/sensor/__init__.py +0 -0
  144. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/sensor/base.py +0 -0
  145. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/sensor/system.py +0 -0
  146. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/state/__init__.py +0 -0
  147. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/state/manager.py +0 -0
  148. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/system/__init__.py +0 -0
  149. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/system/host_data.py +0 -0
  150. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/system/monitor.py +0 -0
  151. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/__init__.py +0 -0
  152. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/async_updater.py +0 -0
  153. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/filter.py +0 -0
  154. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/font_util.py +0 -0
  155. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/logger.py +0 -0
  156. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/timeperiod.py +0 -0
  157. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/core/utils/util.py +0 -0
  158. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/adc.yaml +0 -0
  159. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/binary_sensor.yaml +0 -0
  160. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/config.yaml +0 -0
  161. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/event.yaml +0 -0
  162. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/mqtt.yaml +0 -0
  163. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/24x16/output24x16A.yaml +0 -0
  164. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/adc.yaml +0 -0
  165. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/binary_sensor.yaml +0 -0
  166. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/config.yaml +0 -0
  167. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/event.yaml +0 -0
  168. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/mqtt.yaml +0 -0
  169. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/32x10/output32x10A.yaml +0 -0
  170. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/__init__.py +0 -0
  171. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/adc.yaml +0 -0
  172. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/binary_sensor.yaml +0 -0
  173. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/config.yaml +0 -0
  174. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/cover.yaml +0 -0
  175. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/event.yaml +0 -0
  176. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/mqtt.yaml +0 -0
  177. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover/outputCover.yaml +0 -0
  178. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/adc.yaml +0 -0
  179. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/binary_sensor.yaml +0 -0
  180. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/config.yaml +0 -0
  181. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/cover.yaml +0 -0
  182. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/event.yaml +0 -0
  183. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/mqtt.yaml +0 -0
  184. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/cover_mix/outputCoverMix.yaml +0 -0
  185. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/adc.yaml +0 -0
  186. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/all_binary_sensor.yaml +0 -0
  187. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/binary_sensor.yaml +0 -0
  188. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/binary_sensor_v_0_7.yaml +0 -0
  189. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/config_24_16.yaml +0 -0
  190. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/event_all.yaml +0 -0
  191. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/event_v_0_7.yaml +0 -0
  192. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/led32x4A.yaml +0 -0
  193. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/output24x16A.yaml +0 -0
  194. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/output24x16A_v0.3.yaml +0 -0
  195. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/output32x10A.yaml +0 -0
  196. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/example_config/different_configs/output32x5A.yaml +0 -0
  197. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/exceptions.py +0 -0
  198. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/__init__.py +0 -0
  199. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/analog/__init__.py +0 -0
  200. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/analog/adc.py +0 -0
  201. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/display/__init__.py +0 -0
  202. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/display/fonts/danube__.ttf +0 -0
  203. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/display/oled.py +0 -0
  204. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/__init__.py +0 -0
  205. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/expanders/__init__.py +0 -0
  206. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/expanders/mcp23017.py +0 -0
  207. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/expanders/pca9685.py +0 -0
  208. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/expanders/pcf8575.py +0 -0
  209. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/input/__init__.py +0 -0
  210. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/input/base.py +0 -0
  211. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/gpio/input/manager.py +0 -0
  212. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/__init__.py +0 -0
  213. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/bus.py +0 -0
  214. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/ina219.py +0 -0
  215. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/ina219_driver.py +0 -0
  216. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/mcp9808.py +0 -0
  217. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/i2c/pct2075.py +0 -0
  218. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/onewire/__init__.py +0 -0
  219. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/onewire/bus.py +0 -0
  220. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/onewire/dallas.py +0 -0
  221. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/onewire/ds2482.py +0 -0
  222. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/sensor/__init__.py +0 -0
  223. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/sensor/temperature/__init__.py +0 -0
  224. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/sensor/temperature/base.py +0 -0
  225. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/sensor/temperature/mcp9808.py +0 -0
  226. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/hardware/sensor/temperature/pct2075.py +0 -0
  227. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/integration/__init__.py +0 -0
  228. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/integration/interlock.py +0 -0
  229. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/__init__.py +0 -0
  230. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/cli.py +0 -0
  231. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/client.py +0 -0
  232. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/coordinator.py +0 -0
  233. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/__init__.py +0 -0
  234. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/energy_meters/orno-or-we-517.json +0 -0
  235. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/energy_meters/sdm120.json +0 -0
  236. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/energy_meters/sdm630.json +0 -0
  237. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/energy_meters/socomec_e03.json +0 -0
  238. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/energy_meters/socomec_e23.json +0 -0
  239. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/hvac/fujitsu-ac.json +0 -0
  240. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/hvac/ventclear.json +0 -0
  241. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/inverters/sofar.json +0 -0
  242. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/inverters/thessla.json +0 -0
  243. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/other/r4dcb08.json +0 -0
  244. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/other/wanas415.json +0 -0
  245. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/cwt.json +0 -0
  246. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/dts1964_3f.json +0 -0
  247. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/dyp-a12-ultrasonic.json +0 -0
  248. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/liquid-sensor.json +0 -0
  249. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/pt100.json +0 -0
  250. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/sht20.json +0 -0
  251. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/devices/sensors/sht30.json +0 -0
  252. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/__init__.py +0 -0
  253. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/base.py +0 -0
  254. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/derived/__init__.py +0 -0
  255. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/derived/numeric.py +0 -0
  256. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/derived/select.py +0 -0
  257. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/derived/switch.py +0 -0
  258. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/derived/text.py +0 -0
  259. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/sensor/__init__.py +0 -0
  260. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/sensor/binary.py +0 -0
  261. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/sensor/numeric.py +0 -0
  262. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/sensor/text.py +0 -0
  263. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/writeable/__init__.py +0 -0
  264. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/writeable/binary.py +0 -0
  265. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/entities/writeable/numeric.py +0 -0
  266. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/modbus/utils.py +0 -0
  267. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/__init__.py +0 -0
  268. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/actions.py +0 -0
  269. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/events.py +0 -0
  270. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/files.py +0 -0
  271. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/logs.py +0 -0
  272. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/mqtt.py +0 -0
  273. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/models/state.py +0 -0
  274. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/actions_sensor.yaml +0 -0
  275. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/actions_switch.yaml +0 -0
  276. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/filters.yaml +0 -0
  277. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/filters_adc.yaml +0 -0
  278. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/id.yaml +0 -0
  279. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/temp_unit.yaml +0 -0
  280. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/schema/update_interval.yaml +0 -0
  281. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/abap-CRCWOmpq.js +0 -0
  282. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/apex-DnsZk_dE.js +0 -0
  283. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/azcli-1IWB1ccx.js +0 -0
  284. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/bat-DPkNLes8.js +0 -0
  285. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/bicep-Corcdgou.js +0 -0
  286. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/cameligo-CGrWLZr3.js +0 -0
  287. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/clojure-D9WOWImG.js +0 -0
  288. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/codicon-DCmgc-ay.ttf +0 -0
  289. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/coffee-B7EJu28W.js +0 -0
  290. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/cpp-SEyurbux.js +0 -0
  291. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/csharp-BoL64M5l.js +0 -0
  292. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/csp-C46ZqvIl.js +0 -0
  293. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/css-DQU6DXDx.js +0 -0
  294. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/cypher-D84EuPTj.js +0 -0
  295. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/dart-D8lhlL1r.js +0 -0
  296. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/dockerfile-DLk6rpji.js +0 -0
  297. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/ecl-BO6FnfXk.js +0 -0
  298. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/editor.worker-DsAeyiJ5.js +0 -0
  299. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/elixir-BRjLKONM.js +0 -0
  300. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/flow9-Cac8vKd7.js +0 -0
  301. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/fsharp-fd1GTHhf.js +0 -0
  302. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/go-O9LJTZXk.js +0 -0
  303. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/graphql-LQdxqEYJ.js +0 -0
  304. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/hcl-DxDQ3s82.js +0 -0
  305. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/ini-BvajGCUy.js +0 -0
  306. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/java-SYsfObOQ.js +0 -0
  307. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/json.worker-DaRII17c.js +0 -0
  308. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/julia-DQXNmw_w.js +0 -0
  309. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/kotlin-qQ0MG-9I.js +0 -0
  310. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/less-GGFNNJHn.js +0 -0
  311. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/lexon-Canl7DCW.js +0 -0
  312. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/lua-D28Ae8-K.js +0 -0
  313. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/m3-DPitgjJI.js +0 -0
  314. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/markdown-B811l8j2.js +0 -0
  315. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/mips-CdjsipkG.js +0 -0
  316. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/msdax-CYqgjx_P.js +0 -0
  317. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/mysql-BHd6q0vd.js +0 -0
  318. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/objective-c-B1aVtJYH.js +0 -0
  319. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/pascal-BhNW15KB.js +0 -0
  320. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/pascaligo-5jv8CcQD.js +0 -0
  321. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/perl-DlYyT36c.js +0 -0
  322. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/pgsql-Dy0bjov7.js +0 -0
  323. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/php-120yhfDK.js +0 -0
  324. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/pla-CjnFlu4u.js +0 -0
  325. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/postiats-CQpG440k.js +0 -0
  326. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/powerquery-DdJtto1Z.js +0 -0
  327. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/powershell-Bu_VLpJB.js +0 -0
  328. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/protobuf-IBS6jZEB.js +0 -0
  329. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/pug-kFxLfcjb.js +0 -0
  330. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/qsharp-q7JyzKFN.js +0 -0
  331. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/r-BIFz-_sK.js +0 -0
  332. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/redis-CHOsPHWR.js +0 -0
  333. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/redshift-CBifECDb.js +0 -0
  334. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/restructuredtext-CghPJEOS.js +0 -0
  335. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/ruby-CYWGW-b1.js +0 -0
  336. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/rust-DMDD0SHb.js +0 -0
  337. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/sb-BYAiYHFx.js +0 -0
  338. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/scala-Bqvq8jcR.js +0 -0
  339. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/scheme-Dhb-2j9p.js +0 -0
  340. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/scss-CTwUZ5N7.js +0 -0
  341. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/shell-CsDZo4DB.js +0 -0
  342. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/solidity-CME5AdoB.js +0 -0
  343. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/sophia-RYC1BQQz.js +0 -0
  344. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/sparql-KEyrF7De.js +0 -0
  345. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/sql-BdTr02Mf.js +0 -0
  346. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/st-C7iG7M4S.js +0 -0
  347. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/swift-D7IUmUK8.js +0 -0
  348. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/systemverilog-DgMryOEJ.js +0 -0
  349. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/tcl-PloMZuKG.js +0 -0
  350. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/twig-BfRIq3la.js +0 -0
  351. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/typespec-CzxlYoT_.js +0 -0
  352. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/vb-BwAE3J76.js +0 -0
  353. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/wgsl-B_1kOXbF.js +0 -0
  354. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/assets/yaml.worker-BTE-_K6g.js +0 -0
  355. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/boneio.svg +0 -0
  356. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/boneio_fav.svg +0 -0
  357. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/adc.schema.json +0 -0
  358. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/areas.schema.json +0 -0
  359. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/boneio.schema.json +0 -0
  360. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/cover.schema.json +0 -0
  361. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/dallas.schema.json +0 -0
  362. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/ds2482.schema.json +0 -0
  363. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/ina219.schema.json +0 -0
  364. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/lm75.schema.json +0 -0
  365. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/logger.schema.json +0 -0
  366. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/mcp23017.schema.json +0 -0
  367. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/mcp9808.schema.json +0 -0
  368. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/modbus.schema.json +0 -0
  369. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/modbus_devices.schema.json +0 -0
  370. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/oled.schema.json +0 -0
  371. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/output.schema.json +0 -0
  372. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/output_group.schema.json +0 -0
  373. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/pca9685.schema.json +0 -0
  374. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/pcf8575.schema.json +0 -0
  375. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/sensor.schema.json +0 -0
  376. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/frontend-dist/schem/virtual_energy_sensor.schema.json +0 -0
  377. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/middleware/__init__.py +0 -0
  378. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/middleware/auth.py +0 -0
  379. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/__init__.py +0 -0
  380. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/auth.py +0 -0
  381. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/caddy.py +0 -0
  382. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/covers.py +0 -0
  383. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/modbus.py +0 -0
  384. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/outputs.py +0 -0
  385. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/sensors.py +0 -0
  386. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/routes/system.py +0 -0
  387. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/adc.schema.json +0 -0
  388. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/areas.schema.json +0 -0
  389. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/boneio.schema.json +0 -0
  390. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/cover.schema.json +0 -0
  391. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/dallas.schema.json +0 -0
  392. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/ds2482.schema.json +0 -0
  393. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/ina219.schema.json +0 -0
  394. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/lm75.schema.json +0 -0
  395. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/logger.schema.json +0 -0
  396. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/mcp23017.schema.json +0 -0
  397. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/mcp9808.schema.json +0 -0
  398. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/modbus.schema.json +0 -0
  399. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/modbus_devices.schema.json +0 -0
  400. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/oled.schema.json +0 -0
  401. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/output.schema.json +0 -0
  402. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/output_group.schema.json +0 -0
  403. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/pca9685.schema.json +0 -0
  404. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/pcf8575.schema.json +0 -0
  405. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/sensor.schema.json +0 -0
  406. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/schema/virtual_energy_sensor.schema.json +0 -0
  407. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/services/__init__.py +0 -0
  408. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/services/logs.py +0 -0
  409. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio/webui/websocket_manager.py +0 -0
  410. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio.egg-info/dependency_links.txt +0 -0
  411. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio.egg-info/entry_points.txt +0 -0
  412. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/boneio.egg-info/top_level.txt +0 -0
  413. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/setup.cfg +0 -0
  414. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/setup.py +0 -0
  415. {boneio-1.1.0.dev2 → boneio-1.1.0.dev4}/tests/test_py313_compatibility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boneio
3
- Version: 1.1.0.dev2
3
+ Version: 1.1.0.dev4
4
4
  Summary: Python App for BoneIO
5
5
  Author-email: Paweł Szafer <pszafer@gmail.com>
6
6
  License: GNU General Public License v3.0
@@ -13,6 +13,7 @@ Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: smbus2==0.4.3
15
15
  Requires-Dist: aiomqtt==2.4.0
16
+ Requires-Dist: aiohttp==3.13.3
16
17
  Requires-Dist: Cerberus==1.3.7
17
18
  Requires-Dist: colorlog==6.9.0
18
19
  Requires-Dist: luma-core==2.5.1
@@ -45,6 +45,7 @@ class ConfigHelper:
45
45
  config_file_path: str | None = None,
46
46
  send_boneio_autodiscovery: bool = True,
47
47
  receive_boneio_autodiscovery: bool = True,
48
+ update_channel: str = "stable",
48
49
  ):
49
50
  self._name = name
50
51
 
@@ -63,6 +64,7 @@ class ConfigHelper:
63
64
  self._ha_discovery_prefix = ha_discovery_prefix
64
65
  self._send_boneio_autodiscovery = send_boneio_autodiscovery
65
66
  self._receive_boneio_autodiscovery = receive_boneio_autodiscovery
67
+ self._update_channel = update_channel
66
68
  self._device_type = device_type
67
69
  self._web_port = web_port
68
70
  self._proxy_port = proxy_port
@@ -79,6 +81,7 @@ class ConfigHelper:
79
81
  TEXT_SENSOR: {},
80
82
  SELECT: {},
81
83
  NUMERIC: {},
84
+ "update": {}
82
85
  }
83
86
  self.manager_ready: bool = False
84
87
  self._network_info = network_info
@@ -181,6 +184,11 @@ class ConfigHelper:
181
184
  """Check if BoneIO autodiscovery receiving is enabled."""
182
185
  return self._receive_boneio_autodiscovery
183
186
 
187
+ @property
188
+ def update_channel(self) -> str:
189
+ """Get update channel (stable or dev)."""
190
+ return self._update_channel
191
+
184
192
  @property
185
193
  def device_type(self) -> str:
186
194
  return self._device_type
@@ -687,6 +687,14 @@ class InputManager:
687
687
  # Send event to MQTT for Home Assistant
688
688
  self._publish_input_event_to_mqtt(input_instance, event)
689
689
 
690
+ # If publish_only is set, skip action execution (used for initial state sync)
691
+ if event.publish_only:
692
+ _LOGGER.debug(
693
+ "Skipping action execution for %s (publish_only=True)",
694
+ event.entity_id
695
+ )
696
+ return
697
+
690
698
  # Execute actions with duration threshold support
691
699
  if actions and event.click_type == LONG:
692
700
  # Get executed_actions from detector state
@@ -39,6 +39,7 @@ from boneio.core.manager.modbus import ModbusManager
39
39
  from boneio.core.manager.outputs import OutputManager
40
40
  from boneio.core.manager.sensors import SensorManager
41
41
  from boneio.core.manager.remote import RemoteDeviceManager
42
+ from boneio.core.manager.update import UpdateManager
42
43
  from boneio.core.discovery import BlackDiscoveryPublisher
43
44
  from boneio.core.messaging import MessageBus
44
45
  from boneio.core.state import StateManager
@@ -204,6 +205,11 @@ class Manager:
204
205
  message_bus=message_bus,
205
206
  )
206
207
 
208
+ # 9. UpdateManager (checks for software updates and publishes to HA)
209
+ self.update_manager = UpdateManager(
210
+ manager=self,
211
+ )
212
+
207
213
  # Configure virtual energy sensors (must be after outputs are initialized)
208
214
  self.sensors.configure_virtual_energy_sensors()
209
215
 
@@ -323,6 +329,7 @@ class Manager:
323
329
  await self.sensors.send_ha_autodiscovery()
324
330
  await self.modbus.send_ha_autodiscovery()
325
331
  await self.display.send_ha_autodiscovery()
332
+ await self.update_manager.send_ha_autodiscovery()
326
333
 
327
334
  def send_ha_autodiscovery(
328
335
  self,
@@ -380,6 +387,9 @@ class Manager:
380
387
  availability_msg_func = ha_cover_availabilty_message
381
388
  elif ha_type == BUTTON:
382
389
  availability_msg_func = ha_button_availabilty_message
390
+ elif ha_type == "update":
391
+ from boneio.integration.homeassistant import ha_update_availability_message
392
+ availability_msg_func = ha_update_availability_message
383
393
 
384
394
  # Use availability_msg_func from kwargs if provided (for sensors)
385
395
  if 'availability_msg_func' in kwargs:
@@ -400,6 +410,16 @@ class Manager:
400
410
  )
401
411
  self.send_message(topic=topic, payload=payload, retain=True)
402
412
 
413
+ async def _handle_update_install_command(self, topic: str, payload: str) -> None:
414
+ """Handle update install command from Home Assistant.
415
+
416
+ Args:
417
+ topic: MQTT topic
418
+ payload: MQTT payload (should be "INSTALL")
419
+ """
420
+ _LOGGER.info("Received update install command: %s", payload)
421
+ await self.update_manager.handle_install_command(payload)
422
+
403
423
  def parse_actions(self, pin: str, actions: dict) -> dict:
404
424
  """Parse actions configuration.
405
425
 
@@ -698,7 +718,7 @@ class Manager:
698
718
  )
699
719
 
700
720
  elif action == REMOTE_OUTPUT:
701
- # Control output on remote device
721
+ # Control output on remote device (supports ESPHome lights with brightness/color and WLED effects)
702
722
  remote_device_id = action_definition.get("remote_device")
703
723
  output_id = action_definition.get("output_id")
704
724
  action_output = action_definition.get("action_output", "TOGGLE")
@@ -706,6 +726,14 @@ class Manager:
706
726
  device_id=remote_device_id,
707
727
  output_id=output_id,
708
728
  action=action_output,
729
+ brightness=action_definition.get("brightness"),
730
+ color_temp=action_definition.get("color_temp"),
731
+ rgb=action_definition.get("rgb"),
732
+ transition=action_definition.get("transition"),
733
+ effect=action_definition.get("effect"),
734
+ palette=action_definition.get("palette"),
735
+ effect_speed=action_definition.get("effect_speed"),
736
+ effect_intensity=action_definition.get("effect_intensity"),
709
737
  )
710
738
 
711
739
  elif action == REMOTE_COVER:
@@ -740,16 +768,17 @@ class Manager:
740
768
  configure_logger(log_config, debug=0)
741
769
  _LOGGER.info("Logger configuration reloaded successfully")
742
770
 
743
- def _reload_remote_devices(self) -> None:
771
+ async def _reload_remote_devices(self) -> None:
744
772
  """Reload remote devices configuration from config file.
745
773
 
746
774
  This allows hot-reloading of remote devices without restarting the application.
775
+ Handles ESPHome connections properly (stops old, starts new).
747
776
  """
748
777
  config = self._config_helper.get_config()
749
778
  remote_devices_config = config.get("remote_devices", [])
750
779
 
751
780
  _LOGGER.info("Reloading remote devices configuration")
752
- self.remote_devices.reload(remote_devices_config)
781
+ await self.remote_devices.reload(remote_devices_config)
753
782
  _LOGGER.info("Remote devices configuration reloaded successfully")
754
783
 
755
784
  async def publish_discovery(self) -> None:
@@ -18,6 +18,7 @@ from boneio.core.remote.base import (
18
18
  )
19
19
  from boneio.core.remote.mqtt import MQTTRemoteDevice
20
20
  from boneio.core.remote.esphome import ESPHomeRemoteDevice, ESPHOME_API_AVAILABLE
21
+ from boneio.core.remote.wled import WLEDRemoteDevice
21
22
 
22
23
  if TYPE_CHECKING:
23
24
  from boneio.core.messaging import MessageBus
@@ -176,6 +177,8 @@ class RemoteDeviceManager:
176
177
  return None
177
178
  elif protocol == RemoteDeviceProtocol.ESPHOME_API:
178
179
  return self._create_esphome_device(device_id, name, config)
180
+ elif protocol == RemoteDeviceProtocol.WLED:
181
+ return self._create_wled_device(device_id, name, config)
179
182
  else:
180
183
  _LOGGER.error("Unsupported protocol '%s' for device '%s'", protocol, device_id)
181
184
  return None
@@ -259,6 +262,40 @@ class RemoteDeviceManager:
259
262
  covers=covers,
260
263
  )
261
264
 
265
+ def _create_wled_device(
266
+ self,
267
+ device_id: str,
268
+ name: str,
269
+ config: dict[str, Any],
270
+ ) -> WLEDRemoteDevice | None:
271
+ """Create WLED remote device.
272
+
273
+ Args:
274
+ device_id: Device ID
275
+ name: Device name
276
+ config: Full device configuration
277
+
278
+ Returns:
279
+ WLEDRemoteDevice instance or None if creation failed
280
+ """
281
+ wled_config = config.get("wled", {})
282
+ host = wled_config.get("host")
283
+
284
+ if not host:
285
+ _LOGGER.error("WLED device '%s' missing 'host' in wled config", device_id)
286
+ return None
287
+
288
+ port = wled_config.get("port", 80)
289
+ segments = wled_config.get("segments", [])
290
+
291
+ return WLEDRemoteDevice(
292
+ id=device_id,
293
+ name=name,
294
+ host=host,
295
+ port=port,
296
+ segments=segments,
297
+ )
298
+
262
299
  async def start_all_connections(self, delay_seconds: float = 10.0) -> None:
263
300
  """Start persistent connections for all ESPHome devices.
264
301
 
@@ -332,19 +369,32 @@ class RemoteDeviceManager:
332
369
  output_id: str,
333
370
  action: str,
334
371
  brightness: int | None = None,
372
+ color_temp: int | None = None,
373
+ rgb: list[int] | tuple[int, int, int] | None = None,
335
374
  transition: float | None = None,
375
+ effect: int | None = None,
376
+ palette: int | None = None,
377
+ effect_speed: int | None = None,
378
+ effect_intensity: int | None = None,
336
379
  ) -> bool:
337
- """Control output on remote device (BoneIO MQTT or ESPHome API).
380
+ """Control output on remote device (BoneIO MQTT, ESPHome API, or WLED).
338
381
 
339
382
  Automatically detects device protocol and routes to appropriate method.
340
383
  For ESPHome devices, output_id can be a switch or light entity.
384
+ For WLED devices, output_id can be "main" or segment ID.
341
385
 
342
386
  Args:
343
387
  device_id: ID of the remote device
344
388
  output_id: ID of the output/switch/light to control
345
389
  action: Action to perform (ON, OFF, TOGGLE, BRIGHTNESS_UP, BRIGHTNESS_DOWN, SET_BRIGHTNESS)
346
- brightness: Brightness level (0-255) - only for ESPHome lights
347
- transition: Transition time in seconds - only for ESPHome lights
390
+ brightness: Brightness level (0-255) - for ESPHome/WLED lights
391
+ color_temp: Color temperature in mireds - only for ESPHome lights
392
+ rgb: RGB color as [R, G, B] list or tuple (0-255 each) - for ESPHome/WLED lights
393
+ transition: Transition time in seconds - for ESPHome/WLED lights
394
+ effect: WLED effect ID
395
+ palette: WLED color palette ID
396
+ effect_speed: WLED effect speed (0-255)
397
+ effect_intensity: WLED effect intensity (0-255)
348
398
 
349
399
  Returns:
350
400
  True if command was sent successfully
@@ -359,10 +409,16 @@ class RemoteDeviceManager:
359
409
  # Check if output_id is a light
360
410
  if device.has_light(output_id):
361
411
  _LOGGER.debug("Controlling ESPHome light '%s' on device '%s'", output_id, device_id)
412
+ # Convert rgb list to tuple[int, int, int] if needed
413
+ rgb_tuple: tuple[int, int, int] | None = None
414
+ if rgb and len(rgb) >= 3:
415
+ rgb_tuple = (int(rgb[0]), int(rgb[1]), int(rgb[2]))
362
416
  return await device.control_light(
363
417
  light_id=output_id,
364
418
  action=action,
365
419
  brightness=brightness,
420
+ color_temp=color_temp,
421
+ rgb=rgb_tuple,
366
422
  transition=transition if transition is not None else 0.0,
367
423
  )
368
424
  # Otherwise treat as switch
@@ -372,6 +428,27 @@ class RemoteDeviceManager:
372
428
  action=action,
373
429
  )
374
430
 
431
+ # For WLED devices, use HTTP JSON API
432
+ if isinstance(device, WLEDRemoteDevice):
433
+ _LOGGER.debug("Controlling WLED '%s' segment '%s' on device '%s'", output_id, action, device_id)
434
+ # Parse segment_id - "main" means whole device, otherwise it's segment ID
435
+ segment_id = None if output_id == "main" else int(output_id)
436
+ # Convert rgb list to tuple if needed
437
+ wled_rgb: tuple[int, int, int] | None = None
438
+ if rgb and len(rgb) >= 3:
439
+ wled_rgb = (int(rgb[0]), int(rgb[1]), int(rgb[2]))
440
+ return await device.control_light(
441
+ segment_id=segment_id,
442
+ action=action,
443
+ brightness=brightness,
444
+ rgb=wled_rgb,
445
+ transition=transition if transition is not None else 0.0,
446
+ effect=effect,
447
+ palette=palette,
448
+ effect_speed=effect_speed,
449
+ effect_intensity=effect_intensity,
450
+ )
451
+
375
452
  # For MQTT devices, use standard control_output
376
453
  return await device.control_output(
377
454
  output_id=output_id,
@@ -420,20 +497,52 @@ class RemoteDeviceManager:
420
497
  **kwargs,
421
498
  )
422
499
 
423
- def reload(self, remote_devices_config: list[dict[str, Any]] | None = None) -> None:
500
+ async def reload(self, remote_devices_config: list[dict[str, Any]] | None = None) -> None:
424
501
  """Reload remote devices from config.
425
502
 
503
+ Stops existing ESPHome connections, reconfigures devices,
504
+ and starts new ESPHome connections.
505
+
426
506
  Args:
427
507
  remote_devices_config: New list of remote device configurations
428
508
  """
429
509
  _LOGGER.info("Reloading remote devices configuration")
510
+
511
+ # Stop existing ESPHome connections first
512
+ await self.stop_all_connections()
513
+
430
514
  self._devices.clear()
431
515
 
432
516
  if remote_devices_config:
433
517
  self._configure_devices(remote_devices_config)
434
518
 
519
+ # Start ESPHome connections immediately (no delay for reload)
520
+ await self._start_esphome_connections_immediate()
521
+
435
522
  _LOGGER.info("Reloaded %d remote devices", len(self._devices))
436
523
 
524
+ async def _start_esphome_connections_immediate(self) -> None:
525
+ """Start ESPHome connections immediately without delay.
526
+
527
+ Used during reload when we want connections to start right away.
528
+ """
529
+ esphome_devices = [
530
+ (device_id, device)
531
+ for device_id, device in self._devices.items()
532
+ if isinstance(device, ESPHomeRemoteDevice)
533
+ ]
534
+
535
+ if not esphome_devices:
536
+ return
537
+
538
+ _LOGGER.info("Starting %d ESPHome connection(s)...", len(esphome_devices))
539
+ for device_id, device in esphome_devices:
540
+ try:
541
+ await device.start_connection()
542
+ _LOGGER.info("Started connection for ESPHome device '%s'", device_id)
543
+ except Exception as e:
544
+ _LOGGER.error("Failed to start connection for ESPHome device '%s': %s", device_id, e)
545
+
437
546
  def to_dict(self) -> dict[str, Any]:
438
547
  """Convert to dictionary representation.
439
548