Блог им. empenoso
Home Assistant позиционирует себя как локальную систему. Но я столкнулся с ситуацией, когда локальная функция (Samba) не работает из-за облачного сбоя. При этом я вообще не использую облако. В статье описываю как обошёл эту проблему за 5 минут, когда за день разобрался в причине.

Мне очень нравится Home Assistant как система управления умным домом, потому что она позволяет не зависеть от облаков и от падений интернета. Это не просто слова — с 2017 года я использую умный дом в обычной двухкомнатной хрущевке, и в основном всё работает. Но это скорее тестовый полигон для меня — я сам там не живу и поэтому очень ценю то что Home Assistant можно настроить один раз и если не обновлять, то несколько лет всё может спокойно проработать. А на этих новогодних каникулах у меня было время и я решил полностью обновить все дополнения и прошивки. Как оказалось зря — паранойя безопасности ломает определение Home Assistant как автономного сервиса, который можно использовать локально.
В первых числах января 2026 решил удаленно обновить все зависимости — за несколько раз всё обновилось, но мне ещё понадобилось включить дополнение Samba share, чтобы из под Windows проверить пару конфигов, которые не хотели работать. А я отключил Samba share ещё год назад. Удаленно не смог включить — всё какая-то ошибка вылазила, хотя все остальные компоненты работают. Пришлось ехать на квартиру и думал что может быть Raspberry Pi 3 2015 года уже старая стала или флешка сдохла. У меня было ещё несколько запасных — прихватил и чистую флешку и новый микрокомпьютер 2017 года и новый блок питания.
Небольшая предыстория: весь мой проект начался в 2017 году с идеи удаленного сбора показаний счётчиков квартиры, где я использовал самые доступные по цене решения: ESP8266, MegaD. Потом решил подключить управление светом через дешевые Sonoff с прошивкой Tasmota и OpenHAB. 1000 дней пользовался OpenHAB, а затем перешел на Home Assistant, а в 2024 году провёл ремонт и замену Wi-Fi реле на Zigbee. И до недавнего времени это работало.

Поставил чистую систему — в 2026 году это происходит через Raspberry Pi Imager, хочу с Windows компьютера подключиться, а там та же ошибка Не удалось сохранить конфигурацию дополнения, Unknown error, see supervisor logs. И непонятно из-за чего.

Не удалось сохранить конфигурацию дополнения, Unknown error, see supervisor logsТолько в логах на чистой системе подробно рассмотрел что WARNING (MainThread) [supervisor.utils.pwned] Can’t fetch HIBP data: Timeout

WARNING (MainThread) [supervisor.utils.pwned] Can’t fetch HIBP data: TimeoutСтал разбираться и оказалось что Home Assistant абсолютно все пароли проверяет на скомпромитированность через онлайн сервис, а поскольку мы в России, то этот сервис не даёт ответа видимо из-за санкций или политики, а в интерфейсе ничего внятного не пишет — просто неизвестная ошибка.
И я в своём полностью локальном Home Assistant не могу к нему по локальной сети подключиться из-за того что этот онлайн сервис HIBP не отвечает. Сервис HIBP (Have I Been Pwned) проверяет были ли заново создаваемые пароли в утечках данных.
Но какая-то нестыковка кажется с заявленной полной локальностью Home Assistant?
Home Assistant пользуется этим сервисом и это нельзя отключить для проверки безопасности паролей. Но я даже не знал что такая проверка есть, а у сервиса проблемы с доступностью в России из-за санкций или Роскомнадзора, что вызывает ошибки и блокирует работу всей домашней системы.
Поскольку у меня уже был физический доступ к SD карте — раз я приехал на удаленную квартиру, на которой установлен Home Assistant, то решил через физическое подключение к Linux провести все манипуляции, потому что функция PwnedConnectivityError блокирует абсолютно всё.

Нашёл проблему в файле pwned.py, он файл лежит внутри контейнера Supervisor, в моём случае по адресу admin:///media/mike/hassos-data/docker/overlay2/0e05ec32ffef35caed1b7184eefcfdda5eb1a35ad60e68e5d14f3a73996b18ea/diff/usr/src/supervisor/supervisor/utils.

