homeassistant 2025.10.0b2__py3-none-any.whl → 2025.10.0b5__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.

Potentially problematic release.


This version of homeassistant might be problematic. Click here for more details.

Files changed (554) hide show
  1. homeassistant/components/accuweather/translations/bg.json +7 -1
  2. homeassistant/components/accuweather/translations/ga.json +16 -1
  3. homeassistant/components/adax/translations/fy.json +11 -0
  4. homeassistant/components/adguard/translations/zh-Hant.json +1 -1
  5. homeassistant/components/airos/__init__.py +37 -2
  6. homeassistant/components/airos/config_flow.py +24 -3
  7. homeassistant/components/airos/const.py +5 -0
  8. homeassistant/components/airos/entity.py +8 -3
  9. homeassistant/components/airos/strings.json +12 -0
  10. homeassistant/components/airos/translations/bg.json +8 -0
  11. homeassistant/components/airos/translations/ca.json +8 -0
  12. homeassistant/components/airos/translations/cs.json +12 -0
  13. homeassistant/components/airos/translations/de.json +12 -0
  14. homeassistant/components/airos/translations/en-GB.json +12 -0
  15. homeassistant/components/airos/translations/en.json +12 -0
  16. homeassistant/components/airos/translations/es.json +12 -0
  17. homeassistant/components/airos/translations/et.json +12 -0
  18. homeassistant/components/airos/translations/fr.json +18 -0
  19. homeassistant/components/airos/translations/fy.json +11 -0
  20. homeassistant/components/airos/translations/lt.json +12 -0
  21. homeassistant/components/airos/translations/lv.json +1 -0
  22. homeassistant/components/airos/translations/pt.json +12 -0
  23. homeassistant/components/airos/translations/sk.json +12 -0
  24. homeassistant/components/airos/translations/sv.json +40 -1
  25. homeassistant/components/airos/translations/zh-Hans.json +12 -0
  26. homeassistant/components/airos/translations/zh-Hant.json +12 -0
  27. homeassistant/components/airtouch5/translations/da.json +9 -0
  28. homeassistant/components/airzone/translations/es.json +10 -0
  29. homeassistant/components/airzone/translations/et.json +10 -0
  30. homeassistant/components/airzone/translations/fr.json +9 -0
  31. homeassistant/components/airzone/translations/ga.json +10 -0
  32. homeassistant/components/airzone/translations/lt.json +10 -0
  33. homeassistant/components/airzone/translations/pt.json +10 -0
  34. homeassistant/components/alexa_devices/binary_sensor.py +0 -7
  35. homeassistant/components/alexa_devices/manifest.json +1 -1
  36. homeassistant/components/alexa_devices/translations/fy.json +16 -0
  37. homeassistant/components/analytics/analytics.py +1 -1
  38. homeassistant/components/assist_pipeline/pipeline.py +43 -18
  39. homeassistant/components/assist_pipeline/translations/sv.json +1 -0
  40. homeassistant/components/blue_current/translations/bg.json +18 -0
  41. homeassistant/components/blue_current/translations/es.json +44 -0
  42. homeassistant/components/blue_current/translations/et.json +44 -0
  43. homeassistant/components/blue_current/translations/fr.json +9 -0
  44. homeassistant/components/blue_current/translations/ga.json +44 -0
  45. homeassistant/components/blue_current/translations/lt.json +44 -0
  46. homeassistant/components/blue_current/translations/pt.json +44 -0
  47. homeassistant/components/bsblan/translations/fy.json +16 -0
  48. homeassistant/components/cast/translations/pl.json +14 -0
  49. homeassistant/components/cloud/translations/sk.json +1 -1
  50. homeassistant/components/comelit/config_flow.py +8 -4
  51. homeassistant/components/compit/translations/bg.json +25 -0
  52. homeassistant/components/compit/translations/fy.json +16 -0
  53. homeassistant/components/cover/translations/da.json +20 -1
  54. homeassistant/components/cync/translations/bg.json +20 -0
  55. homeassistant/components/cync/translations/ca.json +12 -0
  56. homeassistant/components/cync/translations/es.json +32 -0
  57. homeassistant/components/cync/translations/et.json +32 -0
  58. homeassistant/components/cync/translations/fr.json +32 -0
  59. homeassistant/components/cync/translations/fy.json +11 -0
  60. homeassistant/components/cync/translations/ga.json +32 -0
  61. homeassistant/components/cync/translations/lt.json +32 -0
  62. homeassistant/components/cync/translations/pt.json +32 -0
  63. homeassistant/components/cync/translations/ru.json +32 -0
  64. homeassistant/components/deconz/translations/zh-Hant.json +1 -1
  65. homeassistant/components/deluge/translations/bg.json +6 -0
  66. homeassistant/components/devolo_home_control/translations/fy.json +11 -0
  67. homeassistant/components/devolo_home_network/translations/fy.json +10 -0
  68. homeassistant/components/dnsip/sensor.py +17 -4
  69. homeassistant/components/ebusd/__init__.py +5 -1
  70. homeassistant/components/ecovacs/image.py +3 -1
  71. homeassistant/components/ecovacs/manifest.json +1 -1
  72. homeassistant/components/ecovacs/translations/es.json +7 -1
  73. homeassistant/components/ecovacs/translations/et.json +7 -1
  74. homeassistant/components/ecovacs/translations/ga.json +6 -1
  75. homeassistant/components/ecovacs/translations/pt.json +4 -0
  76. homeassistant/components/ecovacs/translations/ru.json +4 -0
  77. homeassistant/components/edl21/translations/de.json +1 -1
  78. homeassistant/components/ekeybionyx/translations/bg.json +26 -0
  79. homeassistant/components/ekeybionyx/translations/es.json +66 -0
  80. homeassistant/components/ekeybionyx/translations/et.json +66 -0
  81. homeassistant/components/ekeybionyx/translations/fr.json +32 -0
  82. homeassistant/components/ekeybionyx/translations/ga.json +66 -0
  83. homeassistant/components/ekeybionyx/translations/lt.json +65 -0
  84. homeassistant/components/ekeybionyx/translations/pt.json +66 -0
  85. homeassistant/components/elkm1/translations/fy.json +11 -0
  86. homeassistant/components/elvia/translations/de.json +3 -3
  87. homeassistant/components/ephember/climate.py +12 -2
  88. homeassistant/components/esphome/manager.py +1 -1
  89. homeassistant/components/esphome/manifest.json +1 -1
  90. homeassistant/components/esphome/translations/pl.json +4 -2
  91. homeassistant/components/esphome/translations/sv.json +1 -1
  92. homeassistant/components/ezviz/entity.py +12 -6
  93. homeassistant/components/file/translations/bg.json +17 -0
  94. homeassistant/components/file/translations/es.json +31 -0
  95. homeassistant/components/file/translations/et.json +31 -0
  96. homeassistant/components/file/translations/ga.json +31 -0
  97. homeassistant/components/file/translations/pt.json +31 -0
  98. homeassistant/components/file/translations/ru.json +31 -0
  99. homeassistant/components/fritz/diagnostics.py +3 -0
  100. homeassistant/components/frontend/manifest.json +1 -1
  101. homeassistant/components/geniushub/entity.py +4 -4
  102. homeassistant/components/geocaching/translations/bg.json +13 -0
  103. homeassistant/components/google_generative_ai_conversation/translations/ga.json +6 -0
  104. homeassistant/components/habitica/translations/ga.json +24 -0
  105. homeassistant/components/hassio/translations/bg.json +3 -0
  106. homeassistant/components/hassio/translations/es.json +4 -0
  107. homeassistant/components/hassio/translations/et.json +4 -0
  108. homeassistant/components/hassio/translations/ga.json +4 -0
  109. homeassistant/components/hassio/translations/pt.json +4 -0
  110. homeassistant/components/hassio/translations/ru.json +4 -0
  111. homeassistant/components/here_travel_time/translations/es.json +6 -0
  112. homeassistant/components/here_travel_time/translations/et.json +6 -0
  113. homeassistant/components/here_travel_time/translations/ga.json +6 -0
  114. homeassistant/components/here_travel_time/translations/pt.json +6 -0
  115. homeassistant/components/homeassistant_connect_zbt2/strings.json +22 -12
  116. homeassistant/components/homeassistant_connect_zbt2/translations/bg.json +64 -6
  117. homeassistant/components/homeassistant_connect_zbt2/translations/ca.json +2 -8
  118. homeassistant/components/homeassistant_connect_zbt2/translations/cs.json +22 -12
  119. homeassistant/components/homeassistant_connect_zbt2/translations/de.json +22 -12
  120. homeassistant/components/homeassistant_connect_zbt2/translations/el.json +2 -8
  121. homeassistant/components/homeassistant_connect_zbt2/translations/en-GB.json +22 -12
  122. homeassistant/components/homeassistant_connect_zbt2/translations/en.json +22 -12
  123. homeassistant/components/homeassistant_connect_zbt2/translations/es.json +22 -12
  124. homeassistant/components/homeassistant_connect_zbt2/translations/et.json +22 -12
  125. homeassistant/components/homeassistant_connect_zbt2/translations/fr.json +2 -8
  126. homeassistant/components/homeassistant_connect_zbt2/translations/ga.json +2 -8
  127. homeassistant/components/homeassistant_connect_zbt2/translations/he.json +2 -8
  128. homeassistant/components/homeassistant_connect_zbt2/translations/lt.json +2 -8
  129. homeassistant/components/homeassistant_connect_zbt2/translations/nl.json +2 -4
  130. homeassistant/components/homeassistant_connect_zbt2/translations/pl.json +1 -2
  131. homeassistant/components/homeassistant_connect_zbt2/translations/pt.json +22 -12
  132. homeassistant/components/homeassistant_connect_zbt2/translations/ru.json +1 -4
  133. homeassistant/components/homeassistant_connect_zbt2/translations/sk.json +6 -12
  134. homeassistant/components/homeassistant_connect_zbt2/translations/zh-Hans.json +2 -8
  135. homeassistant/components/homeassistant_connect_zbt2/translations/zh-Hant.json +22 -12
  136. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +11 -0
  137. homeassistant/components/homeassistant_hardware/strings.json +11 -5
  138. homeassistant/components/homeassistant_hardware/translations/bg.json +40 -0
  139. homeassistant/components/homeassistant_hardware/translations/ca.json +0 -8
  140. homeassistant/components/homeassistant_hardware/translations/cs.json +11 -5
  141. homeassistant/components/homeassistant_hardware/translations/de.json +11 -5
  142. homeassistant/components/homeassistant_hardware/translations/el.json +0 -11
  143. homeassistant/components/homeassistant_hardware/translations/en-GB.json +11 -5
  144. homeassistant/components/homeassistant_hardware/translations/en.json +11 -5
  145. homeassistant/components/homeassistant_hardware/translations/es.json +11 -5
  146. homeassistant/components/homeassistant_hardware/translations/et.json +11 -5
  147. homeassistant/components/homeassistant_hardware/translations/fr.json +0 -11
  148. homeassistant/components/homeassistant_hardware/translations/ga.json +0 -11
  149. homeassistant/components/homeassistant_hardware/translations/he.json +0 -11
  150. homeassistant/components/homeassistant_hardware/translations/hu.json +0 -11
  151. homeassistant/components/homeassistant_hardware/translations/id.json +0 -8
  152. homeassistant/components/homeassistant_hardware/translations/it.json +0 -3
  153. homeassistant/components/homeassistant_hardware/translations/ja.json +0 -11
  154. homeassistant/components/homeassistant_hardware/translations/ko.json +0 -8
  155. homeassistant/components/homeassistant_hardware/translations/lt.json +0 -11
  156. homeassistant/components/homeassistant_hardware/translations/mk.json +0 -3
  157. homeassistant/components/homeassistant_hardware/translations/nl.json +0 -3
  158. homeassistant/components/homeassistant_hardware/translations/pt.json +11 -5
  159. homeassistant/components/homeassistant_hardware/translations/ru.json +0 -11
  160. homeassistant/components/homeassistant_hardware/translations/sk.json +10 -7
  161. homeassistant/components/homeassistant_hardware/translations/sv.json +0 -11
  162. homeassistant/components/homeassistant_hardware/translations/tr.json +0 -8
  163. homeassistant/components/homeassistant_hardware/translations/zh-Hans.json +0 -11
  164. homeassistant/components/homeassistant_hardware/translations/zh-Hant.json +11 -5
  165. homeassistant/components/homeassistant_sky_connect/strings.json +22 -12
  166. homeassistant/components/homeassistant_sky_connect/translations/bg.json +72 -4
  167. homeassistant/components/homeassistant_sky_connect/translations/ca.json +2 -8
  168. homeassistant/components/homeassistant_sky_connect/translations/cs.json +22 -12
  169. homeassistant/components/homeassistant_sky_connect/translations/de.json +22 -12
  170. homeassistant/components/homeassistant_sky_connect/translations/el.json +2 -8
  171. homeassistant/components/homeassistant_sky_connect/translations/en-GB.json +22 -12
  172. homeassistant/components/homeassistant_sky_connect/translations/en.json +22 -12
  173. homeassistant/components/homeassistant_sky_connect/translations/es.json +22 -12
  174. homeassistant/components/homeassistant_sky_connect/translations/et.json +22 -12
  175. homeassistant/components/homeassistant_sky_connect/translations/fi.json +2 -4
  176. homeassistant/components/homeassistant_sky_connect/translations/fr.json +2 -8
  177. homeassistant/components/homeassistant_sky_connect/translations/ga.json +2 -8
  178. homeassistant/components/homeassistant_sky_connect/translations/he.json +2 -8
  179. homeassistant/components/homeassistant_sky_connect/translations/hu.json +2 -8
  180. homeassistant/components/homeassistant_sky_connect/translations/id.json +2 -8
  181. homeassistant/components/homeassistant_sky_connect/translations/it.json +2 -4
  182. homeassistant/components/homeassistant_sky_connect/translations/ja.json +2 -8
  183. homeassistant/components/homeassistant_sky_connect/translations/ko.json +2 -12
  184. homeassistant/components/homeassistant_sky_connect/translations/lt.json +2 -8
  185. homeassistant/components/homeassistant_sky_connect/translations/nl.json +2 -4
  186. homeassistant/components/homeassistant_sky_connect/translations/pl.json +2 -4
  187. homeassistant/components/homeassistant_sky_connect/translations/pt.json +22 -12
  188. homeassistant/components/homeassistant_sky_connect/translations/ru.json +2 -8
  189. homeassistant/components/homeassistant_sky_connect/translations/sk.json +6 -12
  190. homeassistant/components/homeassistant_sky_connect/translations/sv.json +2 -8
  191. homeassistant/components/homeassistant_sky_connect/translations/tr.json +2 -8
  192. homeassistant/components/homeassistant_sky_connect/translations/zh-Hans.json +2 -8
  193. homeassistant/components/homeassistant_sky_connect/translations/zh-Hant.json +22 -12
  194. homeassistant/components/homeassistant_yellow/strings.json +11 -6
  195. homeassistant/components/homeassistant_yellow/translations/bg.json +32 -3
  196. homeassistant/components/homeassistant_yellow/translations/ca.json +1 -4
  197. homeassistant/components/homeassistant_yellow/translations/cs.json +11 -6
  198. homeassistant/components/homeassistant_yellow/translations/de.json +11 -6
  199. homeassistant/components/homeassistant_yellow/translations/el.json +1 -4
  200. homeassistant/components/homeassistant_yellow/translations/en-GB.json +11 -6
  201. homeassistant/components/homeassistant_yellow/translations/en.json +11 -6
  202. homeassistant/components/homeassistant_yellow/translations/es.json +11 -6
  203. homeassistant/components/homeassistant_yellow/translations/et.json +11 -6
  204. homeassistant/components/homeassistant_yellow/translations/fr.json +1 -4
  205. homeassistant/components/homeassistant_yellow/translations/ga.json +1 -4
  206. homeassistant/components/homeassistant_yellow/translations/he.json +1 -4
  207. homeassistant/components/homeassistant_yellow/translations/hu.json +1 -4
  208. homeassistant/components/homeassistant_yellow/translations/id.json +1 -4
  209. homeassistant/components/homeassistant_yellow/translations/it.json +1 -2
  210. homeassistant/components/homeassistant_yellow/translations/ja.json +1 -4
  211. homeassistant/components/homeassistant_yellow/translations/ko.json +0 -2
  212. homeassistant/components/homeassistant_yellow/translations/lt.json +1 -4
  213. homeassistant/components/homeassistant_yellow/translations/nl.json +1 -2
  214. homeassistant/components/homeassistant_yellow/translations/pt.json +11 -6
  215. homeassistant/components/homeassistant_yellow/translations/ru.json +1 -4
  216. homeassistant/components/homeassistant_yellow/translations/sk.json +3 -6
  217. homeassistant/components/homeassistant_yellow/translations/sv.json +1 -4
  218. homeassistant/components/homeassistant_yellow/translations/tr.json +1 -4
  219. homeassistant/components/homeassistant_yellow/translations/zh-Hans.json +1 -4
  220. homeassistant/components/homeassistant_yellow/translations/zh-Hant.json +11 -6
  221. homeassistant/components/homee/translations/fy.json +14 -0
  222. homeassistant/components/hue/v2/binary_sensor.py +5 -1
  223. homeassistant/components/husqvarna_automower/translations/da.json +16 -0
  224. homeassistant/components/imeon_inverter/translations/fy.json +11 -0
  225. homeassistant/components/improv_ble/translations/fy.json +7 -0
  226. homeassistant/components/irm_kmi/translations/bg.json +49 -0
  227. homeassistant/components/irm_kmi/translations/ga.json +50 -0
  228. homeassistant/components/ista_ecotrend/translations/fy.json +11 -0
  229. homeassistant/components/knx/translations/fr.json +3 -0
  230. homeassistant/components/konnected/__init__.py +14 -1
  231. homeassistant/components/konnected/manifest.json +1 -1
  232. homeassistant/components/konnected/strings.json +6 -0
  233. homeassistant/components/konnected/translations/cs.json +6 -0
  234. homeassistant/components/konnected/translations/de.json +6 -0
  235. homeassistant/components/konnected/translations/en-GB.json +6 -0
  236. homeassistant/components/konnected/translations/en.json +6 -0
  237. homeassistant/components/konnected/translations/es.json +6 -0
  238. homeassistant/components/konnected/translations/et.json +6 -0
  239. homeassistant/components/konnected/translations/pt.json +6 -0
  240. homeassistant/components/konnected/translations/sk.json +6 -0
  241. homeassistant/components/konnected/translations/zh-Hant.json +6 -0
  242. homeassistant/components/lamarzocco/__init__.py +1 -1
  243. homeassistant/components/lamarzocco/coordinator.py +10 -2
  244. homeassistant/components/lamarzocco/manifest.json +1 -1
  245. homeassistant/components/letpot/translations/bg.json +5 -0
  246. homeassistant/components/letpot/translations/es.json +10 -0
  247. homeassistant/components/letpot/translations/et.json +10 -0
  248. homeassistant/components/letpot/translations/fr.json +10 -0
  249. homeassistant/components/letpot/translations/ga.json +9 -0
  250. homeassistant/components/letpot/translations/lt.json +10 -0
  251. homeassistant/components/letpot/translations/pt.json +10 -0
  252. homeassistant/components/lg_thinq/translations/bg.json +9 -0
  253. homeassistant/components/lg_thinq/translations/ga.json +9 -0
  254. homeassistant/components/litterrobot/translations/bg.json +5 -0
  255. homeassistant/components/logbook/translations/es.json +6 -1
  256. homeassistant/components/logbook/translations/et.json +6 -1
  257. homeassistant/components/logbook/translations/pl.json +3 -1
  258. homeassistant/components/logbook/translations/pt.json +6 -1
  259. homeassistant/components/logbook/translations/ru.json +6 -1
  260. homeassistant/components/lovelace/translations/pl.json +6 -1
  261. homeassistant/components/mastodon/translations/bg.json +3 -0
  262. homeassistant/components/mastodon/translations/ga.json +4 -0
  263. homeassistant/components/matter/translations/bg.json +3 -0
  264. homeassistant/components/matter/translations/da.json +7 -0
  265. homeassistant/components/matter/translations/es.json +3 -0
  266. homeassistant/components/matter/translations/et.json +3 -0
  267. homeassistant/components/matter/translations/ga.json +3 -0
  268. homeassistant/components/matter/translations/pt.json +3 -0
  269. homeassistant/components/matter/translations/ru.json +3 -0
  270. homeassistant/components/mcp/strings.json +20 -1
  271. homeassistant/components/mcp/translations/bg.json +1 -0
  272. homeassistant/components/mcp/translations/cs.json +20 -1
  273. homeassistant/components/mcp/translations/de.json +20 -1
  274. homeassistant/components/mcp/translations/en-GB.json +20 -1
  275. homeassistant/components/mcp/translations/en.json +20 -1
  276. homeassistant/components/mcp/translations/es.json +20 -1
  277. homeassistant/components/mcp/translations/et.json +20 -1
  278. homeassistant/components/mcp/translations/lt.json +20 -1
  279. homeassistant/components/mcp/translations/pt.json +20 -1
  280. homeassistant/components/mcp/translations/sk.json +20 -1
  281. homeassistant/components/mcp/translations/zh-Hant.json +20 -1
  282. homeassistant/components/miele/translations/ga.json +1 -0
  283. homeassistant/components/motioneye/translations/zh-Hant.json +1 -1
  284. homeassistant/components/mqtt/strings.json +2 -0
  285. homeassistant/components/mqtt/translations/bg.json +1 -0
  286. homeassistant/components/mqtt/translations/cs.json +2 -0
  287. homeassistant/components/mqtt/translations/da.json +19 -0
  288. homeassistant/components/mqtt/translations/de.json +2 -0
  289. homeassistant/components/mqtt/translations/en-GB.json +2 -0
  290. homeassistant/components/mqtt/translations/en.json +2 -0
  291. homeassistant/components/mqtt/translations/es.json +21 -0
  292. homeassistant/components/mqtt/translations/et.json +21 -0
  293. homeassistant/components/mqtt/translations/fy.json +9 -0
  294. homeassistant/components/mqtt/translations/ga.json +26 -1
  295. homeassistant/components/mqtt/translations/pt.json +21 -0
  296. homeassistant/components/mqtt/translations/ru.json +19 -0
  297. homeassistant/components/mqtt/translations/zh-Hant.json +3 -1
  298. homeassistant/components/music_assistant/translations/fr.json +7 -0
  299. homeassistant/components/nina/strings.json +2 -2
  300. homeassistant/components/nina/translations/ca.json +0 -2
  301. homeassistant/components/nina/translations/cs.json +3 -3
  302. homeassistant/components/nina/translations/de.json +3 -3
  303. homeassistant/components/nina/translations/el.json +0 -1
  304. homeassistant/components/nina/translations/en-GB.json +3 -3
  305. homeassistant/components/nina/translations/en.json +3 -3
  306. homeassistant/components/nina/translations/es.json +3 -3
  307. homeassistant/components/nina/translations/et.json +2 -2
  308. homeassistant/components/nina/translations/fi.json +0 -2
  309. homeassistant/components/nina/translations/ga.json +0 -2
  310. homeassistant/components/nina/translations/hu.json +0 -2
  311. homeassistant/components/nina/translations/id.json +0 -1
  312. homeassistant/components/nina/translations/it.json +0 -2
  313. homeassistant/components/nina/translations/ja.json +0 -2
  314. homeassistant/components/nina/translations/ko.json +0 -2
  315. homeassistant/components/nina/translations/lt.json +3 -3
  316. homeassistant/components/nina/translations/nl.json +0 -2
  317. homeassistant/components/nina/translations/pt-BR.json +0 -1
  318. homeassistant/components/nina/translations/pt.json +3 -3
  319. homeassistant/components/nina/translations/ro.json +0 -1
  320. homeassistant/components/nina/translations/ru.json +0 -2
  321. homeassistant/components/nina/translations/sk.json +3 -3
  322. homeassistant/components/nina/translations/sv.json +0 -2
  323. homeassistant/components/nina/translations/tr.json +0 -2
  324. homeassistant/components/nina/translations/uk.json +0 -1
  325. homeassistant/components/nina/translations/zh-Hans.json +3 -3
  326. homeassistant/components/nina/translations/zh-Hant.json +3 -3
  327. homeassistant/components/nordpool/translations/bg.json +8 -0
  328. homeassistant/components/nordpool/translations/ga.json +6 -0
  329. homeassistant/components/ntfy/translations/fy.json +30 -0
  330. homeassistant/components/number/const.py +2 -5
  331. homeassistant/components/number/strings.json +3 -0
  332. homeassistant/components/number/translations/cs.json +3 -0
  333. homeassistant/components/number/translations/de.json +3 -0
  334. homeassistant/components/number/translations/en-GB.json +3 -0
  335. homeassistant/components/number/translations/en.json +3 -0
  336. homeassistant/components/number/translations/es.json +3 -0
  337. homeassistant/components/number/translations/et.json +3 -0
  338. homeassistant/components/number/translations/pt.json +3 -0
  339. homeassistant/components/number/translations/zh-Hant.json +3 -0
  340. homeassistant/components/ohme/translations/fy.json +11 -0
  341. homeassistant/components/opower/translations/fy.json +5 -0
  342. homeassistant/components/pooldose/translations/bg.json +9 -0
  343. homeassistant/components/pooldose/translations/ga.json +8 -1
  344. homeassistant/components/portainer/__init__.py +25 -5
  345. homeassistant/components/portainer/config_flow.py +15 -10
  346. homeassistant/components/portainer/coordinator.py +2 -2
  347. homeassistant/components/portainer/strings.json +7 -5
  348. homeassistant/components/portainer/translations/bg.json +2 -2
  349. homeassistant/components/portainer/translations/ca.json +3 -2
  350. homeassistant/components/portainer/translations/cs.json +7 -5
  351. homeassistant/components/portainer/translations/de.json +7 -5
  352. homeassistant/components/portainer/translations/el.json +0 -8
  353. homeassistant/components/portainer/translations/en-GB.json +7 -5
  354. homeassistant/components/portainer/translations/en.json +7 -5
  355. homeassistant/components/portainer/translations/es.json +7 -5
  356. homeassistant/components/portainer/translations/et.json +7 -5
  357. homeassistant/components/portainer/translations/fr.json +18 -0
  358. homeassistant/components/portainer/translations/ga.json +0 -13
  359. homeassistant/components/portainer/translations/he.json +0 -8
  360. homeassistant/components/portainer/translations/lt.json +7 -5
  361. homeassistant/components/portainer/translations/nl.json +0 -8
  362. homeassistant/components/portainer/translations/pt.json +7 -5
  363. homeassistant/components/portainer/translations/ru.json +0 -13
  364. homeassistant/components/portainer/translations/sk.json +7 -5
  365. homeassistant/components/portainer/translations/sl.json +0 -13
  366. homeassistant/components/portainer/translations/zh-Hans.json +7 -5
  367. homeassistant/components/portainer/translations/zh-Hant.json +7 -5
  368. homeassistant/components/profiler/translations/es.json +4 -0
  369. homeassistant/components/profiler/translations/et.json +4 -0
  370. homeassistant/components/profiler/translations/ga.json +4 -0
  371. homeassistant/components/profiler/translations/pt.json +4 -0
  372. homeassistant/components/pyload/translations/zh-Hant.json +1 -1
  373. homeassistant/components/random/strings.json +1 -0
  374. homeassistant/components/random/translations/cs.json +1 -0
  375. homeassistant/components/random/translations/de.json +1 -0
  376. homeassistant/components/random/translations/en-GB.json +1 -0
  377. homeassistant/components/random/translations/en.json +1 -0
  378. homeassistant/components/random/translations/es.json +1 -0
  379. homeassistant/components/random/translations/et.json +1 -0
  380. homeassistant/components/random/translations/pt.json +1 -0
  381. homeassistant/components/random/translations/zh-Hant.json +1 -0
  382. homeassistant/components/recorder/statistics.py +0 -5
  383. homeassistant/components/recorder/websocket_api.py +0 -4
  384. homeassistant/components/rehlko/translations/fy.json +16 -0
  385. homeassistant/components/reolink/manifest.json +1 -1
  386. homeassistant/components/route_b_smart_meter/translations/bg.json +24 -0
  387. homeassistant/components/route_b_smart_meter/translations/es.json +42 -0
  388. homeassistant/components/route_b_smart_meter/translations/et.json +42 -0
  389. homeassistant/components/route_b_smart_meter/translations/fr.json +36 -0
  390. homeassistant/components/route_b_smart_meter/translations/fy.json +14 -0
  391. homeassistant/components/route_b_smart_meter/translations/ga.json +42 -0
  392. homeassistant/components/route_b_smart_meter/translations/lt.json +42 -0
  393. homeassistant/components/route_b_smart_meter/translations/pt.json +42 -0
  394. homeassistant/components/russound_rio/manifest.json +1 -1
  395. homeassistant/components/satel_integra/__init__.py +6 -0
  396. homeassistant/components/satel_integra/translations/bg.json +102 -0
  397. homeassistant/components/satel_integra/translations/et.json +1 -0
  398. homeassistant/components/scrape/strings.json +2 -0
  399. homeassistant/components/scrape/translations/cs.json +2 -0
  400. homeassistant/components/scrape/translations/de.json +2 -0
  401. homeassistant/components/scrape/translations/en-GB.json +2 -0
  402. homeassistant/components/scrape/translations/en.json +2 -0
  403. homeassistant/components/scrape/translations/es.json +2 -0
  404. homeassistant/components/scrape/translations/et.json +2 -0
  405. homeassistant/components/scrape/translations/pt.json +2 -0
  406. homeassistant/components/scrape/translations/zh-Hant.json +2 -0
  407. homeassistant/components/sensibo/translations/pl.json +1 -0
  408. homeassistant/components/sensor/const.py +2 -7
  409. homeassistant/components/sensor/strings.json +3 -0
  410. homeassistant/components/sensor/translations/cs.json +3 -0
  411. homeassistant/components/sensor/translations/de.json +3 -0
  412. homeassistant/components/sensor/translations/en-GB.json +3 -0
  413. homeassistant/components/sensor/translations/en.json +3 -0
  414. homeassistant/components/sensor/translations/es.json +3 -0
  415. homeassistant/components/sensor/translations/et.json +3 -0
  416. homeassistant/components/sensor/translations/pt.json +3 -0
  417. homeassistant/components/sensor/translations/sk.json +3 -0
  418. homeassistant/components/sensor/translations/zh-Hant.json +3 -0
  419. homeassistant/components/sensorpush_cloud/translations/fy.json +11 -0
  420. homeassistant/components/shelly/icons.json +3 -0
  421. homeassistant/components/shelly/sensor.py +83 -3
  422. homeassistant/components/shelly/strings.json +12 -0
  423. homeassistant/components/shelly/translations/bg.json +19 -0
  424. homeassistant/components/shelly/translations/cs.json +12 -0
  425. homeassistant/components/shelly/translations/de.json +12 -0
  426. homeassistant/components/shelly/translations/en-GB.json +12 -0
  427. homeassistant/components/shelly/translations/en.json +12 -0
  428. homeassistant/components/shelly/translations/es.json +12 -0
  429. homeassistant/components/shelly/translations/et.json +12 -0
  430. homeassistant/components/shelly/translations/lt.json +12 -0
  431. homeassistant/components/shelly/translations/lv.json +6 -0
  432. homeassistant/components/shelly/translations/pl.json +16 -0
  433. homeassistant/components/shelly/translations/pt.json +12 -0
  434. homeassistant/components/shelly/translations/sk.json +12 -0
  435. homeassistant/components/shelly/translations/zh-Hant.json +12 -0
  436. homeassistant/components/sma/translations/fy.json +16 -0
  437. homeassistant/components/smartthings/translations/es.json +21 -0
  438. homeassistant/components/smartthings/translations/et.json +21 -0
  439. homeassistant/components/smartthings/translations/fr.json +12 -0
  440. homeassistant/components/smartthings/translations/ga.json +15 -0
  441. homeassistant/components/smartthings/translations/lt.json +21 -0
  442. homeassistant/components/smartthings/translations/pt.json +21 -0
  443. homeassistant/components/snoo/translations/fy.json +9 -0
  444. homeassistant/components/sql/strings.json +1 -0
  445. homeassistant/components/sql/translations/cs.json +1 -0
  446. homeassistant/components/sql/translations/de.json +1 -0
  447. homeassistant/components/sql/translations/en-GB.json +1 -0
  448. homeassistant/components/sql/translations/en.json +1 -0
  449. homeassistant/components/sql/translations/es.json +1 -0
  450. homeassistant/components/sql/translations/et.json +1 -0
  451. homeassistant/components/sql/translations/pt.json +1 -0
  452. homeassistant/components/sql/translations/zh-Hant.json +1 -0
  453. homeassistant/components/switch_as_x/translations/da.json +7 -0
  454. homeassistant/components/switchbot/translations/fy.json +7 -0
  455. homeassistant/components/template/strings.json +1 -0
  456. homeassistant/components/template/translations/cs.json +1 -0
  457. homeassistant/components/template/translations/da.json +17 -0
  458. homeassistant/components/template/translations/de.json +1 -0
  459. homeassistant/components/template/translations/en-GB.json +1 -0
  460. homeassistant/components/template/translations/en.json +1 -0
  461. homeassistant/components/template/translations/es.json +1 -0
  462. homeassistant/components/template/translations/et.json +1 -0
  463. homeassistant/components/template/translations/mk.json +9 -0
  464. homeassistant/components/template/translations/pt.json +1 -0
  465. homeassistant/components/template/translations/zh-Hant.json +1 -0
  466. homeassistant/components/thread/config_flow.py +11 -3
  467. homeassistant/components/thread/manifest.json +1 -0
  468. homeassistant/components/togrill/coordinator.py +24 -6
  469. homeassistant/components/tolo/translations/bg.json +2 -1
  470. homeassistant/components/tolo/translations/es.json +2 -1
  471. homeassistant/components/tolo/translations/ga.json +2 -1
  472. homeassistant/components/traccar_server/translations/fy.json +9 -0
  473. homeassistant/components/tuya/translations/da.json +8 -0
  474. homeassistant/components/tuya/translations/es.json +9 -0
  475. homeassistant/components/tuya/translations/et.json +9 -0
  476. homeassistant/components/tuya/translations/ga.json +9 -0
  477. homeassistant/components/tuya/translations/pt.json +9 -0
  478. homeassistant/components/uptime_kuma/translations/zh-Hant.json +1 -1
  479. homeassistant/components/usage_prediction/translations/et.json +3 -0
  480. homeassistant/components/valve/translations/da.json +1 -0
  481. homeassistant/components/valve/translations/pl.json +2 -1
  482. homeassistant/components/velbus/translations/fy.json +11 -0
  483. homeassistant/components/vesync/binary_sensor.py +1 -1
  484. homeassistant/components/vesync/fan.py +3 -1
  485. homeassistant/components/vesync/translations/fy.json +9 -0
  486. homeassistant/components/vicare/const.py +1 -0
  487. homeassistant/components/victron_remote_monitoring/translations/bg.json +71 -0
  488. homeassistant/components/voip/translations/sv.json +1 -1
  489. homeassistant/components/volvo/sensor.py +12 -6
  490. homeassistant/components/volvooncall/translations/ga.json +18 -1
  491. homeassistant/components/webdav/translations/fy.json +11 -0
  492. homeassistant/components/workday/calendar.py +5 -5
  493. homeassistant/components/workday/config_flow.py +1 -0
  494. homeassistant/components/workday/translations/bg.json +5 -0
  495. homeassistant/components/wyoming/translations/sv.json +1 -1
  496. homeassistant/components/wyoming/translations/zh-Hant.json +1 -1
  497. homeassistant/components/xiaomi_miio/translations/fy.json +7 -0
  498. homeassistant/components/zha/config_flow.py +54 -21
  499. homeassistant/components/zha/manifest.json +1 -1
  500. homeassistant/components/zha/radio_manager.py +4 -0
  501. homeassistant/components/zha/strings.json +9 -9
  502. homeassistant/components/zha/translations/bg.json +55 -7
  503. homeassistant/components/zha/translations/ca.json +0 -7
  504. homeassistant/components/zha/translations/cs.json +10 -10
  505. homeassistant/components/zha/translations/da.json +0 -9
  506. homeassistant/components/zha/translations/de.json +10 -10
  507. homeassistant/components/zha/translations/el.json +0 -9
  508. homeassistant/components/zha/translations/en-GB.json +10 -10
  509. homeassistant/components/zha/translations/en.json +10 -10
  510. homeassistant/components/zha/translations/es.json +87 -9
  511. homeassistant/components/zha/translations/et.json +84 -6
  512. homeassistant/components/zha/translations/fi.json +0 -9
  513. homeassistant/components/zha/translations/fr.json +0 -17
  514. homeassistant/components/zha/translations/ga.json +66 -9
  515. homeassistant/components/zha/translations/gsw.json +0 -7
  516. homeassistant/components/zha/translations/hr.json +0 -4
  517. homeassistant/components/zha/translations/hu.json +0 -9
  518. homeassistant/components/zha/translations/id.json +0 -9
  519. homeassistant/components/zha/translations/it.json +0 -9
  520. homeassistant/components/zha/translations/ja.json +0 -9
  521. homeassistant/components/zha/translations/ko.json +0 -9
  522. homeassistant/components/zha/translations/lt.json +0 -17
  523. homeassistant/components/zha/translations/nb.json +0 -7
  524. homeassistant/components/zha/translations/nl.json +0 -8
  525. homeassistant/components/zha/translations/pl.json +0 -7
  526. homeassistant/components/zha/translations/pt-BR.json +0 -7
  527. homeassistant/components/zha/translations/pt.json +86 -8
  528. homeassistant/components/zha/translations/ro.json +0 -7
  529. homeassistant/components/zha/translations/ru.json +4 -11
  530. homeassistant/components/zha/translations/sk.json +10 -10
  531. homeassistant/components/zha/translations/sl.json +0 -9
  532. homeassistant/components/zha/translations/sv.json +0 -9
  533. homeassistant/components/zha/translations/tr.json +0 -9
  534. homeassistant/components/zha/translations/uk.json +0 -7
  535. homeassistant/components/zha/translations/vi.json +0 -7
  536. homeassistant/components/zha/translations/zh-Hans.json +0 -17
  537. homeassistant/components/zha/translations/zh-Hant.json +10 -10
  538. homeassistant/components/zwave_js/config_flow.py +30 -11
  539. homeassistant/components/zwave_js/translations/es.json +1 -0
  540. homeassistant/components/zwave_js/translations/et.json +1 -0
  541. homeassistant/components/zwave_js/translations/ga.json +1 -0
  542. homeassistant/components/zwave_js/translations/pt.json +1 -0
  543. homeassistant/const.py +1 -1
  544. homeassistant/generated/integrations.json +3 -2
  545. homeassistant/package_constraints.txt +1 -1
  546. homeassistant/util/unit_conversion.py +0 -16
  547. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/METADATA +1 -1
  548. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/RECORD +553 -503
  549. homeassistant/components/homeassistant_sky_connect/translations/hr.json +0 -7
  550. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/WHEEL +0 -0
  551. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/entry_points.txt +0 -0
  552. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/licenses/LICENSE.md +0 -0
  553. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  554. {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b5.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "config": {
3
3
  "abort": {
4
- "already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
4
+ "already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e",
5
+ "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430"
5
6
  },
6
7
  "error": {
7
8
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
8
9
  "invalid_api_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447"
9
10
  },
10
11
  "step": {
12
+ "reauth_confirm": {
13
+ "data": {
14
+ "api_key": "API \u043a\u043b\u044e\u0447"
15
+ }
16
+ },
11
17
  "user": {
12
18
  "data": {
13
19
  "api_key": "API \u043a\u043b\u044e\u0447",
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "config": {
3
3
  "abort": {
4
- "already_configured": "T\u00e1 an su\u00edomh cumraithe cheana f\u00e9in"
4
+ "already_configured": "T\u00e1 an su\u00edomh cumraithe cheana f\u00e9in",
5
+ "reauth_successful": "D'\u00e9irigh leis an athfh\u00edordheimhni\u00fa"
5
6
  },
6
7
  "create_entry": {
7
8
  "default": "N\u00ed bh\u00edonn roinnt braiteoir\u00ed cumasaithe de r\u00e9ir r\u00e9amhshocraithe. Is f\u00e9idir leat iad a chumas\u00fa sa chl\u00e1rlann eintiteas tar \u00e9is chumra\u00edocht an chomhth\u00e1thaithe."
@@ -12,12 +13,23 @@
12
13
  "requests_exceeded": "T\u00e1 an l\u00edon ceadaithe iarratas chuig API AccuWeather s\u00e1raithe. Caithfidh t\u00fa fanacht n\u00f3 eochair an API a athr\u00fa."
13
14
  },
14
15
  "step": {
16
+ "reauth_confirm": {
17
+ "data": {
18
+ "api_key": "Eochair API"
19
+ },
20
+ "data_description": {
21
+ "api_key": "Eochair API ginte i dtairseach AccuWeather APIs."
22
+ }
23
+ },
15
24
  "user": {
16
25
  "data": {
17
26
  "api_key": "Eochair API",
18
27
  "latitude": "Domhanleithead",
19
28
  "longitude": "Domhanfhad",
20
29
  "name": "Ainm"
30
+ },
31
+ "data_description": {
32
+ "api_key": "Eochair API ginte i dtairseach AccuWeather APIs."
21
33
  }
22
34
  }
23
35
  }
@@ -239,6 +251,9 @@
239
251
  }
240
252
  },
241
253
  "exceptions": {
254
+ "auth_error": {
255
+ "message": "Theip ar fh\u00edordheimhni\u00fa do {entry}, nuashonraigh d'eochair API le do thoil"
256
+ },
242
257
  "current_conditions_update_error": {
243
258
  "message": "Tharla earr\u00e1id agus sonra\u00ed reatha aimsire \u00e1 n-aisghabh\u00e1il \u00f3 AccuWeather API: {error}"
244
259
  },
@@ -0,0 +1,11 @@
1
+ {
2
+ "config": {
3
+ "step": {
4
+ "local": {
5
+ "data": {
6
+ "wifi_pswd": "Wi-Fi wachtwurd"
7
+ }
8
+ }
9
+ }
10
+ }
11
+ }
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "step": {
11
11
  "hassio_confirm": {
12
- "description": "\u662f\u5426\u8981\u8a2d\u5b9a Home Assistant \u4ee5\u9023\u7dda\u81f3 AdGuard Home\u3002\u9644\u52a0\u5143\u4ef6\u70ba\uff1a{addon} \uff1f",
12
+ "description": "\u662f\u5426\u8981\u8a2d\u5b9a Home Assistant \u4ee5\u9023\u7dda\u81f3\u9644\u52a0\u5143\u4ef6 {addon} \u6240\u63d0\u4f9b AdGuard Home\uff1f",
13
13
  "title": "\u4f7f\u7528 Home Assistant \u9644\u52a0\u5143\u4ef6 AdGuard Home"
14
14
  },
15
15
  "user": {
@@ -4,10 +4,18 @@ from __future__ import annotations
4
4
 
5
5
  from airos.airos8 import AirOS8
6
6
 
7
- from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, Platform
7
+ from homeassistant.const import (
8
+ CONF_HOST,
9
+ CONF_PASSWORD,
10
+ CONF_SSL,
11
+ CONF_USERNAME,
12
+ CONF_VERIFY_SSL,
13
+ Platform,
14
+ )
8
15
  from homeassistant.core import HomeAssistant
9
16
  from homeassistant.helpers.aiohttp_client import async_get_clientsession
10
17
 
18
+ from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, SECTION_ADVANCED_SETTINGS
11
19
  from .coordinator import AirOSConfigEntry, AirOSDataUpdateCoordinator
12
20
 
13
21
  _PLATFORMS: list[Platform] = [
@@ -21,13 +29,16 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> boo
21
29
 
22
30
  # By default airOS 8 comes with self-signed SSL certificates,
23
31
  # with no option in the web UI to change or upload a custom certificate.
24
- session = async_get_clientsession(hass, verify_ssl=False)
32
+ session = async_get_clientsession(
33
+ hass, verify_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL]
34
+ )
25
35
 
26
36
  airos_device = AirOS8(
27
37
  host=entry.data[CONF_HOST],
28
38
  username=entry.data[CONF_USERNAME],
29
39
  password=entry.data[CONF_PASSWORD],
30
40
  session=session,
41
+ use_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL],
31
42
  )
32
43
 
33
44
  coordinator = AirOSDataUpdateCoordinator(hass, entry, airos_device)
@@ -40,6 +51,30 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> boo
40
51
  return True
41
52
 
42
53
 
54
+ async def async_migrate_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
55
+ """Migrate old config entry."""
56
+
57
+ if entry.version > 1:
58
+ # This means the user has downgraded from a future version
59
+ return False
60
+
61
+ if entry.version == 1 and entry.minor_version == 1:
62
+ new_data = {**entry.data}
63
+ advanced_data = {
64
+ CONF_SSL: DEFAULT_SSL,
65
+ CONF_VERIFY_SSL: DEFAULT_VERIFY_SSL,
66
+ }
67
+ new_data[SECTION_ADVANCED_SETTINGS] = advanced_data
68
+
69
+ hass.config_entries.async_update_entry(
70
+ entry,
71
+ data=new_data,
72
+ minor_version=2,
73
+ )
74
+
75
+ return True
76
+
77
+
43
78
  async def async_unload_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
44
79
  """Unload a config entry."""
45
80
  return await hass.config_entries.async_unload_platforms(entry, _PLATFORMS)
@@ -15,10 +15,17 @@ from airos.exceptions import (
15
15
  import voluptuous as vol
16
16
 
17
17
  from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
18
- from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
18
+ from homeassistant.const import (
19
+ CONF_HOST,
20
+ CONF_PASSWORD,
21
+ CONF_SSL,
22
+ CONF_USERNAME,
23
+ CONF_VERIFY_SSL,
24
+ )
25
+ from homeassistant.data_entry_flow import section
19
26
  from homeassistant.helpers.aiohttp_client import async_get_clientsession
20
27
 
21
- from .const import DOMAIN
28
+ from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, DOMAIN, SECTION_ADVANCED_SETTINGS
22
29
  from .coordinator import AirOS8
23
30
 
24
31
  _LOGGER = logging.getLogger(__name__)
@@ -28,6 +35,15 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
28
35
  vol.Required(CONF_HOST): str,
29
36
  vol.Required(CONF_USERNAME, default="ubnt"): str,
30
37
  vol.Required(CONF_PASSWORD): str,
38
+ vol.Required(SECTION_ADVANCED_SETTINGS): section(
39
+ vol.Schema(
40
+ {
41
+ vol.Required(CONF_SSL, default=DEFAULT_SSL): bool,
42
+ vol.Required(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): bool,
43
+ }
44
+ ),
45
+ {"collapsed": True},
46
+ ),
31
47
  }
32
48
  )
33
49
 
@@ -36,6 +52,7 @@ class AirOSConfigFlow(ConfigFlow, domain=DOMAIN):
36
52
  """Handle a config flow for Ubiquiti airOS."""
37
53
 
38
54
  VERSION = 1
55
+ MINOR_VERSION = 2
39
56
 
40
57
  async def async_step_user(
41
58
  self,
@@ -46,13 +63,17 @@ class AirOSConfigFlow(ConfigFlow, domain=DOMAIN):
46
63
  if user_input is not None:
47
64
  # By default airOS 8 comes with self-signed SSL certificates,
48
65
  # with no option in the web UI to change or upload a custom certificate.
49
- session = async_get_clientsession(self.hass, verify_ssl=False)
66
+ session = async_get_clientsession(
67
+ self.hass,
68
+ verify_ssl=user_input[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL],
69
+ )
50
70
 
51
71
  airos_device = AirOS8(
52
72
  host=user_input[CONF_HOST],
53
73
  username=user_input[CONF_USERNAME],
54
74
  password=user_input[CONF_PASSWORD],
55
75
  session=session,
76
+ use_ssl=user_input[SECTION_ADVANCED_SETTINGS][CONF_SSL],
56
77
  )
57
78
  try:
58
79
  await airos_device.login()
@@ -7,3 +7,8 @@ DOMAIN = "airos"
7
7
  SCAN_INTERVAL = timedelta(minutes=1)
8
8
 
9
9
  MANUFACTURER = "Ubiquiti"
10
+
11
+ DEFAULT_VERIFY_SSL = False
12
+ DEFAULT_SSL = True
13
+
14
+ SECTION_ADVANCED_SETTINGS = "advanced_settings"
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from homeassistant.const import CONF_HOST
5
+ from homeassistant.const import CONF_HOST, CONF_SSL
6
6
  from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
7
7
  from homeassistant.helpers.update_coordinator import CoordinatorEntity
8
8
 
9
- from .const import DOMAIN, MANUFACTURER
9
+ from .const import DOMAIN, MANUFACTURER, SECTION_ADVANCED_SETTINGS
10
10
  from .coordinator import AirOSDataUpdateCoordinator
11
11
 
12
12
 
@@ -20,9 +20,14 @@ class AirOSEntity(CoordinatorEntity[AirOSDataUpdateCoordinator]):
20
20
  super().__init__(coordinator)
21
21
 
22
22
  airos_data = self.coordinator.data
23
+ url_schema = (
24
+ "https"
25
+ if coordinator.config_entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL]
26
+ else "http"
27
+ )
23
28
 
24
29
  configuration_url: str | None = (
25
- f"https://{coordinator.config_entry.data[CONF_HOST]}"
30
+ f"{url_schema}://{coordinator.config_entry.data[CONF_HOST]}"
26
31
  )
27
32
 
28
33
  self._attr_device_info = DeviceInfo(
@@ -12,6 +12,18 @@
12
12
  "host": "IP address or hostname of the airOS device",
13
13
  "username": "Administrator username for the airOS device, normally 'ubnt'",
14
14
  "password": "Password configured through the UISP app or web interface"
15
+ },
16
+ "sections": {
17
+ "advanced_settings": {
18
+ "data": {
19
+ "ssl": "Use HTTPS",
20
+ "verify_ssl": "[%key:common::config_flow::data::verify_ssl%]"
21
+ },
22
+ "data_description": {
23
+ "ssl": "Whether the connection should be encrypted (required for most devices)",
24
+ "verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
25
+ }
26
+ }
15
27
  }
16
28
  }
17
29
  },
@@ -21,6 +21,14 @@
21
21
  "host": "IP \u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0438\u043c\u0435 \u043d\u0430 \u0445\u043e\u0441\u0442 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e airOS",
22
22
  "password": "\u041f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430 \u0447\u0440\u0435\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e UISP \u0438\u043b\u0438 \u0443\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",
23
23
  "username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e airOS, \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u043e 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 HTTPS",
29
+ "verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430"
30
+ }
31
+ }
24
32
  }
