Дисклеймер: личная история. Лонгрид. Немного техники, много инженерного упрямства.

Счёт
Утро середины февраля. Я открываю почту и вижу счёт за электричество - 180 евро.
Я живу в квартире, где всё на электричестве. Плюс у меня plug-in гибрид, который я заряжаю от обычной розетки в гараже на -1 этаже. Это не бесплатно, я это понимаю. Но не настолько же.
Раньше счета были в районе 100–130 евро. Я на них смотрел, пожимал плечами и жил дальше. В этот раз что-то щёлкнуло.
Открываю детализацию.
800 кВт⋅ч за месяц.
Я реально округлил глаза. Живя раньше в России, я никогда не видел таких цифр. Даже близко. И в этот момент стало понятно: либо я чего-то не понимаю, либо кто-то в моей квартире тихо майнит биткоин.
Охота
Любопытство быстро перешло в азарт. Я решил устроить охоту на потребителей электричества.
Счётчик у меня один на всё. Доступ к розетке есть далеко не у каждого прибора. Из тех, до кого можно дотянуться без вскрытия щитка арендной квартиры, самым очевидным подозреваемым оказался водонагреватель.
Большой. Мощный. Формально энергоэффективный. Идеальный кандидат.
Я купил на Amazon простую умную розетку, воткнул в неё ТЭН и начал смотреть цифры.
И вот тут стало интересно.
В режиме поддержания температуры водонагреватель спокойно съедал до 300 кВт⋅ч в месяц. Мы сели, разобрали реальный режим использования горячей воды и перевели нагрев по расписанию.
Потребление упало примерно втрое - до 100 кВт⋅ч.
Отлично. Маленькая победа. Но счёт всё равно оставался слишком большим.
Машина
До остальных приборов я дотянуться не мог, а лезть в электрощит мне не хотелось. Оставался самый очевидный кандидат - машина.
Батарея 15,6 кВт⋅ч. Заряжаю почти каждый день, иногда и не один раз. Пробег 140 000 км. В каком она состоянии - вопрос открытый.
«Ладно, у меня же есть мобильное приложение Mercedes-Benz», - подумал я.
Приложение показывает уровень заряда. Красиво. Наглядно.
И… всё.
Никаких данных о том, сколько энергии реально уходит в батарею. Вообще. Ни в каком виде.
Я заряжаюсь от обычной розетки, не от зарядной станции, так что никакого внешнего измерителя у меня нет.
Розетка против бетона
Решение напрашивалось само собой: поставлю умную розетку и буду собирать данные.
«Не будешь», - сказали бетонные перекрытия.
Оказалось, что моя розетка не хранит данные локально. Она просто шлёт их по Wi-Fi в облако, где всё и агрегируется. А Wi-Fi в гараже нет. Совсем. Даже призрачного.
На улице был апрель.
Я подумал, что наверняка существуют розетки, которые умеют накапливать данные у себя, а потом синхронизироваться, например, по Bluetooth. Нашёл такую - Shelly Plus Plug S. Стоила она около 20 евро, в два раза дороже моей.
Когда она приехала - она просто не включилась. Без спецэффектов.
Просто нет.
Я вернул её обратно. К тому моменту счета внезапно стали меньше, и задача ушла на дальний план.