Но у вас будет другой путь, надо искать внутри внутри контейнера Supervisor: /usr/src/supervisor/supervisor/utils/pwned.py

Вот оригинальный файл pwned.py с проблемой:
<code class="python">"""Small wrapper for haveibeenpwned.com API."""<br /><br />import io<br />import logging<br /><br />import aiohttp<br /><br />from ..exceptions import PwnedConnectivityError, PwnedError, PwnedSecret<br /><br />_LOGGER: logging.Logger = logging.getLogger(__name__)<br />_API_CALL: str = "https://api.pwnedpasswords.com/range/{hash}"<br /><br />_CACHE: set[str] = set()<br /><br /><br />async def check_pwned_password(websession: aiohttp.ClientSession, sha1_pw: str) -> None:<br />"""Check if password is pwned."""<br />sha1_pw = sha1_pw.upper()<br /><br /># Chech hit cache<br />sha1_short = sha1_pw[:5]<br />if sha1_short in _CACHE:<br />raise PwnedSecret()<br /><br />_LOGGER.debug("Check pwned state of %s", sha1_short)<br />try:<br />async with websession.get(<br />_API_CALL.format(hash=sha1_short), timeout=aiohttp.ClientTimeout(total=10)<br />) as request:<br />if request.status != 200:<br />raise PwnedError(<br />f"Pwned service response with {request.status}", _LOGGER.warning<br />)<br />data = await request.text()<br /><br />buffer = io.StringIO(data)<br />for line in buffer:<br />if not sha1_pw.endswith(line.split(":")[0]):<br />continue<br />_CACHE.add(sha1_short)<br />raise PwnedSecret()<br /><br />except (aiohttp.ClientError, TimeoutError) as err:<br />raise PwnedConnectivityError(<br />f"Can't fetch HIBP data: {str(err) or 'Timeout'}", _LOGGER.warning<br />) from err</code>
Вот моя изменненная версия pwned.py с полным отключением проблемного в России сервиса Have I Been Pwned (HIBP):
<code class="python">"""Small wrapper for haveibeenpwned.com API."""<br /><br />import io<br />import logging<br /><br />import aiohttp<br /><br />from ..exceptions import PwnedConnectivityError, PwnedError, PwnedSecret<br /><br />_LOGGER: logging.Logger = logging.getLogger(__name__)<br />_API_CALL: str = "https://api.pwnedpasswords.com/range/{hash}"<br /><br />_CACHE: set[str] = set()<br /><br /><br />async def check_pwned_password(websession: aiohttp.ClientSession, sha1_pw: str) -> None:<br />"""Check if password is pwned."""<br />return None<br /><br />"""<br />sha1_pw = sha1_pw.upper()<br /><br /># Chech hit cache<br />sha1_short = sha1_pw[:5]<br />if sha1_short in _CACHE:<br />raise PwnedSecret()<br /><br />_LOGGER.debug("Check pwned state of %s", sha1_short)<br />try:<br />async with websession.get(<br />_API_CALL.format(hash=sha1_short), timeout=aiohttp.ClientTimeout(total=10)<br />) as request:<br />if request.status != 200:<br />raise PwnedError(<br />f"Pwned service response with {request.status}", _LOGGER.warning<br />)<br />data = await request.text()<br /><br />buffer = io.StringIO(data)<br />for line in buffer:<br />if not sha1_pw.endswith(line.split(":")[0]):<br />continue<br />_CACHE.add(sha1_short)<br />raise PwnedSecret()<br /><br />except (aiohttp.ClientError, TimeoutError) as err:<br />raise PwnedConnectivityError(<br />f"Can't fetch HIBP data: {str(err) or 'Timeout'}", _LOGGER.warning<br />) from err<br />"""</code>После того как внёс изменения и вставил SD карту обратно в Raspberry Pi все пароли стало успешно сохранять и работоспособность полностью восстановилась.

