Googleは、開発者がAndroid ThingsデバイスからGoogle Cloud IoT Coreを簡単に使用できるようにするためのクライアントライブラリを公開した。開発者は、IoT Core MQTTブリッジに接続し、デバイスを認証し、デバイステレメトリをパブリッシュし、構成の変更をサブスクライブし、エラーやネットワークの停止を処理できる。
Cloud IoT Coreは、Google Cloud Platform上のフルマネージドサービスで、開発者はグローバルに分散したデバイスからデータを安全に接続、管理、および取り込むことができる。Cloud IoT Coreは、Google Cloud Platformの他のサービスと組み合わせて、IoTデータをリアルタイムに収集、処理、分析、視覚化するためのソリューションを提供する。さらに、Android Thingsは、テレメトリ、強力なコンピュータビジョン、オーディオ処理、機械学習アプリケーション用のデータ収集をサポートするように設計されている。
Cloud IoT Coreクライアントライブラリは、すべてのCloud IoT Core機能の抽象化を提供する。例えば、テレメトリイベント、デバイス状態のパブリッシュ、およびCloud IoT Coreからのデバイス構成の受信などがある。
Cloud IoT Coreは、デバイスレジストリを通じて承認されたデバイスを追跡し、各デバイスは公開鍵を使用してサーバとの認証を行う。Cloud IoT Coreでの認証のために、クライアントライブラリはRSAキーとECCキーの両方をサポートし、JSON Webトークン(JWT)を実装している。
デバイスは、MQTT接続を介してPUBLISHメッセージを発行することによって、テレメトリデータを1つ以上のバケットにパブリッシュできる。メッセージは、次のフォーマットで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) {
// payload is an arbitrary, application-specific array of bytes
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>) {
// payload is an arbitrary, application-specific array of bytes
val examplePayload = """{
|"telemetryFrequency": $telemetryFrequency,
|"enabledSensors": ${enabledSensors.contentToString()}
|}""".trimMargin().toByteArray()
iotCoreClient.publishDeviceState(examplePayload)
}
Googleでは、Android Thingsにセンサーハブを実装し、接続されたセンサーからセンサーデータを収集し、Google Cloud IoTトピックに公開する方法を示すサンプルも提供した。
Cloud IoT Coreに関する詳細は、Cloud IoT Coreページ、公式ドキュメント、GoogleのIoT Developersコミュニティでご覧いただけます。
Rate this Article
- Editor Review
- Chief Editor Action