Developers Summit 2015 初日のIoT Kitハンズオントレーニング内容

2015/2/19、目黒雅叙園で開催されたデブサミ2015初日、GR-SAKURA+センサーボード+Azureを使ったハンズオントレーニングを4回開催しました。参加された皆さん、お疲れ様でした。 ここでハンズオントレーニングで実施した内容を紹介しておきます。 使ったハードウェアは、.NET Micro Frameworkを移植したGR-SAKURAボードに温度センサーその他が装備されたドーターボード(以下センサーボードと呼びます)を挿したものを使いました。 右の写真の方に3つ並んでいるGadgeteerソケットの一番右のちょい下の青っぽい素子が、温度を測るサーミスターです。 このボードをイーサネットでつないで、AzureのMobile Serviceに計測した温度を送信して、各自のストレージに貯めつつ、SignalRで計測データを送信する一連の処理を作ってもらいました。私の方で用意したSignalRハブで受信してAzureのテーブルストレージに受講者から送られた熱い魂(温度です)をExcel Power Mapで表示し、受講者の皆さんの成果を全員で鑑賞しました。 ※この構成は、100分という短い時間でIoTの超基本要素を一通り実践することを主眼にデザインしています。これがIoTの一般的なアーキテクチャであるという意味ではないのであしからず。 この実習内容は、https://aka.ms/IoTKitHoL から公開中のStep0-Step5の一連の自学自習コンテンツの中で取り扱っているテーマをピックアップして再構成したものです。 受講者の皆さんの熱い魂(指の温度です)は、私が用意したストレージに貯められて、Excel Power Mapを使って、 番号のついたセルに参加者が対応し、実習書に書かれているチャレンジを一通りやって、ボードから温度センサーの値が正しく送られて転送されると、テーブル番号に相当するセルに温度が送られた回数が棒グラフで表示されます。  トレーニングの部屋のネットワーク環境の問題で中にはボードでつながらない人もいました(ごめんなさい)が、参加された方の多くの方の温もり(指の温度です)を、表示しました。  当日の実習テキストには、私の方で用意したSignalRハブとExcelの作成方法は書いていないので、ここで紹介しておきます。 実習内容の図の「3.SignalR送信Webアプリ作成」で作ったWebアプリが送信した先は、以下のステップで作成しています。 1.Visual StudioでASP.NET Webアプリを作成 2.作成されたプロジェクトにHubsというホルダーを作成 3.Hubsフォルダーを右クリックして”SignalRハブクラス(V2)”を選択し、”SensorHub”という名前でクラス作成 出来上がったクラスに、         public void Update(SensorReading data)        {            Clients.Others.NotifyTemperature(data);             var storeCS = CloudConfigurationManager.GetSetting(“StorageConnectionString”);            var storageAccount = CloudStorageAccount.Parse(storeCS);            var tableClient = storageAccount.CreateCloudTableClient();            var sensorReadingTable = tableClient.GetTableReference(“SensorReading”);            sensorReadingTable.CreateIfNotExistsAsync().Wait();             var sr =…

0

IoT ( Internet of Things) Hands-on Kit トレーニング の学習方法

10月のIoT Japanで発表した、IoT Kit Hands-on Training セミナー、既に11月末からStep3までhttps://aka.ms/IoTKitHoL から公開してます。是非、皆さん、トライしてください。 …ポータルを眺めていて、う~ん、そっけない…と感じたのは私だけでなないと思います。特に姉妹ハンズオンのhttps://aka.ms/nkit と比べると、メインでやっている人間性が出てる…。 ということで、ここでポータルの構造と学習方法を説明しておきます。ポータルは、 はい。”さあ、始めよう”をクリックして、 といった流れで進めてください。学習に必要な機材や各種準備は、ポータルの ”事前準備”に書いてあるので、よく読んでください。2014年12月現在、まだ、GR PEACH版IoT Kitは販売されていませんが、FEZ版IoT Kitは販売中なので、そちらをご利用ください。IoTは基本複数のデバイスがつながるのが基本だし、学習コンテンツの中には、複数のデバイスをつなぐとより学習効果が出る内容もあるので、損はしないでしょう。 この「ハンズオンいいかも」と思った方、ポータルの、 ”トレーニング概要”をクリックすると、このトレーニングの全体像が表示されるので、これを知合いに見せて紹介してくれるとありがたし。このハンズオントレーニングの集合教育版セミナーや各種イベントの告知をやっているので、それも参考にしてくださいね。 更に、「俺持ってんの、mbedだし」とか「ラズパイ命」とか、「LEGO MINDSTORMS EV3大好き」とか、「やっぱArduinoっしょ」とか、思っている方は、”さぁ、始めよう”の下の方に ”コントリビューター募集” と書いてますよね。そういった皆さんは、.NET MFの部分をそれらのガジェットに置き換えたコンテンツ作成に協力してもらえると、非常に助かるので、挙手…いや、iotkithol-jp@microsoft.com にご連絡おねがいします。 では、では。  

