homeassistant 2025.9.0b2__py3-none-any.whl → 2025.9.0b4__py3-none-any.whl

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 (253) hide show
  1. homeassistant/components/ai_task/translations/pl.json +28 -0
  2. homeassistant/components/airgradient/translations/lt.json +2 -1
  3. homeassistant/components/aladdin_connect/translations/he.json +28 -0
  4. homeassistant/components/alexa_devices/translations/cs.json +50 -0
  5. homeassistant/components/alexa_devices/translations/ga.json +47 -0
  6. homeassistant/components/alexa_devices/translations/lt.json +47 -0
  7. homeassistant/components/alexa_devices/translations/nl.json +17 -0
  8. homeassistant/components/alexa_devices/translations/pt.json +50 -0
  9. homeassistant/components/alexa_devices/translations/sk.json +50 -0
  10. homeassistant/components/alexa_devices/translations/zh-Hans.json +40 -0
  11. homeassistant/components/august/translations/he.json +25 -1
  12. homeassistant/components/bang_olufsen/translations/lt.json +4 -0
  13. homeassistant/components/bayesian/strings.json +1 -1
  14. homeassistant/components/bayesian/translations/he.json +96 -0
  15. homeassistant/components/bayesian/translations/lt.json +23 -4
  16. homeassistant/components/bayesian/translations/sv.json +7 -0
  17. homeassistant/components/binary_sensor/translations/sv.json +1 -1
  18. homeassistant/components/bosch_alarm/translations/lt.json +3 -0
  19. homeassistant/components/bsblan/climate.py +4 -0
  20. homeassistant/components/bsblan/config_flow.py +1 -1
  21. homeassistant/components/bsblan/sensor.py +23 -3
  22. homeassistant/components/bsblan/water_heater.py +22 -2
  23. homeassistant/components/button/translations/lt.json +1 -0
  24. homeassistant/components/devolo_home_network/translations/lt.json +4 -0
  25. homeassistant/components/dominos/translations/lt.json +2 -0
  26. homeassistant/components/dsmr/translations/lt.json +2 -1
  27. homeassistant/components/dsmr_reader/translations/ga.json +3 -0
  28. homeassistant/components/dsmr_reader/translations/lt.json +1 -0
  29. homeassistant/components/elkm1/translations/ga.json +18 -0
  30. homeassistant/components/energy/translations/ga.json +6 -1
  31. homeassistant/components/energyzero/translations/ga.json +25 -0
  32. homeassistant/components/environment_canada/translations/ga.json +5 -0
  33. homeassistant/components/escea/translations/ga.json +5 -0
  34. homeassistant/components/fireservicerota/translations/ga.json +17 -0
  35. homeassistant/components/flux_led/translations/ga.json +12 -1
  36. homeassistant/components/forked_daapd/translations/ga.json +32 -1
  37. homeassistant/components/foscam/translations/ga.json +10 -0
  38. homeassistant/components/fritz/translations/lt.json +3 -0
  39. homeassistant/components/fritzbox/translations/lt.json +3 -1
  40. homeassistant/components/fritzbox_callmonitor/translations/ga.json +1 -0
  41. homeassistant/components/fritzbox_callmonitor/translations/lt.json +2 -1
  42. homeassistant/components/fronius/translations/ga.json +15 -0
  43. homeassistant/components/frontend/manifest.json +1 -1
  44. homeassistant/components/frontier_silicon/translations/ga.json +7 -1
  45. homeassistant/components/fully_kiosk/translations/ga.json +17 -1
  46. homeassistant/components/google_travel_time/translations/lt.json +3 -2
  47. homeassistant/components/govee_light_local/__init__.py +6 -1
  48. homeassistant/components/govee_light_local/config_flow.py +7 -12
  49. homeassistant/components/govee_light_local/coordinator.py +2 -3
  50. homeassistant/components/habitica/translations/lt.json +2 -1
  51. homeassistant/components/hassio/translations/he.json +4 -0
  52. homeassistant/components/hassio/translations/lt.json +25 -0
  53. homeassistant/components/homekit/__init__.py +2 -3
  54. homeassistant/components/homekit/services.yaml +7 -3
  55. homeassistant/components/homekit/strings.json +7 -1
  56. homeassistant/components/homekit/translations/cs.json +7 -1
  57. homeassistant/components/homekit/translations/de.json +6 -0
  58. homeassistant/components/homekit/translations/el.json +0 -1
  59. homeassistant/components/homekit/translations/en-GB.json +7 -1
  60. homeassistant/components/homekit/translations/en.json +7 -1
  61. homeassistant/components/homekit/translations/es.json +0 -1
  62. homeassistant/components/homekit/translations/et.json +7 -1
  63. homeassistant/components/homekit/translations/ga.json +0 -1
  64. homeassistant/components/homekit/translations/he.json +7 -0
  65. homeassistant/components/homekit/translations/hu.json +0 -1
  66. homeassistant/components/homekit/translations/it.json +6 -0
  67. homeassistant/components/homekit/translations/ja.json +0 -1
  68. homeassistant/components/homekit/translations/lt.json +7 -1
  69. homeassistant/components/homekit/translations/nl.json +5 -0
  70. homeassistant/components/homekit/translations/pt.json +6 -0
  71. homeassistant/components/homekit/translations/ru.json +0 -1
  72. homeassistant/components/homekit/translations/sk.json +6 -0
  73. homeassistant/components/homekit/translations/sv.json +0 -1
  74. homeassistant/components/homekit/translations/tr.json +0 -1
  75. homeassistant/components/homekit/translations/vi.json +0 -1
  76. homeassistant/components/homekit/translations/zh-Hans.json +7 -1
  77. homeassistant/components/homekit/translations/zh-Hant.json +6 -0
  78. homeassistant/components/hue/translations/ar.json +0 -5
  79. homeassistant/components/hue/translations/bg.json +0 -1
  80. homeassistant/components/hue/translations/ca.json +0 -1
  81. homeassistant/components/hue/translations/cs.json +1 -1
  82. homeassistant/components/hue/translations/cy.json +0 -1
  83. homeassistant/components/hue/translations/da.json +0 -1
  84. homeassistant/components/hue/translations/de.json +1 -1
  85. homeassistant/components/hue/translations/el.json +1 -1
  86. homeassistant/components/hue/translations/en-GB.json +1 -1
  87. homeassistant/components/hue/translations/en.json +1 -1
  88. homeassistant/components/hue/translations/es-419.json +0 -1
  89. homeassistant/components/hue/translations/es.json +0 -1
  90. homeassistant/components/hue/translations/et.json +1 -1
  91. homeassistant/components/hue/translations/fi.json +0 -1
  92. homeassistant/components/hue/translations/fr.json +0 -1
  93. homeassistant/components/hue/translations/ga.json +0 -1
  94. homeassistant/components/hue/translations/he.json +0 -1
  95. homeassistant/components/hue/translations/hu.json +0 -1
  96. homeassistant/components/hue/translations/id.json +0 -1
  97. homeassistant/components/hue/translations/it.json +0 -1
  98. homeassistant/components/hue/translations/ja.json +0 -1
  99. homeassistant/components/hue/translations/ko.json +0 -1
  100. homeassistant/components/hue/translations/lb.json +0 -1
  101. homeassistant/components/hue/translations/lt.json +1 -1
  102. homeassistant/components/hue/translations/nb.json +0 -1
  103. homeassistant/components/hue/translations/nl.json +1 -1
  104. homeassistant/components/hue/translations/nn.json +0 -1
  105. homeassistant/components/hue/translations/pl.json +0 -1
  106. homeassistant/components/hue/translations/pt-BR.json +0 -1
  107. homeassistant/components/hue/translations/pt.json +1 -1
  108. homeassistant/components/hue/translations/ro.json +0 -1
  109. homeassistant/components/hue/translations/ru.json +0 -1
  110. homeassistant/components/hue/translations/sk.json +1 -1
  111. homeassistant/components/hue/translations/sl.json +0 -1
  112. homeassistant/components/hue/translations/sv.json +0 -1
  113. homeassistant/components/hue/translations/tr.json +0 -1
  114. homeassistant/components/hue/translations/uk.json +0 -1
  115. homeassistant/components/hue/translations/vi.json +0 -1
  116. homeassistant/components/hue/translations/zh-Hans.json +1 -1
  117. homeassistant/components/hue/translations/zh-Hant.json +1 -1
  118. homeassistant/components/hue/v2/group.py +67 -12
  119. homeassistant/components/husqvarna_automower_ble/config_flow.py +24 -11
  120. homeassistant/components/husqvarna_automower_ble/manifest.json +1 -1
  121. homeassistant/components/husqvarna_automower_ble/translations/he.json +4 -0
  122. homeassistant/components/hydrawise/translations/lt.json +2 -1
  123. homeassistant/components/imeon_inverter/const.py +1 -1
  124. homeassistant/components/imeon_inverter/translations/cs.json +1 -0
  125. homeassistant/components/imeon_inverter/translations/de.json +1 -0
  126. homeassistant/components/imeon_inverter/translations/el.json +5 -0
  127. homeassistant/components/imeon_inverter/translations/en-GB.json +1 -0
  128. homeassistant/components/imeon_inverter/translations/et.json +1 -0
  129. homeassistant/components/imeon_inverter/translations/it.json +5 -0
  130. homeassistant/components/imeon_inverter/translations/lt.json +13 -0
  131. homeassistant/components/imeon_inverter/translations/pt.json +1 -0
  132. homeassistant/components/imeon_inverter/translations/sk.json +1 -0
  133. homeassistant/components/imeon_inverter/translations/zh-Hans.json +1 -0
  134. homeassistant/components/imeon_inverter/translations/zh-Hant.json +1 -0
  135. homeassistant/components/insteon/translations/lt.json +6 -2
  136. homeassistant/components/iskra/manifest.json +1 -1
  137. homeassistant/components/lcn/translations/lt.json +2 -0
  138. homeassistant/components/leaone/translations/lt.json +2 -1
  139. homeassistant/components/lg_thinq/translations/lt.json +4 -0
  140. homeassistant/components/lifx/translations/de.json +6 -6
  141. homeassistant/components/luftdaten/translations/lt.json +7 -0
  142. homeassistant/components/matter/translations/he.json +48 -0
  143. homeassistant/components/matter/translations/lt.json +3 -0
  144. homeassistant/components/mealie/manifest.json +1 -1
  145. homeassistant/components/media_player/translations/he.json +6 -1
  146. homeassistant/components/miele/climate.py +20 -10
  147. homeassistant/components/miele/translations/lt.json +3 -0
  148. homeassistant/components/mqtt/translations/fr.json +1 -0
  149. homeassistant/components/mqtt/translations/he.json +38 -0
  150. homeassistant/components/mqtt/translations/lt.json +8 -2
  151. homeassistant/components/mqtt/translations/sv.json +1 -1
  152. homeassistant/components/music_assistant/media_browser.py +8 -8
  153. homeassistant/components/music_assistant/translations/lt.json +2 -1
  154. homeassistant/components/niko_home_control/translations/he.json +7 -1
  155. homeassistant/components/onkyo/config_flow.py +1 -1
  156. homeassistant/components/openweathermap/translations/lt.json +2 -1
  157. homeassistant/components/opower/translations/lt.json +1 -0
  158. homeassistant/components/pooldose/entity.py +1 -4
  159. homeassistant/components/pooldose/manifest.json +1 -1
  160. homeassistant/components/pooldose/quality_scale.yaml +13 -27
  161. homeassistant/components/pooldose/translations/he.json +48 -0
  162. homeassistant/components/qnap/translations/lt.json +1 -0
  163. homeassistant/components/random/translations/lt.json +1 -1
  164. homeassistant/components/random/translations/sv.json +1 -1
  165. homeassistant/components/risco/translations/lt.json +8 -0
  166. homeassistant/components/scrape/translations/lt.json +2 -1
  167. homeassistant/components/sensibo/translations/lt.json +5 -0
  168. homeassistant/components/sensor/translations/lt.json +5 -0
  169. homeassistant/components/smartthings/translations/he.json +13 -0
  170. homeassistant/components/somfy_mylink/translations/he.json +5 -0
  171. homeassistant/components/somfy_mylink/translations/lt.json +4 -2
  172. homeassistant/components/sql/translations/lt.json +2 -1
  173. homeassistant/components/switchbot/translations/lt.json +3 -1
  174. homeassistant/components/tellduslive/translations/lt.json +4 -0
  175. homeassistant/components/template/translations/he.json +149 -0
  176. homeassistant/components/template/translations/lt.json +40 -10
  177. homeassistant/components/template/translations/sv.json +1 -1
  178. homeassistant/components/teslemetry/translations/lt.json +1 -0
  179. homeassistant/components/tuya/translations/lt.json +5 -2
  180. homeassistant/components/unifiprotect/translations/lt.json +3 -0
  181. homeassistant/components/uptimerobot/coordinator.py +4 -1
  182. homeassistant/components/uptimerobot/quality_scale.yaml +1 -3
  183. homeassistant/components/volvo/manifest.json +1 -1
  184. homeassistant/components/volvo/translations/he.json +3 -0
  185. homeassistant/components/waze_travel_time/translations/lt.json +8 -0
  186. homeassistant/components/waze_travel_time/translations/nl.json +3 -0
  187. homeassistant/components/whois/translations/lt.json +1 -0
  188. homeassistant/components/xiaomi_ble/translations/lt.json +2 -1
  189. homeassistant/components/yalexs_ble/translations/cs.json +16 -1
  190. homeassistant/components/yalexs_ble/translations/el.json +11 -0
  191. homeassistant/components/yalexs_ble/translations/et.json +16 -1
  192. homeassistant/components/yalexs_ble/translations/lt.json +16 -1
  193. homeassistant/components/yalexs_ble/translations/pt.json +16 -1
  194. homeassistant/components/yalexs_ble/translations/sk.json +16 -1
  195. homeassistant/components/yalexs_ble/translations/zh-Hans.json +16 -1
  196. homeassistant/components/zwave_js/translations/lt.json +2 -0
  197. homeassistant/const.py +1 -1
  198. homeassistant/generated/config_flows.py +0 -1
  199. homeassistant/generated/integrations.json +0 -6
  200. homeassistant/helpers/device_registry.py +15 -9
  201. homeassistant/helpers/entity_registry.py +29 -19
  202. homeassistant/package_constraints.txt +1 -1
  203. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/METADATA +1 -1
  204. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/RECORD +209 -250
  205. homeassistant/components/vulcan/__init__.py +0 -48
  206. homeassistant/components/vulcan/calendar.py +0 -176
  207. homeassistant/components/vulcan/config_flow.py +0 -327
  208. homeassistant/components/vulcan/const.py +0 -3
  209. homeassistant/components/vulcan/fetch_data.py +0 -98
  210. homeassistant/components/vulcan/manifest.json +0 -9
  211. homeassistant/components/vulcan/register.py +0 -12
  212. homeassistant/components/vulcan/strings.json +0 -62
  213. homeassistant/components/vulcan/translations/bg.json +0 -37
  214. homeassistant/components/vulcan/translations/ca.json +0 -59
  215. homeassistant/components/vulcan/translations/cs.json +0 -62
  216. homeassistant/components/vulcan/translations/de.json +0 -62
  217. homeassistant/components/vulcan/translations/el.json +0 -61
  218. homeassistant/components/vulcan/translations/en-GB.json +0 -62
  219. homeassistant/components/vulcan/translations/en.json +0 -62
  220. homeassistant/components/vulcan/translations/es.json +0 -62
  221. homeassistant/components/vulcan/translations/et.json +0 -62
  222. homeassistant/components/vulcan/translations/fi.json +0 -59
  223. homeassistant/components/vulcan/translations/fr.json +0 -61
  224. homeassistant/components/vulcan/translations/ga.json +0 -9
  225. homeassistant/components/vulcan/translations/gl.json +0 -7
  226. homeassistant/components/vulcan/translations/he.json +0 -29
  227. homeassistant/components/vulcan/translations/hu.json +0 -62
  228. homeassistant/components/vulcan/translations/id.json +0 -59
  229. homeassistant/components/vulcan/translations/it.json +0 -60
  230. homeassistant/components/vulcan/translations/ja.json +0 -62
  231. homeassistant/components/vulcan/translations/ko.json +0 -59
  232. homeassistant/components/vulcan/translations/lt.json +0 -62
  233. homeassistant/components/vulcan/translations/mk.json +0 -11
  234. homeassistant/components/vulcan/translations/nb.json +0 -59
  235. homeassistant/components/vulcan/translations/nl.json +0 -60
  236. homeassistant/components/vulcan/translations/pl.json +0 -57
  237. homeassistant/components/vulcan/translations/pt-BR.json +0 -58
  238. homeassistant/components/vulcan/translations/pt.json +0 -62
  239. homeassistant/components/vulcan/translations/ro.json +0 -45
  240. homeassistant/components/vulcan/translations/ru.json +0 -62
  241. homeassistant/components/vulcan/translations/sk.json +0 -62
  242. homeassistant/components/vulcan/translations/sl.json +0 -21
  243. homeassistant/components/vulcan/translations/sv.json +0 -62
  244. homeassistant/components/vulcan/translations/tr.json +0 -62
  245. homeassistant/components/vulcan/translations/uk.json +0 -52
  246. homeassistant/components/vulcan/translations/vi.json +0 -15
  247. homeassistant/components/vulcan/translations/zh-Hans.json +0 -62
  248. homeassistant/components/vulcan/translations/zh-Hant.json +0 -62
  249. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/WHEEL +0 -0
  250. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/entry_points.txt +0 -0
  251. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/licenses/LICENSE.md +0 -0
  252. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  253. {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/top_level.txt +0 -0
@@ -79,7 +79,13 @@
79
79
  "name": "\u91cd\u7f6e\u914d\u4ef6"
80
80
  },
