Практическое применение Raspberry Pi

Первый свой экземпляр Raspberry Pi я купил, кажется, лет 12 назад, но с тех пор он так и лежит практически без дела — как-то раз водрузил на него Plex, но при наличии нескольких Apple TV он конкуренции не выдержал, а, когда совсем недавно я все же нашел место Plex Server в своей сети, его оказалось гораздо удобнее запустить на Synology NAS, где весь контент как раз и находится. Разве что иногда запустить его, посмотреть на Linux и выключить :).

Я, конечно, в курсе многочисленных проектов с его использованием, но у меня таких задач не возникало.

А вот как раз возникло. Уже полтора года я пользуюсь системой с инвертором и набором батарей для обеспечения энергонезависимости — или, попросту говоря, чтобы при регулярных отключениях электричества замечать это как можно меньше. Инвертор вполне справляется с этой задачей, батареи прекрасно работают, но всё это время мне мешало отсутствие нормального решения для мониторинга системы — вроде бы всё в нем умное, но недостаточно, модель инвертора не имеет поддержки wi-fi, удаленно посмотреть невозможно, получилось только подключить к инвертору ноутбук, водрузить на него кросс-платформенное, то есть страшное и глючное, поделие под названием WatchPower. Соответственно, чтобы посмотреть состояние инвертора, приходилось ходить удаленно на ноутбук (или приходить к нему ногами), но это полбеды.

Description

Во-первых, эта программа хранит архивы данных так странно, что при попытке начать их смотреть, замирает на несколько минут. Причем она их хранит за всё время, а показывает за сколько хочет, исправно тормозя всё больше по мере увеличения исторических архивов.

Во-вторых, она вместе с самим инвертором понятия не имеет о емкости батарей и полагается исключительно на измерения напряжения. С реальным остатком заряда отображаемое значение Battery capacity связано очень условно — увеличение нагрузки приводит к падению напряжения (это естественный физический процесс), что немедленно изменяет capacity в меньшую сторону процентов на 5-7. Снятие нагрузки — например, водяной насос включился, поработал 30 секунд и выключился, — приводит к обратному результату. И бог бы с ним, но сам расчет capacity ведется по примитивной линейной шкале — если в конце цикла заряда напряжение составляло 54В при 100%, а напряжение отключения батарей установлено на 46В (это примерно 20-30% заряда, ниже разряжать мои батареи не рекомендуется), то 50В — это 45-50%, какие инвертор и покажет через минут 5 после начала разряда.

В общем, пока я с этим разобрался, я уже был готов покупать новые батареи, но потом все эти данные прогнал через AI, посчитал число циклов батарей, подобрал оптимальные параметры для настройки инвертора и почти успокоился — и пошел искать альтернативы WatchPower. Ну не может же быть, чтобы в современном мире, свихнувшемся на альтернативной энергии, было только одно вот такое массовое решение.

В общем, нашел. Оно называется SolarAssistant, оно, правда, платное, но на фоне всей системы эта цена не очень заметна. И это очень необычное решение — оно выглядит как дистрибутив Linux для Raspberry Pi. Вы покупаете (или используете имеющийся) Raspberry Pi, вставляете в него карту с дистрибутивом, который скачивается на сайте, и подключаете RPi к инвертору. Если есть рядом Ethernet — можно воткнуть сетевой кабель, если нет, но есть wi-fi, то при старте Raspberry Pi создаст свою сеть, к ней надо подключиться и указать параметры подключения к существующему wi-fi. Один раз при запуске системе нужен доступ в интернет — он идет за активацией на сервер, — потом можно без него, но при его наличии вы можете зарегистрировать систему в облаке и в дальнейшем ходить к интерфейсу через облачный прокси откуда угодно.

Description
Главный экран SolarAssistant

Это чистый веб-интерфейс, но шустрый и удобный, при этом его можно поставить в виде web-приложения в iOS, например.

И он делает главное, что я и искал — помимо доступа ко всем настройкам инвертора, он умеет эмулировать BMS (Battery Management System) — не полагаясь на апроксимацию по напряжению, а просто, зная емкость батареи, подсчитывает её потребление, ведь данные по потребляемой из батареи мощности ему постоянно доступны.

Результаты на скриншоте выше — вместо малопредсказуемой capacity показывается логичное и понятное значение State of Charge, на данный момент более часа система питает весь дом и израсходовано 12% емкости.

Теоретически SolarAssistant можно запустить на любой модели Raspberry Pi, но рекомендуется использовать модель не ниже Raspberry Pi 4. Впрочем, на первом у меня тоже заработало, проблема, однако, в том, что рядом с инвертором у меня нет ничего, кроме wi-fi, а как раз его в первой модели и нет.

Так что да, подтверждаю — Raspberry Pi девайс полезный, даже, если для его практического применения надо взять 12-летнюю паузу.