1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 4

ПО мониторинга и управления МАП и MPPT linux. ПАК "МАЛИНА"

Тема в разделе "Бесперебойное (аварийное) электропитание", создана пользователем Osolemio, 26.07.15.

  1. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    ПО мониторинга и управления МАП и MPPT linux. ПАК "МАЛИНА"
    Начало истории – здесь: https://www.forumhouse.ru/threads/291574/

    Ветка посвящена открытому ПО моего авторства для мониторинга продуктов ООО "МикроАрт" (www.invertor.ru) и управления МАП. Первоначально проект развивался без понятных ориентиров и перспектив, «на коленке». В первую очередь, по причине того, что не было такого ПО, которое бы меня лично устраивало.

    Прежняя ветка выросла чрезмерно, захламилась и в ней было сложно что-то отыскать. Кроме того, пришло время систематизировать сделанное.

    Посему я, единолично :)], принял решение закрыть старую и открыть новую ветку, где в первых постах раскладываю все «по полочкам», благо теперь понятно что и как :)

    С определенного момента ООО МикроАрт оказывает поддержку проекту. Благодаря этому в ПО добавился ряд функций, которые мне были не нужны :)

    Однако это не значит, что я выполняю функции поддержки круглосуточно, 7 дней в неделю :)]. Тем более, я не консультирую по установке/настройке/использованию linux. Этой информации в избытке в Интернет. Если у вас что-то не получается, прежде всего постарайтесь перечитать инструкции. Возможно, вы что-то упустили.

    Я также не являюсь сотрудником ООО МикроАрт. Я обычный заурядный пользователь их продукции, который захотел сделать себе ПО для мониторинга и управления. А заодно и для всех, кто хочет это иметь. За 5 месяцев работы что-то получилось :)

    Я не профессиональный программист. Этот проект – мое хобби. Отвечаю в ветке и что-то делаю по мере возможности и желания.

    ПО распространяется абсолютно бесплатно на основе открытого исходного кода для linux, по лицензии GNU GPL. Вкратце: если вы вносите свои изменения и дополнения, вы также обязаны опубликовать весь исходный код.

    Впрочем, если вы желаете получить законченное программно-аппаратное решение от изготовителя с поддержкой, вы можете приобрести готовый Программно-Аппаратный Комплекс «Малина» на базе микро-ПК RaspberryPi 2 http://invertor.ru/monitoring.html

    Пока ПО существует для распространения в трех ипостасях, с абсолютно одинаковым функционалом.

    Кратко: это небольшой домашний веб-сервер, который по вашему желанию и умению может быть доступен с любого устройства в мире, поддерживающего Интернет-соединение и имеющего любой веб-браузер. Вы можете наблюдать работу в реальном времени всех ваших устройств. И управлять ими как в пределах дома, так и издалека. Например, со смартфона. Некоторые странички созданы умышленно в очень простом виде, что позволяет их открывать на самых простых устройствах.

    Итак, варианты сборок:

    А) Готовый образ для RaspberryPi 2 в виде загрузчика 56М на microSD карту и готового образа ОС линукс Raspbian (почти голый) + ПО на HDD или USBFlash:

    1. Образ для HDD или флеш-накопителя на 16ГБ или 31211520 секторов. Файловая система – ext4 с журналированием. На накопителе бОльшего размера вы можете увеличить последний раздел после первой загрузки. Именно в нем расположены растущие базы данных.

    Если вы, конечно, умеете это делать ;)

    2. Образ для флеш накопителя на 16ГБ (реально образ на 15.8ГБ или 30851072 сектора). Файловая система – ext4 для rootfs и f2fs для /var и /bases

    Нарезать этот образ на HDD возможно тоже. Но я не знаю, на самом деле, как в долгосрочной перспективе скажется использование f2fs для подобных накопителей. Из того, что понимаю – думаю, что ничего плохого быть не должно.

    • Если на вашем накопителе меньше секторов и образ не влазит – это не мои проблемы. :) Это вопросы к продавцам и изготовителям накопителей. На рынке очень много флешек несоответствующей емкости.

    microSD карта подойдет практически любая. У меня работает древняя на 400МБ. С нее начинается загрузка и больше она не нужна в процессе работы.

    USB Flash. Чем быстрее, тем лучше. Медленная флеш-карта из-за особенностей архитектуры RaspberryPi будет тормозить всю систему и даже вызывать ошибки чтения последовательных портов. Лично я использую образ №2 с файловой системой f2fs на USB 3 флешке Transcend 16.

    Если вы используете Raspberry Pi - вам еще нужен этот ПК, 2 шнура - для МАП и контроллера, и хороший источник питания, который будет исключать просадки при скачках напряжения.

    Б) Tarball архив всех исходников для установки на любую платформу. Напомню, что проект стартовал на платформе Intel и только потом был перенесен на ARM. А именно - Raspberry Pi как весьма популярную и недорогую платформу с хорошими релизами linux. В архиве конфигурация для mysql, nginx, php

    Для конфигурации на основе любого ПК с линукс, вам понадобятся абсолютно стандартные пакеты: mysql с библиотеками, php, php-fpm, web-server, возможно расширение php json, gcc с пакетами разработки для компиляции бинарных файлов. PHP выше версии 5. х может вызывать конфликт, поскольку некоторые, используемые мною методы, объявлены как deprecated
    Строки компиляции в README. txt

    В) О чем уже писал выше – готовый ПАК «Малина»

    Все последние доступные архивы и описания доступны в папке на yandex disk:

    https://yadi.sk/d/RYsco8kBi6YHp

    Я в эту папку буду класть последние релизы и всю документацию. В файле README описано вообще все, что было с первого выпуска ПО. Если вас интересует вся подноготная системы и ее развитие – все можно найти именно в этом файле.

    Ветка на github: https://github.com/osolemio/malina
    С версии 3.02 произошли изменения в размерах и структуре образов.
    https://www.forumhouse.ru/posts/14081693/

    Идеология, архитектура и базовая функциональность ПО:

    1. В системе присутствуют сервисы (демоны) чтения/записи данных с/на МАП, чтения данных контроллера MPPT, батарейного монитора, СМС. Некоторые из них умеют «общаться» между собой. Принцип построения – модульный. Архитектура трехуровневая. Сбор данных, хранение, отображение.

    2. Система предусматривает подключение по последовательному порту (либо с помощью встроенного в МАП или контроллер адаптора, либо с помощью отдельного адаптора USB-RS232) одного МАП, либо одного контроллера, либо двух этих устройств одновременно. Также предусмотрено использование внешнего GSM модема для настраиваемых СМС уведомлений и управления.

    Функции:

    1. Мониторинг и управление МАП

    2. Мониторинг MPPT (MMPT должен быть подключен к ПК отдельным шнуром!). Включая модель MPPT ветрогенератора. По I2C МАП получает от контроллеров очень немного данных.

    3. Получение, учет и отображение суммарных токов от всех MPPT, подключенных к МАП по шине I2C

    4. Настраиваемые СМС уведомления и СМС управление МАПом с доверенных номеров

    5. Модульный веб-интерфейс. У вас будут отображаться только элементы, отражающие реально включенные устройства

    6. Визуально адаптированный интерфейс с подсказками. По цвету иконок возможно быстро оценить состояние работы системы. Вкратце – «светофор». Фактически – применен подход промышленных интерфейсов, адаптированных на быстрое восприятие оператором

    7. Мониторинг батарейных систем LiFePO4 с БМС ООО «МикроАрт», в т. ч. поячеечно

    8. Построение практически любых графиков реального времени, живых и растровых графиков по накопленной истории

    9. Полная информация о МАП для возможности отправки в службу поддержки

    10. Максимально гибкая конфигурация системы через веб-интерфейс, в т. ч. просмотр syslog

    11. Режимы работы «ограниченный» и «полный». В ограниченном режиме некоторые функции настройки МАП недоступны.

    12. Все настройки системы и МАП в отдельной области, защищенной логином/паролем

    13. Функция батарейного монитора. Отдельное описание в файле battery_monitor.rtf

    a. Учитывает реальный расход ампер-часов с батареи

    b. Учитывает расход батареи в %, в зависимости от токов разряда

    c. Позволяет самостоятельно выполнять КТЦ

    d. Измеряет емкость АКБ по алгоритму с использованием таблицы Напряжения Разомкнутой Цепи.

    Данные были сопоставлены с батарейным монитором Victron. Расхождения на уровне погрешности порядка 1-2%

    Описание математической модели: https://www.forumhouse.ru/threads/291574/page-27#post-12951141

    14. Работа с базой данных (восстановление / резервное копирование / очистка)

    15. Удаленное выключение, либо любые команды *nix серверам в зависимости от данных батарейного монитора. Например, выключение определенных серверов при уровне глубины разряда DOD 80%. Отдельное описание в файле servers_off.rtf

    16. Мониторинг в реальном времени через веб-интерфейс работы основных сервисов: МАП, MPPT, батарейного монитора, CMC, mysql, с возможностью остановки/запуска

    17. Устойчивость к ошибкам в каналах связи

    18. Интерфейс написан практически без применения растровой графики, что позволяет ему очень быстро загружаться даже на «тонких» каналах связи

    19. ПО написано с использованием подхода linux о максимальном разделении функций. Множество из которых реализовано банально shell скриптами, которые легко редактируются под ваши нужды

    20. Благодаря использованию стандартной БД mysql, вы можете вести БД на сетевом накопителе, либо иметь репликацию с резервной копией. Настройка этого только вашими силами.

    Вход в подменю СИСТЕМА. Пароль/логин по умолчанию: admin/microart
    Остальные учетные данные для webmin, mysql и т. д. можно найти в README. txt и инструкциях

    Если вы используете RaspberryPi, то как и любой компьютер рекомендуется его выключать/перезагружать штатным образом. Слабой стороной конфигурации с microSD картой оказалось то, что при потере питания, карточка просто портится физически. Это известная проблема для RaspberryPi, и она в некоторой степени была решена лишь недавно усилиями одного зарубежного пользователя и, собственно, моими и получила некое дальнейшее развитие в том, что мы сегодня имеем.

    Поэтому теперь на microSD карте оставлен только загрузчик, на карту не производится операций записи, что позволяет забыть о ней совсем.

    Вся система linux и ПО перенесена на внешний накопитель. Однако, следует понимать, что в случае использования USBFlash, вы имеете твердотельный накопитель со всеми присущими ему недостатками. Такими как скорость записи, потеря блоков при нештатном выключении питания, ограничение на число циклов записи и т. п. Это, ИМХО, в настоящее время, единственный технологический недостаток системы с USB Flash. Который, к сожалению, на нынешнем уровне развития прогресса, неустраним. В какой-то мере я попытался его нивелировать применением NAND ориентированной файловой системой от Самсунг – f2fs, которая учитывает циклы записи, расположение блоков твердотельных накопителей и прочие вещи. Пока система у меня лично работает устойчиво вот уже полтора месяца и прекрасно переживает выдергивание питания, грозы и т. п. ерунду.

    Поэтому, если вам нужно более надежное решение и длительное гарантированное хранение данных, вы можете остановиться на другой платформе, вести БД на другом узле локальной сети, либо использовать классический внешний HDD с журналируемой ФС ext4

    Сам RaspberryPi при работе использует минимум ресурсов. Средняя загрузка процессора – не более 3%.

    • Будьте внимательны, если вы продвинутый пользователь, и решили обновить пакеты и загрузчик RaspberryPi с репозиториев. В стандартном режиме раздел /boot смонтирован как ro и не будет обновлен!
    • При первом включении обязательно нужно следовать порядку, описанному в Start. txt
    Это позволяет системе linux (udev) определить и запомнить ваши адапторы в верном порядке и сервисы будут стартовать как положено. Если вы видите некорректные данные в окне МАП или контроллера – либо поменяйте местами подключенные устройства, либо выключите RasPi, извлеките все адапторы и USB устройства (кроме флеш-карты или HDD) и повторите загрузку в соответствии с инструкцией.

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

    Стандартный порт работы сервиса МАП – ttyUSB0

    Порт работы сервиса MPPT – ttyUSB1 при наличии МАП, либо ttyUSB0 при отсутствии МАП

    При наличии двух устройств примерный прирост размера базы данных – около 4-5ГБ в год. Раздел БД на флеш – около 10ГБ. Текущий размер базы можно смотреть в разделе «СИСТЕМА» - «РАБОТА С БД»

    При достижении базой данных большого объема (для вас) вы можете либо очистить таблицы с помощью кнопки «очистить таблицы» и вести БД заново, либо сохранить БД на другой носитель, либо просто нарезать образ на новый носитель, а старый с БД положить на полку на сохранение.

    Дальнейшее развитие:

    В планах расширение стандартного ПО сервисом «центрального узла». Это позволит мониторить одновременно по локальной сети как трехфазные комплексы, так и различные конфигурации МАПов и контроллеров. Это уже мало относится к бытовому применению и имеет более промышленный уклон.
    Также, вскорости, батарейный монитор будет дополнен сбором некой статистики по батарее.

    Как заключение:

    Система модульная. Все средства более чем стандартные. Если вас что-то не устраивает, и я отказываюсь это менять (волюнтаризм и тирания :)]), вы всегда можете переделать систему от верху до низу по своему вкусу и потребностям. Например, сделать подключение на один ПК десяти МАП, раскрасить интерфейс по своему вкусу, а также поменять местами панели, либо вообще сделать свои собственные.

    ПО пока распространяется в виде бета-версии. В нем все еще возможны ошибки и неожиданности.

    Правила ветки:


    • Просьба использовать ветку по назначению. Все посты, несущие неконструктивную критику, жесткий флуд, будут удаляться незамедлительно. У вас всегда есть возможность сделать лучше!
    • Приветствуется информация о найденных ошибках, конструктивный диалог об улучшении функционала и новых возможностях. И, в целом, позитивное общение. Я, по мере возможности, стараюсь помочь и улучшить продукт. Вроде бы пока никому в помощи не отказал ;)
    • Если вы знаете «как надо», просьба не писать гневные посты «почему не работает?». Они будут незамедлительно удаляться. Вы же знаете, как надо? Причем тут я? :)]
    • Я более не отвечаю на вопросы «почему сделано так, а не вот так?» Устал одно и то же повторять. Обычно на это есть много причин. Опять же – вы всегда можете сделать так, как считаете правильным. Я с удовольствием добавлю ваше улучшение в релиз!
    • Основное правило: «Я никому ничего не должен»
    • Отдельным индивидуумам, испытывающим ко мне лично, и к тому, что я делаю, устойчивое чувство неприязни, просьба не утруждаться написанием в эту ветку.

    :hello:
     
    Osolemio , 26.07.15
    #1 + Цитировать
  2. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Скриншоты:
     

    Вложения:

    • menu.png
    • sysmenu.png
    • gauges_last.png
    • text.png
    • history.png
    • diagram_bar.png
    • history_graph.png
    • v.png
    Osolemio , 26.07.15
    #2 + Цитировать
  3. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Скриншоты:
     

    Вложения:

    • multichart1.png
    • multichart2.png
    • multichart3.png
    • powers.png
    • battery_set.png
    • OCV.png
    • settings_map.png
    • system.png
    Osolemio , 26.07.15
    #3 + Цитировать
  4. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Скриншоты:
     

    Вложения:

    • sms_set.png
    Osolemio , 26.07.15
    #4 + Цитировать
  5. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Текущая версия - 2.10b. Упомянутый выше образ ext4 для HDD сделаю на днях и выложу в папку ЯД
    Известные ошибки и ограничения:
    1. RasPi. Опечатка в файле /etc/hosts. Должно быть 127.0.0.1. Спасибо @Cronex
     
    Osolemio , 26.07.15
    #5 + Цитировать
  6. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    Ну вот и ладненько :)
    Двигаемся дальше...
     
    Cronex , 27.07.15
    #6 + Цитировать
  7. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    Сегодня после 4 дней работы вывалился вот такой лог, там в конце дамп вывалился.
    Пока на работе, не могу сказать что происходит, но сегодня очень жарко.
     

    Вложения:

    Последнее редактирование: 27.07.15
    Cronex , 27.07.15
    #7 + Цитировать
  8. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    Перезапустил - все в норме...
     
    Cronex , 27.07.15
    #8 + Цитировать
  9. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Это какая-то физическая фигня походу. Сбой в ядре случился. У меня такого не было. Что было - это позавчера в грозу GSM модем на другие порты "перепрыгнул" :)

    @Мax94, спасибо большое, поправлю. В принципе тут не важно. И в доках, и в скрипте все однозначно описано
     
    Osolemio , 27.07.15
    #9 + Цитировать
  10. Мax94
    Регистрация:
    07.09.12
    Сообщения:
    7.846
    Благодарности:
    1.700

    Мax94

    ·

    Мax94

    ·

    Регистрация:
    07.09.12
    Сообщения:
    7.846
    Благодарности:
    1.700
    Адрес:
    Калининград
    Имхо важно везде.
    Иначе вводит в заблуждение. Ведь понять правильно неправильно написанное- это ещё постараться надо...
     
    Мax94 , 27.07.15
    #10 + Цитировать
  11. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    @Osolemio,
    да согласен похоже что просто мог быть банальный ядерный сбой, хоть с SD хоть с флешкой.
    А может просто локальный перегрев - у нас сегодня необычно жарко было, да и вспышки на солнце :)
     
    Cronex , 27.07.15
    #11 + Цитировать
  12. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    700МГц на родину верните ;)
     
    Osolemio , 27.07.15
    #12 + Цитировать
  13. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    Ага, уже подумал про это, ну может все таки 900 ? :)

    в общем вернул 900 - наблюдаем.
     
    Последнее редактирование: 27.07.15
    Cronex , 27.07.15
    #13 + Цитировать
  14. Osolemio
    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073

    Osolemio

    Живу дома. Сюда захожу

    Osolemio

    Живу дома. Сюда захожу

    Регистрация:
    31.05.14
    Сообщения:
    3.256
    Благодарности:
    1.073
    Адрес:
    Минск
    Поставил на закачку образ для Raspbian Pi 2 с ФС ext, пригодный для любого накопителя. Ссылка на папку в шапке ветки. Образ 16ГБ. Снимался с флешки.
    Разбивка:
    первый раздел 56МB (/dev/sda1 - fat32) монтируется ro /microart
    второй раздел 5GB (/dev/sda2 - ext4 без журналирования) - rootfs /
    третий раздел (/dev/sda3 - ext2) монтируется в /bases
    Подумав, я не стал делать все linux разделы ext4. Оставил, как былО :)
    Потому как может быть масса аргументов в пользу нынешнего разбиения (в первую очередь быстродействие). Кроме того, ext2 легчайшим образом переводится в ext4 при необходимости. А вот обратно - существенно хуже... :)
    Для справки преобразование для раздела ext2 /dev/sda3 в ext4:
    1. Останавливаем mysql: /etc/init.d/mysql stop
    2. Размонтируем раздел: umount /dev/sda3
    3. дальше преобразуем ext2 -> ext4 с журналированием и пр.:
    tune2fs -O has_journal,extents,uninit_bg,flex_bg,huge_file,dir_nlink /dev/sda3
    e2fsck -pfDC0 /dev/sda3
    Потом монтируем обратно и запускаем mysql
    Все готово
    При желании на втором разделе можно включить журналирование тоже командой tune2fs

    После нарезки на накопитель большого размера (>16ГБ) лучше увеличить размер /dev/sda3 до физических размеров диска.
    Для этого опять же останавливаем mysql, размонтируем раздел,
    удаляем /dev/sda3 утилитой fdisk
    создаем новый первичный раздел на весь оставшийся размер накопителя (оба значения по умолчанию)
    И затем "растягиваем" размер файловой системы утилитой resize2fs
    Неплохой пример тут: (первое, что нашел, чтобы не писать много букв) http://www.o-nix.com/pages/reshenija-v-linux/resize-ext2ext3ext4.php

    Все команды выполняются от имени root (sudo).
    Еще по преобразованию разделов: https://keepout.cn/ru/ИТ/Linux/ext2-ext3-ext4
     
    Osolemio , 29.07.15
    #14 + Цитировать
  15. Cronex
    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15

    Cronex

    Живу здесь

    Cronex

    Живу здесь

    Регистрация:
    29.06.15
    Сообщения:
    155
    Благодарности:
    15
    Адрес:
    Находка
    Непрерывная эксплуатация, последние 2 дня было АЦКИ жарко плюс дикая влажность, однако пока все в порядке.
     
    Cronex , 05.08.15
    #15 + Цитировать