AWS IOT: не удается зарегистрироваться с тенью

Я создал вещь в AWS IoT под названием RasberryPi и пытаюсь зарегистрироваться в ее тени, используя следующий код:

var awsIot = require('aws-iot-device-sdk');

var thingShadows = awsIot.thingShadow({
   keyPath: "./certs/private.pem.key",
   certPath: "./certs/certificate.pem.crt",
   caPath: "./certs/root-CA.crt",
   clientId: "RasberryPi1",
   region: "eu-west-1",
   port: "8883",
   debug: true
});

thingShadows.on('connect', function() {

    console.log('connected');

    thingShadows.register( 'RasberryPi1', function() {
        console.log('registered');
...

Я успешно подключаюсь, но никогда не регистрируюсь. То есть второй оператор console.log никогда не запускается. Может ли кто-нибудь посоветовать мою ошибку? Я очень новичок в AWS IoT, и моя ошибка, вероятно, очень проста.

Большое спасибо


person prime    schedule 24.02.2017    source источник


Ответы (1)


Это может быть действительно запутанным, но это из-за документов. Вероятно, вы используете такие примеры, как здесь: https://github.com/aws/aws-iot-device-sdk-js#thing-shadow-class

//
// After connecting to the AWS IoT platform, register interest in the
// Thing Shadow named 'RGBLedLamp'.
//
thingShadows.register( 'RGBLedLamp', function() {
    // Your code here
}

но когда вы читаете документы здесь: https://github.com/aws/aws-iot-device-sdk-js#awsiotthingshadowregisterthingname-options-callback- вы можете видеть, что функция регистрации принимает обратный вызов не как второй аргумент, а как третий (!)

Просто назовите это так:

 thingShadows.register( 'RGBLedLamp', {}, function() {
    // Your code here
}

и это будет работать как шарм

person Aleksy Goroszko    schedule 03.04.2017