0

IoT Kit ハンズオントレーニング用の開発環境セットアップ

11月は30日までです‼…という言い訳を地でいってしまいましたが、現在、Step3 蓄積編までをhttps://aka.ms/IoTKitHoL で公開しています。 ※2015年1月現在、Step1~Step5まで全てのコンテンツを公開中です。 ここでは、このトレーニングを行うのに必要な開発環境セットアップ方法を念のため説明しておきます。現状確実に利用可能、かつ、最新版でのセットアップ方法です。 先ず、Windows PC(7以上)が必要です。 環境セットアップー1 Windows PCに以下のツール、SDKをインストールしてください。 Visual Studio 2013 有償版、もしくは、Visual Studio Community 2013 (無償版:Express Editionは不可)http://www.visualstudio.com/downloads/download-visual-studio-vs ※ インストール方法は、http://fnya.cocolog-nifty.com/blog/2014/11/visual-studio-v.html を参照の事 .NET Micro Framework SDKhttp://netmf.codeplex.com の”download”ボタンをクリックして、netmf-v4.3.2-SDK-QFE2-RTM.zipをダウンロード ZIPファイルを展開 MicroFrameworkSDK.msiを実行 netmfvs2013.vsix を実行 http://gadgeteer.codeplex.com/ の”downloads”ボタンをクリック.NET Gadgeteer Core をクリックし、”GadeteerCore.msi”をダウンロードし実行※PinKit(GR-PEACH+センサーボード)を使う場合は、3まで実施すればOK ※FEZ版IoT Kitを使用する場合:https://www.ghielectronics.com/support/netmf/sdk/24/netmf-and-gadgeteer-package-2014-r5  の”NETMF_and_Gadgeteer_Package_2014_R5.exe”をダウンロードし、実行。※GHI Electronics社へのユーザー登録必要 GHI社製の昔のセンサー等のモジュールを使う場合は、https://www.ghielectronics.com/docs/299/discontinued-gadgeteer-module-drivers のNETMF4.3の項目の右下の”Discontinued Gadgeteer Module SDK”をクリックし、ダウンロード&インストール 以上で、FEZ版IoT Kitハードウェアのソフトウェア開発環境のセットアップは完了です。 .NET Micro Framework SDKが正しくインストールされているか、http://nav.jp/ioyt/inst/MFInstallCheck.zip をダウンロード(ダウンロード後、ZIPファイルのプロパティを表示し、ブロックを解除してください)して展開し、中に入っているMFInstallCheck.slnファイルをVisual Studioで開きます。開始でエミュレーターが起動し、Hello Worldと表示されます。 環境セットアップ-2 それから、トレーニングではMicrosoft Azureを実際に使うので、http://azure.microsoft.com/ja-jp/ から、サブスクリプション契約をしてください。まずは右上の”無料評価版”からお申し込みください。MSDN SubscriptionやBiz…

3

Windows 8.1でLEGO MINDSTOMRS NXTを制御するサンプルコード

