Grafana Ploter
Sunday, May 12, 2024 | 3 | Sunday, May 12, 2024
Вступ
Візуалізація даних від різних пристроїв як, наприклад 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-проектів та тих, хто працює з «безінтернетними речами».