谷歌发布适用于 Android Things 的 Cloud IoT Core 客户端库

阅读数:585 2018 年 7 月 2 日 07:22

谷歌发布了一个客户端库,让开发人员更容易在 Android Things 设备上使用 Google Cloud IoT Core 。开发人员可以连接到 IoT Core  MQTT 桥,认证设备,发布设备遥测数据,订阅配置变更,处理错误及网络中断。

Cloud IoT Core 是完全托管于谷歌云平台的服务,让开发人员可以安全地连接、管理分散在全球的设备,并从中提取数据。搭配谷歌云平台提供的其他服务,Cloud IoT Core 提供了一种实时收集、处理、分析及可视化IoT 数据的解决方案。此外, Android Things 从设计上就支持用于遥测、强大的计算机可视化、音频处理和机器学习应用程序的数据收集。

谷歌发布适用于Android Things的Cloud IoT Core客户端库谷歌发布适用于Android Things的Cloud IoT Core客户端库

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

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论