25
33
  }
26
34
  }
@@ -14,6 +14,14 @@
14
14
  "host": "Amfitri\u00f3",
15
15
  "password": "Contrasenya",
16
16
  "username": "Nom d'usuari"
17
+ },
18
+ "sections": {
19
+ "advanced_settings": {
20
+ "data": {
21
+ "ssl": "Utilitza HTTPS",
22
+ "verify_ssl": "Verifica el certificat SSL"
23
+ }
24
+ }
17
25
  }
18
26
  }
19
27
  }
@@ -21,6 +21,18 @@
21
21
  "host": "IP adresa nebo n\u00e1zev hostitele za\u0159\u00edzen\u00ed airOS",
22
22
  "password": "Heslo nastaven\u00e9 prost\u0159ednictv\u00edm aplikace UISP nebo webov\u00e9ho rozhran\u00ed",
23
23
  "username": "U\u017eivatelsk\u00e9 jm\u00e9no administr\u00e1tora pro za\u0159\u00edzen\u00ed airOS, obvykle \"ubnt\""
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Pou\u017e\u00edt HTTPS",
29
+ "verify_ssl": "Ov\u011b\u0159it certifik\u00e1t SSL"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Zda m\u00e1 b\u00fdt p\u0159ipojen\u00ed \u0161ifrovan\u00e9 (vy\u017eadov\u00e1no pro v\u011bt\u0161inu za\u0159\u00edzen\u00ed).",
33
+ "verify_ssl": "Zda m\u00e1 b\u00fdt certifik\u00e1t ov\u011b\u0159ov\u00e1n p\u0159i pou\u017eit\u00ed HTTPS U certifik\u00e1t\u016f s vlastn\u00edm podpisem by tato volba m\u011bla b\u00fdt vypnuta."
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "IP-Adresse oder Hostname des airOS-Ger\u00e4ts",
22
22
  "password": "\u00dcber die UISP-App oder Weboberfl\u00e4che konfiguriertes Passwort",
23
23
  "username": "Administrator-Benutzername f\u00fcr das airOS-Ger\u00e4t, normalerweise \u201eubnt\u201c"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "HTTPS verwenden",
29
+ "verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Ob die Verbindung verschl\u00fcsselt werden soll (f\u00fcr die meisten Ger\u00e4te erforderlich)",
33
+ "verify_ssl": "Ob das Zertifikat bei Verwendung von HTTPS \u00fcberpr\u00fcft werden soll. Bei selbstsignierten Zertifikaten sollte dies deaktiviert sein."
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "IP address or hostname of the airOS device",
22
22
  "password": "Password configured through the UISP app or web interface",
23
23
  "username": "Administrator username for the airOS device, normally 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Use HTTPS",
29
+ "verify_ssl": "Verify SSL certificate"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Whether the connection should be encrypted (required for most devices)",
33
+ "verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "IP address or hostname of the airOS device",
22
22
  "password": "Password configured through the UISP app or web interface",
23
23
  "username": "Administrator username for the airOS device, normally 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Use HTTPS",
29
+ "verify_ssl": "Verify SSL certificate"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Whether the connection should be encrypted (required for most devices)",
33
+ "verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "Direcci\u00f3n IP o nombre de host del dispositivo airOS",
22
22
  "password": "Contrase\u00f1a configurada a trav\u00e9s de la aplicaci\u00f3n UISP o la interfaz web",