81
81
  "unpair": {
82
- "description": "\u5f3a\u5236\u79fb\u9664\u914d\u4ef6\u7684\u6240\u6709\u914d\u5bf9\uff0c\u4ee5\u4fbf\u5141\u8bb8\u91cd\u65b0\u914d\u5bf9\u3002\u5982\u679c\u6b64\u914d\u4ef6\u4e0d\u518d\u54cd\u5e94\uff0c\u5e76\u4e14\u60a8\u5e0c\u671b\u907f\u514d\u5220\u9664\u548c\u91cd\u65b0\u6dfb\u52a0\u6761\u76ee\uff0c\u8bf7\u4f7f\u7528\u6b64\u52a8\u4f5c\u3002\u623f\u95f4\u4f4d\u7f6e\u548c\u914d\u4ef6\u9996\u9009\u9879\u5c06\u4f1a\u4e22\u5931\u3002",
82
+ "description": "\u5f3a\u5236\u79fb\u9664\u914d\u4ef6\u7684\u6240\u6709\u914d\u5bf9\uff0c\u4ee5\u4fbf\u91cd\u65b0\u914d\u5bf9\u3002\u5982\u679c\u914d\u4ef6\u4e0d\u518d\u54cd\u5e94\uff0c\u5e76\u4e14\u60a8\u4e0d\u60f3\u5220\u9664\u5e76\u91cd\u65b0\u6dfb\u52a0\u6761\u76ee\uff0c\u8bf7\u4f7f\u7528\u6b64\u64cd\u4f5c\u3002\u623f\u95f4\u4f4d\u7f6e\u548c\u914d\u4ef6\u504f\u597d\u8bbe\u7f6e\u5c06\u4f1a\u4e22\u5931\u3002",
83
+ "fields": {
84
+ "device_id": {
85
+ "description": "\u8981\u53d6\u6d88\u914d\u5bf9\u7684\u8bbe\u5907\u3002",
86
+ "name": "\u8bbe\u5907"
87
+ }
88
+ },
83
89
  "name": "\u53d6\u6d88\u914d\u5bf9\u914d\u4ef6\u6216\u6865\u63a5\u5668"
84
90
  }
85
91
  }
@@ -80,6 +80,12 @@
80
80
  },
81
81
  "unpair": {
82
82
  "description": "\u5f37\u5236\u79fb\u9664\u914d\u4ef6\u6240\u6709\u914d\u5c0d\u3001\u4ee5\u5141\u8a31\u91cd\u65b0\u914d\u5c0d\u3002\u5047\u5982\u914d\u4ef6\u5931\u53bb\u56de\u61c9\uff0c\u4e26\u4e14\u5e0c\u671b\u907f\u514d\u522a\u9664\u5f8c\u91cd\u65b0\u65b0\u589e\u689d\u76ee\uff0c\u53ef\u4f7f\u7528\u6b64\u52d5\u4f5c\u3002\u623f\u9593\u5206\u914d\u8207\u914d\u4ef6\u504f\u597d\u8a2d\u5b9a\u5c07\u6703\u907a\u5931\u3002",
83
+ "fields": {
84
+ "device_id": {
85
+ "description": "\u8981\u53d6\u6d88\u914d\u5c0d\u7684\u88dd\u7f6e\u3002",
86
+ "name": "\u88dd\u7f6e"
87
+ }
88
+ },
83
89
  "name": "\u89e3\u9664\u914d\u4ef6\u6216\u6a4b\u63a5\u5668\u914d\u5c0d"
84
90
  }
