Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

UWPからIoT Hubにデータを投げる

$
0
0

世の中IoTですよね。Windows 10のIoTから、クラウドにデータを上げたい! ということでやってみましょう。

まず、コンソールアプリを作って、NuGetでMicrosoft Azure Devicesで検索して出てきたものを追加して、以下のコードでデバイスキーを作ります。

using Microsoft.Azure.Devices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceKeyGenerator
{
    class Program
    {
        staticvoid Main(string[] args)
        {
            var connectionString = "HostName=XXXX.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXXX";
            var deviceId = "iothubtest";
            var rm = RegistryManager.CreateFromConnectionString(connectionString);
            var device = AddOrGetDeviceAsync(rm, deviceId).Result;
            Console.WriteLine(device.Authentication.SymmetricKey.PrimaryKey);
        }

        privatestatic async Task<Device> AddOrGetDeviceAsync(RegistryManager rm, string deviceId)
        {
            try
            {
                return await rm.AddDeviceAsync(new Device(deviceId));
            }
            catch(Microsoft.Azure.Devices.Common.Exceptions.DeviceAlreadyExistsException)
            {
                return await rm.GetDeviceAsync(deviceId);
            }
        }
    }
}

connectionStringは、ポータルからとってきて、deviceIdは任意の文字列です。実行するとキーが得られるのでメモっておきます。

次にUWPアプリでNuGetでMicrosoft Azure Devices Clientで検索して出てきたやつを追加して以下のコードで送信します。ポイントはHttp1を指定してる所です。

conststring HostName = "XXXXXX.azure-devices.net";
conststring DeviceKey = "さっきコンソールアプリで出力されたやつ";
private async void ButtonGenerate_Click(object sender, RoutedEventArgs e)
{
    var client = DeviceClient.Create(
        HostName,
        new DeviceAuthenticationWithRegistrySymmetricKey("iothubtest", DeviceKey),
        TransportType.Http1);

    var p = new Person
    {
        Name = this.TextBoxDeviceName.Name,
        Age = 40
    };
    var json = JsonConvert.SerializeObject(p);
    var m = new Message(Encoding.UTF8.GetBytes(json));
    await client.SendEventAsync(m);
}

Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>