Se você está buscando uma alternativa ao Google Cloud IoT Core, provavelmente está migrando uma frota que ficou órfã com o encerramento ou projetando um novo projeto no Google Cloud sem um gateway de dispositivos nativo. Este guia explica o que o IoT Core fazia, compara com imparcialidade as opções realistas de substituição, mapeia os conceitos do IoT Core para MQTT padrão e mostra como mover dispositivos para um broker MQTT gerenciado enquanto seus dados continuam fluindo para os serviços do Google Cloud.
O Que Aconteceu com o Google Cloud IoT Core
O Google anunciou em 2022 que o Cloud IoT Core seria descontinuado, e o serviço foi desativado em 16 de agosto de 2023. Depois dessa data, os dispositivos não conseguiam mais se conectar às suas bridges MQTT e HTTP. O Google não lançou um sucessor direto; em vez disso, direcionou os clientes para soluções de parceiros e para a construção sobre serviços gerais do Google Cloud. Outros produtos do Google Cloud, como Pub/Sub, Dataflow e BigQuery, não foram afetados e continuam sendo destinos comuns para dados de IoT.
O IoT Core combinava três funções, e cada uma precisa de um substituto:
- Conectividade de dispositivos: um endpoint MQTT em
mqtt.googleapis.comna porta 8883 (e 443). - Registro e autenticação de dispositivos: dispositivos identificados por client IDs longos no formato
projects/PROJECT/locations/REGION/registries/REGISTRY/devices/DEVICE, autenticados com um JWT assinado por uma chave privada por dispositivo e enviado como senha MQTT. - Roteamento de dados: a telemetria publicada em
/devices/DEVICE_ID/eventsera encaminhada para topics do Pub/Sub; configurações e comandos desciam por/devices/DEVICE_ID/confige/devices/DEVICE_ID/commands/#, e o estado do dispositivo subia por/devices/DEVICE_ID/state.
Opções de Alternativa ao Google Cloud IoT Core Comparadas
Não existe uma única resposta certa. O melhor substituto depende de quão a fundo você usava os recursos do IoT Core e de onde você quer que seus dados fiquem.
| Opção | O que você obtém | Boa escolha quando | Contrapartidas |
|---|---|---|---|
| Broker MQTT gerenciado (como a ConnectMQ) | Endpoint MQTT padrão, credenciais, console | Você quer MQTT simples e portável e manter o processamento no Google Cloud | Você adiciona um pequeno serviço de encaminhamento para o Pub/Sub |
| Serviço IoT de outro hyperscaler (AWS IoT Core, Azure IoT Hub ou Event Grid MQTT) | Registro de dispositivos, regras, integração profunda com aquela nuvem | Você aceita mover o processamento para aquela nuvem | Convenções de topics proprietárias e transferência de dados entre nuvens |
| Plataformas parceiras recomendadas no encerramento | APIs compatíveis com o IoT Core em alguns casos | Você quer o mínimo de mudanças nos dispositivos | Mais uma API específica de fornecedor da qual depender |
| Broker auto-hospedado no GKE ou Compute Engine | Controle total, opções open source | Você tem capacidade operacional | Patches, escalabilidade, certificados e plantão ficam com você |
| Plataformas de aplicação IoT | Dashboards, gestão de dispositivos, regras | Você precisa de uma camada de aplicação completa, não só de transporte | Mais pesadas, muitas vezes mais opinativas |
Cada opção é legítima. Os serviços IoT dos hyperscalers oferecem rule engines ricos e integração; plataformas parceiras podem reduzir mudanças de firmware; auto-hospedar dá controle máximo. Um broker MQTT gerenciado fica no meio: protocolo padrão, lock-in mínimo e nenhum servidor para operar, ao custo de construir o seu próprio encaminhamento para o Google Cloud. Para uma comparação mais ampla dos serviços dos hyperscalers, veja nosso guia de alternativa ao AWS IoT Core.
Mapeando os Conceitos do IoT Core para MQTT Puro
Migrar para um broker padrão é, em grande parte, um exercício de tradução:
| Conceito do IoT Core | Equivalente em MQTT padrão na ConnectMQ |
|---|---|
mqtt.googleapis.com:8883 |
broker.connectmq.com:8883 (TLS) ou 8084 para secure WebSockets |
| Client ID longo do registro | Client ID emitido no portal |
| JWT assinado com chave do dispositivo | Username e senha emitidos por conjunto de credenciais |
/devices/ID/events |
Sua própria hierarquia, por exemplo fleet/site1/ID/telemetry |
/devices/ID/state |
Topic retido, por exemplo fleet/site1/ID/state |
/devices/ID/config |
Topic retido que o dispositivo assina, por exemplo fleet/site1/ID/config |
/devices/ID/commands/# |
Topic de comandos com QoS 1 e payloads idempotentes |
| Roteamento para o Pub/Sub | Um serviço assinante que encaminha para o Pub/Sub |
| Metadados do registro | Seu próprio banco de inventário ou topics de metadados retidos |
O layout de topics agora é seu para projetar. Abandone a barra inicial que o IoT Core usava, já que ela adiciona um primeiro nível vazio, e considere uma hierarquia no estilo ISA-95 se você trabalha com manufatura.
Passo a Passo: Mova os Dispositivos para um Broker MQTT Gerenciado
1. Prepare o Broker
Cadastre-se em app.connectmq.com, escolha um plano dimensionado para o seu pico de conexões, crie um broker e emita as credenciais. O plano Serverless gratuito (até 25 conexões, QoS até 1) basta para validar o firmware e o serviço de encaminhamento; o Serverless (Paid) suporta até 1.000 conexões e QoS 2.
2. Atualize o Firmware dos Dispositivos
Substitua a geração de JWT e o client ID do IoT Core pelo username, senha e client ID emitidos, troque o host e atualize os nomes dos topics. Mantenha TLS na porta 8883; a ConnectMQ usa um certificado Let's Encrypt, então o seu trust store precisa incluir o certificado ISRG Root X1 em vez das raízes do Google. Remova a lógica de renovação de JWT, que muitas vezes causava bugs de reconexão nos dispositivos do IoT Core. Se seus dispositivos são baseados em ESP32, o tutorial de MQTT com ESP32 mostra um client TLS completo.
3. Encaminhe a Telemetria para o Pub/Sub
A ConnectMQ não inclui bridges de dados para nuvem, então os dados chegam ao Pub/Sub por meio de um pequeno serviço de encaminhamento que se conecta como um client MQTT comum. Rode-o no Cloud Run, GKE ou em uma VM com uma service account autorizada a publicar no topic. Instale com pip install "paho-mqtt>=2.0" google-cloud-pubsub.
import os
import ssl
import paho.mqtt.client as mqtt
from google.cloud import pubsub_v1
PROJECT = os.environ["GCP_PROJECT"]
PUBSUB_TOPIC = os.environ.get("PUBSUB_TOPIC", "device-telemetry")
MQTT_FILTER = os.environ.get("MQTT_FILTER", "fleet/+/+/telemetry")
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(PROJECT, PUBSUB_TOPIC)
def on_connect(client, userdata, flags, reason_code, properties):
print("Connected:", reason_code)
client.subscribe(MQTT_FILTER, qos=1)
def on_message(client, userdata, msg):
device_id = msg.topic.split("/")[2]
future = publisher.publish(
topic_path,
msg.payload,
mqtt_topic=msg.topic,
device_id=device_id,
)
future.add_done_callback(
lambda f: f.exception() and print("Pub/Sub publish failed:", f.exception())
)
client = mqtt.Client(
mqtt.CallbackAPIVersion.VERSION2,
client_id=os.environ["MQTT_CLIENT_ID"],
protocol=mqtt.MQTTv5,
)
client.username_pw_set(os.environ["MQTT_USERNAME"], os.environ["MQTT_PASSWORD"])
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)
client.on_connect = on_connect
client.on_message = on_message
client.reconnect_delay_set(min_delay=1, max_delay=60)
client.connect("broker.connectmq.com", 8883, keepalive=60)
client.loop_forever()
Defina MQTT_USERNAME, MQTT_PASSWORD e MQTT_CLIENT_ID com os valores do portal (YOUR_USERNAME, YOUR_PASSWORD, YOUR_CLIENT_ID), de preferência a partir do Secret Manager. Atributos como device_id permitem que assinantes posteriores e jobs do Dataflow filtrem sem fazer parse dos payloads, de forma parecida com os atributos de dispositivo que o IoT Core adicionava. A documentação oficial da biblioteca client do Pub/Sub cobre batching e controle de fluxo para volumes altos. Para escalar horizontalmente, rode várias instâncias com uma shared subscription do MQTT 5, como $share/forwarders/fleet/+/+/telemetry, disponível no Serverless (Paid) e acima.
4. Substitua Configuração e Comandos
As mensagens de configuração do IoT Core correspondem naturalmente a retained messages MQTT: publique a configuração de cada dispositivo como retida no seu topic de config, e o dispositivo a recebe a cada conexão. Comandos correspondem a um topic de comandos com QoS 1. Torne os comandos idempotentes com um ID único e uma expiração, como descrito no nosso guia para sobreviver a uma queda de broker MQTT.
5. Faça o Rollout em Ondas
Mova primeiro um grupo piloto, acompanhe o estado de conexão em $SYS/broker/connection/{clientId}/state e no explorador de topics do portal, e depois migre o restante por região ou linha de produto, por exemplo primeiro as unidades do Sul e depois as do Nordeste. Se alguns dispositivos não puderem ser atualizados rapidamente, um gateway local pode traduzir os topics antigos e republicá-los na nova hierarquia.
Checklist Antes da Troca
- Inventário de dispositivos, versões de firmware e recursos do IoT Core em uso.
- Nova hierarquia de topics projetada e documentada.
- Plano do broker dimensionado para pico de conexões, QoS e tamanho de mensagem.
- Credenciais emitidas por dispositivo e armazenadas com segurança.
- Firmware atualizado com novo host, trust store, credenciais e topics.
- Serviço de encaminhamento rodando e verificado no Pub/Sub.
- Fluxos de configuração e comandos testados de ponta a ponta.
- Plano de rollout com grupo piloto e etapas de rollback.
Se parte da sua frota já roda em um broker local, o guia para migrar o Mosquitto para MQTT na nuvem cobre com mais detalhes o bridging e a virada em ondas.
Leve Sua Frota para a ConnectMQ
Crie um broker gratuito em app.connectmq.com no plano Serverless, sem cartão de crédito, e valide o firmware e o serviço de encaminhamento antes de migrar a frota. A ConnectMQ é um broker MQTT gerenciado com MQTT 3.1.1 e 5.0 padrão, TLS, WebSockets e um portal com explorador de topics ao vivo. Leia o guia de broker MQTT na nuvem para conhecer as opções de implantação, ou experimente o servidor MQTT público (gratuito) para um primeiro teste, lembrando que ele serve para testes e protótipos, não para dados de produção.
Perguntas frequentes
Quando o Google Cloud IoT Core foi encerrado?
O Google desativou o Cloud IoT Core em 16 de agosto de 2023, depois de anunciar a descontinuação em 2022. Os dispositivos não conseguem mais se conectar aos seus endpoints.
Posso continuar usando Pub/Sub e BigQuery depois de mudar para outro broker?
Sim. Esses serviços não foram afetados. Um pequeno serviço assinante encaminha as mensagens MQTT do broker para o Pub/Sub, e os pipelines existentes continuam a partir daí.
Preciso de autenticação JWT em um novo broker MQTT?
Não necessariamente. A maioria dos brokers MQTT gerenciados, incluindo a ConnectMQ, usa username e senha por dispositivo sobre TLS, o que elimina a lógica de renovação de JWT do firmware.
Qual é o substituto mais próximo da configuração de dispositivos do IoT Core?
Retained messages MQTT. Publique a configuração de cada dispositivo como retida no seu próprio topic de config, e o dispositivo recebe a versão mais recente toda vez que se conecta.