85
91
  }
@@ -10,11 +10,6 @@
10
10
  "error": {
11
11
  "linking": "\u062d\u062f\u062b \u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639",
12
12
  "register_failed": "\u0641\u0634\u0644 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u060c \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649"
13
- },
14
- "step": {
15
- "link": {
16
- "description": "\u0627\u0636\u063a\u0637 \u0639\u0644\u0649 \u0627\u0644\u0632\u0631 \u0627\u0644\u0645\u0648\u062c\u0648\u062f \u0639\u0644\u0649 \u0627\u0644\u062c\u0633\u0631 \u0644\u062a\u0633\u062c\u064a\u0644 Philips Hue \u0645\u0639 Home Assistant. \n\n ! [\u0645\u0648\u0642\u0639 \u0627\u0644\u0632\u0631 \u0639\u0644\u0649 \u0627\u0644\u062c\u0633\u0631] (/static/images/config_philips_hue.jpg)"
17
- }
18
13
  }
19
14
  }
20
15
  }
@@ -22,7 +22,6 @@
22
22
  "title": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u043e\u0441\u0442 Hue"
23
23
  },
24
24
  "link": {
25
- "description": "\u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 \u0431\u0443\u0442\u043e\u043d\u0430 \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u0442\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f, \u0437\u0430 \u0434\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u0442\u0435 Philips Hue \u0441 Home Assistant. \n\n![\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0431\u0443\u0442\u043e\u043d\u0430 \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u0442\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f](/static/images/config_philips_hue.jpg)",
26
25
  "title": "\u0421\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u044a\u0431"
27
26
  },
28
27
  "manual": {
@@ -23,7 +23,6 @@
23
23
  "title": "Tria de l'enlla\u00e7 Hue"
24
24
  },
25
25
  "link": {
26
- "description": "Prem el bot\u00f3 de l'enlla\u00e7 per registrar Philips Hue amb Home Assistant. \n\n ![Ubicaci\u00f3 del bot\u00f3 a l'element d'enlla\u00e7](/static/images/config_philips_hue.jpg)",
27
26
  "title": "Vincular concentrador"
28
27
  },
29
28
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Vybrat most Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Stiskn\u011bte tla\u010d\u00edtko na mostu k registraci Philips Hue v Home Assistantovi.\n\n![Um\u00edst\u011bn\u00ed tla\u010d\u00edtka na mostu](/static/images/config_philips_hue.jpg)",
29
+ "description": "Stiskn\u011bte tla\u010d\u00edtko na mostu pro registraci Philips Hue do Home Assistanta.",
30
30
  "title": "P\u0159ipojit Hub"
31
31
  },
32
32
  "manual": {
@@ -13,7 +13,6 @@
13
13
  "title": "Dewiswch bont Hue"
14
14
  },
15
15
  "link": {
16
- "description": "Pwyswch y botwm ar y bont i gofrestru Philips Hue gyda Cynorthwydd Cartref.\n\n![Lleoliad botwm ar bont](/static/images/config_philips_hue.jpg)",
17
16
  "title": "Hwb cyswllt"
18
17
  }
19
18
  }
@@ -26,7 +26,6 @@
26
26
  "title": "V\u00e6lg Hue-bro"
27
27
  },
