我正在尝试对我在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)
答案 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”。
请尝试以上操作,让我知道它是否有效。