BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Diogo Carleto 关注 34 他的粉丝 ,译者 谢丽 关注 10 他的粉丝 发布于 2018年7月3日. 估计阅读时间: 7 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

谷歌发布了一个客户端库,让开发人员更容易在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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT