物联网:无法发布/订阅我的设备上/下链接主题

时间:2020-06-18 22:54:54

标签: node.js mqtt iot

我正在尝试对我在TTN上注册的设备的发布/订阅机制进行快速测试,以便我可以基于发送到TTN代理的数据构建完整的解决方案应用程序。

此刻,我正在等待loRa模块的到来,这就是为什么我要使用一个简单的nodeJS脚本来发布虚拟数据,而另一个要使用虚拟数据来订阅和构建应用的原因。我为此使用以下代码:

var mqtt = require('mqtt')
    var options = {
port: 1883,
host: ‘mqtt://eu.thethings.network’,
username: ‘xxxx’, // here I wrote my app id
password: ‘xxxx’ // here I wrote the access key
};

var client = mqtt.connect(‘mqtt://eu.thethings.network’,options)

client.on(‘connect’, function () {
client.subscribe(‘appID/devices/MyDeviceName/down’, function (err) {
if (!err) {
client.publish(‘appID/devices/MyDeviceName/down’, ‘Hello mqtt’)
}
})
})

client.on(‘message’, function (topic, message) {
// message is Buffer
console.log(message.toString())
// client.end()
})

但是这没做任何事情,我正在看TTN上的数据,什么也没进来。

我也尝试使用mqtt Explorer,但没有用。

当我在计算机上播放代理程序,在云上蚀食和蚊子时,两种方法均能正常工作。

非常感谢您的帮助。

谢谢! 艾哈迈德(Ahmed)

1 个答案:

答案 0 :(得分:1)

我过去也遇到过类似的问题。我认为问题在于尝试使用“ mqtt”而不是“ https”。对我来说,当我打电话给我时

mqtt.connect('https://thethings.network:1883', {
    "username": username,
    "password": password
}

但是,我没有使用网站的社区版本(The Things Stack V3),所以可能会有细微的差别。例如,我必须使用“ My-App-Id @ My-Company-Name”代替“ My-App-Id”。

请尝试以上操作,让我知道它是否有效。