[Из песочницы] Система мониторинга и записи сигналов для Arduino и не только
Всем привет. Еще одна попытка сделать нормальную систему для отображения графика значений данных.
Представляю свою разработку — ПО «SVisual» — мониторинг сигналов онлайн и запись архива на диск. Смотреть/записывать можно любые сигналы, не только с ардуино.
Идея начала витать лет 7 назад, когда еще занимался автоматизацией. Силы появились как в разработку на высоком ушел.
Проекту год с лишним. Писалось все по ходу дела и наличию времени, сначала монолит — сервер и только просмотр, потом архив, монитор… Так до ардуинки добрался.
Хотел копейку с этого дела поиметь сначала, но продвижение другая тема совсем, да и до продукта, за который не стыдно что-то брать, далеко. Поэтому решил сделать вклад в opensrc, чуть-чуть хотя бы рассчитаться.
ПО частично кросплатформенное — Windows и Linux (CentOS). Написано все на С++, визуализация на Qt. Интерфейс и мануал на русском. На английский начал переводить, да…
Система SVisual состоит из трех частей:
- SVMonitor — графическое приложение для онлайн просмотра и записи архива;
- SVViewer — графическое приложение для просмотра архива записей;
- SVClient — пользовательская библиотека для отправки данных. Для ардуино скетч.
Немного сухого описания возможностей.
Возможности SVMonitor:
— подключение к МК по COM порту (usb для arduino), по сети Ethernet или Wi-Fi протокол TCP;
— опрос значений сигналов в реальном времени с частотой от 100 Гц, количество устройств и сигналов выбирается пользователем;
— допустимое количество сигналов для записи 2048, кол-во модулей 8 (при превышении ничего страшного не произойдет, будет только предупреждение, запас предусмотрен);
— вывод значений выбранных сигналов на экран монитора в реальном времени;
— запись архива сигналов на жесткий диск ПК;
— просмотр архива с помощью дополнительного ПО SVViewer;
— возможность установки оповещений о возникшем событии (триггеров), запуск пользовательского процесса при срабатывании триггера;
— добавление сигнала для просмотра/записи только клиентом, никаких дополнительные движений не требуются.
Архитектура ПО
Здесь в принципе думаю все понятно. Пару слов скажу.
Клиенты передают данные на монитор, монитор передает в сервер обработки данных (SVServer.dll). Сервер занимается буферизацией, записью на диск, обработкой триггеров — пользовательских меток. Внутри все асинхронно.
Данные на диск попадают каждые 10 минут, сжимаются с помощью zlib. Архивные файлы получаются в часах, по умолчанию 2 часа файл.
Сервер обработки данных может использоваться независимо от монитора, например, чисто как сервис для записи архива.
Пример для ардуино
#include
void setup() {
bool ok = svisual::connectOfCOM("test");
}
int cnt = 0;
void loop() {
svisual::addIntValue("dfv", cnt);
++cnt;
if (cnt > 10) cnt = 0;
if (cnt % 2) svisual::addBoolValue("bFW", true);
else svisual::addBoolValue("bFW ", false);
if (!(cnt % 2)) svisual::addBoolValue("bBW", true);
else svisual::addBoolValue("bBW ", false);
delay(200);
}
В результате вы увидите:
ПО распространяется свободно, лицензия MIT.
Спасибо.