Jump to content

    

Посоветуйте чем лучше визуализировать mqtt-данные

Есть системка мониторинга дачи, собранная на коленке на базе WiFi модулей ESP8266. К каждому модулю подключен датчик температуры-влажности SI7021, все модули коннектятся к облаку cloudmqtt.com. На смартфоне есть приложение MQTTDash, которое исправно показывает мне значения температур и влажностей в помещениях, в подполе и на улице. Так пользуюсь уже год, отоплением и бойлером управляю модулями Sonoff. Понятно, что через облака мало надёжности, но не частые падения этого всего хозяйства я переживу, система не жизненно важная и ресурсов я на неё потратил очень мало. Стал интересен вопрос долгосрочного мониторинга климата. В связи с этим ищу какие-то общепринятые подходы логгирования и визуализации трендов значений топиков mqttcloud.

Пока кроме MQTT Eplorer для винды ничего не нашёл, но её функционал сильно мал. Хочется иметь логгирование на ПК и визуализацию длительных периодов времени (недели, может и месяцы), с возможностью масштабирования графиков.

Делал ли кто-нибудь такое и если да, то как?

Заранее спасибо за советы.

Edited by Муравей

Share this post


Link to post
Share on other sites

Данные нужно сохранять на сервере в БД после этого можно сделать отображение и обработку или что Вам нужно;

Стандартный софт для этого - InfluxDB + Grafana

Также для  этого можно использовать существующие облачные сервисы с поддержкой mqtt но придется использовать их форматы. 

Edited by xserg

Share this post


Link to post
Share on other sites
On 10/23/2019 at 11:23 AM, Муравей said:

В связи с этим ищу какие-то общепринятые подходы логгирования и визуализации трендов значений топиков mqttcloud.

Пока кроме MQTT Eplorer для винды ничего не нашёл, но её функционал сильно мал. Хочется иметь логгирование на ПК и визуализацию длительных периодов времени (недели, может и месяцы), с возможностью масштабирования графиков.

Делал ли кто-нибудь такое и если да, то как?

Лично я логи MQTT складываю просто в файл на том же Rpi командой mosquitto_sub -v -t /# | xargs -d$'\n' -L1 sh -c 'date "+%D %T.%3N $0"' >> /var/log/mosquitto/mosq.log & Каждый день скриптом файл закрывается, переименовывается и ложится в архив и запись начинается по новой. Надеюсь, что когда-нибудь я обучу по ним нейросеть, которая будет управлять лучше, чем я. Но то влажные мечты и не для визуализации.

Про InfluxDB + Grafana написали, сервер вам все равно нужен будет (вы же не будете винду 24 часа в сутки включенной держать?), поэтому стоит обратить внимание на системы-интеграторы для умного дома - Home Assistant, Openhab и т.д. Там уже все эти логи и тренды с визуализацией интегрированы и настроены (ну или почти :-) ) и вам нужно просто будет прописать ваши топики, чтобы оно начало захватывать данные из MQTT. Это, в принципе, очень общепринятый подход. У меня такой работает.

Если же хотите без своего сервиса, а тоже в облаке, то я знаю только ThingSpeak - вроде как мощная штука от самих разработчиков Матлаба, но вот с бесплатностью проблемы - хотя для домашнего пользования может и хватит. Они MQTT принимают. Если погуглить, то вроде вылазят альтернативы, так что в принципе это тоже можно считать общепринятым. Сам хочу как-нибудь попробовать.

 

Share this post


Link to post
Share on other sites

У меня дома расположился серверок на BananaPi с белым IP. Я использую Blynk сервер, ThingSpeak сервер ну и Web сервер на нем. Blynk удобен мне, т.к. хотелось использовать моблиьное приложение. Там есть простая визуализация данных (в пределах 3 мес.) и элементы управления (всякие кнопки и другие полезные элементы). В ThingSpeak пишу датчики температуры и показания счетчика Меркурий. На тойже BananaPi лежит страничка для визуализации , которую я могу открыть из любого браузера. Код такой странички можно посмотреть здесь https://github.com/neilh10/thingspeakmultichannel-highcharts

Share this post


Link to post
Share on other sites
49 minutes ago, syoma said:

Про InfluxDB + Grafana написали, сервер вам все равно нужен будет (вы же не будете винду 24 часа в сутки включенной держать?), поэтому стоит обратить внимание на системы-интеграторы для умного дома - Home Assistant, Openhab и т.д.

Это явно не под сценарий TC. InfluxDB слишком узкозаточенная база и не годится для общего применения. 

cloudmqtt.com работает на основе сервера Mosquitto.
Сервер Mosquitto отлично работает под виндой и таки 24 часа в сутки. Переплюнет любого линукса. 
Также Mosquitto работает и локально под виндой на ПК
Выбор базы данных однако задача ответственная.
Поскольку в cloudmqtt.com данные гуляют в  JSON кодировке, то и базу надо выбирать для которой  JSON нативный и это будет https://www.mongodb.com/
 

Share this post


Link to post
Share on other sites
43 minutes ago, AlexandrY said:

Выбор базы данных однако задача ответственная.
Поскольку в cloudmqtt.com данные гуляют в  JSON кодировке, то и базу надо выбирать для которой  JSON нативный и это будет https://www.mongodb.com/

С точки зрения колки дров или пушки по воробьям - один хрен. Ну mongo, так mongo. Три строчки переписать.

Share this post


Link to post
Share on other sites
58 minutes ago, syoma said:

С точки зрения колки дров или пушки по воробьям - один хрен. Ну mongo, так mongo. Три строчки переписать.

А теперь тремя строчками сделайте масштабирование времени в openHAB. :sarcastic_hand:

Не, openHAB эт для поиграться и забыть.   

Share this post


Link to post
Share on other sites
31 minutes ago, AlexandrY said:

А теперь тремя строчками сделайте масштабирование времени в openHAB. :sarcastic_hand:

Можете сказать конкретнее, что вы имеете ввиду? Визуалка там встроенная и вообще ничего писать не надо.

Share this post


Link to post
Share on other sites
Just now, syoma said:

Можете сказать конкретнее, что вы имеете ввиду? Визуалка там встроенная и вообще ничего писать не надо.

Масштабирование времени эт когда пишите каждую минуту, а база умеет автоматически конвертировать эти данные по часам, дням, месяцам и т.д.
А не напрямую все данные вливать в график чтобы он сам разрулили агрегацию и прореживание.  
Чисто вопрос быстродействия. 

Share this post


Link to post
Share on other sites
1 hour ago, AlexandrY said:

Масштабирование времени эт когда пишите каждую минуту, а база умеет автоматически конвертировать эти данные по часам, дням, месяцам и т.д.
А не напрямую все данные вливать в график чтобы он сам разрулили агрегацию и прореживание.  
Чисто вопрос быстродействия. 

Не знаю, но не думаю, что для таких проектов это важно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now