もうちょっと形を整えてから…と思ったのですが、時間がたってしまったので、暫定的な形になってしまいますが、LEGO MINDSTORMS NXTをWindowsストアアプリで制御するための、ライブラリ、アプリテンプレートをサンプルとして公開します。 ファイル一式は、 http://eg-sample-filedowload.azurewebsites.net/FileDownload/GetFile?id=NXTControl からダウンロードしてください。基本、http://nxtnet.codeplex.com で公開されている.NET FRAMEWORK版のライブラリをWindows Runtimeに移植したものです。将来的には、ちゃんと、オープンソース的な体裁を整えてどこかできちんと公開しますので、暫定的に使ってください。 ダウンロードしたZIPファイルには、 NxtWinRTSolution.zip LegoNXTSDK.zip LegoNXTSDK.vsix BrickControlApps.zip README.txt の5個のファイルが格納されています。※README.txtは必ず読んでくださいね。 最初のNxtWinRTSolution.zipには、以下の3つのプロジェクトが格納されています。 NxtWinRT       NXT.NETのWinRT対応 - ライブラリ形式 NxtWRTC       NXT.NETのWinRT対応 - コンポーネント形式 StoreAppsWRTCTest  サンプルコード NXTとBluetooth Serial通信の処理の具体的な中身が知りたい方は、こちらを参照してください。基本的な使い方は、StoreAppsWRTCTestのMainPage.xaml.cs を見てみてください。 次に、2番目のLegoNXTSDK.zipですが、この中には、3番目のLegoNXTSDK.vsixを作るためのプロジェクトです。LegoNXTSDK.vsixをダブルクリックして実行すると、NxtWinRTSolutionのNxtWRTCで作成された、コンポーネント形式のライブラリが、Visual Studioに組み込まれます。4番目のBrickControlApps.zipは、このLegoNXTSDK.vsixをVisual Studioに組み込んだ状態で、NXTと連携するストアアプリを開発するためのテンプレートです。ドキュメントフォルダーの下のVisual Studio 2013の、 Templates¥ProjectTemplates¥Visual C# の下にそのままZIP形式でコピーして、Visual Studio 2013を起動してください。新規プロジェクト作成で、Visual C#カテゴリの下に、Lego NXT Appsというプロジェクトテンプレートが現れます。これを選択すれば、コンポーネント形式のNxtWRTC(LegoNXTSDK.vsix)を組み込んだ形のストアアプリが出来上がります。 作成したアプリが上手くビルドできない場合は、プロジェクトへの参照追加で、NxtWinRTSolutionのNxtWRTCプロジェクトを追加してください。それでビルドは通るはずです。 ちなみに、このライブラリを使ったストアアプリは既に、 http://apps.microsoft.com/windows/app/brick-drive/87a0f77d-bebf-4a39-b9e4-169111c9b72c http://apps.microsoft.com/windows/app/brick-piano/6cd96ca7-cf25-4ad4-b363-b6d2584b01a7 の二つが公開されています。 ※あくまでもサンプル公開ですので、自己責任でお使いください。  

0

Philips hueをWindows ストアアプリから制御する

de:code 14等で紹介した、Philips hueをコントロールするストアアプリのサンプルを公開します。 http://eg-sample-filedowload.azurewebsites.net/FileDownload/GetFile?id=RemoteLightControlTemplate ストアアプリのプロジェクトテンプレート形式で公開しているので、ダウンロードしたZIPファイルを、各自のVisual Studio 2013フォルダー(Projectsフォルダーのあるところ)の Templates\ProjectTemplates\Visual C# というフォルダーにコピーして、Visual Studio 2013を起動し、新規プロジェクト作成で、 Remote Light Control Appを選んでプロジェクトを作成してください。UI部分を作りかえれば、ほぼ、ストアに申請可能な形式です。この中に、UDP Multicast Group通信によるUPNPのSSDPプロトコルや、hueを見つけるコード、REST APIアクセスなどすべてあるので、是非、参考にしてくださいね。 ※あくまでもサンプルコードです。利用は各自の責任において行ってください。利用したことにより発生するいかなる責任も負いませんのでご承知おきください。    

0

Windows ストアアプリでUPnPデバイスを発見する

UPnP(Universal Plug and Play)対応のデバイスをWindows ストアプリで発見する方法を紹介します。UPnPアプリを発見するプロトコルであるSSDPを使ってデバイスの定義を取得する方法です。DLNA対応機器や、Philips Hueなど、この解説を使ってアドレスを取得することができます。 SSDPは、UDPのMulticast Group通信を使っており、ストアアプリでは、DatagramSocketを使用します。 DatagramSocket ssdpSocket = new DatagramSocket(); と、データグラムソケットを一つ作成します。そして、データグラムソケットに、UPnPデバイスからの応答を受け取るためのハンドラ―を登録します。 ssdpSocket.MessageReceived += ssdpSocket_MessageReceived; SSDPは、239.255.255.250、1900というグループアドレス、グループポートを使います。この情報を使ってマルチキャストグループにジョインします。     var ssdpGroup = new HostName(“239.255.255.250”);    string ssdpGroupPort = “1900”;    await ssdpSocket.BindEndpointAsync(null, “”);    ssdpSocket.JoinMulticastGroup(); そして、SSDPの規約に従った、デバイス発見の為の送信メッセージを組立て送信します。     string discoverPacket = “M-SEARCH * HTTP/1.1\r\n”;    discoverPacket += “HOST: ” + ssdpGroup .DisplayName +”:” + ssdpGroupPort + “\r\n”;    discoverPacket += “ST: upnp:rootdevice\r\n”;    discoverPacket += “MAN: \”ssdp:discover\”\r\n”;    discoverPacket…

0

組込み機器でもSignalRを使いたい – 位置情報を例にAzure Web Siteでホスティング

