Диагностика И Мониторинг Wi-Fi Устройств В Grafana

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

Устройство считает импульсы со счетчиков воды, просыпается раз в сутки и отправляет данные на сервер по Wi-Fi. Следующий этап, который мы запустили Веб-сайт — услуга по передаче показаний управляющим компаниям.

Чтобы грамотно отвечать пользователям, что не так с их устройствами, была настроена база данных временных рядов InfluxDB и Grafana для рисования графиков.

К сайту сейчас подключено около 1600 устройств — есть за чем «мониторить»… Grafana имеет 4 дашборда:

  • мониторинг состояния сервера
  • мониторинг состояния тестового сервера
  • графики по устройствам
  • статистика и бизнес-метрики
Ниже рассказ о том, какую информацию об устройствах видит техподдержка сайта и почему.

Сначала покажу личный аккаунт Ватериуса в стиле «минимализм»:

Диагностика и мониторинг Wi-Fi устройств в Grafana

Личный кабинет пользователя сайта Вы можете включить статистику по месяцам

Диагностика и мониторинг Wi-Fi устройств в Grafana

И настраиваем отправку показаний в разные места:

Диагностика и мониторинг Wi-Fi устройств в Grafana

Уже 95 площадок по всей России.

.

Устройства отправляют на сервер гораздо больше данных (подробное описание полей на github ).

Первая версия имела следующие поля:

  • количество импульсов;
  • показания счетчиков, куб.

    м;

  • разница показаний от предыдущего пробуждения, л;
  • причина загрузки attiny85 (значение регистра);
  • версии прошивок микроконтроллеров Attiny и ESP;
  • количество перезагрузок;
  • пульсовая масса в метре (1 или 10 литров).

Мы видели их на странице администратора Django. Но графику там нарисовать нельзя, поэтому мы обратились к Grafana. Приборная панель начинается с показаний двух каналов Ватериуса, уровня сигнала роутера и количества перезагрузок.

Уровень сигнала полезен, если устройство регулярно теряет соединение.

Количество перезагрузок указывает на замену батареи или проблемы.

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



Диагностика и мониторинг Wi-Fi устройств в Grafana

Графики расхода пригодятся, если настройка отклонилась от инструкции и показания опережают или отстают.

Диагностика и мониторинг Wi-Fi устройств в Grafana

Схема подачи горячей и холодной воды Администратор видит, что горячей воды расходуется гораздо больше, чем холодной, и может сделать вывод, что счетчик горячей воды стоит на 1 л/имп, а Ватериус решил, что на 10. Однажды Ватериус насчитал для друга 20 кубометров за неделю.

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



Диагностика и мониторинг Wi-Fi устройств в Grafana

В прошивку сразу был добавлен уровень сигнала на входе микроконтроллера (analogRead) в момент замыкания геркона.

По нему можно судить о качестве подключения Ватериуса к счетчикам.

Если значение скачет, значит, провод не закреплен.

На графике ниже АЦП изменяется в пределах погрешности измерения 103-104, что говорит о хорошем контакте.



Диагностика и мониторинг Wi-Fi устройств в Grafana

Здесь на Горячей Воде мы видим плохой контакт провода с Ватериусом:

Диагностика и мониторинг Wi-Fi устройств в Grafana

Позже я добавил продолжительность пробуждения Ватериуса по Wi-Fi (время пробуждения), чтобы судить о его отношениях с маршрутизатором.

А длительность настройки Ватериуса пользователем (setuptime) позволяет узнать, когда и сколько раз он его настраивал.



Диагностика и мониторинг Wi-Fi устройств в Grafana

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



Диагностика и мониторинг Wi-Fi устройств в Grafana

Чтобы создать такие поля со списком, мы используем переменные панели мониторинга:

Диагностика и мониторинг Wi-Fi устройств в Grafana

Ниже приведен пример графиков, когда с устройством случилось что-то плохое.

Ватериус очень часто выходил на связь, потом батарейки сели, через неделю пользователь установил новые и перепрошил микроконтроллер - количество перезагрузок (boot) обнулилось.



Диагностика и мониторинг Wi-Fi устройств в Grafana

Для упрощения конструкции в Ватериусе нет вольтметра.

Напряжение измеряется в ESP после стабилизатора.

При включении Wi-Fi есть скачки.

Если нарисовать их график (напряжение_дифф), то можно увидеть, что к концу срока службы батареи они становятся частыми.

Когда батарейки разрядятся, мы оповестим вас по электронной почте (устройство не выходит на связь 5 дней).

Любопытно, что Ватериус продолжит снимать показания — напряжения для питания аттины хватает, но не хватает для включения Wi-Fi. Настройки виджетов Grafana такие же:

Диагностика и мониторинг Wi-Fi устройств в Grafana

Виджет Стат Текущее значение счетчика воды:

  
  
   

SELECT mean("ch0") FROM "infinity".

"waterius" WHERE ("email" =~ /^$email$/ AND "token" =~ /^$token$/) AND $timeFilter GROUP BY time($__interval)



Диагностика и мониторинг Wi-Fi устройств в Grafana

Виджет График (старый) разница в литрах:

SELECT mean("delta0") FROM "infinity".

"waterius" WHERE ("email" =~ /^$email$/ AND "token" =~ /^$token$/) AND $timeFilter GROUP BY time($__interval)

Код Python, который отправляет информацию в базу данных InfluxDB:

client = InfluxDBClient(host, port, INFLUXDB_USERNAME, INFLUXDB_PASS, INFLUXDB_DB, ssl=ssl, verify_ssl=True, timeout=3.0) def influx_send(data): try: point = { 'measurement': 'waterius', 'tags': {}, 'fields': {} } tags = ['version', 'version_esp', 'email', 'f'] # + key fields = ['delta0', 'delta1', 'good', 'boot', 'ch0', 'ch1', 'imp0', 'imp1', 'voltage', 'resets', 'voltage_low', 'voltage_diff', 'rssi', 'waketime', 'setuptime', 'adc0', 'adc1'] for name in tags: if name in data: point['tags'][name] = data[name] for name in fields: if name in data: point['fields'][name] = data[name] if 'key' in data: point['tags']['token'] = data['key'] # influxdb 'key' is a keyword if not client.write_points([point, ]): log.error('InfluxDBClient influx_send error') except Exception: log.error('InfluxDB data error: ' + traceback.format_exc())

В следующей статье я могу рассказать о визуализации бизнес-показателей и статистики пользователей.

Если вы знаете, как сделать дашборд Grafana доступным для пользователей, чтобы они видели только свои устройства, напишите нам и мы попробуем это реализовать.

Спасибо всей команде проекта, пользователям и тем, кто помогает проекту! Чат проекта в телеграмма .

Теги: #iot #it инфраструктура #мониторинг #Grafana #influxdb

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.