28
28
  "link": {
29
- "description": "Tryk p\u00e5 knappen p\u00e5 broen for at registrere Philips Hue med Home Assistant. \n\n ![Placering af knap p\u00e5 bro](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Forbind Hub"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "W\u00e4hle eine Hue-Bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Dr\u00fccke die Taste auf der Bridge, um Philips Hue mit Home Assistant zu verkn\u00fcpfen.\n\n![Position der Taste auf der Bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "Dr\u00fccke die Taste auf der Bridge, um Philips Hue mit Home Assistant zu verkn\u00fcpfen.",
30
30
  "title": "Hub verbinden"
31
31
  },
32
32
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bf\u03c5\u03bc\u03c0\u03af \u03c3\u03c4\u03bf bridge \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Philips Hue \u03bc\u03b5 \u03c4\u03bf Home Assistant. \n\n![\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03bf\u03cd \u03c3\u03c4\u03bf bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bf\u03c5\u03bc\u03c0\u03af \u03c3\u03c4\u03bf bridge \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Philips Hue \u03bc\u03b5 \u03c4\u03bf Home Assistant.",
30
30
  "title": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 hub"
31
31
  },
32
32
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Pick Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Press the button on the bridge to register Philips Hue with Home Assistant.\n\n![Location of button on bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "Press the button on the bridge to register Philips Hue with Home Assistant.",
30
30
  "title": "Link Hub"
31
31
  },
32
32
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Pick Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Press the button on the bridge to register Philips Hue with Home Assistant.\n\n![Location of button on bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "Press the button on the bridge to register Philips Hue with Home Assistant.",
30
30
  "title": "Link Hub"
31
31
  },
32
32
  "manual": {
@@ -14,7 +14,6 @@
14
14
  "title": "Seleccione el puente Hue"
15
15
  },
16
16
  "link": {
17
- "description": "Presione el bot\u00f3n en el puente para registrar Philips Hue con Home Assistant. \n\n![Location of button on bridge](/static/images/config_philips_hue.jpg)",
18
17
  "title": "Enlazar Hub"
19
18
  }
20
19
  }
@@ -26,7 +26,6 @@
26
26
  "title": "Elige la pasarela Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Presiona el bot\u00f3n en la pasarela para registrar Philips Hue con Home Assistant. \n\n![Ubicaci\u00f3n del bot\u00f3n en la pasarela](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Vincular concentrador"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Vali Hue sild"
27
27
  },
28
28
  "link": {
29
- "description": "Vajuta silla nuppu, et registreerida Philips Hue Home Assistant abil. \n\n ! [Nupu asukoht sillal] (/ static / images / config_philips_hue.jpg)",
29
+ "description": "Vajuta silla nuppu, et registreerida Philips Hue Home Assistant abil.",
30
30
  "title": "\u00dchenda jaotusseade"
31
31
  },
32
32
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Valitse Hue-silta"
27
27
  },
28
28
  "link": {
29
- "description": "Paina hue sillan painiketta rekister\u00f6id\u00e4ksesi Philips Hue Home Assistantiin.\n\n![Painikkeen sijainti sillalla](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Link Hub"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Choisissez le pont Philips Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Appuyez sur le bouton du pont pour lier Philips Hue avec Home Assistant. \n\n ![Emplacement du bouton sur le pont](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Hub de liaison"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Droichead Pick Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Br\u00faigh an cnaipe ar an droichead chun Philips Hue a chl\u00e1r\u00fa le Home Assistant.\n\n![Su\u00edomh an chnaipe ar an droichead](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Mol Nasc"
31
30
  },
32
31
  "manual": {
@@ -22,7 +22,6 @@
22
22
  "title": "\u05d1\u05d7\u05e8 \u05de\u05d2\u05e9\u05e8"
23
23
  },
24
24
  "link": {
25
- "description": "\u05dc\u05d7\u05e5 \u05e2\u05dc \u05d4\u05db\u05e4\u05ea\u05d5\u05e8 \u05e2\u05dc \u05d4\u05de\u05d2\u05e9\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d7\u05d1\u05e8 \u05d1\u05d9\u05df \u05d0\u05ea Philips Hue \u05e2\u05dd Home Assistant. \n\n![\u05de\u05d9\u05e7\u05d5\u05dd \u05d4\u05db\u05e4\u05ea\u05d5\u05e8 \u05d1\u05e8\u05db\u05d6\u05ea](/static/images/config_philips_hue.jpg)",
26
25
  "title": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e8\u05db\u05d6\u05ea"
27
26
  },
28
27
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Hue h\u00edd v\u00e1laszt\u00e1sa"
27
27
  },
28
28
  "link": {
29
- "description": "Nyomja meg a h\u00eddon tal\u00e1lhat\u00f3 gombot a Philips Hue Home Assistant szolg\u00e1ltat\u00e1ssal t\u00f6rt\u00e9n\u0151 regisztr\u00e1l\u00e1s\u00e1hoz.\n\n! [A gomb helye a h\u00eddon] (/statikus/k\u00e9pek/config_philips_hue.jpg)",
30
29
  "title": "Kapcsol\u00f3d\u00e1s a h\u00eddhoz"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Pilih bridge Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Tekan tombol di bridge untuk mendaftarkan Philips Hue dengan Home Assistant.\n\n![Lokasi tombol di bridge](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Tautkan Hub"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Seleziona il bridge Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Premi il pulsante sul bridge per registrare Philips Hue con Home Assistant\n\n![Posizione del pulsante sul bridge](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Collega Hub"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Hue \u30d6\u30ea\u30c3\u30b8\u3092\u30d4\u30c3\u30af\u30a2\u30c3\u30d7"
27
27
  },
28
28
  "link": {
29
- "description": "\u30d6\u30ea\u30c3\u30b8\u306e\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3001Philips Hue\u304cHome Assistant\u306b\u767b\u9332\u3055\u308c\u307e\u3059\u3002\n\n![\u30d6\u30ea\u30c3\u30b8\u306e\u30dc\u30bf\u30f3\u306e\u4f4d\u7f6e](/static/images/config_philips_hue.jpg)",
30
29
  "title": "\u30ea\u30f3\u30af\u30cf\u30d6"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Hue \ube0c\ub9ac\uc9c0 \uc120\ud0dd\ud558\uae30"
27
27
  },
28
28
  "link": {
29
- "description": "\ube0c\ub9ac\uc9c0\uc758 \ubc84\ud2bc\uc744 \ub20c\ub7ec \ud544\ub9bd\uc2a4 Hue\ub97c Home Assistant\uc5d0 \ub4f1\ub85d\ud558\uc138\uc694.\n\n![\ube0c\ub9ac\uc9c0 \ubc84\ud2bc \uc704\uce58](/static/images/config_philips_hue.jpg)",
30
29
  "title": "\ud5c8\ube0c \uc5f0\uacb0\ud558\uae30"
31
30
  },
32
31
  "manual": {
@@ -22,7 +22,6 @@
22
22
  "title": "Hue Bridge auswielen"
23
23
  },
24
24
  "link": {
25
- "description": "Dr\u00e9ckt de Kn\u00e4ppchen un der Bridge fir den Philips Hue mam Home Assistant ze registr\u00e9ieren.\n\n![Kn\u00e4ppchen un der Bridge](/static/images/config_philips_hue.jpg)",
26
25
  "title": "Hub verbannen"
27
26
  },
28
27
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Pasirinkite \u201eHue\u201c tilt\u0105"
27
27
  },