最近、組込み機器を含むいろんなデバイスとクラウドが連携するInternet Of Thingsに関する話を方々でしています。.NET Micro Framework/Gadgeteerを使えば、クラウドにつながる組込み機器のプロトタイプを簡単に作れるし、AzureのWebサイトは、SignalRというインターネット上の同報通信プロトコルが使えて、ゆるくフレキシブルにつインターネット上で通信しあえるデモを簡単に作れるので、気がつくと一杯やってしまっています。 SignalRの詳しい話は専門家(緑色のエバとか)に任せるとして、SignalRでデータ交換しあうサイトをさくっと作りたい方向けに、位置情報通知を例に、方法を紹介しておきます。 交換したい情報は、 UserId位置情報の主体の何らかのId Latitude緯度。double型 Longitude経度。double型 Altitude高度。double型 TimeStamp位置計測した時間。string型 EventCode何をやっているときの位置情報かを区別するための情報。string型 とします。例えば、パーティーやイベントなど複数の人たちが一か所に集まる時に参加者個々人の集まってくる模様をトレースするとか、自分の軌跡を使って何かやる時など、色々と応用は多いはず。 早速、AzureでWebサイトを作りましょう。ダッシュボードを開いて 右端の”簡易作成”を選択して、URLを入れてください。入力文字列を仮に”position-notify”としておきます。 出来上がったWebサイトのURLは、http://position-notify.comとなります。これでAzure側の準備は終わりです。 次に、このWebサイト上で、位置情報通知用のSignalRのHubを作ります。 Visual Studio 2013を起動して、ASP.NETアプリを作成します。 SignalRに必要な機能を追加します。 Hub用のフォルダーを作ります。   出来上がったPositionHub.csを以下の様にコーディングします。 using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Hubs;using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace PositionNotify.Hubs{    [HubName(“positionhub”)]    public class PositionHub : Hub    {        [HubMethodName(“Position”)]        public void Position(PositionModel model)        {            Clients.Others.Position(model);        }         [HubMethodName(“EventCode”)]        public void EventCode(string…

0

マイクロソフトのIOT(Internet of Things) =Internet of Your Things

今週、サンフランシスコでイベントがあって、モノがつながって連携しデータを蓄積活用するための、M2Mやセンサークラウドなどを管理するためのAzure上のサービス、Azure Intelligent Systems Service、が発表されました。 http://www.InternetOfYourThings.com キーワードは、Internet of Your Things 貴方のモノからつないでいきましょう的な感じです。各種デバイスを管理するAzure上のサービスとデバイス側のSDKのプレビュー提供が開始されています。 http://blogs.msdn.com/b/windows-embedded/archive/2014/04/15/microsoft-azure-intelligent-systems-service-limited-public-preview-now-available.aspx お試しください。5月末のde:codeでは、このサービスの一部の情報もセッションで扱おうと思ってます。 サンフランシスコのイベントの模様は、 https://www.microsoft.com/en-us/server-cloud/whats-new.aspx#fbid=YJudAz7bV_f?bid=YJudAz7bV_f でストリーミングが見れるのでこちらも是非。他に、SQL Server 2014と、Analytics Platform Serviceが発表されてます。 インテルのGalileoでWindowsカーネルが動くとか、.NET Micro Frameworkで動いているデバイスとか、BUILDで披露されていましたが、楽しくなってきましたね。    

0

小型組込み機器を.NET Micro Frameworkで実開発するときのイメージ

