#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. Если все ваши другие устройства прослушивают одни и те же темы, другого способа сделать это нет. Кроме того, вы можете подписаться на каждое устройство на дополнительную уникальную тему, а затем просто опубликовать в теме этого устройства.