当Device Twin属性发生变化时,我正在尝试在云后端接收通知。为此,我设置了一条路线,如下面的图片链接所示
我还创建了一个Azure函数,该函数在内置端点事件的默认使用者组上触发。但是,当我为我的某个设备更新设备双文档时,azure功能不会触发。如果我使用iothubexplorer或Device explorer监控设备的事件,我根本看不到“updateTwin”事件。但是,如果我从我收到的设备发送常规设备到云,它就可以工作。
我使用以下代码更新设备twin:
'use strict';
var Client = require('azure-iot-device').Client;
var Protocol = require('azure-iot-device-mqtt').Mqtt;
var connectionString = '';
var client = Client.fromConnectionString(connectionString, Protocol);
client.open(function(err) {
if (err) {
console.error('could not open IotHub client');
} else {
console.log('client opened');
client.getTwin(function(err, twin) {
if (err) {
console.error('could not get twin');
} else {
var body = {
temperature: '40'
}
console.log(twin.properties.reported);
twin.properties.reported.update(body, function(err) {
if (err) {
console.error('could not update twin');
} else {
console.log('twin state reported');
process.exit();
}
});
}
});
}
});
我还尝试使用以下命令使用iothub-explorer: iothub-explorer update-twin InitialDevice {\“properties \”:{\“desired \”: {\“interval \”:9000}}} --login“”
答案 0 :(得分:1)
我测试了你帖子中的代码,它有效,所以你的路由设置和代码是正确的。
你有没有提到这个topic?我猜问题与此类似。请尝试检查帐户位置并使用Roman Kiss的建议进行测试。