Hat jemand das Beispiel in seinem Schnellstart zum Laufen gebracht ? Sie stellen NodeJS-Code zur Verfügung, um eine Verbindung zu ihrer MQTT-Bridge herzustellen, aber für mich funktioniert das nicht:
[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] },
(Tausende weitere Zeilen Stack-Trace) und keine Aktivität im Google IoT Core-Dashboard oder Nachrichten in einem Pull-Abonnement.
Ein mosquitto_pub gibt einen seltsamen Fehler zurück:
% ./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
Gambit-Unterstützung
quelle
quelle
Antworten:
Dieser Fehler tritt auf, wenn die Anforderung, die Sie an die Google MQTT-API senden, eine Protokollinkongruenz aufweist.
Sie verwenden den 8883-Port für MQTT über SSL. In meinen Augen ist die Adresse, die Sie anrufen, eine normale http-Adresse (ohne https oder http ist die Standardeinstellung http), die 1883, den Port von MQTT, verwenden würde.
Wenn Sie 8883 und SSL verwenden möchten, rufen Sie die Adresse mit https an. Wenn Sie MQTT überhaupt nicht über SSL gemeint haben, korrigieren Sie den Port auf 1883.
quelle