¿Alguien ha obtenido el ejemplo en su inicio rápido para trabajar? Proporcionan el código NodeJS para conectarse a su puente MQTT, pero para mí no 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] },
(miles de líneas más de seguimiento de pila) y ninguna actividad en el panel de Google IoT Core, ni mensajes en ninguna suscripción de extracción.
Un mosquitto_pub devuelve un extraño error:
% ./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
Soporte de Gambito
fuente
fuente
Respuestas:
Este error se produce cuando hay una falta de coincidencia de protocolo en la solicitud que envía a la API MQTT de Google.
Utiliza el puerto 8883 que es para MQTT sobre SSL. En mi opinión, la dirección a la que llama es la dirección http normal (sin https ni http, el valor predeterminado es http), que usaría 1883, el puerto de MQTT simple.
Si tiene la intención de usar 8883 y SSL, llame a la dirección usando https. Si no quiso decir MQTT sobre SSL en absoluto, arregle el puerto a 1883.
fuente