Explore ready‑to‑run examples that demonstrate how to connect your Windows IoT devices to Azure IoT Hub, send telemetry, receive commands, and manage device twins.
Device-to-Cloud Telemetry
Send temperature and humidity data from a Raspberry Pi running Windows 10 IoT Core.
using Microsoft.Azure.Devices.Client;
using System;
using System.Text;
using System.Threading.Tasks;
class TelemetrySample
{
static async Task Main()
{
var deviceClient = DeviceClient.CreateFromConnectionString("", TransportType.Mqtt);
while (true)
{
var temperature = new Random().Next(20, 30);
var messageString = $"{{\"temperature\":{temperature}}}";
var message = new Message(Encoding.UTF8.GetBytes(messageString));
await deviceClient.SendEventAsync(message);
await Task.Delay(5000);
}
}
}
Cloud-to-Device Commands
Receive direct method calls to toggle an LED on the device.
using Microsoft.Azure.Devices.Client;
using System;
using System.Text;
using System.Threading.Tasks;
class CommandSample
{
static async Task Main()
{
var deviceClient = DeviceClient.CreateFromConnectionString("", TransportType.Mqtt);
await deviceClient.SetMethodHandlerAsync("ToggleLed", ToggleLedMethod, null);
Console.WriteLine("Waiting for commands...");
await Task.Delay(-1);
}
private static Task ToggleLedMethod(MethodRequest request, object userContext)
{
// Simulate LED toggle
Console.WriteLine("LED toggled via cloud command.");
var responsePayload = Encoding.UTF8.GetBytes("{\"result\":\"ok\"}");
return Task.FromResult(new MethodResponse(responsePayload, 200));
}
}
Device Twin Sync
Synchronize desired properties and report device status.
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using System;
using System.Text;
using System.Threading.Tasks;
class TwinSample
{
static async Task Main()
{
var deviceClient = DeviceClient.CreateFromConnectionString("", TransportType.Mqtt);
await deviceClient.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChanged, null);
var reported = new TwinCollection { ["firmwareVersion"] = "1.0.0" };
await deviceClient.UpdateReportedPropertiesAsync(reported);
Console.WriteLine("Twin sync active.");
await Task.Delay(-1);
}
private static Task OnDesiredPropertyChanged(TwinCollection desiredProperties, object userContext)
{
foreach (var prop in desiredProperties)
{
Console.WriteLine($"Desired property {prop.Key} = {prop.Value}");
}
return Task.CompletedTask;
}
}