BT

Google libera Cloud IoT Core Client Library para Android Things

| por Diogo Carleto Seguir 46 Seguidores , traduzido por Diogo Carleto Seguir 46 Seguidores em 19 jul 2018. Tempo estimado de leitura: 3 minutos |

O Google liberou uma biblioteca para facilitar o uso do Google Cloud IoT Core em dispositivos com o Android Things. Os desenvolvedores podem conectar ao IoT Core MQTT bridge, autenticar um dispositivo, publicar a telemetria dos dispositivos, receber configurações de alterações e manipular erros e falhas na rede.

O Cloud IoT Core é um serviço totalmente gerenciado na plataforma Google Cloud que permite aos desenvolvedores conectar, gerenciar e ingerir dados de dispositivos dispersos globalmente com segurança. O Cloud IoT Core, junto com outros serviços da plataforma Google Cloud, fornece uma solução para a coleta, processamento, análise e visualização dos dados em tempo real. Além disso, o Android Things foi projetado para suportar a coleta de dados para telemetria, poderosa visão computacional, processamento de áudio e aplicativos de aprendizado de máquina.

A biblioteca cliente do Cloud IoT Core fornece abstração para cara função do Cloud IoT Core, assim como publicar eventos de telemetria, estado dos dispositivo e receber a configuração do dispositivo do Cloud IoT Core.

O Cloud IoT core controla os dispositivos aprovados por meio de um registro de dispositivos, e cada dispositivo usa uma chave pública para autenticar com o servidor. Para autenticação com o Cloud IoT Core, a biblioteca cliente suporta as chaves RSA e ECC, e também implementa o JSON Web Tokens (JWTs).

Os dispositivos podem publicar seus dados de telemetria para um ou mais buckets emitindo uma mensagem PUBLISH por meio da conexão MQTT. As mensagens devem ser publicadas para um tópico MQTT no seguinte formato:

/devices/{device-id}/events

Ao usar o Cloud IoT Core, os desenvolvedores podem monitorar o estado de cada um dos dispositivos conectados. Atualizações de estado do dispositivo geralmente são acionadas por uma alteração no dispositivo, uma atualização de configuração do Cloud IoT Core ou uma alteração de uma fonte externa, como uma atualização de firmware. O estado do dispositivo é publicado para um tópico MQTT usando o formato:

/devices/<device_id>/state

Os desenvolvedores podem controlar um dispositivo através do envio de uma configuração de dispositivo do Cloud IoT Core. Os dados podem estar em qualquer formato, como dados binários, texto, JSON ou buffers de protocolo serializado. Um detalhe importante a observar é que não é garantido que um dispositivo receba cada atualização de configuração, se várias atualizações forem liberadas em um curto espaço de tempo, os dispositivos podem não receber versões intermediárias.

Para iniciar com a biblioteca cliente do Cloud IoT Core, adicione o seguinte ao arquivo build.gradle em um projeto Android Things:

implementation 'com.google.android.things:cloud-iot-core:1.0.0'

O exemplo em Kotlin a seguir demonstra como criar uma nova configuração e clientes com base em um projeto existente:

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()

O exemplo em Kotlin a seguir demonstra como publicar informação de telemetria ou estado do dispositivo:

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)
}

O Google também disponibilizou um exemplo que demonstra como implementar um hub de sensores no Android Things, coletando dados de sensores conectados e publicando-os em um tópico do Google Cloud IoT.

Mais informações estão disponíveis na página oficial do Cloud IoT Core, documentação oficial e comunidade de desenvolvedores do Google IoT.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT