O Google Cloud IoT Core será desativado em 16 de agosto de 2023. Entre em contato com sua equipe de conta do Google Cloud para mais informações.

Como publicar sobre a ponte HTTP

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta seção, explicamos como os dispositivos podem usar a ponte HTTP para se comunicar com o Cloud IoT Core. Para informações gerais sobre HTTP e MQTT, consulte Protocolos.

Consulte a documentação da API para ver detalhes completos sobre cada método descrito nesta seção.

Conclua estas etapas antes de usar a ponte HTTP:

  • Configure um ou mais registros de dispositivos, inclusive um tópico do Cloud Pub/Sub para eventos de telemetria.
  • Criar dispositivos

Como autenticar dispositivos

Cada solicitação para a ponte HTTP precisa incluir um JSON Web Token (JWT) no cabeçalho.

curl -H 'authorization: Bearer JWT' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id}/config?local_version=1'

O caminho completo do dispositivo pode terminar com o código ou o código numérico do dispositivo. Consulte a seção sobre registro do dispositivo para saber mais sobre os identificadores de dispositivos.

Cada solicitação precisa incluir o JWT, mesmo que você envie várias solicitações em uma sucessão rápida. O Cloud IoT Core não se "lembra" da autenticação na ponte HTTP. Para mais informações sobre autenticação e JWTs, consulte as seções sobre segurança do dispositivo e credenciais do dispositivo.

Como publicar eventos de telemetria

Use o método publishEvent para publicar eventos de telemetria no Cloud IoT Core. Os dados de payload binários precisam ser codificados em base64.

curl -X POST -H 'authorization: Bearer JWT' -H 'content-type: application/json' --data '{"binary_data": "DATA"}' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id}:publishEvent'

Os eventos de telemetria são encaminhados para um tópico do Cloud Pub/Sub, conforme especificado no Console do Google Cloud ou com o campo eventNotificationConfigs[i].pubsubTopicName no recurso de registro do dispositivo. O método publishEvent fornece um campo subFolder opcional para classificar eventos de telemetria. Para saber como publicar dados de subpastas para separar tópicos do Pub/Sub, consulte a seção abaixo.

Como publicar eventos de telemetria para separar tópicos do Pub/Sub

Os dispositivos podem publicar dados para separar tópicos do Pub/Sub especificando uma subpasta no campo subFolder no método publishEvent.

curl -X POST -H 'authorization: Bearer JWT' -H 'content-type: application/json' --data '{"binary_data": "DATA", "sub_folder": "SUBFOLDER"}' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id}:publishEvent'

Essa subpasta precisa ser configurada no campo eventNotificationConfigs.subfolderMatches do recurso de registro do dispositivo com um tópico do Pub/Sub correspondente no campo eventNotificationConfigs.pubsubTopicName. Quando os dados são enviados para uma subpasta, eles são publicados no tópico correspondente do Pub/Sub.

Conforme detalhado em Como criar um registro de dispositivo, todos os registros de dispositivo precisam ter um tópico padrão do Pub/Sub sem subpastas correspondentes. Se houver um tópico padrão do Pub/Sub, os dispositivos serão publicados automaticamente nos seguintes casos:

  • Nenhuma subpasta foi especificada no campo subFolder
  • Uma subpasta é especificada no campo subFolder, mas não tem um tópico do Pub/Sub correspondente no registro do dispositivo

Em cada um desses casos, se não houver um tópico padrão do Pub/Sub, os dados enviados do dispositivo serão perdidos.

Carga excessiva e espera exponencial

O Cloud IoT Core limita os projetos que geram carga excessiva. Quando os dispositivos repetem operações com falha sem esperar, é possível acionar os limites que afetam todos os dispositivos no mesmo projeto do Google Cloud.

Para novas tentativas, é altamente recomendável implementar um algoritmo de espera exponencial truncada com instabilidade introduzida.

Como configurar dispositivos

É possível usar o Cloud IoT Core para configurar dispositivos. Uma configuração de dispositivo consiste em dados binários que podem ser usados para atualizar o firmware, reinicializar um dispositivo, ligar um recurso ou alterar outras propriedades.

Para configurar um dispositivo usando a ponte HTTP, primeiro defina a configuração no Cloud IoT Core e solicite a configuração por meio do dispositivo.

Como compactar solicitações HTTP

Um dispositivo pode enviar dados compactados por gzip para o Cloud IoT Core pela ponte HTTP. Para enviar dados compactados ao Cloud IoT Core, cada solicitação HTTP precisa incluir o cabeçalho HTTP content-encoding: gzip.

A compactação de dados permite reduzir a largura de banda na direção do dispositivo para a nuvem. No entanto, não é possível reduzir o custo total de uso do Cloud IoT Core compactando os dados. Para mais detalhes, consulte Preços.

Atualizando a configuração do dispositivo

Ao usar a ponte HTTP, o dispositivo precisa solicitar explicitamente as configurações do dispositivo com a API. O Cloud IoT Core não envia configurações para dispositivos por meio da ponte HTTP. Os dispositivos precisam pesquisar novas configurações.

Para ver a configuração do dispositivo disponível no Cloud IoT Core, use uma solicitação getConfig.

curl -H 'authorization: Bearer JWT' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{deviceid}/config?local_version=0'

É possível usar o parâmetro de consulta localVersion para especificar a versão de configuração atual do dispositivo. A tabela a seguir mostra como esse parâmetro afeta a resposta:

Versão do dispositivo Resposta da API:
localVersion é 0 (valor padrão) Versão mais recente do Cloud IoT Core
localVersion é diferente de zero e igual a a versão disponível atualmente no Cloud IoT Core OK (com configuração vazia no campo binary_data)
localVersion é diferente de zero e mais antiga (anterior) à versão disponível atualmente no Cloud IoT Core Versão atual (mais recente) do Cloud IoT Core
localVersion é diferente de zero e mais recente (superior a) à versão disponível atualmente no Cloud IoT Core Erro OUT_OF_RANGE

Configuração do estado do dispositivo

Use uma solicitação setState para informar o estado do dispositivo ao Cloud IoT Core. Os dados de estado precisam ser codificados em base64.

curl -X POST -H 'authorization: Bearer JWT' -H 'content-type: application/json' --data '{"state": {"binary_data": "DATA"}}' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{deviceid}:setState'

Para recuperar dados de estado do dispositivo, veja os detalhes do dispositivo no Console do Cloud ou use a API. Para mais detalhes, consulte a seção sobre o estado do dispositivo.