Comments (22)
Похоже проблема в hass_diagnostics, при её отключении ошибки пропадают.
from yandex_smart_home.
Не совсем понятно, что тут происходит.
Нужен полный home-assistant.log и полный лог супервизора.
Отключение интеграции на странице Настройки - Интеграции решает проблему?
Какая версия компонента? (посмотреть в файле custom_conponents/yandex_smart_home/manifest.json)
from yandex_smart_home.
полный лог - 180мб, но в нем вопщем то и нет ничего, кроме ошибок приведенных выше.
http://gofile.me/6V9I1/YjNeRPXwX
лог супера - в этот раз до супера не дошло, сделал рестарт контейнера, в следующий раз дождусь когда он притушит всех.
отключать интеграцию пока не пробовал
версия - "version": "0.6.12"
from yandex_smart_home.
а вот с 2024.5.0 прилетело
2024-05-01 22:20:23.635 WARNING (MainThread) [py.warnings] /usr/local/lib/python3.12/asyncio/base_events.py:2006: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited def get_debug(self): 2024-05-01 22:20:23.635 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather fut = ensure_future(arg, loop=loop) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future loop = events.get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop raise RuntimeError('There is no current event loop in thread %r.' RuntimeError: There is no current event loop in thread 'ImportExecutor_0'. 2024-05-01 22:20:23.636 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather fut = ensure_future(arg, loop=loop) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future loop = events.get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop raise RuntimeError('There is no current event loop in thread %r.' RuntimeError: There is no current event loop in thread 'ImportExecutor_0'.
from yandex_smart_home.
Сохраняется ли проблема если отключить автоматизации: automation.system_update_available_and_installed_notification
и automation.system_error_counter
?
Судя по логу наблюдается рекурсия между этими двумя автоматизациями
from yandex_smart_home.
отключил, проверю. но судя по синему чату - у людей без этих авто все норм. да и еще один инстанс у меня на 2024.4.0 работает без проблем
from yandex_smart_home.
даже часа не продержался инстанс
`2024-05-02 09:48:48.313 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_53'.
2024-05-02 09:48:48.355 WARNING (SyncWorker_54) [py.warnings] /usr/src/homeassistant/homeassistant/helpers/trace.py:76: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited
variables_cv.set(dict(variables))
2024-05-02 09:48:48.362 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.369 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.382 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.383 WARNING (SyncWorker_54) [py.warnings] /usr/src/homeassistant/homeassistant/helpers/trace.py:79: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited
for key, value in variables.items()
2024-05-02 09:48:48.384 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.402 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.404 ERROR (SyncWorker_54) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_54'.
2024-05-02 09:48:48.425 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 316, in _put_conn
self.pool.put(conn, block=False)
File "/usr/local/lib/python3.12/queue.py", line 137, in put
raise Full
queue.Full
During handling of the above exception, another exception occurred:`
from yandex_smart_home.
на старте ХА насыпает
This error originated from a custom integration.
Logger: homeassistant
Source: custom_components/yandex_smart_home/notifier.py:288
integration: Yandex Smart Home (documentation, issues)
First occurred: 09:51:36 (170 occurrences)
Last logged: 09:51:40
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'ImportExecutor_0'.
from yandex_smart_home.
Тоже нужен полный home-assistant.log, нужно смотреть какие события были вокруг этих исключений.
from yandex_smart_home.
на старте ХА насыпает
This error originated from a custom integration.
Logger: homeassistant Source: custom_components/yandex_smart_home/notifier.py:288 integration: Yandex Smart Home (documentation, issues) First occurred: 09:51:36 (170 occurrences) Last logged: 09:51:40
Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather fut = ensure_future(arg, loop=loop) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future loop = events.get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop raise RuntimeError('There is no current event loop in thread %r.' RuntimeError: There is no current event loop in thread 'ImportExecutor_0'.
ссылка на полный лог
http://gofile.me/6V9I1/JR2Pz8SrK
from yandex_smart_home.
Вижу, что активный спам начинается после сообщения: 2024-05-02 09:48:48.311 WARNING (SyncWorker_54) [urllib3.connectionpool] Connection pool is full, discarding connection: 192-168-1-47.69bcc3bed480455882f6dbffa7d34b1b.plex.direct. Connection pool size: 10
На этом адресе живёт плекс? Если попробовать временно выключить интеграцию с ним?
from yandex_smart_home.
Да. Тоже его вырубил. Мониторю
from yandex_smart_home.
вопщем без плекса пока живет. попробовал отключить интеграцию яндкса, сделал ребут ХА. включил и снова сделал ребут. логи приложил
без яндекса
http://gofile.me/6V9I1/wci7Pao89
с яндексом
http://gofile.me/6V9I1/xkKDAEBYh
from yandex_smart_home.
вопщем без плекса пока живет. попробовал отключить интеграцию яндкса, сделал ребут ХА. включил и снова сделал ребут. логи приложил
без яндекса http://gofile.me/6V9I1/wci7Pao89
с яндексом http://gofile.me/6V9I1/xkKDAEBYh
Особой разницы не вижу. Меня только смущает
2024-05-02 14:55:59.206 ERROR (ImportExecutor_0) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/yandex_smart_home/notifier.py", line 288, in _state_change_listener
await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
fut = ensure_future(arg, loop=loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
loop = events.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'ImportExecutor_0'.
2024-05-02 14:55:59.209 WARNING (ImportExecutor_0) [py.warnings] /usr/src/homeassistant/homeassistant/core.py:727: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited
@callback
Мне не удаётся воспроизвести эту ситуацию у себя :(
Уходит ли эта ошибка если добавить "import_executor": false
в custom_components/yandex_smart_home/manifest.json?
from yandex_smart_home.
добавление запрета на экзекьютор не меняет ситуацию
http://gofile.me/6V9I1/W9glELtiy
from yandex_smart_home.
init.py.zip
Распаковать и подменить custom_components/yandex_smart_home/init.py
Фикс не окончательный, просто для проверки теории.
from yandex_smart_home.
увы, лучше не стало
from yandex_smart_home.
Ещё одна попытка :)
Archive.zip - заменить init.py и notifier.py
Перед этим стоит попробовать отключить hass_diagnostics, возможно она оказывает влияние.
from yandex_smart_home.
по мотивам вот этого home-assistant/core#115071 (comment)
стал проверять и вот что нашлось AlexxIT/YandexStation#503
его Алексей поправил - мониторю дальше
from yandex_smart_home.
У меня проблема была, что zeroconf работает в отдельном потоке. И из своего отдельного потока он пытался добавить задачу в асинхронную петлю основного потока. Такое конечно же нельзя делать.
ERROR (SyncWorker_54)
- тоже означает, что ошибка происходит не в основном потоке. Поэтому нужно очень аккуратно работать с петлёй основного потока.
from yandex_smart_home.
я после вчерашнего сообщения в чате его удалил на всех инстансах и применил фикс на statistics. значительно спокойней задышал ХА
from yandex_smart_home.
Верно. hass_diagnostics
тоже нужно чинить
from yandex_smart_home.
Related Issues (20)
- Автоматическое "отключение" облачной интеграции HOT 1
- hass.agent HOT 9
- Автоматическая замена типов в properties
- Switch не поддерживает current HOT 3
- Устройства не отвечают спустя 15 минут после добавления диалога в УДЯ HOT 2
- input_number из helpers HOT 1
- message":"Handler does not support user" HOT 2
- Проблема с камерами на облачном подключении в HA 2024.4
- Проблема с установкой режима кондиционера из сценария HOT 2
- Кондиционер TCL TAC-07CHSA/TPG-W
- По всей видимости не передается идентификатор HA или географическое расположение HOT 3
- Не удаётся настроить интеграцию при прямом подключении HOT 3
- При обращении к устройствам Xiaomi Mi home, Алиса выдает ошибку и после этого отказывается воспринимать дальнейшие команды этому устройству секунд 15 HOT 1
- глюк интерфейса при удалении устройств HOT 1
- Обработка запросов на отвязку навыка (user/unlink)
- Don't work script HOT 1
- Интеграция не работает HOT 2
- дроби в уставке для кондиционера HOT 3
- Возможность подключать on_off к любому объекту
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yandex_smart_home.