[关闭]
@lsmn 2018-06-28T13:57:54.000000Z 字数 2354 阅读 1758

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

云计算 谷歌 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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注