28
28
  "link": {
29
- "description": "Paspauskite ant tilto esant\u012f mygtuk\u0105, kad u\u017eregistruotum\u0117te \u201ePhilips Hue\u201c su \u201eHome Assistant\u201c. \n\n ![Mygtuko vieta tiltelyje](/static/images/config_philips_hue.jpg)",
29
+ "description": "Paspauskite mygtuk\u0105 ant tiltelio, kad u\u017eregistruotum\u0117te Philips Hue su Home Assistant.",
30
30
  "title": "\u201eLink Hub\u201c"
31
31
  },
32
32
  "manual": {
@@ -23,7 +23,6 @@
23
23
  "title": "Velg Hue Bridge"
24
24
  },
25
25
  "link": {
26
- "description": "Trykk p\u00e5 knappen p\u00e5 Bridgen for \u00e5 registrere Philips Hue med Home Assistant. \n\n ![Knappens plassering p\u00e5 Bridgen](/static/images/config_philips_hue.jpg)",
27
26
  "title": ""
28
27
  },
29
28
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Kies Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Druk op de knop van de bridge om Philips Hue te registreren met Home Assistant. \n\n![Locatie van de knop op bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "Druk op de knop van de bridge om Philips Hue te registreren met Home Assistant.",
30
30
  "title": "Link Hub"
31
31
  },
32
32
  "manual": {
@@ -13,7 +13,6 @@
13
13
  "title": "Vel Hue bru"
14
14
  },
15
15
  "link": {
16
- "description": "Trykk p\u00e5 knappen p\u00e5 brua, for \u00e5 registrere Philips Hue med Home Assistant.\n\n![Lokasjon til knappen p\u00e5 brua](/statisk/bilete/konfiguer_philips_hue.jpg)",
17
16
  "title": "Link Hub"
18
17
  }
19
18
  }
@@ -23,7 +23,6 @@
23
23
  "title": "Wybierz mostek Hue"
24
24
  },
25
25
  "link": {
26
- "description": "Naci\u015bnij przycisk na mostku, aby zarejestrowa\u0107 Philips Hue w Home Assistant.\n\n![Umiejscowienie przycisku na mostku](/static/images/config_philips_hue.jpg)",
27
26
  "title": "Hub Link"
28
27
  },
29
28
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Escolha a ponte Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Pressione o bot\u00e3o na ponte para registrar o Philips Hue com o Home Assistant. \n\n ![Localiza\u00e7\u00e3o do bot\u00e3o na ponte](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Hub de links"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Pressione o bot\u00e3o no Philips Hue para registar com o Home Assistant. \n\n![Localiza\u00e7\u00e3o do bot\u00e3o] (/static/images/config_philips_hue.jpg)",
29
+ "description": "Prima o bot\u00e3o na ponte para registar o Philips Hue no Home Assistant.",
30
30
  "title": "Link Hub"
31
31
  },
32
32
  "manual": {
@@ -22,7 +22,6 @@
22
22
  "title": "Alege un bridge Hue"
23
23
  },
24
24
  "link": {
25
- "description": "Apas\u0103 butonul de pe bridge pentru a \u00eenregistra Philips Hue cu Home Assistant. \n\n![Loca\u021bia butonului pe bridge](/static/images/config_philips_hue.jpg)",
26
25
  "title": "Leag\u0103 hub"
27
26
  },
28
27
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u043b\u044e\u0437 Hue"
27
27
  },
28
28
  "link": {
29
- "description": "\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u0448\u043b\u044e\u0437\u0435 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 Philips Hue \u0432 Home Assistant.\n\n![\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u0448\u043b\u044e\u0437\u0435](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Philips Hue"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "Vyberte Hue bridge"
27
27
  },
28
28
  "link": {
29
- "description": "Pre registr\u00e1ciu Philips Hue s Home Assistant stla\u010dte tla\u010didlo na Philips Hue bridge.\n\n![Poz\u00edcia tla\u010didla na bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "Stla\u010den\u00edm tla\u010didla na most\u00edku zaregistrujte zariadenie Philips Hue v aplik\u00e1cii Home Assistant.",
30
30
  "title": "Link Hub"
31
31
  },
32
32
  "manual": {
@@ -23,7 +23,6 @@
23
23
  "title": "Izberite Hue most"
24
24
  },
25
25
  "link": {
26
- "description": "Pritisnite gumb na mostu, da registrirate Philips Hue s Home Assistantom. \n\n![Polo\u017eaj gumba na mostu](/static/images/config_philips_hue.jpg)",
27
26
  "title": "Link Hub"
28
27
  },
29
28
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "V\u00e4lj Hue-brygga"
27
27
  },
28
28
  "link": {
29
- "description": "Tryck p\u00e5 knappen p\u00e5 bryggan f\u00f6r att registrera Philips Hue med Home Assistant. \n\n![Placering av knapp p\u00e5 brygga](/static/images/config_philips_hue.jpg)",
30
29
  "title": "L\u00e4nka hub"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Hue k\u00f6pr\u00fcs\u00fcn\u00fc se\u00e7in"
27
27
  },
