homeassistant 2025.9.0b1__py3-none-any.whl → 2025.9.0b2__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 (503) hide show
  1. homeassistant/components/accuweather/translations/sensor.sr-Latn.json +9 -0
  2. homeassistant/components/accuweather/translations/sensor.sr.json +9 -0
  3. homeassistant/components/accuweather/translations/sr-Latn.json +101 -0
  4. homeassistant/components/accuweather/translations/sr.json +101 -0
  5. homeassistant/components/ai_task/services.yaml +0 -1
  6. homeassistant/components/ai_task/translations/el.json +22 -0
  7. homeassistant/components/ai_task/translations/ru.json +22 -0
  8. homeassistant/components/airgradient/translations/ru.json +1 -0
  9. homeassistant/components/airos/translations/lt.json +5 -0
  10. homeassistant/components/aladdin_connect/manifest.json +1 -1
  11. homeassistant/components/aladdin_connect/translations/ca.json +28 -0
  12. homeassistant/components/aladdin_connect/translations/el.json +30 -1
  13. homeassistant/components/aladdin_connect/translations/ru.json +30 -1
  14. homeassistant/components/alexa_devices/manifest.json +1 -1
  15. homeassistant/components/alexa_devices/services.py +3 -8
  16. homeassistant/components/alexa_devices/services.yaml +41 -476
  17. homeassistant/components/alexa_devices/strings.json +42 -469
  18. homeassistant/components/alexa_devices/translations/bg.json +0 -8
  19. homeassistant/components/alexa_devices/translations/cs.json +0 -477
  20. homeassistant/components/alexa_devices/translations/de.json +42 -469
  21. homeassistant/components/alexa_devices/translations/en-GB.json +1 -475
  22. homeassistant/components/alexa_devices/translations/en.json +42 -469
  23. homeassistant/components/alexa_devices/translations/es.json +0 -307
  24. homeassistant/components/alexa_devices/translations/et.json +42 -469
  25. homeassistant/components/alexa_devices/translations/fr.json +0 -9
  26. homeassistant/components/alexa_devices/translations/ga.json +0 -477
  27. homeassistant/components/alexa_devices/translations/lt.json +27 -300
  28. homeassistant/components/alexa_devices/translations/nl.json +0 -15
  29. homeassistant/components/alexa_devices/translations/pt.json +0 -477
  30. homeassistant/components/alexa_devices/translations/sk.json +0 -477
  31. homeassistant/components/alexa_devices/translations/sv.json +0 -8
  32. homeassistant/components/alexa_devices/translations/zh-Hans.json +0 -387
  33. homeassistant/components/alexa_devices/translations/zh-Hant.json +42 -469
  34. homeassistant/components/anthemav/translations/lt.json +2 -1
  35. homeassistant/components/asuswrt/bridge.py +18 -2
  36. homeassistant/components/august/translations/lt.json +3 -0
  37. homeassistant/components/backup/manager.py +2 -1
  38. homeassistant/components/bayesian/translations/el.json +102 -0
  39. homeassistant/components/bayesian/translations/ga.json +41 -4
  40. homeassistant/components/bayesian/translations/lt.json +23 -5
  41. homeassistant/components/bayesian/translations/ru.json +257 -0
  42. homeassistant/components/bayesian/translations/sv.json +11 -0
  43. homeassistant/components/bluetooth/__init__.py +1 -1
  44. homeassistant/components/bluetooth/manifest.json +2 -2
  45. homeassistant/components/braviatv/entity.py +10 -4
  46. homeassistant/components/buienradar/translations/sr-Latn.json +128 -0
  47. homeassistant/components/buienradar/translations/sr.json +128 -0
  48. homeassistant/components/camera/translations/ru.json +2 -2
  49. homeassistant/components/conversation/manifest.json +1 -1
  50. homeassistant/components/deconz/translations/ga.json +6 -2
  51. homeassistant/components/device_tracker/translations/ga.json +9 -0
  52. homeassistant/components/devolo_home_control/translations/lt.json +3 -0
  53. homeassistant/components/devolo_home_network/translations/lt.json +3 -1
  54. homeassistant/components/devolo_home_network/translations/ru.json +3 -0
  55. homeassistant/components/dominos/translations/ru.json +2 -0
  56. homeassistant/components/dsmr_reader/translations/ga.json +34 -0
  57. homeassistant/components/ecobee/translations/ga.json +20 -1
  58. homeassistant/components/efergy/translations/ga.json +6 -0
  59. homeassistant/components/elkm1/translations/ga.json +6 -1
  60. homeassistant/components/emoncms/translations/lt.json +8 -0
  61. homeassistant/components/environment_canada/translations/sr-Latn.json +9 -0
  62. homeassistant/components/environment_canada/translations/sr.json +9 -0
  63. homeassistant/components/esphome/translations/ga.json +29 -4
  64. homeassistant/components/fan/translations/ga.json +25 -1
  65. homeassistant/components/filesize/translations/ga.json +12 -0
  66. homeassistant/components/fireservicerota/translations/ga.json +3 -1
  67. homeassistant/components/flo/translations/ga.json +16 -0
  68. homeassistant/components/flume/translations/ga.json +1 -0
  69. homeassistant/components/flux_led/translations/ga.json +78 -1
  70. homeassistant/components/foscam/translations/ga.json +13 -0
  71. homeassistant/components/foscam/translations/lt.json +3 -0
  72. homeassistant/components/fritz/translations/ga.json +49 -6
  73. homeassistant/components/fritz/translations/ru.json +3 -0
  74. homeassistant/components/fritzbox/translations/ca.json +1 -3
  75. homeassistant/components/fritzbox/translations/cs.json +2 -2
  76. homeassistant/components/fritzbox/translations/de.json +3 -3
  77. homeassistant/components/fritzbox/translations/el.json +2 -2
  78. homeassistant/components/fritzbox/translations/en-GB.json +2 -2
  79. homeassistant/components/fritzbox/translations/en.json +2 -2
  80. homeassistant/components/fritzbox/translations/es-419.json +0 -6
  81. homeassistant/components/fritzbox/translations/es.json +1 -3
  82. homeassistant/components/fritzbox/translations/et.json +2 -2
  83. homeassistant/components/fritzbox/translations/fi.json +1 -3
  84. homeassistant/components/fritzbox/translations/fr.json +1 -3
  85. homeassistant/components/fritzbox/translations/ga.json +0 -1
  86. homeassistant/components/fritzbox/translations/hu.json +1 -3
  87. homeassistant/components/fritzbox/translations/id.json +1 -3
  88. homeassistant/components/fritzbox/translations/it.json +1 -3
  89. homeassistant/components/fritzbox/translations/ja.json +1 -3
  90. homeassistant/components/fritzbox/translations/ko.json +1 -3
  91. homeassistant/components/fritzbox/translations/lb.json +2 -4
  92. homeassistant/components/fritzbox/translations/lt.json +1 -3
  93. homeassistant/components/fritzbox/translations/nb.json +1 -3
  94. homeassistant/components/fritzbox/translations/nl.json +1 -3
  95. homeassistant/components/fritzbox/translations/pl.json +1 -3
  96. homeassistant/components/fritzbox/translations/pt-BR.json +1 -3
  97. homeassistant/components/fritzbox/translations/pt.json +2 -2
  98. homeassistant/components/fritzbox/translations/ro.json +1 -3
  99. homeassistant/components/fritzbox/translations/ru.json +2 -2
  100. homeassistant/components/fritzbox/translations/sk.json +2 -2
  101. homeassistant/components/fritzbox/translations/sl.json +1 -3
  102. homeassistant/components/fritzbox/translations/sv.json +1 -3
  103. homeassistant/components/fritzbox/translations/tr.json +1 -3
  104. homeassistant/components/fritzbox/translations/uk.json +1 -3
  105. homeassistant/components/fritzbox/translations/vi.json +2 -4
  106. homeassistant/components/fritzbox/translations/zh-Hans.json +2 -2
  107. homeassistant/components/fritzbox/translations/zh-Hant.json +2 -2
  108. homeassistant/components/fritzbox_callmonitor/translations/ca.json +0 -1
  109. homeassistant/components/fritzbox_callmonitor/translations/cs.json +2 -2
  110. homeassistant/components/fritzbox_callmonitor/translations/de.json +3 -3
  111. homeassistant/components/fritzbox_callmonitor/translations/el.json +2 -2
  112. homeassistant/components/fritzbox_callmonitor/translations/en-GB.json +2 -2
  113. homeassistant/components/fritzbox_callmonitor/translations/en.json +2 -2
  114. homeassistant/components/fritzbox_callmonitor/translations/es-419.json +0 -3
  115. homeassistant/components/fritzbox_callmonitor/translations/es.json +0 -1
  116. homeassistant/components/fritzbox_callmonitor/translations/et.json +2 -2
  117. homeassistant/components/fritzbox_callmonitor/translations/fi.json +0 -1
  118. homeassistant/components/fritzbox_callmonitor/translations/fr.json +0 -1
  119. homeassistant/components/fritzbox_callmonitor/translations/ga.json +16 -0
  120. homeassistant/components/fritzbox_callmonitor/translations/hu.json +0 -1
  121. homeassistant/components/fritzbox_callmonitor/translations/id.json +0 -1
  122. homeassistant/components/fritzbox_callmonitor/translations/it.json +0 -1
  123. homeassistant/components/fritzbox_callmonitor/translations/ja.json +0 -1
  124. homeassistant/components/fritzbox_callmonitor/translations/ko.json +0 -1
  125. homeassistant/components/fritzbox_callmonitor/translations/lt.json +0 -1
  126. homeassistant/components/fritzbox_callmonitor/translations/nb.json +0 -1
  127. homeassistant/components/fritzbox_callmonitor/translations/nl.json +0 -1
  128. homeassistant/components/fritzbox_callmonitor/translations/pl.json +0 -1
  129. homeassistant/components/fritzbox_callmonitor/translations/pt-BR.json +0 -1
  130. homeassistant/components/fritzbox_callmonitor/translations/pt.json +2 -2
  131. homeassistant/components/fritzbox_callmonitor/translations/ro.json +0 -1
  132. homeassistant/components/fritzbox_callmonitor/translations/ru.json +0 -1
  133. homeassistant/components/fritzbox_callmonitor/translations/sk.json +2 -2
  134. homeassistant/components/fritzbox_callmonitor/translations/sv.json +0 -1
  135. homeassistant/components/fritzbox_callmonitor/translations/tr.json +0 -1
  136. homeassistant/components/fritzbox_callmonitor/translations/uk.json +0 -1
  137. homeassistant/components/fritzbox_callmonitor/translations/zh-Hans.json +2 -2
  138. homeassistant/components/fritzbox_callmonitor/translations/zh-Hant.json +2 -2
  139. homeassistant/components/fronius/translations/ga.json +69 -0
  140. homeassistant/components/frontend/manifest.json +1 -1
  141. homeassistant/components/fully_kiosk/translations/ga.json +26 -0
  142. homeassistant/components/fyta/translations/ga.json +1 -0
  143. homeassistant/components/generic/translations/ga.json +36 -0
  144. homeassistant/components/geofency/translations/ga.json +18 -0
  145. homeassistant/components/geonetnz_quakes/translations/ga.json +4 -0
  146. homeassistant/components/gios/translations/ga.json +2 -0
  147. homeassistant/components/github/translations/ga.json +23 -0
  148. homeassistant/components/glances/translations/ga.json +10 -0
  149. homeassistant/components/goalzero/translations/ga.json +3 -0
  150. homeassistant/components/goalzero/translations/lt.json +3 -0
  151. homeassistant/components/goodwe/translations/ga.json +16 -0
  152. homeassistant/components/google/translations/ga.json +7 -0
  153. homeassistant/components/google_generative_ai_conversation/translations/lt.json +5 -0
  154. homeassistant/components/google_mail/translations/ga.json +24 -2
  155. homeassistant/components/google_sheets/translations/ga.json +6 -0
  156. homeassistant/components/govee_ble/translations/ga.json +18 -0
  157. homeassistant/components/gpslogger/translations/ga.json +1 -0
  158. homeassistant/components/group/translations/ga.json +31 -2
  159. homeassistant/components/growatt_server/translations/ga.json +127 -0
  160. homeassistant/components/habitica/translations/ga.json +7 -2
  161. homeassistant/components/harmony/translations/ga.json +32 -2
  162. homeassistant/components/hassio/translations/ga.json +51 -1
  163. homeassistant/components/hassio/translations/lt.json +4 -0
  164. homeassistant/components/here_travel_time/translations/ga.json +11 -0
  165. homeassistant/components/here_travel_time/translations/lt.json +2 -1
  166. homeassistant/components/hisense_aehw4a1/translations/ga.json +13 -0
  167. homeassistant/components/history_stats/translations/ga.json +6 -0
  168. homeassistant/components/hive/translations/ga.json +7 -0
  169. homeassistant/components/home_connect/translations/ga.json +5 -1
  170. homeassistant/components/home_connect/translations/lt.json +21 -11
  171. homeassistant/components/home_connect/translations/ru.json +9 -6
  172. homeassistant/components/homeassistant_yellow/translations/ga.json +61 -2
  173. homeassistant/components/homekit_controller/translations/ga.json +25 -0
  174. homeassistant/components/homekit_controller/translations/select.mk.json +7 -0
  175. homeassistant/components/homematic/translations/ga.json +26 -1
  176. homeassistant/components/honeywell/translations/ga.json +10 -0
  177. homeassistant/components/huawei_lte/translations/ga.json +16 -1
  178. homeassistant/components/hue/translations/ga.json +19 -0
  179. homeassistant/components/humidifier/translations/ga.json +31 -0
  180. homeassistant/components/husqvarna_automower/manifest.json +1 -1
  181. homeassistant/components/husqvarna_automower/translations/ca.json +3 -0
  182. homeassistant/components/husqvarna_automower/translations/mk.json +5 -0
  183. homeassistant/components/husqvarna_automower_ble/translations/ca.json +35 -0
  184. homeassistant/components/husqvarna_automower_ble/translations/el.json +4 -0
  185. homeassistant/components/husqvarna_automower_ble/translations/ga.json +35 -1
  186. homeassistant/components/hvv_departures/translations/ga.json +2 -1
  187. homeassistant/components/hydrawise/translations/lt.json +4 -1
  188. homeassistant/components/icloud/translations/ga.json +60 -1
  189. homeassistant/components/ifttt/translations/ga.json +2 -0
  190. homeassistant/components/imap/translations/ga.json +3 -1
  191. homeassistant/components/imeon_inverter/const.py +1 -0
  192. homeassistant/components/imeon_inverter/strings.json +1 -0
  193. homeassistant/components/imeon_inverter/translations/en.json +1 -0
  194. homeassistant/components/imeon_inverter/translations/lt.json +13 -0
  195. homeassistant/components/imeon_inverter/translations/ru.json +21 -0
  196. homeassistant/components/inkbird/translations/ga.json +5 -0
  197. homeassistant/components/input_boolean/translations/ga.json +20 -1
  198. homeassistant/components/input_button/translations/ga.json +16 -1
  199. homeassistant/components/input_datetime/translations/ga.json +37 -1
  200. homeassistant/components/input_number/translations/ga.json +23 -1
  201. homeassistant/components/insteon/translations/ga.json +6 -1
  202. homeassistant/components/insteon/translations/lt.json +1 -0
  203. homeassistant/components/insteon/translations/ru.json +1 -0
  204. homeassistant/components/integration/translations/ga.json +22 -2
  205. homeassistant/components/intellifire/translations/ga.json +15 -1
  206. homeassistant/components/ios/translations/ga.json +19 -0
  207. homeassistant/components/iotawatt/translations/ga.json +15 -0
  208. homeassistant/components/iperf3/translations/ga.json +2 -1
  209. homeassistant/components/ipma/translations/ga.json +2 -0
  210. homeassistant/components/iqvia/translations/ga.json +7 -0
  211. homeassistant/components/izone/translations/ga.json +7 -1
  212. homeassistant/components/jellyfin/translations/ga.json +13 -0
  213. homeassistant/components/justnimbus/translations/ga.json +16 -0
  214. homeassistant/components/jvc_projector/translations/ga.json +1 -0
  215. homeassistant/components/kaleidescape/translations/ga.json +3 -0
  216. homeassistant/components/keba/translations/lt.json +1 -0
  217. homeassistant/components/keba/translations/ru.json +1 -0
  218. homeassistant/components/kitchen_sink/translations/ga.json +3 -0
  219. homeassistant/components/kmtronic/translations/ga.json +22 -0
  220. homeassistant/components/knx/translations/ga.json +100 -2
  221. homeassistant/components/knx/translations/lt.json +27 -2
  222. homeassistant/components/konnected/translations/ga.json +3 -1
  223. homeassistant/components/kostal_plenticore/translations/ga.json +7 -0
  224. homeassistant/components/kraken/translations/ga.json +20 -0
  225. homeassistant/components/kulersky/translations/ga.json +3 -0
  226. homeassistant/components/lacrosse_view/translations/ga.json +25 -0
  227. homeassistant/components/lametric/translations/ga.json +1 -0
  228. homeassistant/components/lametric/translations/lt.json +1 -0
  229. homeassistant/components/landisgyr_heat_meter/translations/ga.json +15 -0
  230. homeassistant/components/launch_library/translations/lt.json +7 -0
  231. homeassistant/components/laundrify/translations/lt.json +2 -1
  232. homeassistant/components/lawn_mower/translations/ga.json +6 -0
  233. homeassistant/components/lcn/translations/ga.json +52 -3
  234. homeassistant/components/lcn/translations/lt.json +2 -0
  235. homeassistant/components/lcn/translations/ru.json +1 -0
  236. homeassistant/components/leaone/translations/ru.json +2 -1
  237. homeassistant/components/lg_thinq/translations/el.json +3 -0
  238. homeassistant/components/lg_thinq/translations/ga.json +5 -0
  239. homeassistant/components/lg_thinq/translations/lt.json +4 -0
  240. homeassistant/components/lg_thinq/translations/ru.json +5 -0
  241. homeassistant/components/lidarr/translations/ga.json +16 -0
  242. homeassistant/components/lifx/translations/ga.json +1 -0
  243. homeassistant/components/light/translations/ga.json +132 -1
  244. homeassistant/components/litterrobot/translations/ga.json +6 -0
  245. homeassistant/components/litterrobot/translations/sensor.ga.json +14 -1
  246. homeassistant/components/livisi/translations/ga.json +18 -0
  247. homeassistant/components/local_calendar/translations/ga.json +5 -2
  248. homeassistant/components/local_ip/translations/ga.json +9 -0
  249. homeassistant/components/lookin/translations/ga.json +1 -0
  250. homeassistant/components/lutron_caseta/translations/ga.json +34 -1
  251. homeassistant/components/matter/translations/ga.json +22 -0
  252. homeassistant/components/matter/translations/lt.json +9 -0
  253. homeassistant/components/matter/translations/sr-Latn.json +15 -0
  254. homeassistant/components/matter/translations/sr.json +15 -0
  255. homeassistant/components/meater/translations/ga.json +9 -0
  256. homeassistant/components/media_extractor/translations/ga.json +14 -0
  257. homeassistant/components/media_player/services.yaml +1 -3
  258. homeassistant/components/media_player/translations/el.json +5 -0
  259. homeassistant/components/media_player/translations/ga.json +35 -0
  260. homeassistant/components/media_player/translations/lt.json +2 -1
  261. homeassistant/components/media_player/translations/ru.json +5 -0
  262. homeassistant/components/met/translations/ga.json +34 -0
  263. homeassistant/components/met_eireann/translations/ga.json +15 -0
  264. homeassistant/components/meteo_france/const.py +1 -1
  265. homeassistant/components/metoffice/translations/sr-Latn.json +1 -0
  266. homeassistant/components/metoffice/translations/sr.json +1 -0
  267. homeassistant/components/miele/translations/ga.json +2 -1
  268. homeassistant/components/miele/translations/lt.json +24 -0
  269. homeassistant/components/mill/translations/ga.json +35 -0
  270. homeassistant/components/minecraft_server/translations/ga.json +12 -0
  271. homeassistant/components/minio/translations/ga.json +30 -0
  272. homeassistant/components/mjpeg/translations/lt.json +1 -0
  273. homeassistant/components/modbus/entity.py +4 -1
  274. homeassistant/components/modbus/translations/lt.json +2 -0
  275. homeassistant/components/modbus/translations/ru.json +2 -0
  276. homeassistant/components/modern_forms/translations/ga.json +20 -0
  277. homeassistant/components/moehlenhoff_alpha2/translations/ga.json +7 -0
  278. homeassistant/components/moon/translations/ga.json +10 -3
  279. homeassistant/components/moon/translations/sensor.ga.json +14 -0
  280. homeassistant/components/mopeka/translations/ga.json +12 -2
  281. homeassistant/components/motion_blinds/translations/ga.json +3 -0
  282. homeassistant/components/mqtt/translations/ca.json +11 -0
  283. homeassistant/components/mqtt/translations/el.json +19 -0
  284. homeassistant/components/mqtt/translations/ga.json +84 -4
  285. homeassistant/components/mqtt/translations/lt.json +19 -1
  286. homeassistant/components/mqtt/translations/ru.json +15 -0
  287. homeassistant/components/mysensors/translations/ga.json +17 -0
  288. homeassistant/components/mystrom/translations/ga.json +2 -1
  289. homeassistant/components/nam/translations/ga.json +26 -0
  290. homeassistant/components/nest/translations/ga.json +44 -3
  291. homeassistant/components/nest/translations/lt.json +3 -0
  292. homeassistant/components/netatmo/translations/ga.json +5 -1
  293. homeassistant/components/netatmo/translations/sr-Latn.json +16 -0
  294. homeassistant/components/netatmo/translations/sr.json +16 -0
  295. homeassistant/components/nexia/translations/ga.json +8 -0
  296. homeassistant/components/nextcloud/translations/ga.json +14 -0
  297. homeassistant/components/nextcloud/translations/mk.json +13 -0
  298. homeassistant/components/nextdns/translations/ga.json +107 -0
  299. homeassistant/components/nextdns/translations/sr.json +11 -0
  300. homeassistant/components/nfandroidtv/translations/ga.json +13 -1
  301. homeassistant/components/nibe_heatpump/translations/ga.json +5 -0
  302. homeassistant/components/nightscout/translations/ga.json +10 -0
  303. homeassistant/components/niko_home_control/translations/el.json +10 -1
  304. homeassistant/components/niko_home_control/translations/ga.json +10 -1
  305. homeassistant/components/nina/translations/ga.json +38 -2
  306. homeassistant/components/nissan_leaf/translations/ga.json +7 -0
  307. homeassistant/components/nobo_hub/translations/ga.json +29 -0
  308. homeassistant/components/notify/translations/ga.json +7 -1
  309. homeassistant/components/notion/translations/ga.json +49 -0
  310. homeassistant/components/nuheat/translations/ga.json +21 -0
  311. homeassistant/components/number/translations/ga.json +15 -1
  312. homeassistant/components/nut/translations/ga.json +131 -1
  313. homeassistant/components/nws/translations/ga.json +11 -0
  314. homeassistant/components/nws/translations/sr-Latn.json +9 -0
  315. homeassistant/components/nws/translations/sr.json +9 -0
  316. homeassistant/components/nx584/translations/ga.json +13 -1
  317. homeassistant/components/nzbget/translations/ga.json +23 -0
  318. homeassistant/components/nzbget/translations/lt.json +6 -0
  319. homeassistant/components/nzbget/translations/ru.json +6 -0
  320. homeassistant/components/obihai/translations/ga.json +19 -1
  321. homeassistant/components/octoprint/translations/ga.json +3 -0
  322. homeassistant/components/ollama/translations/lt.json +10 -0
  323. homeassistant/components/oncue/translations/ru.json +8 -1
  324. homeassistant/components/ondilo_ico/translations/ga.json +7 -1
  325. homeassistant/components/onewire/translations/ga.json +57 -1
  326. homeassistant/components/onvif/translations/ga.json +42 -1
  327. homeassistant/components/open_meteo/translations/ga.json +15 -0
  328. homeassistant/components/open_router/translations/lt.json +7 -1
  329. homeassistant/components/openai_conversation/translations/ga.json +12 -0
  330. homeassistant/components/openai_conversation/translations/lt.json +5 -0
  331. homeassistant/components/openhome/translations/ga.json +7 -0
  332. homeassistant/components/opentherm_gw/translations/ga.json +100 -2
  333. homeassistant/components/openuv/translations/ga.json +33 -0
  334. homeassistant/components/openweathermap/translations/ga.json +32 -0
  335. homeassistant/components/openweathermap/translations/sr-Latn.json +16 -0
  336. homeassistant/components/openweathermap/translations/sr.json +16 -0
  337. homeassistant/components/opower/manifest.json +1 -1
  338. homeassistant/components/opower/translations/ga.json +11 -2
  339. homeassistant/components/opower/translations/lt.json +7 -1
  340. homeassistant/components/overkiz/translations/ga.json +71 -3
  341. homeassistant/components/overkiz/translations/select.ga.json +1 -0
  342. homeassistant/components/overkiz/translations/sensor.ga.json +29 -1
  343. homeassistant/components/ovo_energy/translations/ga.json +14 -1
  344. homeassistant/components/p1_monitor/translations/ga.json +22 -0
  345. homeassistant/components/panasonic_viera/translations/ga.json +30 -0
  346. homeassistant/components/peco/translations/ga.json +2 -0
  347. homeassistant/components/pegel_online/translations/ga.json +18 -0
  348. homeassistant/components/person/translations/ga.json +15 -0
  349. homeassistant/components/pi_hole/translations/ga.json +29 -0
  350. homeassistant/components/picnic/translations/ga.json +41 -0
  351. homeassistant/components/plaato/translations/ga.json +13 -0
  352. homeassistant/components/plant/translations/ga.json +12 -0
  353. homeassistant/components/playstation_network/translations/ca.json +7 -0
  354. homeassistant/components/playstation_network/translations/cs.json +6 -0
  355. homeassistant/components/playstation_network/translations/de.json +6 -0
  356. homeassistant/components/playstation_network/translations/el.json +54 -0
  357. homeassistant/components/playstation_network/translations/en-GB.json +6 -0
  358. homeassistant/components/playstation_network/translations/en.json +6 -0
  359. homeassistant/components/playstation_network/translations/et.json +23 -0
  360. homeassistant/components/playstation_network/translations/ga.json +6 -0
  361. homeassistant/components/playstation_network/translations/lt.json +29 -0
  362. homeassistant/components/playstation_network/translations/pt.json +6 -0
  363. homeassistant/components/playstation_network/translations/sk.json +23 -0
  364. homeassistant/components/playstation_network/translations/zh-Hans.json +23 -0
  365. homeassistant/components/playstation_network/translations/zh-Hant.json +6 -0
  366. homeassistant/components/plex/translations/ga.json +40 -0
  367. homeassistant/components/plugwise/translations/ga.json +105 -0
  368. homeassistant/components/plugwise/translations/select.ga.json +17 -0
  369. homeassistant/components/plum_lightpad/translations/ga.json +18 -0
  370. homeassistant/components/point/translations/ga.json +4 -0
  371. homeassistant/components/pooldose/translations/ca.json +56 -0
  372. homeassistant/components/pooldose/translations/el.json +48 -0
  373. homeassistant/components/pooldose/translations/ga.json +32 -0
  374. homeassistant/components/poolsense/translations/ga.json +16 -0
  375. homeassistant/components/powerwall/translations/ga.json +35 -0
  376. homeassistant/components/profiler/translations/ga.json +11 -0
  377. homeassistant/components/progettihwsw/translations/ga.json +24 -1
  378. homeassistant/components/prosegur/translations/ga.json +39 -0
  379. homeassistant/components/prusalink/translations/sensor.ga.json +7 -0
  380. homeassistant/components/ps4/translations/ga.json +40 -0
  381. homeassistant/components/pure_energie/translations/ga.json +39 -0
  382. homeassistant/components/purpleair/manifest.json +1 -1
  383. homeassistant/components/purpleair/translations/ga.json +42 -0
  384. homeassistant/components/pushbullet/translations/ga.json +44 -0
  385. homeassistant/components/pushover/translations/ga.json +28 -0
  386. homeassistant/components/pvoutput/translations/ga.json +46 -0
  387. homeassistant/components/pvpc_hourly_pricing/translations/ga.json +1 -0
  388. homeassistant/components/radarr/translations/ga.json +40 -0
  389. homeassistant/components/radio_browser/translations/ga.json +9 -0
  390. homeassistant/components/radiotherm/translations/ga.json +23 -0
  391. homeassistant/components/rainbird/translations/ga.json +18 -2
  392. homeassistant/components/rainbird/translations/lt.json +4 -0
  393. homeassistant/components/rainbird/translations/ru.json +4 -0
  394. homeassistant/components/rainmachine/translations/ga.json +99 -4
  395. homeassistant/components/rainmachine/translations/sr-Latn.json +55 -0
  396. homeassistant/components/rainmachine/translations/sr.json +55 -0
  397. homeassistant/components/random/translations/ga.json +1 -0
  398. homeassistant/components/random/translations/lt.json +1 -0
  399. homeassistant/components/rapt_ble/translations/ga.json +21 -0
  400. homeassistant/components/rdw/translations/ga.json +36 -0
  401. homeassistant/components/recollect_waste/translations/ga.json +38 -0
  402. homeassistant/components/recorder/translations/ga.json +11 -0
  403. homeassistant/components/renault/translations/ga.json +76 -0
  404. homeassistant/components/reolink/translations/cs.json +14 -14
  405. homeassistant/components/reolink/translations/ga.json +47 -5
  406. homeassistant/components/reolink/translations/lt.json +9 -0
  407. homeassistant/components/rfxtrx/translations/ga.json +30 -0
  408. homeassistant/components/samsungtv/translations/lt.json +1 -0
  409. homeassistant/components/sensibo/translations/ga.json +4 -2
  410. homeassistant/components/sensibo/translations/lt.json +22 -0
  411. homeassistant/components/sensibo/translations/sensor.ga.json +7 -0
  412. homeassistant/components/sensor/translations/ga.json +3 -0
  413. homeassistant/components/shopping_list/translations/sr-Latn.json +11 -0
  414. homeassistant/components/shopping_list/translations/sr.json +11 -0
  415. homeassistant/components/sleepiq/translations/lt.json +1 -0
  416. homeassistant/components/smartthings/translations/ru.json +9 -0
  417. homeassistant/components/sonos/translations/lt.json +3 -0
  418. homeassistant/components/tado/translations/sr-Latn.json +9 -0
  419. homeassistant/components/tado/translations/sr.json +9 -0
  420. homeassistant/components/tellduslive/translations/ru.json +4 -0
  421. homeassistant/components/template/translations/el.json +50 -0
  422. homeassistant/components/template/translations/ga.json +1 -0
  423. homeassistant/components/template/translations/lt.json +98 -17
  424. homeassistant/components/template/translations/ru.json +8 -0
  425. homeassistant/components/template/translations/sv.json +31 -8
  426. homeassistant/components/tesla_fleet/__init__.py +0 -1
  427. homeassistant/components/teslemetry/translations/lt.json +4 -0
  428. homeassistant/components/teslemetry/translations/mk.json +5 -0
  429. homeassistant/components/togrill/translations/lt.json +19 -0
  430. homeassistant/components/tomorrowio/translations/lt.json +5 -1
  431. homeassistant/components/tplink/translations/lt.json +6 -2
  432. homeassistant/components/trafikverket_weatherstation/translations/sr-Latn.json +29 -0
  433. homeassistant/components/trafikverket_weatherstation/translations/sr.json +29 -0
  434. homeassistant/components/triggercmd/__init__.py +6 -2
  435. homeassistant/components/triggercmd/config_flow.py +3 -1
  436. homeassistant/components/triggercmd/manifest.json +1 -1
  437. homeassistant/components/triggercmd/switch.py +1 -0
  438. homeassistant/components/tuya/translations/ga.json +8 -0
  439. homeassistant/components/tuya/translations/lt.json +1 -0
  440. homeassistant/components/tuya/translations/select.ga.json +4 -0
  441. homeassistant/components/unifiprotect/translations/ga.json +8 -0
  442. homeassistant/components/unifiprotect/translations/lt.json +6 -1
  443. homeassistant/components/vallox/translations/lt.json +5 -0
  444. homeassistant/components/volvo/translations/lt.json +45 -1
  445. homeassistant/components/waze_travel_time/translations/lt.json +2 -0
  446. homeassistant/components/weather/translations/ga.json +3 -0
  447. homeassistant/components/weather/translations/sr-Latn.json +24 -7
  448. homeassistant/components/weather/translations/sr.json +81 -0
  449. homeassistant/components/weatherflow_cloud/translations/sr-Latn.json +18 -0
  450. homeassistant/components/weatherflow_cloud/translations/sr.json +18 -0
  451. homeassistant/components/webostv/translations/lt.json +11 -4
  452. homeassistant/components/webostv/translations/ru.json +9 -2
  453. homeassistant/components/websocket_api/http.py +13 -2
  454. homeassistant/components/xiaomi_miio/translations/lt.json +3 -0
  455. homeassistant/components/yalexs_ble/__init__.py +37 -7
  456. homeassistant/components/yalexs_ble/config_cache.py +31 -0
  457. homeassistant/components/yalexs_ble/config_flow.py +80 -35
  458. homeassistant/components/yalexs_ble/strings.json +10 -5
  459. homeassistant/components/yalexs_ble/translations/bg.json +1 -7
  460. homeassistant/components/yalexs_ble/translations/ca.json +2 -12
  461. homeassistant/components/yalexs_ble/translations/cs.json +2 -12
  462. homeassistant/components/yalexs_ble/translations/de.json +10 -5
  463. homeassistant/components/yalexs_ble/translations/el.json +2 -12
  464. homeassistant/components/yalexs_ble/translations/en-GB.json +9 -4
  465. homeassistant/components/yalexs_ble/translations/en.json +10 -5
  466. homeassistant/components/yalexs_ble/translations/es.json +2 -12
  467. homeassistant/components/yalexs_ble/translations/et.json +2 -12
  468. homeassistant/components/yalexs_ble/translations/fi.json +2 -12
  469. homeassistant/components/yalexs_ble/translations/fr.json +1 -2
  470. homeassistant/components/yalexs_ble/translations/hu.json +2 -12
  471. homeassistant/components/yalexs_ble/translations/id.json +2 -12
  472. homeassistant/components/yalexs_ble/translations/it.json +2 -12
  473. homeassistant/components/yalexs_ble/translations/ja.json +2 -12
  474. homeassistant/components/yalexs_ble/translations/ko.json +2 -12
  475. homeassistant/components/yalexs_ble/translations/lt.json +2 -12
  476. homeassistant/components/yalexs_ble/translations/lv.json +1 -7
  477. homeassistant/components/yalexs_ble/translations/nb.json +2 -12
  478. homeassistant/components/yalexs_ble/translations/nl.json +2 -12
  479. homeassistant/components/yalexs_ble/translations/pl.json +2 -12
  480. homeassistant/components/yalexs_ble/translations/pt-BR.json +2 -12
  481. homeassistant/components/yalexs_ble/translations/pt.json +2 -12
  482. homeassistant/components/yalexs_ble/translations/ro.json +2 -12
  483. homeassistant/components/yalexs_ble/translations/ru.json +2 -12
  484. homeassistant/components/yalexs_ble/translations/sk.json +2 -12
  485. homeassistant/components/yalexs_ble/translations/sv.json +2 -12
  486. homeassistant/components/yalexs_ble/translations/tr.json +2 -12
  487. homeassistant/components/yalexs_ble/translations/uk.json +2 -12
  488. homeassistant/components/yalexs_ble/translations/vi.json +0 -9
  489. homeassistant/components/yalexs_ble/translations/zh-Hans.json +2 -12
  490. homeassistant/components/yalexs_ble/translations/zh-Hant.json +10 -5
  491. homeassistant/components/yolink/translations/lt.json +13 -0
  492. homeassistant/components/zha/translations/lt.json +6 -0
  493. homeassistant/components/zwave_js/translations/ru.json +3 -1
  494. homeassistant/const.py +1 -1
  495. homeassistant/generated/integrations.json +6 -0
  496. homeassistant/package_constraints.txt +4 -4
  497. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/METADATA +1 -1
  498. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/RECORD +503 -435
  499. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/WHEEL +0 -0
  500. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/entry_points.txt +0 -0
  501. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/LICENSE.md +0 -0
  502. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  503. {homeassistant-2025.9.0b1.dist-info → homeassistant-2025.9.0b2.dist-info}/top_level.txt +0 -0
