我想使用运行 Windows iot 核心的树莓派模型 b 远程打开/关闭继电器,树莓派必须与 azure iot hub 连接,最初我可以通过互联网上的浏览器访问 ui 来打开/关闭继电器,
更好的方法(c#,windows iot 核心上的 node.js),相关文章的链接将不胜感激。
我想使用运行 Windows iot 核心的树莓派模型 b 远程打开/关闭继电器,树莓派必须与 azure iot hub 连接,最初我可以通过互联网上的浏览器访问 ui 来打开/关闭继电器,
更好的方法(c#,windows iot 核心上的 node.js),相关文章的链接将不胜感激。
要使用 Azure IoT Hub,您可以使用直接方法。
对于Windows IoT Core,您可以从 UWP 应用开始。
以下是在设备上实现直接方法的简单示例:
using Microsoft.Azure.Devices.Client;
using System.Diagnostics;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
namespace App1
{
public sealed partial class MainPage : Page
{
private string connectionStr = "HostName=[YOUR HUB NAME].azure-devices.net;DeviceId=[YOUR DEVICE ID];SharedAccessKey=[SHARED ACCESS KEY]";
private DeviceClient deviceClient;
public MainPage()
{
this.InitializeComponent();
AddDirectMethod();
}
private async void AddDirectMethod()
{
deviceClient = DeviceClient.CreateFromConnectionString(connectionStr, TransportType.Mqtt);
await deviceClient.SetMethodHandlerAsync("TurnOn", new MethodCallback(TurnOnRelay), null);
await deviceClient.SetMethodHandlerAsync("TurnOff", new MethodCallback(TurnOffRelay), null);
}
private Task<MethodResponse> TurnOffRelay(MethodRequest methodRequest, object userContext)
{
Debug.WriteLine("Direct method name:" + methodRequest.Name);
// Put Relay toggle code here.
// ...
string result = "{\"Relay Status\":\"The Relay is OFF.\"}";
return Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(result), 200));
}
private Task<MethodResponse> TurnOnRelay(MethodRequest methodRequest, object userContext)
{
Debug.WriteLine("Direct method name:" + methodRequest.Name);
// Put Relay toggle code here.
// ...
string result = "{\"Relay Status\":\"The Relay is ON.\"}";
return Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(result), 200));
}
}
}
你需要将NuGet包microsoft.azure.devices.client安装到你的 UWP 应用。这是您可以参考的 .NET 控制台应用程序的详细教程。
您可以像这样从 Azure 门户调用直接方法: