?>

Hard Copy World

HCW

Android

Home > Info >

Android

안드로이드 MQTT 기능 구현 예제 (with Paho lib)

페이지 정보

작성자 최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일16-02-20 23:03 조회8,465회 댓글0건

본문

 

MQTT client 기능을 구현한 안드로이드 샘플 예제를 찾아보니 관련된 자료가 별로 없어 놀램. 꽤 많을 줄 알았는데... 그래도 가장 유명한 Paho MQTT Client 라이브러리가 안드로이드 용으로도 포팅되어 있음. 

안드로이드 스튜디오에서 불러오면 쉽게 테스트 해보겠거니 했는데 빌드, 런타임 에러 다수 발생. 알고보니 라이브러리 생성을 잘못했던것.. 그래서 이클립스 환경에서 처음부터 다시 셋업. 빌드 후 동작 확인했음.

Paho MQTT client 코드는 안드로이드에서 가장 쓸만한 라이브러리 일 뿐 아니라 백그라운드 서비스로 동작하기 위한 예제를 제공함. 따라서 안드로이드에서 골치아픈 백그라운드 TCP 커넥션 관리 문제를 상당부분 해결해 줌.

Paho MQTT client 라이브러리를 빌드, 테스트하기 위해서는 아래 환경이 필요

  • MQTT v3.1 이상 서버 지원
  • JDK v6 or later
  • Eclipse 3.6.2(Helios) 이상
  • 이클립스에 ADT (Android Development Tool) 설치된 환경

안드로이드용 Paho MQTT 프로젝트는 아래 링크에서 자세한 내용을 확인할 수 있음.

 

 

안드로이드 앱 빌드 과정

 

테스트에 필요한 모든 파일들이 아래 GitHub에 올라가 있으니 소스 전체를 다운로드

소스코드에서 안드로이드 앱을 위해 필요한 폴더는 2개임

  • org.eclipse.paho.client.mqttv3 : MQTT broker 연결 및 프로토콜을 구현한 핵심 java 라이브러리. 이 라이브러리 만으로도 MQTT Client 구현이 가능함. 기능 구현을 위해 자바 및 안드로이드 앱 코드에서 참조함.
  • org.eclipse.paho.android.service : 내부에 3개의 폴더가 있음. 이 중 2개가 중요.
    • org.eclipse.paho.android.service : background service 동작을 위한 Android Service 용 코드. TCP 연결을 유지시켜주며 MQTT broker와의 연결을 관리.
    • org.eclipse.paho.android.service.sample : Paho Android Service 를 이용해서 동작을 테스하기 위한 앱 코드. UI 관련 소스, 커넥션 정보 저장을 위한 DB 코드 등이 포함되어 있음.

 

다운로드 받은 소스코드에서 MQTT Client 라이브러리를 생성해야 함. 생성한 라이브러리는 이후 앱에서 참조할 것임. 아래 순서대로 진행

 

이클립스+ADT 설치 방법은 인터넷 상에 차고 넘치니 간단한 구글 검색으로 해결 가능.

이클립스에 자바 라이브러리를 생성하는데 필요한 Fat Jar Exporter 플러그인을 설치

환경이 갖추어지면 이클립스에 메이븐 플러그인을 설치. 자세한 내용은 아래 링크 참고.

 

이클립스에서 [File - Import] 선택 후 메이븐 프로젝트로 org.eclipse.paho.client.mqttv3 폴더를 불러옴. 이 폴더를 빌드한 뒤 [File - Export - Other - Fat Jar Exporter]를 이용해 Paho MQTT 라이브러리 생성함. (org.eclipse.paho.client.mqttv3_fat.jar)

이클립스에서 [org.eclipse.paho.android.service.sample] 앱 폴더를 안드로이드 프로젝트로 불러옴. 여기에 [org.eclipse.paho.android.service] 폴더에 있는 소스를 합침. 소스코드 파일들만 합치고 AndroidManifest.xml 파일에서 아래 부분이 있는지 확인만 하면 됨.

  • 태그 시작 : service android:name="org.eclipse.paho.android.service.MqttService"
  • 태그 종료 : service

앞서 빌드해서 만든 Paho MQTT 라이브러리를 프로젝트의 libs 폴더에 추가. 이제 [org.eclipse.paho.android.service.sample] 앱 코드에서 리퍼런스를 못찾아 생긴 빨간 줄들이 없어질 것임. 그래야 함...

빌드 되면 폰에 올려서 테스트. 테스트를 위해선 MQTT broker(server) 가 필요하므로 적당한 상황이 안되면 임시로 PC에 mosquitto MQTT broker를 깔아서 테스트. 

 

 

테스트 앱 사용법

 

1. 앱 진입시 나오는 첫 화면. 우측 상단의 [+] 아이콘 누르면 새로게 서버 추가 가능. 리스트에 표시되는 서버(MQTT broker)를 누르면 해당 서버와 연결되면서 화면이 전환됨.

tc10130e.gif

 

2. 서버를 선택하면 서버와 데이터를 주고 받는 화면으로 전환됨. 3개의 탭으로 구성. History 탭은 서버와 주고 받은 메시지를 표시하는 탭.

3.png

 

3. 구독(Subscribe) 탭에서 특정 주제(topic)를 등록하면 해당 주제에 올라오는 메시지를 모두 받게됨.

4.png

 

4. 발행(Publish)는 특정 주제에 메시지를 올릴 때 사용함.

6.png

 

 

Paho MQTT Client API

 

앞서 테스트 해본 앱을 분석해서 MQTT client 만드는데 활용해도 됨. 아래 링크에서 Paho MQTT 라이브러리의 API 매뉴얼을 볼 수 있음.

아래 GitHub 페이지 가장 아래 부분에 MQTT API 초간단 사용법이 소개되어 있음.

 

조금 더 복잡하고 다양하게 응용하는 방법은 [org.eclipse.paho.client.mqttv3.test] 폴더의 소스를 보면 됨. [org.eclipse.paho.sample.mqttv3app] 폴더의 예제도 테스트 해볼 수 있음. 자바 프로젝트로 import 해서 테스트 해볼 수 있음.

 

 

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.