2016-04-28 8 views
3

Я пробовал AWS IoT с моей малиной Pi, используя Node.js и aws-iot-device-sdk. Он подключается нормально, но на .subscribe он не вызывает функцию обратного вызова. и публикация не публикуется. Пожалуйста, если вы можете указать мне в правильном направлении. Я также создал правило для AWS IoT, где все данные от topic3 переизданы до topic2.Приключение к теме на AWS IoT

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

 
var device = awsIot.device({ 
 
    "host": "A3SXXXXXXXXXXX.iot.us-west-2.amazonaws.com", 
 
    "port": 8883, 
 
    "clientId": "MyClientId", 
 
    "thingName": "MyThingName", 
 
    "caCert": "./certs/root-CA.crt", 
 
    "clientCert": "./certs/certificate.pem.crt", 
 
    "privateKey": "./certs/private.pem.key" 
 
}); 
 
device 
 
    .on('connect', function() { 
 
    console.log('connected'); 
 
    device.subscribe({'topic3':0}, function(error, result) { 
 
\t console.log(error); 
 
     console.log(result); 
 
    }); 
 
    device.publish('topic2', JSON.stringify({ test_data: 2})); 
 
    });

+0

Его хорошие парни, я нашел то, чего не хватало. Правило в моем AWS IoT не было настроено на повторную публикацию в теме, а именно на запись в журнал. Тупая ошибка, но это происходит. Теперь все в порядке и работает хорошо. Но все же путают, почему функция обратного вызова при подписке не вызывается. Возможно, для этого нет обратного вызова. Я буду копаться в документации mqtt.js для этого –

+0

Привет @Sandeep Randhawa .. У меня есть 2 вопроса, если вы можете помочь. 1). Как запустить программу nodeJS в фоновом режиме. как, например, Я использую узел «test.js» для запуска программы. Теперь, если я закрою сеанс SSH, сервер также будет убит. Как мы должны запускать его в фоновом режиме. 2). Как мы можем сделать переключатель, основанный на результатах, полученных нами от ответа. –

+0

@Ankit Khanna вы можете использовать forever или pm2 для управления процессом узла. Однако я бы рекомендовал использовать «nohup», например, «nohup node index.js &». И я не получил ваш второй вопрос, можете ли вы рассказать о том, чего вы хотите достичь здесь. –

ответ

0

ли вы указали IOT: Получите действия в политике? http://docs.aws.amazon.com/iot/latest/developerguide/policy-actions.html

ВГД: Получение Представляет разрешение на получение сообщения от AWS IoT. Разрешение iot: Receive проверяется каждый раз, когда сообщение доставляется клиенту. Поскольку это разрешение проверяется при каждой поставке, оно может использоваться для отмены разрешений для клиентов, которые в настоящее время подписываются на тему.

У меня была аналогичная проблема с тем, с чем вы столкнулись, когда вызов вызова подписки никогда не вызывался. Мой клиент IOT публиковал и подписывался на ту же тему. Публикация работает, но callback callback никогда не выполнялся. После добавления iot: Receive action в ту же тему, callback callback работает сейчас, как и ожидалось.