Судя потому что я нашёл через поиск эта проблема существует уже несколько месяцев. Вот например похожий пример, когда человек пытался с ней справиться осенью 2025 года.
Мне кажется подобные решения очень сильно бьют по новичкам, которым реально сложно разобраться в подобных системах и ещё больше вопросов вызывает то что Home Assistant всегда был полностью локальной автономной системой, которую можно было настроить даже на даче и тут вылазит такая фишка.
Вообще мне кажется что стремление к безопасности — это хорошо, но вот делать зависимость от внешнего API для базовых локальных функций — это архитектурная ошибка.
Автор: Михаил Шардин
🔗 Моя онлайн‑визитка
📢 Telegram «Умный Дом Инвестора»
6 января 2026
Михаил Шардин,
Вывод — если работает, но нефига обновлять )))
по «логике развития» следующим этапом после «умный дом» должен стать хайп «межгалактический дом»
т.к ни кто еще не выложил обоснование капзатрат и зачем это вообще нужно на местечковом уровне..
выключить розетку или кран дистанционно? великолепно...
в давно опробованную систему безопасности окрестить «супервум» и вложиться… еще раз вложиться
или прогресс ради вливаний?
Больше никто даже ваш готовый рецепт не переварит!
Простой смертный «даже ваш готовый рецепт не переварит» -
видите, вы даже такую простую мысль не понимаете!
Для 99.9% присутствующих на этом сайте ваши безоблачные технологии где-то далеко-далеко за облаками! Что они могут —
это вызвать мастера, который при такой проблеме…
пойдет искать этот пост. А не найдет, так и скажет менять систему.
Ничего плохого не хотел сказать, преклоняюсь перед вашими знаниями и умениями, просто пост этот (ОЧЕНЬ СИЛЬНЫЙ) надо было постить там, где есть люди, которые в состоянии им воспользоваться.
Михаил Шардин, Да, бывают пропадания классов некоторых, но в принципе чинится довольно быстро!
Даже если рассматривать эти некоторые неудобства, все равно HA — лучший!)
Лучше день потерять, зато потом за пять минут долететь
«с 2017 года я использую умный дом в обычной двухкомнатной хрущевке»
Лучше жить в глупом современном доме, чем в умной хрущевке
А если эта поделка глюкнет именно в тот момент, когда пошла протечка? Или дым?
Михоум обновляется и просто работает — уже лет 7, примерно 40 девайсов, на разных квартирах, через разных провайдеров. Новые прошивки на днях на камеры пришли, обновил не вставая с дивана во всех локациях. Ми хоум, кстати — сток, без шаманства. Камеры открываются моментально, уведомления от датчиков тоже приходят сразу. Бывает что сначала приходит уведомление открытия двери, а потом уже слышу что кто-то заходит — уведомление приходит буквально сразу как начинает открываться дверь.
ignat, на Home Assistant у меня жалоб нет. Только эта была.
Михоум через облако кстати полностью
На паре ситуаций система окупилась многократно.
Хиппарь одиночка, пару раз был бы потоп. Один раз у родителей, начался в час ночи, телефоны не слышат, пришлось будить через камеру.
Второй раз у меня — пришлось быстро ехать домой и вместо сантехника перекрывать краны в подвале — потоп был на пару этаже выше.
Хиппарь одиночка, наше — обычно это дешевый перемаркированный китай из хлама ) Часто — с универсальными паролями на доступ к облаку. Западные сервисы — тоже сразу мимо. Регулярно энтузиастить с селфхостед — не радостно.
Пока по качеству, надежности, простоте использования и разнообразию устройств у сяоми нет конкурентов.
Буду жить дальше в глупом доме, с выключателями.
( А вообще, в случае с крысёнышом, много лет назад, нас выручила- обыкновенная Кошка, хотя до этого, я считал, ваще бесполезная скотинка).
Коллега..))
HA штука полезная и красивая… если есть время, пардон, мастурбировать на yaml_ы ну и т. д.
Настроили… и забудьте.
Нихай себе работает...
Или ждите когда опять очередной сервис заблокируют, чтоб его мужественно хакнуть.
Романтика...))