Grafana — плотер

Візуалізація даних від різних пристроїв як, наприклад Arduino, ESP, STM завжди мало певні проблеми через не велику кількість Real-Time плотерів які можуть візуалізувати різні дані в різних в різні красиві графіки. З приходом Grafana в середовищі DiY точилось багато запитань, а як на цій самій графані візуалізувати дані?


Почнім с того що з самого початку Grafana будувалась для аналітики та інтерактивної візуалізації(грошей, навантажень на сервері, кількість запитів, продажів тощо...), для Real-Time націленості не було з самого початку, та все змінилось в 2021, коли була додана підтримка візуалізації даних в реальному часі для IoT. Сьогодні ми розглянемо кейси саме для IoT та для «безінтернетних речей».

Grafana — це мультиплатформенний веб-додаток для аналітики та інтерактивної візуалізації з відкритим кодом. Він надає діаграми, графіки та сповіщення для Інтернету при підключенні до підтримуваних джерел даних.

Як піднімати сервер, встановлювати/налаштовувати софт, як написати прошивку під ваш пристрій я розглядати не буду!

MQTT

MQTT — спрощений мережевий протокол, що працює на TCP/IP. Використовується для обміну повідомленнями між пристроями за принципом видавець-підписник.

Цей спосіб потребує для своєї реалізації доступ до інтернетів нашого пристрою(це може бути ESP32, raspberry pi, або якась нова Arduino UNO R4/arduino portenta h7), MQTT сервер(будь-який пристрій з linux/windows/MacOS, на який встановлено MQTT брокер), сама Grafana, influxDB(опціонально), telegraf(опціонально).

На малюнку зображено два кейси з використанням MQTT, але нащо? Річ у тому що ні Grafana, ні MQTT не вміють зберігати логи про те які дані бігали, між ними потрібно якась база даних якщо вам потрібно дивитися на дані через якийсь період часу. Базою даних може виступати абсолютно люба DB, проте Good Practice для графани є використання InluxDB та Telegraf(є куча статей на цю тему).

У випадку коли в нас джерелом даних виступає MQTT ми знаємо про дані які прибігли в Grafana до моменту перезавантаження сторінки.

Serial <=> WebSocket

А як бути з НЕ інтернет девайсами? Припустімо що графану ми поставили собі на локальний комп’ютер, під’єднали плату Arduino, якось її там запрограмували та тепер їх потрібно пов’язати між собою.

Для цього приходить на допомогу утиліта яку я написав WebSocket Serial Converter.

В цьому кейсі усякий комп’ютер виступає проміжною одиницею між графаною, та якимось девайсом, або, між іншим комп’ютером (бразузером) та нашим девайсом. Як в кейсі з MQTT, без InfluxDB, цей спосіб не вміє на довго зберігати інформацію про те яка інформація була згенерована нашим пристроєм.

Висновок

Grafana — це потужний інструмент для візуалізації даних, який може бути використаний як для IoT, так і для DIY, та інших пристроїв.

Для пристроїв, які мають доступ до Інтернету, найкращий варіант це використання протоколу MQTT та бази даних InfluxDB, який дозволяє в реальному часі візуалізувати дані та забезпечує можливість аналізу старих подій.

У випадках, коли пристрої не мають доступу до Інтернету, використання Serial <=> WebSocket надає можливість зв’язку між пристроєм та Grafana через локальний комп’ютер.

Загалом, вибір між цими підходами залежить від конкретних умов проєкт, доступності Інтернету та вимог до аналізу та візуалізації даних. Grafana відкриває широкі можливості для розробників IoT-проектів та тих, хто працює з «безінтернетними речами».

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Good Practice для графани є використання InluxDB та Telegraf

тільки якщо відсортувати список Best Practice і почати десь ближче до кінця цього списку :)

Підписатись на коментарі