23
23
  "username": "Nombre de usuario del administrador para el dispositivo airOS, normalmente 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Utilizar HTTPS",
29
+ "verify_ssl": "Verificar el certificado SSL"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Si la conexi\u00f3n debe estar cifrada (obligatorio para la mayor\u00eda de los dispositivos)",
33
+ "verify_ssl": "Si el certificado debe verificarse al usar HTTPS. Esta opci\u00f3n debe estar desactivada para certificados autofirmados."
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "airOS-seadme IP-aadress v\u00f5i hostinimi",
22
22
  "password": "UISP rakenduse v\u00f5i veebiliidese kaudu m\u00e4\u00e4ratud salas\u00f5na",
23
23
  "username": "airOS-seadme administraatori kasutajanimi, tavaliselt 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Kasuta HTTPS-i",
29
+ "verify_ssl": "Kontrolli SSL sertifikaati"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Kas \u00fchendus peaks olema kr\u00fcpteeritud (n\u00f5utav enamiku seadmete puhul)",
33
+ "verify_ssl": "Kas sertifikaati tuleks HTTPS-i kasutamisel kontrollida? Iseallkirjastatud sertifikaatide puhul peaks see olema v\u00e4lja l\u00fclitatud."
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -1,4 +1,22 @@
1
1
  {
2
+ "config": {
3
+ "step": {
4
+ "user": {
5
+ "sections": {
6
+ "advanced_settings": {
7
+ "data": {
8
+ "ssl": "Utiliser HTTPS",
9
+ "verify_ssl": "V\u00e9rifier le certificat SSL"
10
+ },
11
+ "data_description": {
12
+ "ssl": "Si la connexion doit \u00eatre chiffr\u00e9e (n\u00e9cessaire pour la plupart des appareils)",
13
+ "verify_ssl": "Si le certificats dois \u00eatre v\u00e9rifi\u00e9s lorsque HTTPS est utilis\u00e9. Cette option doit \u00eatre d\u00e9sactiv\u00e9e pour les certificats auto-sign\u00e9s."
14
+ }
15
+ }
16
+ }
17
+ }
18
+ }
19
+ },
2
20
  "entity": {
3
21
  "binary_sensor": {
4
22
  "dhcp6_server": {
@@ -0,0 +1,11 @@
1
+ {
2
+ "config": {
3
+ "step": {
4
+ "user": {
5
+ "data": {
6
+ "password": "Wachtwurd"
7
+ }
8
+ }
9
+ }
10
+ }
11
+ }
@@ -21,6 +21,18 @@
21
21
  "host": "AirOS \u012frenginio IP adresas arba pagrindinio kompiuterio pavadinimas",
22
22
  "password": "Slapta\u017eodis sukonfig\u016bruotas per UISP program\u0117l\u0119 arba \u017einiatinklio s\u0105saj\u0105",
23
23
  "username": "AirOS \u012frenginio administratoriaus vartotojo vardas, paprastai 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Naudoti HTTPS",
29
+ "verify_ssl": "Patikrinkite SSL sertifikat\u0105"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Ar ry\u0161ys tur\u0117t\u0173 b\u016bti \u0161ifruojamas (b\u016btinas daugumai \u012frengini\u0173)",
33
+ "verify_ssl": "Ar sertifikatas tur\u0117t\u0173 b\u016bti tikrinamas naudojant HTTPS. Tai tur\u0117t\u0173 b\u016bti i\u0161jungta savaranki\u0161kai pasira\u0161ytiems sertifikatams."
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "Endere\u00e7o IP ou nome do anfitri\u00e3o do dispositivo airOS",
22
22
  "password": "Palavra-passe configurada atrav\u00e9s da aplica\u00e7\u00e3o UISP ou da interface Web",
23
23
  "username": "Nome de utilizador do administrador para o dispositivo airOS, normalmente 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Utilizar HTTPS",
29
+ "verify_ssl": "Verificar o certificado SSL"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Se a liga\u00e7\u00e3o deve ser encriptada (necess\u00e1rio para a maioria dos dispositivos)",
33
+ "verify_ssl": "Se o certificado deve ser verificado quando se utiliza HTTPS. Esta op\u00e7\u00e3o deve estar desativada para certificados auto-assinados"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "IP adresa alebo n\u00e1zov hostite\u013ea zariadenia airOS",
22
22
  "password": "Heslo nakonfigurovan\u00e9 prostredn\u00edctvom aplik\u00e1cie UISP alebo webov\u00e9ho rozhrania",
23
23
  "username": "Pou\u017e\u00edvate\u013esk\u00e9 meno spr\u00e1vcu pre zariadenie airOS, zvy\u010dajne 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Pou\u017eite HTTPS",
29
+ "verify_ssl": "Overi\u0165 SSL certifik\u00e1t"
30
+ },
31
+ "data_description": {
32
+ "ssl": "\u010ci m\u00e1 by\u0165 pripojenie \u0161ifrovan\u00e9 (vy\u017eaduje sa pre v\u00e4\u010d\u0161inu zariaden\u00ed)",
33
+ "verify_ssl": "\u010ci sa m\u00e1 certifik\u00e1t overova\u0165 pri pou\u017e\u00edvan\u00ed protokolu HTTPS. T\u00e1to mo\u017enos\u0165 by mala by\u0165 vypnut\u00e1 pre certifik\u00e1ty podp\u00edsan\u00e9 vlastn\u00fdm podpisom"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -6,14 +6,33 @@
6
6
  "error": {
7
7
  "cannot_connect": "Det gick inte att ansluta",
8
8
  "invalid_auth": "Ogiltig autentisering",
9
+ "key_data_missing": "F\u00f6rv\u00e4ntade data returneras inte fr\u00e5n enheten, kontrollera dokumentationen f\u00f6r enheter som st\u00f6ds",
9
10
  "unknown": "Ov\u00e4ntat fel"
10
11
  },
12
+ "flow_title": "Ubiquiti airOS enhet",
11
13
  "step": {
12
14
  "user": {
13
15
  "data": {
14
16
  "host": "V\u00e4rd",
15
17
  "password": "L\u00f6senord",
16
18
  "username": "Anv\u00e4ndarnamn"
19
+ },
20
+ "data_description": {
21
+ "host": "IP-adress eller v\u00e4rdnamn f\u00f6r airOS-enheten",
22
+ "password": "L\u00f6senord som konfigurerats via UISP-appen eller webbgr\u00e4nssnittet",
23
+ "username": "Administrat\u00f6rens anv\u00e4ndarnamn f\u00f6r airOS-enheten, normalt 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "Anv\u00e4nd HTTPS",
29
+ "verify_ssl": "Verifiera SSL-certifikatet"
30
+ },
31
+ "data_description": {
32
+ "ssl": "Om anslutningen ska vara krypterad (kr\u00e4vs f\u00f6r de flesta enheter)",
33
+ "verify_ssl": "Om certifikatet ska verifieras vid anv\u00e4ndning av HTTPS. Detta ska vara avst\u00e4ngt f\u00f6r sj\u00e4lvsignerade certifikat."
34
+ }
35
+ }
17
36
  }
18
37
  }
19
38
  }
@@ -65,14 +84,31 @@
65
84
  "wireless_mode": {
66
85
  "name": "Tr\u00e5dl\u00f6st l\u00e4ge",
67
86
  "state": {
87
+ "point_to_multipoint": "Punkt-till-multipunkt",
68
88
  "point_to_point": "Punkt-till-punkt"
69
89
  }
70
90
  },
91
+ "wireless_polling_dl_capacity": {
92
+ "name": "Nedladdningskapacitet"
93
+ },
94
+ "wireless_polling_ul_capacity": {
95
+ "name": "Uppladdningskapacitet"
96
+ },
97
+ "wireless_remote_hostname": {
98
+ "name": "Fj\u00e4rrv\u00e4rdnamn"
99
+ },
71
100
  "wireless_role": {
72
101
  "name": "Tr\u00e5dl\u00f6s roll",
73
102
  "state": {
74
- "access_point": "Accesspunkt"
103
+ "access_point": "Accesspunkt",
104
+ "station": "Station"
75
105
  }
106
+ },
107
+ "wireless_throughput_rx": {
108
+ "name": "Datafl\u00f6de vid mottagning (aktuellt)"
109
+ },
110
+ "wireless_throughput_tx": {
111
+ "name": "Datafl\u00f6de vid s\u00e4ndning (aktuellt)"
76
112
  }
77
113
  }
78
114
  },