Середина ноября. Утро. Я пью кофе.
Вы уже понимаете, что будет дальше.
Я снова открываю почту и вижу счёт - 180 евро. Проверяю водонагреватель - всё ок, около 100 кВт⋅ч. Смотрю детализацию - 800 кВт⋅ч.
Значит, возвращаемся.
Условия задачи
На этот раз я решил зафиксировать условия явно:
- бетонный гараж, интернета нет
- нужно понять,** сколько реально жрёт** зарядка машины
- есть только розетка Я перебрал варианты.
Протянуть Ethernet из квартиры - не хочется сверлить.
Powerline по электросети - теоретически можно, но сигнал пойдёт через щиток, плюс комплект стоит около 50 евро.
Купить автономную розетку с локальным хранилищем - нашёл, 60 евро, жаба сказала «нет».
Оставался вариант, который выглядел одновременно разумным и опасным:
Raspberry Pi + уже имеющаяся умная розетка.
Raspberry Pi, входи
Я давно хотел поиграться с Raspberry Pi, но всё не было повода. А тут - реальный бытовой кейс с понятной целью и измеримым результатом.
От идеи до заказа платы и SD-карты на Amazon у меня ушло минут пять.
Розетку я вообще не анализировал:
- «Она же как-то работает с телефоном. Значит, и я смогу».* Спойлер: нет.
План
План выглядел абсолютно адекватным:
- поставить Linux
- подключиться по Wi-Fi и SSH
- получить доступ к данным розетки
- написать небольшой Python-воркер
- сохранить данные локально
- показать статистику через простой веб-интерфейс
- переключить Pi в режим точки доступа
- переподключить розетку к этому Wi-Fi
- унести всё в гараж
На бумаге всё сходилось.
Tuya. Внезапно
Первые шаги прошли быстро, и я был воодушевлён. Но ровно в тот момент, когда я полез за данными розетки, выяснилось, что она - Tuya-устройство.
До этого момента я никогда с Tuya напрямую не сталкивался.
Выяснилось, что:
- у них проприетарный протокол
- для Python есть TinyTuya
- но нужны API-ключи, секреты и локальный ключ устройства
Дальше был квест, о котором невозможно догадаться заранее:
- выяснилось, что я вообще пользовался клоном Tuya-приложения
- пришлось создать новый аккаунт в правильном приложении
- переподключить розетку
- создать отдельный аккаунт в IoT Cloud
- создать проект
- сгенерировать креды
- связать мобильное приложение с проектом через QR-код
- убедиться, что розетка появилась
- и только потом получить Local Key
Нигде это нормально не описано. Всё пришлось собирать по кускам.
Но в итоге я победил.
Почти победа
Когда данные наконец пошли, а графики начали рисоваться, я испытал очень знакомое чувство. То самое, которое появляется, когда проект уже формально работает, а мозг начинает складывать галочку «сделано».
Я вижу цифры. Я вижу пики нагрузки. Я вижу, как зарядка машины выглядит в данных.
Я даже написал простенький веб-интерфейс, чтобы смотреть статистику локально.
В этот момент решение казалось завершённым процентов на девяносто.
Оставалась одна, последняя, почти формальная часть.
Перевести Raspberry Pi в режим точки доступа, переподключить к нему розетку - и можно уносить всё это хозяйство в гараж.
Самые простые шаги в инженерных проектах порой самые опасные.
USB - это лотерея
Чтобы переключить Raspberry Pi в режим точки доступа, мне нужен был стабильный доступ по USB. И тут выяснилось сразу несколько вещей.
Во-первых, USB-кабели бывают power и data.
Во-вторых, micro-USB - это отдельная форма боли.
В-третьих, надпись multimedia на кабеле - это художественный образ, а не гарантия.
В-четвертых, вы где-нибудь видели кабель USB C - micro USB? Нет? А он существует!
Вот только не у меня.
Я перебрал несколько кабелей USB A - micro USB c miniPC. Даже попросил у соседей в 23.00.
Первый просто не подавал признаков жизни.
Второй подавал питание, но данных не передавал.
Третий вызывал в Windows радостный звук подключения, но устройство нигде не появлялось.
В какой-то момент я понял, что у меня дома есть всё: Raspberry Pi, умная розетка, Python, Wi-Fi, SSH.
Но нет одного нормального USB-кабеля для мака.
На следующий день я купил один, тот который мифический. Оказался power. Мак им побрезговал.
Заказ на Амазоне. Этот наконец, оказался тем самым. Проверенным. С отзывами. Рабочим.
Я подключился по USB, поднял интерфейс, зашёл по SSH и подумал, что теперь-то всё под контролем.
Это было преждевременно.
Зомби-режим
Я начал настраивать точку доступа: hostapd, dnsmasq, сетевые интерфейсы. Всё шло нормально… до момента, когда Raspberry Pi внезапно перестала отвечать.
SSH завис.
Интерфейсы перестали реагировать.
Pi выглядела включённой, но вести диалог отказывалась.
Перезагрузка помогла ровно до следующего шага.
И тут я понял, что сделал классическую ошибку:
я отключил Wi-Fi, не обеспечив автоподъём USB-доступа после ребута.
Результат был предсказуем:
Wi-Fi выключен.
USB не поднят.
SSH недоступен.
У меня в руках была живая плата без единого канала связи.
Я посмотрел на часы, вздохнул и пошёл смотреть Stranger Things.
Хватило меня на двадцать минут, потом вернулся и начал всё сначала.
Зомби-режим, часть 2, теперь с macOS
Я решил переустановить систему и начать правильно: сначала стабильный доступ, потом точка доступа, потом всё остальное.
В этот раз я первым делом позаботился о USB: чтобы SSH по кабелю был постоянным. Потом поднял точку доступа, подключился к ней телефоном, всё сработало.
Осталось «простое» - подключить розетку к Wi-Fi, который раздаёт Pi.
И тут выяснилось важное: розетке недостаточно просто локальной сети, ей нужен интернет, чтобы зарегистрироваться в приложении.
Я отдаю ей SSID, пароль, крутится спиннер подключения… и ошибка. А Pi в этот момент снова превращается в зомби с зависаниями.
Окей. Тогда гениальный план: прокинуть интернет на Pi по USB и раздать его через Wi-Fi.
macOS ведь умеет: System Settings → Sharing → Internet → USB Gadget. Включаю, прописываю DNS и…
Pi зависает. Снова.
Перезагружаю. И замечаю странное: USB Gadget на Mac остался активным даже после отключения устройства. Подключаю Pi, и он не поднимается по USB. Отключаю - USB Gadget всё ещё активен. Жму Make inactive, потом Make active, Mac как будто ждёт подключения, но Pi не появляется.
При этом к самой Pi я могу подключиться по поднятому Wi-Fi (точка доступа же работает) и видеть, что она реально ждёт USB, но «рукопожатия» нет. Без USB я не могу шарить интернет. Без интернета розетка не регистрируется. Замкнутый круг.
ChatGPT подсказал неприятную вещь: Inactive/Active на macOS может убить прошлые настройки соединения, и система перестаёт видеть устройство как раньше. Я удаляю Gadget-сервис, перезагружаю Mac, подключаю Pi - я снова в игре. Но SSH по USB не работает, пакеты не ходят.
Оказалось, включенный Sharing мешает нормальному подключению… хотя минуту назад «вроде работало». Пришлось потанцевать с бубном:
- выключить Sharing
- подключиться и убедиться, что SSH живой
- включить Sharing
- докрутить DNS
- только потом пытаться регистрировать розетку
И это реально заработало. На короткое время.
Пробую добавить розетку - снова ошибка. Pi снова уходит в зомби. На Mac снова подвисает gadget/sharing. Я начинаю подозревать всё подряд: может, у меня 5 GHz, и ей не подходит? Окей, режу совместимость на максимум, отключаю лишние фичи, упрощаю Wi-Fi как для самого тупого IoT.
Пробую ещё раз - тот же результат.
И вот тут у меня впервые за вечер включился нормальный разработческий инстинкт. До этого я действовал в режиме «да что тут сложного, это же розетка», и пытался перебором выехать на удаче. Усталость + ожидание быстрого финала = отключенный мозг.
Я полез в логи: kernel, Wi-Fi, hostapd, live-трейс в момент подключения розетки.
И почти сразу увидел это:
Segmentation fault
pc : brcmf_p2p_send_action_frame+0x234/0xc98 \[brcmfmac]
Unable to handle kernel NULL pointer dereference
Фиаско
Картинка сложилась.
Розетка в момент подключения отправляет P2P / GAS action frames:
RX_ACTION category 4
GAS Initial Request
ANQP: HS 2.0 Query List
А драйвер brcmfmac на Raspberry Pi Zero 2 W в режиме точки доступа не умеет это обрабатывать.
Точнее, умеет - один раз. После чего падает.
Это не баг конфигурации.
Не проблема dnsmasq.
Не мой кривой Wi-Fi.
Это kernel crash.
Я нашёл, что проблема даже оформлена как CVE:
https://nvd.nist.gov/vuln/detail/CVE-2025-40321
В этот момент стало понятно: я проиграл не потому, что сделал что-то неправильно.
А потому что дальше упираться некуда.
02:00. Пора спать.
Эпилог
Наверняка существуют более простые способы измерить потребление зарядки машины.
Да, я наоверинжинирил, но было прикольно.
Наверняка можно было купить ещё одну коробочку за деньги и забыть.
Но инженерное любопытство и желание поиграть с Raspberry Pi подарили мне полный спектр эмоций - от «сейчас за вечер сделаю» до «это Kernel error, я ничего не могу».
Но эту битву я проиграл.
А вы как бы решили мою задачку?


