Alguém conseguiu o exemplo no início rápido para o trabalho? Eles fornecem código NodeJS para se conectar à ponte MQTT, mas para mim isso não funciona:
[root@centos7 google-iot-mqtt]# node cloudiot_mqtt_example_nodejs.js \
> --project_id=curious-furnace-181313 \
> --registry_id=my-registry \
> --device_id=mimic1 \
> --private_key_file=./rsa_private.pem \
> --algorithm=RS256
Google Cloud IoT Core MQTT example.
connect { '0': {},
'1':
{ [Function: require]
resolve: [Function: resolve],
main:
Module {
id: '.',
exports: {},
parent: null,
filename: '/home/tmp/uwe/google-iot-mqtt/cloudiot_mqtt_example_nodejs.js',
loaded: true,
children: [Object],
paths: [Object] },
(milhares de linhas a mais de rastreamento de pilha) e nenhuma atividade no painel do Google IoT Core, nem nenhuma mensagem em nenhuma assinatura pull.
Um mosquitto_pub retorna um erro estranho:
% ./mosquitto_pub -d -h mqtt.googleapis.com -p 8883 -i projects/curious-furnace-181313/locations/us-central1/registries/my-registry/devices/mimic1 -u unused --key ~/mimic/scripts/mqtt/google-iot/rsa_private.pem --cert ~/mimic/scripts/mqtt/google-iot/rsa_cert.pem -t /devices/mimic1/events -m hello --insecure
Client projects/curious-furnace-181313/locations/us-central1/registries/my-registry/devices/mimic1 sending CONNECT
Error: Unrecognised command 16
Error: A network protocol error occurred when communicating with the broker.
google-iot-core
Suporte Gambit
fonte
fonte
Respostas:
Este erro ocorre quando há uma incompatibilidade de protocolo na solicitação enviada à API do Google MQTT.
Você usa a porta 8883 que é para MQTT sobre SSL. No meu olho, o endereço que você chama é o endereço http normal (sem https nem http, o padrão cai para ser http), que usaria 1883, a porta do MQTT comum.
Se você pretende usar 8883 e SSL, faça a chamada para o endereço usando https. Se você não quis dizer MQTT sobre SSL, corrija a porta para 1883.
fonte