Публикация сообщений на конкретное устройство aws-iot-core с помощью Lambda

#node.js #aws-iot

#node.js #aws-iot

Вопрос:

У меня есть несколько устройств iot, зарегистрированных в моей среде iot-core. Я пытаюсь вызвать метод на конкретном устройстве, вызвав лямбду в облаке, которое публикует тему mqtt. очевидно, проблема в том, что все мои устройства (которые используют один и тот же код) прослушивают одни и те же темы.

Как я могу настроить таргетинг сообщений на конкретное устройство?

Это код, который я запускаю в lambda:

 exports.handler = async (event, context, callback) => {
  return new Promise((resolve, reject) => {
    var AWS = require('aws-sdk');
    var iotdata = new AWS.IotData({endpoint: 'xxxxxxxxxxxxxx.iot.eu-west-1.amazonaws.com'});

    var params = {
        topic: 'mytopic',
        payload: 'mypayload',
        qos: 0
    };

return iotdata.publish(params, function(err, data) {
    if(err){
        console.log(err);
    }
    else{
        console.log("Success, I guess.");
        //context.succeed();
    }
});

//  });
//};
  

Ответ №1:

Укажите имя устройства, на которое вы ориентируетесь, в полезной нагрузке. Затем код вашего устройства должен проверять полезную нагрузку на имя устройства.

Комментарии:

1. звучит как плохой план проверки каждого входящего сообщения на всех устройствах.

2. Если все ваши другие устройства прослушивают одни и те же темы, другого способа сделать это нет. Кроме того, вы можете подписаться на каждое устройство на дополнительную уникальную тему, а затем просто опубликовать в теме этого устройства.