我的 /js 文件夹中有一个文件 dmreboot_service.js。当我使用 node /js/dmreboot_service.js 运行此文件时,它成功地调用了 Azure 中的直接方法。
我需要能够通过我的网络应用程序单击按钮来执行此功能或文件。
我尝试使用以下方法将脚本加载到我的 html 头部:
<script src="js/dmreboot_service.js"></script>
我在外部文件中放了一个警报。如果我把这个警报放在文件的顶部它可以工作,但在底部它会失败,所以文件的内容没有加载。
dmreboot_service.js 的内容是:
'use strict';
var Registry = require('azure-iothub').Registry;
var Client = require('azure-iothub').Client;
var connectionString ="HostName=XxxxxxxX.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=XxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX=";
var registry = Registry.fromConnectionString(connectionString);
var client = Client.fromConnectionString(connectionString);
var deviceToReboot = 'Runner';
var startRebootDevice = function (twin) {
var methodName = "reboot";
var methodParams = {
methodName: methodName,
payload: null,
timeoutInSeconds: 30
};
client.invokeDeviceMethod(deviceToReboot, methodParams, function(err, result) {
if (err) {
console.error("Direct method error: "+err.message);
} else {
console.log("Successfully invoked the device to reboot.");
}
});
};
var queryTwinLastReboot = function() {
registry.getTwin(deviceToReboot, function(err, twin){
if (twin.properties.reported.iothubDM != null)
{
if (err) {
console.error('Could not query twins: ' + err.varructor.name + ': ' + err.message);
} else {
var lastRebootTime = twin.properties.reported.iothubDM.reboot.lastReboot;
console.log('Last reboot time: ' + JSON.stringify(lastRebootTime, null, 2));
}
} else
console.log('Waiting for device to report last reboot time.');
});
};
startRebootDevice();
setInterval(queryTwinLastReboot, 2000);
alert('dmreboot included!');
我还尝试在我的 html 头部创建一个函数,其中包含 dmreboot_service.js 的全部内容,但是尽管成功调用了该函数,但代码并没有执行。
这是我需要开始工作的项目的最后一部分。我对此很陌生,这让我发疯了!非常感谢任何建议。