Я следовал приведенному ниже руководству, чтобы подключить мой raspberry pi 3 к Google IOT Core.Я настроил часть основного ядра Google OK на консоли Google, и все шаги были выполнены для части raspberry pi, но соединение всегда отклоняется согласно сообщениям об ошибках ниже.
error { Error: Connection refused: Bad username or password
at MqttClient._handleConnack (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/lib/client.js:920:15)
at MqttClient._handlePacket (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/lib/client.js:350:12)
at work (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/lib/client.js:292:12)
at Writable.writable._write (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/lib/client.js:302:5)
at doWrite (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/node_modules/readable-
stream/lib/_stream_writable.js:428:64)
at writeOrBuffer (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/node_modules/readable-
stream/lib/_stream_writable.js:417:5)
at Writable.write (/home/pi/Desktop/Google-IoT-
Device/node_modules/mqtt/node_modules/readable-
stream/lib/_stream_writable.js:334:11)
at TLSSocket.ondata (_stream_readable.js:639:20)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7) code: 4 }
close
Ссылка на учебное пособие:https://hub.packtpub.com/build-google-cloud-iot-application/#comment-53421
Это верхняя часть моего файла index.js:
var fs = require('fs');
var jwt = require('jsonwebtoken');
var mqtt = require('mqtt');
var rpiDhtSensor = require('rpi-dht-sensor');
var dht = new rpiDhtSensor.DHT11(2); // `2` => GPIO2
var projectId = 'nifty-*******-******';
var cloudRegion = 'us-central1';
var registryId = 'device-registry';
var deviceId = 'raspberrypi';
var mqttHost = 'mqtt.googleapis.com';
var mqttPort = 8883;
var privateKeyFile = '../certs/rsa_private.pem';
var algorithm = 'RS256';
var messageType = 'state'; // or event
var mqttClientId = 'projects/' + projectId + '/locations/' + cloudRegion +
'/registries/' + registryId + '/devices/' + deviceId;
var mqttTopic = '/devices/' + deviceId + '/' + messageType;
var connectionArgs = {
host: mqttHost,
port: mqttPort,
clientId: mqttClientId,
username: 'unused',
password: createJwt(projectId, privateKeyFile, algorithm),
protocol: 'mqtts',
secureProtocol: 'TLSv1_2_method'
};
В учебнике ничего не сказано о загрузке корневого сертификата ЦС Google, поэтому я следовал этому учебнику:https://raspberrypi.stackexchange.com/questions/76419/entrusted-certificates-installation
Я также проверил, что маршрут соединения был в порядке, следуя этому в Google, и все проверил ОК: https://cloud.google.com/iot/docs/troubleshooting
ProjectID, registryID, deviceID и регион все проверены правильно.
Я уверен, что это должно быть очень просто, но это расстроило меня уже неделю.Я бродил по интернету, но все, что я пробовал, приводит к той же ошибке.Кто-нибудь может помочь?