Нужно ли использовать MQTT или HTTP?

9

Я работаю над устройством, которое распознает и собирает информацию из окружающей среды, такую ​​как температура, влажность и т. Д.

Устройство не подключено к какому-либо источнику питания, но имеет аккумулятор и солнечную батарею для зарядки.

Большую часть времени он почти находится в состоянии глубокого сна, и он просыпается только тогда, когда ему нужно почувствовать и передать данные. Эта операция занимает около 1-2 минут, а затем снова ложится спать.

Я не эксперт в этой области, но я думаю, что MQTT должен быть хорошим вариантом, если устройство должно быть доступно для получения сообщений от темы все время, но в моем сценарии оно только считывает датчики и отправляет данные на сервер периодически.

В настоящее время я отправляю данные через HTTP, но мне интересно, имеет ли смысл внедрять MQTT? Должен ли я получить какое-либо преимущество перед HTTP для этого сценария?

zephrax
источник
1
Это похоже, но моя цель - понять, нужно ли мне использовать MQTT в моем сценарии: когда мое устройство будет в спящем режиме в 99% случаев и просто просыпается для отправки показаний.
зефракс
1
Я бы не предложил ни того, ни другого. Сначала напишите ваши требования и внедрите самый упрощенный протокол. Не было бы смысла использовать Ferrari Engine в газонокосилке для стрижки травы. Не увлекайтесь многословными вещами - просто проведите фундаментальные исследования и реализуйте то, что работает лучше всего.
Xofo
Было бы неплохо зафиксировать требование в заголовке вопроса. Как правило, вы спрашиваете о небольших, нечастых значениях датчика, я думаю.
Шон
@Xofo Мне было бы интересно узнать ответ на этот вопрос и узнать, почему вы можете предложить использовать собственный протокол. Стоит ли дополнительных усилий по «прокрутке своего», а также проблемам безопасности и т. Д.?
Aurora0001
Не пользовательский протокол ... Я сказал сначала определить требования. Некоторые из предписанных протоколов часто являются слишком тяжелыми.
Xofo

Ответы:

8

Если вы храните данные, просто придерживайтесь HTTP. HTTP это просто односторонний сигнал.

Если ваш сервер или любая другая «вещь» должна реагировать на определенный сигнал (низкая температура, ...), тогда используйте MQTT. Таким образом, многие устройства могут подписаться на ваш температурный сигнал и немедленно реагировать, не используя ваш сервер.

Goufalite
источник
1
Также существует разделение между большим (http) и небольшим (mqtt) объемом данных одновременно, а также mqtt более надежен при плохих условиях сигнала.
Мико
1
Сервер получает данные только от датчиков. Суть моего поста в том, что я не уверен, имеет ли смысл использовать MQTT, потому что устройство будет 99% времени находиться в состоянии глубокого сна (все шины, модем, датчики выключены), и это только просыпается, чтобы прочитать датчики и отправить данные.
зефракс
Если вы где-то храните свои данные, это означает, что у вас есть база данных и внутренний способ ее запроса (сервер apache, командная строка SQL, ...). Если вы поместите MQTT поверх этого, у вас будет другой экземпляр и порт для управления.
Гуфалит
1
Я согласен с этим ответом. Если вам не нужна двусторонняя связь, и устройство часто спит, то HTTP является простым и подходящим выбором протокола.
TheMagicCow
8

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

Таким образом, вы можете рассмотреть вопрос о COAP , то Co nstrained A РИМЕНЕНИЕ P rotocol, который разработан специально для устройств с ограниченными в Интернете вещей.

В статье « Сравнение экономической эффективности CoAP и HTTP в приложениях Web of Things» вы можете найти довольно убедительные доказательства того, что CoAP может дать вам некоторую экономию энергии здесь. В Приложении A (стр. 38) вы можете посмотреть ожидаемое время автономной работы устройств в таблице A.4. Для временного интервала 120 секунд, как вы ожидаете в вашем случае использования:

t bat (HTTP), дней - 2013

t bat (CoAP), дней - 11013

Эти расчеты проводились на паре углеродно-цинковых батарей типа АА, но вы можете ясно видеть, что CoAP потребляет намного меньше энергии, поэтому стоит подумать. Его «push-режим», как описано в статье, кажется именно тем, что вы планируете делать.

Хотя вы конкретно не спрашивали о CoAP, я думаю, что стоит упомянуть, поскольку Goufalite уже рассмотрел существенные различия между MQTT и HTTP. Хорошее практическое правило: планируете ли вы общаться один на один или один ко многим ? Если это первое, HTTP и CoAP кажутся более подходящими. Если это последнее, MQTT, вероятно, более удобно.

Аврора0001
источник