@@ -80,6 +116,9 @@
80
116
  "cannot_connect": {
81
117
  "message": "Det gick inte att ansluta"
82
118
  },
119
+ "error_data_missing": {
120
+ "message": "Data ofullst\u00e4ndiga eller saknas"
121
+ },
83
122
  "invalid_auth": {
84
123
  "message": "Ogiltig autentisering"
85
124
  }
@@ -21,6 +21,18 @@
21
21
  "host": "airOS \u8bbe\u5907\u7684 IP \u5730\u5740\u6216\u4e3b\u673a\u540d",
22
22
  "password": "\u901a\u8fc7 UISP \u5e94\u7528\u6216 Web \u754c\u9762\u914d\u7f6e\u7684\u5bc6\u7801",
23
23
  "username": "airOS \u8bbe\u5907\u7684\u7ba1\u7406\u5458\u7528\u6237\u540d\uff0c\u901a\u5e38\u4e3a \u201cubnt\u201d"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "\u4f7f\u7528 HTTPS",
29
+ "verify_ssl": "\u9a8c\u8bc1 SSL \u8bc1\u4e66"
30
+ },
31
+ "data_description": {
32
+ "ssl": "\u8fde\u63a5\u662f\u5426\u9700\u8981\u52a0\u5bc6\uff08\u5927\u591a\u6570\u8bbe\u5907\u90fd\u9700\u8981\uff09",
33
+ "verify_ssl": "\u4f7f\u7528 HTTPS \u65f6\u662f\u5426\u5e94\u9a8c\u8bc1\u8bc1\u4e66\u3002\u5bf9\u4e8e\u81ea\u7b7e\u540d\u8bc1\u4e66\uff0c\u6b64\u9879\u5e94\u5173\u95ed"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }
@@ -21,6 +21,18 @@
21
21
  "host": "airOS \u88dd\u7f6e IP \u4f4d\u5740\u6216\u4e3b\u6a5f\u540d\u7a31\u3002",
