2016-07-06 3 views
1

Arduino에서 1 분에 한 번 HTTP POST 요청이있는 REST API (OpenShift PaaS)로 데이터 (GPS 좌표)를 보냅니다. 데이터는 MySQL 데이터베이스에 저장됩니다.RESTful HTTP 대신 IoT 게시/구독 프로토콜을 사용해야하는 이유는 무엇입니까?

"IoT"게시/가입 프로토콜 (XMPP, MQTT)이 더 좋을까요? 왜?

Restful HTTP 대신 정확히 두 프로토콜을 사용합니까? 내가 그들을 사용하여 상당한 baterry 에너지를 실제로 절약 할 수 있습니까?

AFAIK 이러한 프로토콜 컴퓨터에서 브로커에 데이터를 "게시"하고 내 응용 프로그램에 가입하게됩니다. 앱에서 매분마다 데이터를 수집하고 싶다면 1 분마다 데이터를 구독하는 CRON 작업이 필요하다고 생각하십니까? 또는 데이터 수집은 어떻게 이루어 집니까?

답변

2

"IoT"게시/가입 프로토콜 (XMPP, MQTT)이 더 좋을까요? 왜?

소규모 (센서가 많지 않음) 또는 센서에 많은 전력 (CPU 및 전기)이 있거나 통신 비용이 낮은 경우 MQTT를 사용할 이유가 적습니다. 반대로 대규모로 또는 CPU/전기 제한 센서의 경우 또는 통신 비용이 높은 경우 MQTT 또는 이와 유사한 IoT 프로토콜은 장점이 있습니다. 매우 간단한 임베디드 CPU에서 MQTT를 구현할 수 있으며, HTTP를 구현하기에 더 복잡하다.

Restful HTTP 대신 정확히 두 프로토콜을 사용합니까? 내가 그들을 사용하여 상당한 baterry 에너지를 실제로 절약 할 수 있습니까?

예를 들어 배터리 전원을 절약 할 수 있습니다. 예를 들어 MQTT 3G는 MQTT 클라이언트에서 브로커로 지속되는 TCP 연결을 통해 MQTT 데이터를 게시하는 데 소요되는 프로토콜 오버 헤드가 적기 때문에 일반적으로 SSL 연결을 설정하고 상세한 HTTP를 사용하여 데이터를 게시 한 다음 SSL 연결을 삭제해야하는 모든 REST POST가 있습니다.

MQTT 연결은 본질적으로 양방향입니다 (응용 프로그램에서 사용하지 않아도 됨). 기본적으로 센서에 명령을 보낼 수 있습니다. REST/HTTP를 사용하여 동일한 작업을 수행하려면 긴 폴링을 위해 서버를 구성해야합니다. 보여줍니다 여기 SSL http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https 이상 MQTT 대 긴 폴링 HTTPS의 비교 ~ MQTT는 그래, 당신은 중요한 배터리 에너지를 절약 할 수 있습니다 그래서 HTTPS 폴링 속도를 비교하여 저장 4.1 %의 배터리 전원/일이 있습니다

.

MQTT를 사용하면 매우 작은 메시지를 보낼 수 있습니다. 낮은 오버 헤드로 2 바이트 데이터의 몇 바이트. REST/HTTP를 사용하면 데이터가 훨씬 높은 오버 헤드로 많은 HTTP 프로토콜로 래핑됩니다. 장치가 많으면 오버 헤드 바이트가 많아 져 전송되는 데이터가 많아지고 비용이 많이 듭니다. 따라서 MQTT와 같은 소형 프로토콜을 사용하여 대규모로 데이터 전송을 설계하면 비용을 절약 할 수 있습니다.

데이터 매 순간 MQTT와

앱이 일반적으로 주제에 대한 영구 가입을 가지고 있으며, 업데이트를 자동으로 통지를 수집합니다. 매분 요약을 원하면 앱이 업데이트를 저장합니다. DB 및 DB로부터의보고. DB는 대개 모든 데이터를 저장하는 데 필요합니다. 와일드 카드 주제에 가입 할 수 있습니다. 즉, 앱이 예를 들어에 가입하도록 주제를 디자인해야합니다. 모든 태양 센서와 브로커는 앱이 개별 센서를 폴링하지 않고 연결된 모든 장치에 대한 데이터를 전송합니다.

+0

답변 해 주셔서 감사합니다. 많은 통찰력을주었습니다. 그러나 이해할 수 있듯이, MQTT를 사용하려면 연속적인 TCP 연결이 있어야합니다. 이제는 매 분마다 또는 더 적은 횟수로 작은 json을 보내는 것이 좋은 생각이 아닙니다. (15 분을 말하자면 보내는 기간을 설정할 수있는 기능이 있습니까?) –

+0

또한 나는 정상적인 HTTP를 사용하는데 SSL을 필요로하지 않기 때문에 해시를 보내는 데이터가 있습니다. –

+0

영구 TCP 연결은 오버 헤드를 거의 소비하지 않습니다. 그렇습니다. CPU/전력이 많이 들고, 많은 센서를 다루지 않아도되고, 새로운 것을 배울 시간을 갖지 않는 등 확장 된 지연과 같은 설계 또는 프로세스 결정을 내릴 수 있습니다. 이는 HTTP를 사용할 수 있음을 의미합니다. /휴식. 누구도 MQTT를 사용하도록 강요하지 않는다. 당신이 알고 있고 익숙한 것이 IoT 문제를 해결하는 최선의 방법 일 뿐이라고 가정하지 말고 정보에 입각 한 선택을해야한다. – barny