28
28
  "link": {
29
- "description": "Philips Hue'yu Home Assistant'a kaydetmek i\u00e7in k\u00f6pr\u00fcdeki d\u00fc\u011fmeye bas\u0131n. \n\n ![K\u00f6pr\u00fcdeki d\u00fc\u011fmenin konumu](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Ba\u011flant\u0131 Merkezi"
31
30
  },
32
31
  "manual": {
@@ -23,7 +23,6 @@
23
23
  "title": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0448\u043b\u044e\u0437 Hue"
24
24
  },
25
25
  "link": {
26
- "description": "\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 \u0448\u043b\u044e\u0437\u0456 \u0434\u043b\u044f \u0440\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u0457 Philips Hue \u0432 Home Assistant. \n\n![\u0420\u043e\u0437\u0442\u0430\u0448\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u0448\u043b\u044e\u0437\u0456] (/static/images/config_philips_hue.jpg)",
27
26
  "title": "Philips Hue"
28
27
  },
29
28
  "manual": {
@@ -26,7 +26,6 @@
26
26
  "title": "Ch\u1ecdn c\u1ea7u Hue"
27
27
  },
28
28
  "link": {
29
- "description": "Nh\u1ea5n n\u00fat tr\u00ean c\u1ea7u \u0111\u1ec3 \u0111\u0103ng k\u00fd Philips Hue v\u1edbi Home Assistant. \n\n![V\u1ecb tr\u00ed n\u00fat tr\u00ean c\u1ea7u](/static/images/config_philips_hue.jpg)",
30
29
  "title": "Li\u00ean k\u1ebft tr\u1ea1m trung chuy\u1ec3n"
31
30
  },
32
31
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "\u9009\u62e9 Hue \u6865\u63a5\u5668"
27
27
  },
28
28
  "link": {
29
- "description": "\u8bf7\u6309\u4e0b\u6865\u63a5\u5668\u4e0a\u7684\u6309\u94ae\uff0c\u5728 Home Assistant \u4e0a\u6ce8\u518c\u98de\u5229\u6d66 Hue \u3002\n\n![\u6865\u63a5\u5668\u4e0a\u7684\u6309\u94ae\u4f4d\u7f6e](/static/images/config_philips_hue.jpg)",
29
+ "description": "\u8bf7\u6309\u4e0b\u6865\u63a5\u5668\u4e0a\u7684\u6309\u94ae\uff0c\u5728 Home Assistant \u4e0a\u6ce8\u518c Philips Hue \u3002",
30
30
  "title": "\u8fde\u63a5 Hub"
31
31
  },
32
32
  "manual": {
@@ -26,7 +26,7 @@
26
26
  "title": "\u9078\u64c7 Hue Bridge"
27
27
  },
28
28
  "link": {
29
- "description": "\u6309\u4e0b Bridge \u4e0a\u7684\u6309\u9215\uff0c\u4ee5\u5c07 Philips Hue \u8a3b\u518a\u81f3 Home Assistant\u3002\n\n![Location of button on bridge](/static/images/config_philips_hue.jpg)",
29
+ "description": "\u6309\u4e0b Bridge \u4e0a\u7684\u6309\u9215\uff0c\u4ee5\u5c07 Philips Hue \u8a3b\u518a\u81f3 Home Assistant\u3002",
30
30
  "title": "\u9023\u7d50 Hub"
31
31
  },
32
32
  "manual": {
@@ -226,15 +226,26 @@ class GroupedHueLight(HueBaseEntity, LightEntity):
226
226
  lights_with_color_support = 0
227
227
  lights_with_color_temp_support = 0
228
228
  lights_with_dimming_support = 0
229
+ lights_on_with_dimming_support = 0
229
230
  total_brightness = 0
230
231
  all_lights = self.controller.get_lights(self.resource.id)
231
232
  lights_in_colortemp_mode = 0
233
+ lights_in_xy_mode = 0
232
234
  lights_in_dynamic_mode = 0
235
+ # accumulate color values
236
+ xy_total_x = 0.0
237
+ xy_total_y = 0.0
238
+ xy_count = 0
239
+ temp_total = 0.0
240
+
233
241
  # loop through all lights to find capabilities
234
242
  for light in all_lights:
243
+ # reset per-light colortemp on flag
244
+ light_in_colortemp_mode = False
245
+ # check if light has color temperature
235
246
  if color_temp := light.color_temperature:
236
247
  lights_with_color_temp_support += 1
237
- # we assume mired values from the first capable light
248
+ # default to mired values from the last capable light
238
249
  self._attr_color_temp_kelvin = (
239
250
  color_util.color_temperature_mired_to_kelvin(color_temp.mirek)
240
251
  if color_temp.mirek
@@ -250,15 +261,39 @@ class GroupedHueLight(HueBaseEntity, LightEntity):
250
261
  color_temp.mirek_schema.mirek_minimum
251
262
  )
252
263
  )
253
- if color_temp.mirek is not None and color_temp.mirek_valid:
264
+ # counters for color mode vote and average temp
265
+ if (
266
+ light.on.on
267
+ and color_temp.mirek is not None
268
+ and color_temp.mirek_valid
269
+ ):
254
270
  lights_in_colortemp_mode += 1
271
+ light_in_colortemp_mode = True
272
+ temp_total += color_util.color_temperature_mired_to_kelvin(
273
+ color_temp.mirek
274
+ )
275
+ # check if light has color xy
255
276
  if color := light.color:
256
277
  lights_with_color_support += 1
257
- # we assume xy values from the first capable light
278
+ # default to xy values from the last capable light
258
279
  self._attr_xy_color = (color.xy.x, color.xy.y)
280
+ # counters for color mode vote and average xy color
281
+ if light.on.on:
282
+ xy_total_x += color.xy.x
283
+ xy_total_y += color.xy.y
284
+ xy_count += 1
285
+ # only count for colour mode vote if
286
+ # this light is not in colortemp mode
287
+ if not light_in_colortemp_mode:
288
+ lights_in_xy_mode += 1
289
+ # check if light has dimming
259
290
  if dimming := light.dimming:
260
291
  lights_with_dimming_support += 1