22
22
  "password": "\u900f\u904e UISP \u61c9\u7528\u7a0b\u5f0f\u6216\u7db2\u9801\u4ecb\u9762\u8a2d\u5b9a\u7684\u5bc6\u78bc",
23
23
  "username": "airOS \u88dd\u7f6e\u7ba1\u7406\u8005\u4f7f\u7528\u8005\u540d\u7a31\u3001\u901a\u5e38\u70ba 'ubnt'"
24
+ },
25
+ "sections": {
26
+ "advanced_settings": {
27
+ "data": {
28
+ "ssl": "\u4f7f\u7528 HTTPS",
29
+ "verify_ssl": "\u78ba\u8a8d SSL \u8a8d\u8b49"
30
+ },
31
+ "data_description": {
32
+ "ssl": "\u662f\u5426\u4f7f\u7528\u52a0\u5bc6\u9023\u7dda\uff08\u5927\u591a\u6578\u88dd\u7f6e\u90fd\u9700\u8981\uff09",
33
+ "verify_ssl": "\u4f7f\u7528 HTTPS \u6642\u662f\u5426\u9a57\u8b49\u6191\u8b49\u3002\u82e5\u70ba\u81ea\u7c3d\u6191\u8b49\uff0c\u61c9\u5c07\u6b64\u9078\u9805\u95dc\u9589"
34
+ }
35
+ }
24
36
  }
25
37
  }
26
38
  }