@@ -37,6 +37,7 @@ from .messages import message_to_json_bytes
37
37
  from .util import describe_request
38
38
 
39
39
  CLOSE_MSG_TYPES = {WSMsgType.CLOSE, WSMsgType.CLOSED, WSMsgType.CLOSING}
40
+ AUTH_MESSAGE_TIMEOUT = 10 # seconds
40
41
 
41
42
  if TYPE_CHECKING:
42
43
  from .connection import ActiveConnection
@@ -389,9 +390,11 @@ class WebSocketHandler:
389
390
 
390
391
  # Auth Phase
391
392
  try:
392
- msg = await self._wsock.receive(10)
393
+ msg = await self._wsock.receive(AUTH_MESSAGE_TIMEOUT)
393
394
  except TimeoutError as err:
394
- raise Disconnect("Did not receive auth message within 10 seconds") from err
395
+ raise Disconnect(
396
+ f"Did not receive auth message within {AUTH_MESSAGE_TIMEOUT} seconds"
397
+ ) from err
395
398
 
396
399
  if msg.type in (WSMsgType.CLOSE, WSMsgType.CLOSED, WSMsgType.CLOSING):
397
400
  raise Disconnect("Received close message during auth phase")
@@ -538,6 +541,14 @@ class WebSocketHandler:
538
541
  finally:
539
542
  if disconnect_warn is None:
540
543
  logger.debug("%s: Disconnected", self.description)
544
+ elif connection is None:
545
+ # Auth phase disconnects (connection is None) should be logged at debug level
546
+ # as they can be from random port scanners or non-legitimate connections
547
+ logger.debug(
548
+ "%s: Disconnected during auth phase: %s",
549
+ self.description,
550
+ disconnect_warn,
551
+ )
541
552
  else:
542
553
  logger.warning(
543
554
  "%s: Disconnected: %s", self.description, disconnect_warn
@@ -280,6 +280,9 @@
280
280
  "anion": {
281
281
  "name": "Jonizatorius"
282
282
  },
283
+ "auto_detect": {
284
+ "name": "Automatinis aptikimas"
285
+ },
283
286
  "buzzer": {
284
287
  "name": "Skambutis"
285
288
  },
@@ -19,6 +19,7 @@ from homeassistant.const import CONF_ADDRESS, EVENT_HOMEASSISTANT_STOP, Platform
19
19
  from homeassistant.core import CALLBACK_TYPE, CoreState, Event, HomeAssistant, callback
20
20
  from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
21
21
 
22
+ from .config_cache import async_get_validated_config
22
23
  from .const import (
23
24
  CONF_ALWAYS_CONNECTED,
24
25
  CONF_KEY,
@@ -96,13 +97,30 @@ async def async_setup_entry(hass: HomeAssistant, entry: YALEXSBLEConfigEntry) ->
96
97
  )
97
98
 
98
99
  try:
99
- await push_lock.wait_for_first_update(DEVICE_TIMEOUT)
100
- except AuthError as ex:
101
- raise ConfigEntryAuthFailed(str(ex)) from ex
102
- except (YaleXSBLEError, TimeoutError) as ex:
103
- raise ConfigEntryNotReady(
104
- f"{ex}; Try moving the Bluetooth adapter closer to {local_name}"
105
- ) from ex
100
+ await _async_wait_for_first_update(push_lock, local_name)
101
+ except ConfigEntryAuthFailed:
102
+ # If key has rotated, try to fetch it from the cache
103
+ # and update
104
+ if (validated_config := async_get_validated_config(hass, address)) and (
105
+ validated_config.key != entry.data[CONF_KEY]
106
+ or validated_config.slot != entry.data[CONF_SLOT]
107
+ ):
108
+ assert shutdown_callback is not None
109
+ shutdown_callback()
110
+ push_lock.set_lock_key(validated_config.key, validated_config.slot)
111
+ shutdown_callback = await push_lock.start()
112
+ await _async_wait_for_first_update(push_lock, local_name)
113
+ # If we can use the cached key and slot, update the entry.
114
+ hass.config_entries.async_update_entry(
115
+ entry,
116
+ data={
117
+ **entry.data,
118
+ CONF_KEY: validated_config.key,
119
+ CONF_SLOT: validated_config.slot,
120
+ },
121
+ )
122
+ else:
123
+ raise
106
124
 
107
125
  entry.runtime_data = YaleXSBLEData(entry.title, push_lock, always_connected)
108
126
 
@@ -147,6 +165,18 @@ async def _async_update_listener(
147
165
  await hass.config_entries.async_reload(entry.entry_id)
148
166
 
149
167
 
168
+ async def _async_wait_for_first_update(push_lock: PushLock, local_name: str) -> None:
169
+ """Wait for the first update from the push lock."""
170
+ try:
171
+ await push_lock.wait_for_first_update(DEVICE_TIMEOUT)
172
+ except AuthError as ex:
173
+ raise ConfigEntryAuthFailed(str(ex)) from ex
174
+ except (YaleXSBLEError, TimeoutError) as ex:
175
+ raise ConfigEntryNotReady(
176
+ f"{ex}; Try moving the Bluetooth adapter closer to {local_name}"
177
+ ) from ex
178
+
179
+
150
180
  async def async_unload_entry(hass: HomeAssistant, entry: YALEXSBLEConfigEntry) -> bool:
151
181
  """Unload a config entry."""
152
182
  return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
@@ -0,0 +1,31 @@
1
+ """The Yale Access Bluetooth integration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from yalexs_ble import ValidatedLockConfig
6
+
7
+ from homeassistant.core import HomeAssistant, callback
8
+ from homeassistant.util.hass_dict import HassKey
9
+
10
+ CONFIG_CACHE: HassKey[dict[str, ValidatedLockConfig]] = HassKey(
11
+ "yalexs_ble_config_cache"
12
+ )
13
+
14
+
15
+ @callback
16
+ def async_add_validated_config(
17
+ hass: HomeAssistant,
18
+ address: str,
19
+ config: ValidatedLockConfig,
20
+ ) -> None:
21
+ """Add a validated config."""
22
+ hass.data.setdefault(CONFIG_CACHE, {})[address] = config
23
+
24
+
25
+ @callback
26
+ def async_get_validated_config(
27
+ hass: HomeAssistant,
28
+ address: str,
29
+ ) -> ValidatedLockConfig | None:
30
+ """Get the config for a specific address."""
31
+ return hass.data.get(CONFIG_CACHE, {}).get(address)
@@ -33,6 +33,7 @@ from homeassistant.core import callback
33
33
  from homeassistant.data_entry_flow import AbortFlow
34
34
  from homeassistant.helpers.typing import DiscoveryInfoType
35
35
 
36
+ from .config_cache import async_add_validated_config, async_get_validated_config
36
37
  from .const import CONF_ALWAYS_CONNECTED, CONF_KEY, CONF_LOCAL_NAME, CONF_SLOT, DOMAIN
37
38
  from .util import async_find_existing_service_info, human_readable_name
38
39
 
@@ -92,7 +93,10 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
92
93
  None, discovery_info.name, discovery_info.address
93
94
  ),
94
95
  }
95
- return await self.async_step_user()
96
+ if lock_cfg := async_get_validated_config(self.hass, discovery_info.address):
97
+ self._lock_cfg = lock_cfg
98
+ return await self.async_step_integration_discovery_confirm()
99
+ return await self.async_step_key_slot()
96
100
 
97
101
  async def async_step_integration_discovery(
98
102
  self, discovery_info: DiscoveryInfoType
@@ -105,6 +109,7 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
105
109
  discovery_info["key"],
106
110
  discovery_info["slot"],
107
111
  )
112
+ async_add_validated_config(self.hass, lock_cfg.address, lock_cfg)
108
113
 
109
114
  address = lock_cfg.address
110
115
  self.local_name = lock_cfg.local_name
@@ -232,22 +237,28 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
232
237
  errors=errors,
233
238
  )
234
239
 
235
- async def async_step_user(
240
+ async def async_step_key_slot(
236
241
  self, user_input: dict[str, Any] | None = None
237
242
  ) -> ConfigFlowResult:
238
- """Handle the user step to pick discovered device."""
243
+ """Handle the key and slot step."""
239
244
  errors: dict[str, str] = {}
245
+ discovery_info = self._discovery_info
246
+ assert discovery_info is not None
247
+ address = discovery_info.address
248
+ validated_config = async_get_validated_config(self.hass, address)
240
249
 
241
- if user_input is not None:
242
- self.active = True
243
- address = user_input[CONF_ADDRESS]
244
- discovery_info = self._discovered_devices[address]
250
+ if user_input is not None or validated_config:
245
251
  local_name = discovery_info.name
246
- key = user_input[CONF_KEY]
247
- slot = user_input[CONF_SLOT]
248
- await self.async_set_unique_id(
249
- discovery_info.address, raise_on_progress=False
250
- )
252
+ if validated_config:
253
+ key = validated_config.key
254
+ slot = validated_config.slot
255
+ title = validated_config.name
256
+ else:
257
+ assert user_input is not None
258
+ key = user_input[CONF_KEY]
259
+ slot = user_input[CONF_SLOT]
260
+ title = human_readable_name(None, local_name, address)
261
+ await self.async_set_unique_id(address, raise_on_progress=False)
251
262
  self._abort_if_unique_id_configured()
252
263
  if not (
253
264
  errors := await async_validate_lock_or_error(
@@ -255,7 +266,7 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
255
266
  )
256
267
  ):
257
268
  return self.async_create_entry(
258
- title=local_name,
269
+ title=title,
259
270
  data={
260
271
  CONF_LOCAL_NAME: discovery_info.name,
261
272
  CONF_ADDRESS: discovery_info.address,
@@ -264,24 +275,48 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
264
275
  },
265
276
  )
266
277
 
267
- if discovery := self._discovery_info:
278
+ return self.async_show_form(
279
+ step_id="key_slot",
280
+ data_schema=vol.Schema(
281
+ {
282
+ vol.Required(CONF_KEY): str,
283
+ vol.Required(CONF_SLOT): int,
284
+ }
285
+ ),
286
+ errors=errors,
287
+ description_placeholders={
288
+ "address": address,
289
+ "title": self._async_get_name_from_address(address),
290
+ },
291
+ )
292
+
293
+ async def async_step_user(
294
+ self, user_input: dict[str, Any] | None = None
295
+ ) -> ConfigFlowResult:
296
+ """Handle the user step to pick discovered device."""
297
+ errors: dict[str, str] = {}
298
+
299
+ if user_input is not None:
300
+ self.active = True
301
+ address = user_input[CONF_ADDRESS]
302
+ self._discovery_info = self._discovered_devices[address]
303
+ return await self.async_step_key_slot()
304
+
305
+ current_addresses = self._async_current_ids(include_ignore=False)
306
+ current_unique_names = {
307
+ entry.data.get(CONF_LOCAL_NAME)
308
+ for entry in self._async_current_entries()
309
+ if local_name_is_unique(entry.data.get(CONF_LOCAL_NAME))
310
+ }
311
+ for discovery in async_discovered_service_info(self.hass):
312
+ if (
313
+ discovery.address in current_addresses
314
+ or discovery.name in current_unique_names
315
+ or discovery.address in self._discovered_devices
316
+ or YALE_MFR_ID not in discovery.manufacturer_data
317
+ ):
318
+ continue
268
319
  self._discovered_devices[discovery.address] = discovery
269
- else:
270
- current_addresses = self._async_current_ids(include_ignore=False)
271
- current_unique_names = {
272
- entry.data.get(CONF_LOCAL_NAME)
273
- for entry in self._async_current_entries()
274
- if local_name_is_unique(entry.data.get(CONF_LOCAL_NAME))
275
- }
276
- for discovery in async_discovered_service_info(self.hass):
277
- if (
278
- discovery.address in current_addresses
279
- or discovery.name in current_unique_names
280
- or discovery.address in self._discovered_devices
281
- or YALE_MFR_ID not in discovery.manufacturer_data
282
- ):
283
- continue
284
- self._discovered_devices[discovery.address] = discovery
285
320
 
286
321
  if not self._discovered_devices:
287
322
  return self.async_abort(reason="no_devices_found")
@@ -290,14 +325,12 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
290
325
  {
291
326
  vol.Required(CONF_ADDRESS): vol.In(
292
327
  {
293
- service_info.address: (
294
- f"{service_info.name} ({service_info.address})"
328
+ service_info.address: self._async_get_name_from_address(
329
+ service_info.address
295
330
  )
296
331
  for service_info in self._discovered_devices.values()
297
332
  }
298
- ),
299
- vol.Required(CONF_KEY): str,
300
- vol.Required(CONF_SLOT): int,
333
+ )
301
334
  }
302
335
  )
303
336
  return self.async_show_form(
@@ -306,6 +339,18 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
306
339
  errors=errors,
307
340
  )
308
341
 
342
+ @callback
343
+ def _async_get_name_from_address(self, address: str) -> str:
344
+ """Get the name of a device from its address."""
345
+ if validated_config := async_get_validated_config(self.hass, address):
346
+ return f"{validated_config.name} ({address})"
347
+ if address in self._discovered_devices:
348
+ service_info = self._discovered_devices[address]
349
+ return f"{service_info.name} ({service_info.address})"
350
+ assert self._discovery_info is not None
351
+ assert self._discovery_info.address == address
352
+ return f"{self._discovery_info.name} ({address})"
353
+
309
354
  @staticmethod
310
355
  @callback
311
356
  def async_get_options_flow(
@@ -3,18 +3,23 @@
3
3
  "flow_title": "{name}",
4
4
  "step": {
5
5
  "user": {
6
- "description": "Check the documentation for how to find the offline key. If you are using the August cloud integration to obtain the key, you may need to reload the August cloud integration while the lock is in Bluetooth range.",
6
+ "description": "Select the device you want to set up over Bluetooth.",
7
+ "data": {
8
+ "address": "Bluetooth address"
9
+ }
10
+ },
11
+ "key_slot": {
12
+ "description": "Enter the key for the {title} lock with address {address}. If you are using the August or Yale cloud integration to obtain the key, you may be able to avoid this manual setup by reloading the August or Yale cloud integration while the lock is in Bluetooth range.",
7
13
  "data": {
8
- "address": "Bluetooth address",
9
14
  "key": "Offline Key (32-byte hex string)",
10
15
  "slot": "Offline Key Slot (Integer between 0 and 255)"
11
16
  }
12
17
  },
13
18
  "reauth_validate": {
14
- "description": "Enter the updated key for the {title} lock with address {address}. If you are using the August cloud integration to obtain the key, you may be able to avoid manual reauthentication by reloading the August cloud integration while the lock is in Bluetooth range.",
19
+ "description": "Enter the updated key for the {title} lock with address {address}. If you are using the August or Yale cloud integration to obtain the key, you may be able to avoid manual re-authentication by reloading the August or Yale cloud integration while the lock is in Bluetooth range.",
15
20
  "data": {
16
- "key": "[%key:component::yalexs_ble::config::step::user::data::key%]",
17
- "slot": "[%key:component::yalexs_ble::config::step::user::data::slot%]"
21
+ "key": "[%key:component::yalexs_ble::config::step::key_slot::data::key%]",
22
+ "slot": "[%key:component::yalexs_ble::config::step::key_slot::data::slot%]"
18
23
  }
19
24
  },
20
25
  "integration_discovery_confirm": {
@@ -17,15 +17,9 @@
17
17
  "integration_discovery_confirm": {
18
18
  "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u0435 {name} \u043f\u0440\u0435\u0437 Bluetooth \u0441 \u0430\u0434\u0440\u0435\u0441 {address}?"
19
19
  },
20
- "reauth_validate": {
21
- "data": {
22
- "key": "\u041e\u0444\u043b\u0430\u0439\u043d \u043a\u043b\u044e\u0447 (32-\u0431\u0430\u0439\u0442\u043e\u0432 hex \u043d\u0438\u0437)"
23
- }
24
- },
25
20
  "user": {
26
21
  "data": {
27
- "address": "Bluetooth \u0430\u0434\u0440\u0435\u0441",
28
- "key": "\u041e\u0444\u043b\u0430\u0439\u043d \u043a\u043b\u044e\u0447 (32-\u0431\u0430\u0439\u0442\u043e\u0432 hex \u043d\u0438\u0437)"
22
+ "address": "Bluetooth \u0430\u0434\u0440\u0435\u0441"
29
23
  }
30
24
  }
31
25
  }
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Vols configurar {name} per Bluetooth amb l'adre\u00e7a {address}?"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "Clau fora de l\u00ednia (cadena hexadecimal de 32 bytes)",
25
- "slot": "'Slot' de clau fora de l\u00ednia (nombre enter entre 0 i 255)"
26
- },
27
- "description": "Introdueix la clau actualitzada del pany {title} amb adre\u00e7a {address}. Si utilitzes la integraci\u00f3 al n\u00favol August per obtenir la clau, \u00e9s possible que puguis evitar la re-autenticaci\u00f3 manual tornant a carregar la integraci\u00f3 August mentre el pany estigui a l'abast del Bluetooth."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "Adre\u00e7a Bluetooth",
32
- "key": "Clau fora de l\u00ednia (cadena hexadecimal de 32 bytes)",
33
- "slot": "'Slot' de clau fora de l\u00ednia (nombre enter entre 0 i 255)"
34
- },
35
- "description": "Consulta la documentaci\u00f3 per saber com trobar la clau de fora de l\u00ednia. Si est\u00e0s utilitzant la integraci\u00f3 al n\u00favol August per obtenir la clau, \u00e9s possible que hagis de reiniciar la integraci\u00f3 August mentre el pany estigui a l'abast del Bluetooth."
24
+ "address": "Adre\u00e7a Bluetooth"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Chcete nastavit {name} p\u0159es Bluetooth s adresou {address}?"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "Offline kl\u00ed\u010d (32bajtov\u00fd hexadecim\u00e1ln\u00ed \u0159et\u011bzec)",
25
- "slot": "Offline kl\u00ed\u010dov\u00fd slot (cel\u00e9 \u010d\u00edslo mezi 0 a 255)"
26
- },
27
- "description": "Zadejte aktualizovan\u00fd kl\u00ed\u010d pro z\u00e1mek {title} s adresou {address}. Pokud k z\u00edsk\u00e1n\u00ed kl\u00ed\u010de pou\u017e\u00edv\u00e1te srpnovou cloudovou integraci, mo\u017en\u00e1 se budete moci vyhnout ru\u010dn\u00edmu op\u011btovn\u00e9mu ov\u011b\u0159en\u00ed t\u00edm, \u017ee znovu na\u010dtete srpnovou cloudovou integraci, kdy\u017e je z\u00e1mek v dosahu Bluetooth."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "Adresa Bluetooth",
32
- "key": "Offline kl\u00ed\u010d (32bajtov\u00fd hexadecim\u00e1ln\u00ed \u0159et\u011bzec)",
33
- "slot": "Offline kl\u00ed\u010dov\u00fd slot (cel\u00e9 \u010d\u00edslo mezi 0 a 255)"
34
- },
35
- "description": "Pod\u00edvejte se do dokumentace, jak naj\u00edt offline kl\u00ed\u010d. Pokud k z\u00edsk\u00e1n\u00ed kl\u00ed\u010de pou\u017e\u00edv\u00e1te srpnovou cloudovou integraci, mo\u017en\u00e1 budete muset znovu na\u010d\u00edst srpnovou cloudovou integraci, kdy\u017e je z\u00e1mek v dosahu Bluetooth."
24
+ "address": "Adresa Bluetooth"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -19,20 +19,25 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "M\u00f6chtest du {name} \u00fcber Bluetooth mit der Adresse {address} einrichten?"
21
21
  },
22
- "reauth_validate": {
22
+ "key_slot": {
23
23
  "data": {
24
24
  "key": "Offline-Schl\u00fcssel (32 Byte Hex-Zeichenfolge)",
25
25
  "slot": "Offline-Schl\u00fcssel-Slot (Ganzzahl zwischen 0 und 255)"
26
26
  },
27
- "description": "Gib den aktualisierten Schl\u00fcssel f\u00fcr das {title} Schloss mit der Adresse {address} ein. Wenn du die August-Cloud-Integration verwendest, um den Schl\u00fcssel zu erhalten, kannst du m\u00f6glicherweise eine manuelle Neuauthentifizierung vermeiden, indem du die August-Cloud-Integration neu l\u00e4dst, w\u00e4hrend sich das Schloss in Bluetooth-Reichweite befindet."
27
+ "description": "Gib den Schl\u00fcssel f\u00fcr das {title} Schloss mit der Adresse {address} ein. Wenn du zum Abrufen des Schl\u00fcssels die August- oder Yale-Cloud-Integration verwendest, kannst du m\u00f6glicherweise diese manuelle Einrichtung vermeiden, indem du die August- oder Yale-Cloud-Integration neu l\u00e4dst, w\u00e4hrend sich das Schloss in Bluetooth-Reichweite befindet."
28
28
  },
29
- "user": {
29
+ "reauth_validate": {
30
30
  "data": {
31
- "address": "Bluetooth-Adresse",
32
31
  "key": "Offline-Schl\u00fcssel (32 Byte Hex-Zeichenfolge)",
33
32
  "slot": "Offline-Schl\u00fcssel-Slot (Ganzzahl zwischen 0 und 255)"
34
33
  },
35
- "description": "Lies in der Dokumentation nach, wie du den Offline-Schl\u00fcssel finden kannst. Wenn du die August-Cloud-Integration verwendest, um den Schl\u00fcssel zu erhalten, musst du die August-Cloud-Integration m\u00f6glicherweise neu laden, w\u00e4hrend sich das Schloss in Bluetooth-Reichweite befindet."
34
+ "description": "Gib den aktualisierten Schl\u00fcssel f\u00fcr das {title} Schloss mit der Adresse {address} ein. Wenn du zum Abrufen des Schl\u00fcssels die August- oder Yale-Cloud-Integration verwendest, kannst du m\u00f6glicherweise eine manuelle Neuauthentifizierung vermeiden, indem du die August- oder Yale-Cloud-Integration neu l\u00e4dst, w\u00e4hrend sich das Schloss in Bluetooth-Reichweite befindet."
35
+ },
36
+ "user": {
37
+ "data": {
38
+ "address": "Bluetooth-Adresse"
39
+ },
40
+ "description": "W\u00e4hle das Ger\u00e4t aus, das du \u00fcber Bluetooth einrichten m\u00f6chtest."
36
41
  }
37
42
  }
38
43
  },
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {name} \u03bc\u03ad\u03c3\u03c9 Bluetooth \u03bc\u03b5 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 {address};"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (\u03b4\u03b5\u03ba\u03b1\u03b5\u03be\u03b1\u03b4\u03b9\u03ba\u03ae \u03c3\u03c5\u03bc\u03b2\u03bf\u03bb\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac 32 byte)",
25
- "slot": "\u03a5\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (\u0391\u03ba\u03ad\u03c1\u03b1\u03b9\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bc\u03b5\u03c4\u03b1\u03be\u03cd 0 \u03ba\u03b1\u03b9 255)"
26
- },
27
- "description": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03c9\u03bc\u03ad\u03bd\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03ba\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac {title} \u03bc\u03b5 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 {address}. \u0395\u03ac\u03bd \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 cloud \u03c4\u03b7\u03c2 August \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af, \u03af\u03c3\u03c9\u03c2 \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c6\u03cd\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b1, \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03c4\u03ce\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 cloud \u03c4\u03b7\u03c2 August \u03b5\u03bd\u03ce \u03b7 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1 Bluetooth."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 Bluetooth",
32
- "key": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (\u03b4\u03b5\u03ba\u03b1\u03b5\u03be\u03b1\u03b4\u03b9\u03ba\u03ae \u03c3\u03c5\u03bc\u03b2\u03bf\u03bb\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac 32 byte)",
33
- "slot": "\u03a5\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (\u0391\u03ba\u03ad\u03c1\u03b1\u03b9\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bc\u03b5\u03c4\u03b1\u03be\u03cd 0 \u03ba\u03b1\u03b9 255)"
34
- },
35
- "description": "\u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03c4\u03c1\u03cc\u03c0\u03bf \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2. \u0395\u03ac\u03bd \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 cloud \u03c4\u03b7\u03c2 August \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af, \u03b5\u03bd\u03b4\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03c7\u03c1\u03b5\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03bd\u03b1 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03c4\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 cloud \u03c4\u03b7\u03c2 August \u03b5\u03bd\u03ce \u03b7 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b1\u03c1\u03b9\u03ac \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1 Bluetooth."
24
+ "address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 Bluetooth"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -19,6 +19,13 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Do you want to set up {name} over Bluetooth with address {address}?"
21
21
  },
22
+ "key_slot": {
23
+ "data": {
24
+ "key": "Offline Key (32-byte hex string)",
25
+ "slot": "Offline Key Slot (Integer between 0 and 255)"
26
+ },
27
+ "description": "Enter the key for the {title} lock with address {address}. If you are using the August or Yale cloud integration to obtain the key, you may be able to avoid this manual setup by reloading the August or Yale cloud integration while the lock is in Bluetooth range."
28
+ },
22
29
  "reauth_validate": {
23
30
  "data": {
24
31
  "key": "Offline Key (32-byte hex string)",
@@ -28,11 +35,9 @@
28
35
  },
29
36
  "user": {
30
37
  "data": {
31
- "address": "Bluetooth address",
32
- "key": "Offline Key (32-byte hex string)",
33
- "slot": "Offline Key Slot (Integer between 0 and 255)"
38
+ "address": "Bluetooth address"
34
39
  },
35
- "description": "Check the documentation for how to find the offline key. If you are using the August cloud integration to obtain the key, you may need to reload the August cloud integration while the lock is in Bluetooth range."
40
+ "description": "Select the device you want to set up over Bluetooth."
36
41
  }
37
42
  }
38
43
  },
@@ -19,20 +19,25 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Do you want to set up {name} over Bluetooth with address {address}?"
21
21
  },
22
- "reauth_validate": {
22
+ "key_slot": {
23
23
  "data": {
24
24
  "key": "Offline Key (32-byte hex string)",
25
25
  "slot": "Offline Key Slot (Integer between 0 and 255)"
26
26
  },
27
- "description": "Enter the updated key for the {title} lock with address {address}. If you are using the August cloud integration to obtain the key, you may be able to avoid manual reauthentication by reloading the August cloud integration while the lock is in Bluetooth range."
27
+ "description": "Enter the key for the {title} lock with address {address}. If you are using the August or Yale cloud integration to obtain the key, you may be able to avoid this manual setup by reloading the August or Yale cloud integration while the lock is in Bluetooth range."
28
28
  },
29
- "user": {
29
+ "reauth_validate": {
30
30
  "data": {
31
- "address": "Bluetooth address",
32
31
  "key": "Offline Key (32-byte hex string)",
33
32
  "slot": "Offline Key Slot (Integer between 0 and 255)"
34
33
  },
35
- "description": "Check the documentation for how to find the offline key. If you are using the August cloud integration to obtain the key, you may need to reload the August cloud integration while the lock is in Bluetooth range."
34
+ "description": "Enter the updated key for the {title} lock with address {address}. If you are using the August or Yale cloud integration to obtain the key, you may be able to avoid manual re-authentication by reloading the August or Yale cloud integration while the lock is in Bluetooth range."
35
+ },
36
+ "user": {
37
+ "data": {
38
+ "address": "Bluetooth address"
39
+ },
40
+ "description": "Select the device you want to set up over Bluetooth."
36
41
  }
37
42
  }
38
43
  },
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "\u00bfQuieres configurar {name} a trav\u00e9s de Bluetooth con la direcci\u00f3n {address}?"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "Clave sin conexi\u00f3n (cadena hexadecimal de 32 bytes)",
25
- "slot": "Ranura de clave sin conexi\u00f3n (entero entre 0 y 255)"
26
- },
27
- "description": "Introduce la clave actualizada para la cerradura {title} con la direcci\u00f3n {address}. Si est\u00e1s utilizando la integraci\u00f3n de la nube de August para obtener la clave, es posible que puedas evitar volver a autenticar manualmente recargando la integraci\u00f3n de la nube de August mientras la cerradura est\u00e1 dentro del alcance Bluetooth."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "Direcci\u00f3n Bluetooth",
32
- "key": "Clave sin conexi\u00f3n (cadena hexadecimal de 32 bytes)",
33
- "slot": "Ranura de clave sin conexi\u00f3n (entero entre 0 y 255)"
34
- },
35
- "description": "Consulta la documentaci\u00f3n para saber c\u00f3mo encontrar la clave sin conexi\u00f3n. Si est\u00e1s utilizando la integraci\u00f3n de la nube de August para obtener la clave, es posible que debas volver a cargar la integraci\u00f3n mientras la cerradura est\u00e1 dentro del alcance Bluetooth."
24
+ "address": "Direcci\u00f3n Bluetooth"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Kas seadistada {name} Bluetoothi kaudu aadressiga {address} ?"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "V\u00f5rgu\u00fchenduseta v\u00f5ti (32-baidine kuueteistk\u00fcmnebaidine string)",
25
- "slot": "V\u00f5rgu\u00fchenduseta v\u00f5tmepesa (t\u00e4isarv vahemikus 0 kuni 255)"
26
- },
27
- "description": "Sisestag aadressiga {address} luku {title} v\u00e4rskendatud v\u00f5ti. Kui kasutad v\u00f5tme hankimiseks Augusti pilveintegratsiooni, saad v\u00f5ib-olla v\u00e4ltida k\u00e4sitsi taasautentimist, laadides uuesti Augusti pilveintegratsiooni kui lukk on Bluetoothi levialas."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "Bluetoothi aadress",
32
- "key": "V\u00f5rgu\u00fchenduseta v\u00f5ti (32-baidine kuueteistk\u00fcmnebaidine string)",
33
- "slot": "V\u00f5rgu\u00fchenduseta v\u00f5tmepesa (t\u00e4isarv vahemikus 0 kuni 255)"
34
- },
35
- "description": "V\u00f5rgu\u00fchenduseta v\u00f5tme leidmise kohta vaata dokumentatsiooni. Kui kasutad v\u00f5tme hankimiseks Augusti pilveintegratsiooni, pead v\u00f5ib-olla uuesti laadima Augusti pilveintegratsiooni, kui lukk on Bluetoothi levialas."
24
+ "address": "Bluetoothi aadress"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -19,20 +19,10 @@
19
19
  "integration_discovery_confirm": {
20
20
  "description": "Haluatko m\u00e4\u00e4ritt\u00e4\u00e4 {name}:n Bluetoothin kautta, osoitteella {address}?"
21
21
  },
22
- "reauth_validate": {
23
- "data": {
24
- "key": "Offline-avain (32-tavuinen heksadesimaalimerkkijono)",
25
- "slot": "Offline-avainpaikka (kokonaisluku v\u00e4lill\u00e4 0\u2013255)"
26
- },
27
- "description": "Anna {title}-lukon p\u00e4ivitetty avain, jossa on osoite {address}. Jos k\u00e4yt\u00e4t August cloud -integraatiota avaimen hankkimiseen, voit ehk\u00e4 v\u00e4ltt\u00e4\u00e4 manuaalisen uudelleentodennuksen lataamalla August cloud -integraation uudelleen, kun lukko on Bluetooth-kantaman sis\u00e4ll\u00e4."
28
- },
29
22
  "user": {
30
23
  "data": {
31
- "address": "Bluetooth-osoite",
32
- "key": "Offline-avain (32-tavuinen heksadesimaalimerkkijono)",
33
- "slot": "Offline-avainpaikka (kokonaisluku v\u00e4lill\u00e4 0\u2013255)"
34
- },
35
- "description": "Tarkista dokumentaatiosta, miten offline-avain l\u00f6ytyy. Jos k\u00e4yt\u00e4t avaimen hankkimiseen August-pilvi-integraatiota, sinun on ehk\u00e4 ladattava August-pilvi-integraatio uudelleen, kun lukko on Bluetooth-alueella."
24
+ "address": "Bluetooth-osoite"
25
+ }
36
26
  }
37
27
  }
38
28
  },
@@ -18,8 +18,7 @@
18
18
  "user": {
19
19
  "data": {
20
20
  "address": "Adresse Bluetooth"
21
- },
22
- "description": "Consultez la documentation pour savoir comment trouver la cl\u00e9 hors connexion. Si vous utilisez l\u2019int\u00e9gration cloud August pour obtenir la cl\u00e9, vous devrez peut-\u00eatre recharger l\u2019int\u00e9gration cloud August lorsque le verrou est \u00e0 port\u00e9e Bluetooth."
21
+ }
23
22
  }
24
23
  }
25
24
  },