@lsmn
2018-06-28T13:57:54.000000Z
字数 2354
阅读 1746
云计算
谷歌
IoT
谷歌发布了一个客户端库,让开发人员更容易在Android Things设备上使用Google Cloud IoT Core。开发人员可以连接到IoT Core MQTT桥,认证设备,发布设备遥测数据,订阅配置变更,处理错误及网络中断。
谷歌发布了一个客户端库,让开发人员更容易在Android Things设备上使用Google Cloud IoT Core。开发人员可以连接到IoT Core MQTT桥,认证设备,发布设备遥测数据,订阅配置变更,处理错误及网络中断。
Cloud IoT Core是完全托管于谷歌云平台的服务,让开发人员可以安全地连接、管理分散在全球的设备,并从中提取数据。搭配谷歌云平台提供的其他服务,Cloud IoT Core提供了一种实时收集、处理、分析及可视化IoT数据的解决方案。此外,Android Things从设计上就支持用于遥测、强大的计算机可视化、音频处理和机器学习应用程序的数据收集。
Cloud IoT Core客户端库提供了每个Cloud IoT Core函数的抽象,如发布遥测事件、设备状态,从Cloud IoT Core接收设备配置。
Cloud IoT Core会通过设备注册信息跟踪已核准的设备,每个设备使用一个公共密钥在服务器上进行身份验证。对于Cloud IoT Core身份验证,客户端库支持RSA和ECC密钥,并且实现了JSON Web Tokens(JWTs)。
设备可以通过MQTT连接发送一条PUBLISH消息把他们的遥测数据发布到一个或多个存储桶。消息必须以下面的格式发送到MQTT主题:
/devices/{device-id}/events
使用Cloud IoT Core,开发人员可以监控每个连接设备的状态。设备状态更新通常是由设备变化触发的,例如来自Cloud IoT Core的配置更新,或者来自外部源的变化,如固件升级。设备状态使用以下格式发送到MQTT主题:
/devices/<device_id>/state
开发人员可以从Cloud IoT Core向设备发送设备配置来控制它。数据可以是任意格式的,如二进制数据、文本、JSON或序列化协议缓冲区。值得一提的是,设备并不一定会接收到每一项配置更新;如果短时间内发布了许多更新,那么设备可能会收不到中间版本。
要开始使用Cloud IoT Core客户端库,需要在Android Things项目的build.gradle文件中增加下面一行:
implementation 'com.google.android.things:cloud-iot-core:1.0.0'
下面的Kotlin示例说明了如何基于已有的项目创建一个新的配置和客户端:
var configuration = IotCoreConfiguration.Builder().
.setProjectId("my-gcp-project")
.setRegistry("my-device-registry", "us-central1")
.setDeviceId("my-device-id")
.setKeyPair(keyPairObject)
.build()
var iotCoreClient = IotCoreClient.Builder()
.setIotCoreConfiguration(configuration)
.setOnConfigurationListener(onConfigurationListener)
.setConnectionCallback(connectionCallback)
.build()
iotCoreClient.connect()
下面的Kotlin示例展示了如何发布遥感信息或设备状态:
private fun publishTelemetry(temperature: Float, humidity: Float) {
// 负载是应用程序相关的任意字节数组
val examplePayload = """{
|"temperature" : $temperature,
|"humidity": $humidity
|}""".trimMargin().toByteArray()
val event = TelemetryEvent(examplePayload, topicSubpath, TelemetryEvent.QOS_AT_LEAST_ONCE)
iotCoreClient.publishTelemetry(event)
}
private fun publishDeviceState(telemetryFrequency: Int, enabledSensors: Array<string>) {
// // 负载是应用程序相关的任意字节数组
val examplePayload = """{
|"telemetryFrequency": $telemetryFrequency,
|"enabledSensors": ${enabledSensors.contentToString()}
|}""".trimMargin().toByteArray()
iotCoreClient.publishDeviceState(examplePayload)
}
谷歌还提供了一个样例,说明如何在Android Things上实现一个传感器中枢,从连接的传感器收集数据,并发布到Google Cloud IoT主题。
Cloud IoT Core页面、官方文档及谷歌IoT开发者社区中有更多关于Cloud IoT Core的信息。
查看英文原文:Google Released Cloud IoT Core Client Library for Android Things