261
- total_brightness += dimming.brightness
292
+ # accumulate brightness values
293
+ if light.on.on:
294
+ total_brightness += dimming.brightness
295
+ lights_on_with_dimming_support += 1
296
+ # check if light is in dynamic mode
262
297
  if (
263
298
  light.dynamics
264
299
  and light.dynamics.status == DynamicStatus.DYNAMIC_PALETTE
@@ -266,10 +301,11 @@ class GroupedHueLight(HueBaseEntity, LightEntity):
266
301
  lights_in_dynamic_mode += 1
267
302
 
268
303
  # this is a bit hacky because light groups may contain lights
269
- # of different capabilities. We set a colormode as supported
270
- # if any of the lights support it
304
+ # of different capabilities
271
305
  # this means that the state is derived from only some of the lights
272
306
  # and will never be 100% accurate but it will be close
307
+
308
+ # assign group color support modes based on light capabilities
273
309
  if lights_with_color_support > 0:
274
310
  supported_color_modes.add(ColorMode.XY)
275
311
  if lights_with_color_temp_support > 0:
@@ -278,19 +314,38 @@ class GroupedHueLight(HueBaseEntity, LightEntity):
278
314
  if len(supported_color_modes) == 0:
279
315
  # only add color mode brightness if no color variants
280
316
  supported_color_modes.add(ColorMode.BRIGHTNESS)
281
- self._brightness_pct = total_brightness / lights_with_dimming_support
282
- self._attr_brightness = round(
283
- ((total_brightness / lights_with_dimming_support) / 100) * 255
284
- )
317
+ # as we have brightness support, set group brightness values
318
+ if lights_on_with_dimming_support > 0:
319
+ self._brightness_pct = total_brightness / lights_on_with_dimming_support
320
+ self._attr_brightness = round(
321
+ ((total_brightness / lights_on_with_dimming_support) / 100) * 255
322
+ )
285
323
  else:
286
324
  supported_color_modes.add(ColorMode.ONOFF)
287
325
  self._dynamic_mode_active = lights_in_dynamic_mode > 0
288
326
  self._attr_supported_color_modes = supported_color_modes
289
- # pick a winner for the current colormode
290
- if lights_with_color_temp_support > 0 and lights_in_colortemp_mode > 0:
327
+ # set the group color values if there are any color lights on
328
+ if xy_count > 0:
329
+ self._attr_xy_color = (
330
+ round(xy_total_x / xy_count, 5),
331
+ round(xy_total_y / xy_count, 5),
332
+ )
333
+ if lights_in_colortemp_mode > 0:
334
+ avg_temp = temp_total / lights_in_colortemp_mode
335
+ self._attr_color_temp_kelvin = round(avg_temp)
336
+ # pick a winner for the current color mode based on the majority of on lights
337
+ # if there is no winner pick the highest mode from group capabilities
338
+ if lights_in_xy_mode > 0 and lights_in_xy_mode >= lights_in_colortemp_mode:
339
+ self._attr_color_mode = ColorMode.XY
340
+ elif (
341
+ lights_in_colortemp_mode > 0
342
+ and lights_in_colortemp_mode > lights_in_xy_mode
343
+ ):
291
344
  self._attr_color_mode = ColorMode.COLOR_TEMP
292
345
  elif lights_with_color_support > 0:
293
346
  self._attr_color_mode = ColorMode.XY
347
+ elif lights_with_color_temp_support > 0:
348
+ self._attr_color_mode = ColorMode.COLOR_TEMP
294
349
  elif lights_with_dimming_support > 0:
295
350
  self._attr_color_mode = ColorMode.BRIGHTNESS
296
351
  else:
@@ -10,6 +10,8 @@ from automower_ble.mower import Mower
10
10
  from automower_ble.protocol import ResponseResult
11
11
  from bleak import BleakError
12
12
  from bleak_retry_connector import get_device
13
+ from gardena_bluetooth.const import ScanService
14
+ from gardena_bluetooth.parse import ManufacturerData, ProductType
13
15
  import voluptuous as vol
14
16
 
15
17
  from homeassistant.components import bluetooth
@@ -22,20 +24,31 @@ from .const import DOMAIN, LOGGER
22
24
 
23
25
  def _is_supported(discovery_info: BluetoothServiceInfo):
24
26
  """Check if device is supported."""
27
+ if ScanService not in discovery_info.service_uuids:
28
+ LOGGER.debug(
29
+ "Unsupported device, missing service %s: %s", ScanService, discovery_info
30
+ )
31
+ return False
25
32
 
26
- LOGGER.debug(
27
- "%s manufacturer data: %s",
28
- discovery_info.address,
29
- discovery_info.manufacturer_data,
30
- )
33
+ if not (data := discovery_info.manufacturer_data.get(ManufacturerData.company)):
34
+ LOGGER.debug(
35
+ "Unsupported device, missing manufacturer data %s: %s",
36
+ ManufacturerData.company,
37
+ discovery_info,
38
+ )
39
+ return False
31
40
 
32
- manufacturer = any(key == 1062 for key in discovery_info.manufacturer_data)
33
- service_husqvarna = any(
34
- service == "98bd0001-0b0e-421a-84e5-ddbf75dc6de4"
35
- for service in discovery_info.service_uuids
36
- )
41
+ manufacturer_data = ManufacturerData.decode(data)
42
+ product_type = ProductType.from_manufacturer_data(manufacturer_data)
37
43
 
38
- return manufacturer and service_husqvarna
44
+ # Some mowers only expose the serial number in the manufacturer data
45
+ # and not the product type, so we allow None here as well.
46
+ if product_type not in (ProductType.MOWER, None):
47
+ LOGGER.debug("Unsupported device: %s (%s)", manufacturer_data, discovery_info)
48
+ return False
49
+
50
+ LOGGER.debug("Supported device: %s", manufacturer_data)
51
+ return True
39
52
 
40
53
 
41
54
  def _pin_valid(pin: str) -> bool:
@@ -12,5 +12,5 @@
12
12
  "dependencies": ["bluetooth_adapters"],
13
13
  "documentation": "https://www.home-assistant.io/integrations/husqvarna_automower_ble",
14
14
  "iot_class": "local_polling",
15
- "requirements": ["automower-ble==0.2.7"]
15
+ "requirements": ["automower-ble==0.2.7", "gardena-bluetooth==1.6.0"]
16
16
  }