Неумный ваттметр, 10-30 евро. Воткнул — работает. Можно подойти и посмотреть потребление.
Мне кажется изначально 60 евро за новую розетку < Raspberry Pi + имеющаяся розетка + минимум 3-4 часа времени на разработку. Но я могу ошибаться и в целом, подобный путь, кмк, проходит каждый энтузиаст.
Читал как триллер, офигенно, спасибо =)
Я заморочился примерно тем же, за прошлый год получил сильно удививший меня счёт за электричество.
У меня потребители все в квартире и нужно было просто понять, чё там происходит.
По поводу розеток, я взял Meross Smart Wi-Fi Plug MSS315, оно умеет работать по протоколу matter, что само по себе на будущее очень хорошо. Обошлось это дело в 77 ойро за 4 розетки, пока использую стандартное приложение, но позже думаю подвязать к своему решению, пока не придумал зачем, кроме интереса 😁
Но не уверен, если эти розетки могут что-то хранить без вайфай, скорее всего нет.
В твоём случае я бы собрал наверное что-то на esp32 с флешкой, чтобы оно туда сгружало данные в гараже, а ты потом мог это синхронизировать с телефона. Но вообще идея интересная!
Powerline более чем достаточно для розетки и работало бы даже через щиток.
Плюс вайфай в гараже бы появился.
Умная розетка - это, в первую очередь, реле для включения и выключения нагрузки. Функция измерения энергопотребления там не основная.
Если управление нагрузкой не нужно, можно взять устройство, специально предназначение для измерения энергопотребления, лучше на Zigbee и подключать в Home Assistant или SprutHub.
Есть хорошая статья про все варианты измерения энергопотребления в Home Assistant: https://www.home-assistant.io/docs/energy/electricity-grid/