[kotlin] 안드로이드에서의 코틀린 MQTT 프로토콜 통신 구현 방법

IoT 기기와 애플리케이션의 실시간 통신은 중요한 기능 중 하나입니다. MQTT 프로토콜은 경량화되어 있고, 안전하며, 이벤트 기반의 통신을 지원하여 IoT와 모바일 애플리케이션 간의 신속한 데이터 교환에 적합합니다. 이번 게시물에서는 Android 애플리케이션에서 Kotlin을 사용하여 MQTT 프로토콜을 이용한 통신을 구현하는 방법에 대해 설명하겠습니다.

필요한 라이브러리 추가

먼저 build.gradle 파일에 다음과 같이 Paho MQTT 라이브러리를 추가합니다.

implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'

MQTT 클라이언트 생성

다음으로는 MQTT 클라이언트를 생성해야 합니다. 아래는 간단한 예제 코드입니다.

val serverUri = "tcp://broker.example.com:1883"
val clientId = "android_client"
val mqttClient = MqttClient(serverUri, clientId, MemoryPersistence())

연결 및 메시지 수신 리스너 설정

이어서 MQTT 서버에 연결하고, 메시지를 수신하기 위한 리스너를 설정해야 합니다. 아래 코드는 연결 및 메시지 수신 리스너를 설정하는 예제입니다.

val options = MqttConnectOptions()
options.isAutomaticReconnect = true

mqttClient.connect(options)

mqttClient.setCallback(object : MqttCallbackExtended {
    override fun connectComplete(reconnect: Boolean, serverURI: String) {
        // 연결 완료 시 동작
    }

    override fun connectionLost(cause: Throwable?) {
        // 연결 끊김 시 동작
    }

    @Throws(Exception::class)
    override fun messageArrived(topic: String, message: MqttMessage) {
        // 메시지 수신 시 동작
    }

    override fun deliveryComplete(token: IMqttDeliveryToken) {
        // 메시지 전달 완료 시 동작
    }
})

토픽 구독 및 메시지 발행

마지막으로, 특정 토픽을 구독하고 메시지를 발행하는 방법을 알아봅시다.

val topic = "iot_data"
val qos = 1
mqttClient.subscribe(topic, qos)

val message = MqttMessage("Hello, IoT!".toByteArray())
mqttClient.publish(topic, message)

이제 안드로이드에서의 코틀린을 사용한 MQTT 프로토콜 통신 구현 방법에 대해 간략히 알아보았습니다. MQTT를 사용함으로써 안드로이드 애플리케이션과 IoT 기기 간의 효율적인 통신을 구현할 수 있습니다.

참고문헌: Paho Android Service GitHub