This commit is contained in:
50
src/Application.kt
Normal file
50
src/Application.kt
Normal file
@@ -0,0 +1,50 @@
|
||||
package com.kmlabz.birbnetes
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.typesafe.config.ConfigFactory
|
||||
import io.ktor.application.*
|
||||
import io.ktor.config.*
|
||||
import io.ktor.request.*
|
||||
import io.ktor.routing.*
|
||||
import io.ktor.util.*
|
||||
import kotlin.text.toCharArray
|
||||
import org.eclipse.paho.client.mqttv3.MqttClient
|
||||
import org.eclipse.paho.client.mqttv3.MqttConnectOptions
|
||||
import org.eclipse.paho.client.mqttv3.MqttMessage
|
||||
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence
|
||||
|
||||
|
||||
fun main(args: Array<String>): Unit = io.ktor.server.tomcat.EngineMain.main(args)
|
||||
|
||||
@KtorExperimentalAPI
|
||||
@Suppress("unused") // Referenced in application.conf
|
||||
@kotlin.jvm.JvmOverloads
|
||||
fun Application.module(testing: Boolean = false) {
|
||||
|
||||
val appConfig = HoconApplicationConfig(ConfigFactory.load())
|
||||
val persistence = MemoryPersistence()
|
||||
val mqttClient = MqttClient(appConfig.property("ktor.mq.broker").getString(), MqttClient.generateClientId(), persistence)
|
||||
val connOpts = MqttConnectOptions()
|
||||
val gson = GsonBuilder().create()
|
||||
val message = MqttMessage("0".toByteArray())
|
||||
|
||||
environment.monitor.subscribe(ApplicationStarted){
|
||||
connOpts.isCleanSession = true
|
||||
connOpts.userName = appConfig.property("ktor.mq.username").getString()
|
||||
connOpts.password = appConfig.property("ktor.mq.password").getString().toCharArray()
|
||||
mqttClient.connect(connOpts)
|
||||
message.qos = 0
|
||||
}
|
||||
|
||||
environment.monitor.subscribe(ApplicationStopped){
|
||||
mqttClient.disconnect()
|
||||
}
|
||||
|
||||
routing {
|
||||
get("/") {
|
||||
val requestBody : String = call.receiveText()
|
||||
val msgObj: MessageObject = gson.fromJson(requestBody,MessageObject::class.java)
|
||||
mqttClient.publish("command/${msgObj.device_id}", message)
|
||||
}
|
||||
}
|
||||
}
|
||||
9
src/MessageObject.kt
Normal file
9
src/MessageObject.kt
Normal file
@@ -0,0 +1,9 @@
|
||||
package com.kmlabz.birbnetes
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.*
|
||||
|
||||
data class MessageObject(
|
||||
@SerializedName("data") val date: Date,
|
||||
@SerializedName("device_id") val device_id: Int
|
||||
)
|
||||
Reference in New Issue
Block a user