2017-05-19 4 views
2

온도, 습도 등과 같은 환경 정보를 감지하고 수집하는 장치에 대해 작업하고 있습니다.IoT : MQTT 또는 HTTP를 사용해야합니까?

장치가 전원에 연결되어 있지는 않지만 장치와 전지가 있으며 그것을 청구하십시오.

거의 대부분 깊은 수면 상태에 있으며 데이터를 감지하고 전송해야 할 때만 깨어납니다. 이 작업은 약 1 ~ 2 분이 걸린 다음 다시 잠자기 상태가됩니다.

필자는이 분야의 전문가는 아니지만 항상 주제에서 메시지를 수신 할 수있는 장치에 액세스해야하는 경우 MQTT를 사용하는 것이 좋지만 시나리오에서는 센서 만 읽는 것이 좋습니다. 주기적으로 서버에 데이터를 보냅니다.

현재 HTTP를 통해 데이터를 보내고 있지만 MQTT를 구현하는 것이 합리적인지 궁금합니다. 이 시나리오에서 HTTP보다 이점을 얻을 수 있습니까?

+1

읽을 수있는 IoT 사이트에서 [이 질문] (https://iot.stackexchange.com/questions/44/when-and-why-to-use-mqtt-protocol)을 찾을 수 있습니다. Stack Overflow에 대한 답을 얻지 못하면 거기에 질문 할 수도 있습니다. IoT 사이트는 관심있는 비트에 좀 더 집중할 수 있습니다. – Aurora0001

답변

2

자세한 내용은 MQTT와 HTTP에 대한 풍부한 참고 자료가 있지만 여기서는 응용 프로그램에 대한 몇 가지 중요한 점을 설명합니다.

MQTT

  • MQTT는 HTTP를 통해 상당한 자원을 절약 할 수 있습니다 지속적인 연결을 허용합니다. 이는 SSL을 사용하는 경우에 가장 관련이 있습니다.
  • 일부 메트릭 만 보내는 경우 MQTT는 일반적으로 HTTP보다 대역폭 효율이 높습니다.
  • MQTT는 전체 페이지가 아닌 데이터를 전달하도록 설계되었으므로 pub/sub 모델은 보존 및 마지막 유 용과 같은 많은 유용한 내장 기능을 제공합니다.
  • 또한 MQTT는 암호화, 인증 및 액세스 제어를 구현하는 간단한 방법을 제공합니다.
  • MQTT는 연결이 간헐적이거나 신뢰할 수없는 상황에 적합합니다. 다양한 Quality-of-Service 레벨은 데이터를 안정적으로 전송할 수있는 확실한 방법을 제공합니다.
  • 큰 응용 프로그램에서는 MQTT 브로커가 내 경험을 쉽게 관리 할 수 ​​있도록합니다. 특히 성능 측정을위한 표준화 된 측정 기준이 있다는 점이 좋습니다.
  • MQTT의 주제/하위 토픽 값 구조는 데이터를 구성하는 데 도움이되고 여러 프로젝트간에 자원을 확장하고 공유 할 수있게 해줍니다.
  • 이는 개인적인 취향이지만 HTTP를 사용하는 것보다 MQTT 프로토콜을 이해하고, 문제를 해결하고, 프로그래밍하는 것이 더 쉽다는 것을 알게되었습니다. 특히 Python Paho MQTT 라이브러리는 간단하고 잘 작동합니다.

요약하면 MQTT에는 응용 프로그램에 완벽하게 보일 수있는 많은 기능이 있습니다. 즉, HTTP를 사용하여 많은 것을 복제 할 수는 있지만 더 많은 작업이 필요할 것입니다.

HTTP

  • 거의 방화벽과 쉽게 호환성을 보장하는 모든 곳에서 지원. 제어하지 않는 네트워크에 배포하는 경우 중요 할 수 있습니다.

  • 더 일반적인 프로토콜이므로 사용자 (및 최종 사용자)는 이미이 프로토콜에 익숙해 져있을 수 있습니다. 비슷하게 보안을 쉽게하는 보안 모델을 이미 이해하고있을 수도 있습니다.

  • 다른 MQTT 구현 간에는 몇 가지 차이점이 있는데, 이는 어려움을 초래할 수 있습니다 (즉, Mosquitto를 사용하고 사람들이 HiveMQ 설정에 대해 이야기 할 때 혼란 스러울 때가 있음). HTTP는 나를 더 보편적으로 공격하며 훨씬 더 큰 사람들이 당신을 도울 수 있습니다.

그래서 HTTP MQTT에 비해 몇 가지 고유 한 단점이 있지만 해낼 것이다 MQTT의 특정 기능이 당신에게 호소하지 않는 경우 현실적입니다.

그러나 실제로 대규모 프로젝트 인 경우 특정 응용 프로그램 및 환경에서 벤치 마크 및 테스트를 실행 해 볼 가치가 있습니다. 테스트 환경을 설정하고 일부 메트릭을 얻는 것은 어렵지 않습니다. 이것이 취미/일회성 프로젝트 이상의 것이라면, 나는 당신이 더 편안하거나 더 흥미로운 것을 사용합니다.

소스/더 읽을 거리 :

http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https https://www.ibm.com/developerworks/community/blogs/sowhatfordevs/entry/using_mqtt_protocol_advantages_over_http_in_mobile_application_development5?lang=en https://medium.com/@shubhanshusingh/http-vs-mqtt-9008d448bf88 https://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison https://mobilebit.wordpress.com/2013/05/03/rest-is-for-sleeping-mqtt-is-for-mobile/ http://bec-systems.com/site/1200/iot-protocols-mqtt-vs-coap-vs-http

1

내가 게임에 새로운 오전하지만 난 데이터를 수집 및 장치에 정보를 전송하는 MQTT을 사랑 해요.

나는 synapses rf200 칩 (자체 치유 메쉬 네트워크)을 사용하고 있으며 rf200의 하나를 esp8266 무선 랜 칩에 직렬로 연결하여 브리지를 만들었습니다.

는 기본적으로 나는 mqtt_in 및 mqtt_out 주제로 내 C#을 iOS 용/안드로이드 응용 프로그램이 MQTT 브로커에 연결합니다 (RF200 메쉬 네트워크에) mqtt_in를 사용하여 RF200 년대에서 정보를 요청하고 노드가에서 (mqtt_out를 사용하여 응답 자 마린있다 rf200 mesh network) 필자는 필요한 모든 정보를 문자열로 분석하여 필요한 정보로 변환합니다.

매우 낮은 오버 헤드이고 mqtt 브로커는 설정하기가 쉽습니다.

0

우리는 일반 서버 및 라스베리 파이 보드에서 SSL을 통해 MQTT vs HTTP(REST)을 성능 측면과 에너지 소비 측면에서 테스트했습니다. 결과는 프로세스가 실행중인 유스 케이스 및 장치에 따라 다릅니다.

유스 케이스와 관련하여 HTTP, HTTP 일괄 처리 또는 MQTT를 통해 많은 메시지 (다중 프로브)를 제공하는 특수 테스트도 제공합니다. 하나의 HTTP 요청으로 데이터를 보낼 수 있다면 그 결과는 매우 간단합니다. 이는 최상의 옵션입니다. MQTT가 2 위를 차지하고 있고, 메시지 당 전달이있는 HTTP는 전력 효율이 훨씬 낮고 MQTT가 느리다.