Куда фидить данные с esp32 в массовом порядке?

Тема в разделе "ESP8266, ESP32", создана пользователем kvv213, 4 июн 2020.

  1. kvv213

    kvv213 Гик

    Друзья,

    Планирую собрать энергомонитор (напряжение, ток) на ESP32 на 3 фазы. Хочу иметь возможность для подробного анализа собираемых данных. Соответственно нужно хранилище данных, готовое принимать данные раз в секунду, сохранять их в себя, а затем визуализировать (графики, зум). Если хранилище еще попутно будет фидиться через MQTT от Mosquitto, то будет вообще замечательно (данные с других устройств появится возможность тоже анализировать).

    Собственно вопрос - что использовать для подбой системы хранения и анализа? Есть в хозяйстве пара серверов с Ubuntu, можно на них что-то водрузить. Не хочется изобретать велосипед, хочется более-менее готовое решение.
     
  2. ИгорьК

    ИгорьК Гуру

    1. Гоним данные на MQTT брокер
    2. забираем данные с брокера узлом NodeRed и
    3. отправляем в influxDB
    4. анализируем Grafana.

    Видим приблизительно:

    upload_2020-6-3_23-18-45.png

    upload_2020-6-3_23-19-23.png

    upload_2020-6-3_23-20-39.png
    upload_2020-6-3_23-21-56.png
     
    Nikitich и kvv213 нравится это.
  3. kvv213

    kvv213 Гик

    Стесняюсь спросить, а есть ли этот набор в виде контейнера Докера, например?
     
  4. ИгорьК

    ИгорьК Гуру

    У меня нет.
    Там все просто и стандартно. Через apt install все устанавливается.
    Настраивать все равно придётся под свои данные.

    У меня на NAS Qnap два виртуальных Debian, один держит mqtt брокер, Node Red и Domoticz, второй - grafana и influxDB.
     
    kvv213 нравится это.
  5. kvv213

    kvv213 Гик

    Как я понимаю, систему если и грузит, то только Grafana, остальное более-менее.
    На локации у меня сервер загружен как правило на 70-80% по CPU, есть сервер в связке через VPN на шнурке в 60 мбит, он более менее свободный. Имеет смысл разносить MQTT+NodeRed+influxDB и Grafana соответственно на первый и второй севера?

    Хотя глянул, на сервере с локацией 100% загрузка на оба ядра. Пишется видеонаблюдение :)
     
  6. ИгорьК

    ИгорьК Гуру

    Я разносил несколько по другому принципу. Раз у меня все висит на одном NAS, то как их не разноси - в сумме будет одно и тоже по нагрузке на железо.

    Но скажу, что этот софт сильно NAS не грузит, в том числе и grafana. Хотя конечно выборка "за последние 90 дней" может открываться секунды 4-5. Но открывшись не тормозит.
     
    kvv213 нравится это.
  7. kvv213

    kvv213 Гик

    В общем принято стратегическое решение провести апгрейд процессора на материнке на более мощный. Дабы всему хватало места.
     
    ИгорьК нравится это.
  8. kvv213

    kvv213 Гик

    Установил Node-red - штука чумовая. Ресурсы почти не жрет (по крайней мере на фоне видеонаблюдения ее просто незаметно).
    Установил InfluxDB - штука интересная. Прочитал про ограничения по количеству записей, количеству запросов. В теории мой мини-сервер потянет очень много.
    Пока не дошел до Grafana, пришлось потратить немного времени на то, чтобы понять как запихивать данные в InfluxDB.

    По ходу образовался вопрос, ответ на который может дать только опыт:

    В Influx есть "измерения" (некий аналог таблицы в SQL). Допустим у меня есть несколько устройств которые фидят в MQTT свои температуры, давления и т.п. Устройства в разных локалциях. Как лучше организовать "измерение"?
    Вариантов 2:
    1. Сделать одно измерение и по ключам разделять локации.
    2. Сделать несколько измерений, по одному для каждой локации.

    PS. Энергомонитрное пойдет в отдельное измерение, это понятно.
     
    ИгорьК нравится это.
  9. kvv213

    kvv213 Гик

    В общем, все настроил, все работает. Все три компонента просто суперические. Пока фидю туда данные с датчиков температуры, серверов и т.п. Как доделаю энергомонитор, пойдет информация и с него.
    Сделал плоскую "таблицу", где есть несколько "меток" для характеризации и одно value для значения. Графана подтягивает и обрабатывает норм.
     
    ИгорьК нравится это.
  10. Nikitich

    Nikitich Нерд

    Спасибо за то, что делитесь знаниями. Не знал до этого момента про Influx и Grafana. Специально зарегистрировался, чтобы поблагодарить, до этого момента только читал форум :) Единственно не совсем понял, для чего NodeRed и MQTT (для сторонних устройств?), ведь ESP32 может сразу писать в InfluxDB, а Grafana может сразу брать данные из базы. Буду благодарен, если проясните роль NodeRed в этой схеме.
     
    ИгорьК нравится это.
  11. ИгорьК

    ИгорьК Гуру

    Знаете, жил такой товарищ Гегель, он взял да и придумал диалектику. Увидел в ней три закона. Один обозвал как переход количественных изменений в качественные.

    Суть вот в чем. Если у вас одно и только одно устройство, вы можете делать так как вы говорите - писать с него в базу и все.

    Когда у вас этих устройств туча и зачастую концепции меняются - сегодня одно, завтра другое, у вас не просто многАустройств, у вас, по Гегелю, новое качество. И здесь проще иметь одно место где находятся все данные и неспеша с ними работать. Что-то идет в Home Assistant, что-то в базу. Сегодня вам нужно одно, через год-два - другое.

    Почитайте вот это. Я пытаюсь там подробнее объяснить зачем нужен MQTT.
     
    8bitai и Nikitich нравится это.
  12. Nikitich

    Nikitich Нерд

    Спасибо Вам большое! Про MQTT понял, осталось с NodeRed познакомиться поближе :)