1~2か月に一回ほど、OTCで、.NET Micro Frameworkに関するハンズオンセミナーを実施してます。そこで話している内容をちょっぴり紹介。 .NET Gadgeteerなどでプロトタイプを作っていろいろ試した後、実デバイス開発の流れは、以下の様になります。 アプリケーション開発は、.NET Micro FrameworkのAPI上で、Emulatorや.NET Gadgeteerボードで実行ロジック確認をしながら進めていくことができます。.NET Micro Frameworkは、ポーティング用にPAL(Platform Abstraction Layer)とHAL(Hardware Abstraction Layer)という層があるので、アプリケーション開発とハードウェア開発は基本、並行して進められます。ハードウェアが出来たら、.NET Micro Frameworkをポーティングします。この作業も、アプリケーション開発とは並行して進められます。アプリはアプリで、ハードウェアはハードウェアで、徹底的にモジュールテストが行えます。TFSのリモートテスト機能を使えば(実はここまだ検証していないので、多分出来るはずというレベルです。ごめんなさい)、自動テストに小型組込み機器のソフトウェアテストを組み込むことも可能です。(実時間制約やセンサーやモーター等ハードウェアに絡む部分は多分自動テストは無理ですが、アルゴリズムやロジックはテスト可能ですね) 出来上がった、アプリのソフトウェアは、Visual Studioで実行ターゲットを変えるだけでF5実行すれば(MFDeployを使ってアプリを配置するのが正当ですが)、実機で動き出すはず。後はシステムテストをすれば、OK。 .NET Gadgeteerを使っている方、Visual Studioのエディターで、ハードウェアの構成を定義できることはご存知ですよね。  CPUのメインボードと、周辺ボードのモジュールは、ツールボックスからドラッグ&ドロップできるわけですが、この仕組み、GHI Electronics社の専売特許と思っていませんか?独自に開発したCPUボード、モジュールも、この環境に組み込むことが出来るんです。 http://gadgeteer.codeplex.com/ から公開されているSDKをインストールすると、以下の3つのプロジェクトテンプレートがVisual Studioにインストールされます。 .NET Gadgeteer Mainboard .NET Gadgeteer Module .NET Gadgeteer Kit これを使うと、上から順番に、自前のCPUボード、自前の周辺ボード、ツールボックスの部品群とライブラリ一式、を作れます。つまり、GHI Electronics社が公開しているSDKのようなものを、各自のハードウェア構成でも作成可能ということです。この仕組みを使えば、単に、ソフトとハードの並行開発にとどまらず、 こんな感じで、各開発組織ごとの専用Gadgeteer SDKが出来上がる訳です。大抵の組込み機器は、大枠のアーキテクチャは決まっていて、製品構成オプションによるバリエーション開発というのが一般的?なので、規律ある製品開発活動を進めるのにこの仕組みはとても便利です。 さて、.NET Micro Frameworkを適用するのに具合の良い組込み機器の種類の一つとして、クラウド等ネットワークサービスと連携する機器があります。ネットワーク上のサービスへのアクセスは、プロトコルやセキュリティなどアクセスの仕方が規定されていて、組込み機器もその規定に従わないといけません。つまり、組込み機器側に、その規定に従うためのロジックが必要になる訳です。.NET Micro Frameworkの特徴を考えてみると、Managed APIの上に構築されたソフトウェアは、HWが変わっても、同じように動きますね。ならば、サービスベンダーがサービスに接続するための規定を満たす.NET Micro Frameworkで動作するライブラリを公開して、組込み機器側のアプリケーションがそのライブラリを使ってサービスにアクセスするようにしてもらえば、サービスベンダーは、組込み機器の内部事情をほとんど考慮せずに、組込み機器側に対する要件を提供することができるわけです。サービスベンダーが提供しなければならないのは、ライブラリと、Emulator上で動作するサンプルコードだけで十分です。 図にすると以下の様になります。 この構成、実は、スマートフォンアプリや、PC、タブレット向けには既によく見られる仕組みですよね。組込み機器も含めた仕組みが実現できます。.NET Micro Frameworkは既に、T-KernelやLinux上へのポーティング事例があるので、組込み機器側のPlatformが元々.NET Micro Frameworkベースでなくても、PICや16BitのCPUでない限り、この仕組みを活用することができるわけです。勿論、組込み機器開発側が、クラウドからのアクセス用に.NET Micro…

0

Internet Of Things ハンズオン公開

昨年(2013年)のMSC、ET2013で展示、デモした2つのシステム(http://blogs.msdn.com/b/hirosho/archive/2014/01/07/overviewmsc2013demosmicrodevicewithcloud.aspx  )、これをもっと簡略化したハンズオン資料を作成したので、ここで公開しておきます。 .NET MF+Windows Azure+Windows Store App+αの連携システムを一気通貫で実践できるハンズオンです。是非お試しください。 先ず、SignalRを使ったセンサー計測値リアルタイム通信連携システムに関するハンズオンです。 http://sdrv.ms/1kMGMK4 ※このハンズオン実施中に、ASP.NETのプロジェクト実行でエラーが出たら、http://rionscode.wordpress.com/2014/02/13/when-mvc5-signalr-and-nuget-just-wont-get-along/  を参考にしてMicrosoft.Owin、Microsoft.Owin.Securityを更新してください。 次に、Windows Azure Mobile Service を使った環境センサー蓄積・共有システムに関するハンズオンです。 http://sdrv.ms/1dYjqJb 今後、Visual StudioのTFSを使ったプロジェクトマネージメントも含んだハンズオンも作ろうかな…なんて思ってます。 是非、トライしてみてください。 ボードは、http://tinyclr.jp から購入可能です      

0