デスクトップアプリでWindows Runtime APIをコールする(センサーとか)

前から、デスクトップアプリからWindows Runtime API(の一部)を呼び出せるのは知っていたのですが、最近、本当にコールする必要が生じたので、やり方をここに書いておきます。 ※この投稿はストアアプリより、デスクトップアプリの方が良いです…という話ではありません。使えるWinRT APIは一部だし、セキュリティ、パフォーマンスなどストアアプリで使った方がいいので、なるべくストアアプリを使うことをお勧めします。 Windows Runtime APIを使おうとするのは、Visual Studioで、”Windowsデスクトップ”→”WPFアプリケーション”プロジェクトテンプレートで作ったプロジェクトです。このプロジェクトは本来.NET FrameworkのAPIを使用します。 プロジェクトファイル(C#なら*.csproj)をテキストエディタ等で開きます。 <Project>…</Project>という記述がありますね。その中に<PropertyGroup>…</PropertyGroup>という定義がいっぱいあります。これらに並べて、   <PropertyGroup>    <TargetPlatformVersion>8.0</TargetPlatformVersion>  </PropertyGroup> を入れます。 プロジェクトをVSで再度開きます。 参照設定に、以下のパスに存在する、Windows.winmd というファイルを追加します。 C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral ※32ビットOSの場合は、”Program Files\Windows Kits… これで設定は終わり。 例えば、加速度センサーなら、 var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault(); と、こんな風に取り出すことができます。但し、イベントを”+=”の様な普通の形式では使うことはできません。  

2

GadgeteerとAzureで作る簡易温度計 – Part 2

さて、続き。 Part 1は、http://blogs.msdn.com/b/hirosho/archive/2014/07/25/gadgeteer-azure-part-1.aspx こちら。 Azure Mobile Serviceを作成 Gadgeteerのアプリ開発 Excel Power Queryで可視化 Excel Power Viewで分析 Azure Web Siteを作成 Azure Mobile Serviceを改造 – Web Siteへのデータ転送 Store アプリ開発 Azure Mobile Serviceを改造 – Push 通知の追加 の4番目は別の投稿でじっくり説明するとして、5から始めます。 5. Azure Web Siteを作成 ここでは、AzureのWeb Siteを使って、Mobile Serviceにアップロードされたデータを転送するためのWeb APIと、それをSignalRで通知するためのHubを作成します。 Visual Studio 2013を起動し、メニューの”ファイル”→”新規作成”→”プロジェクト”を選択して、Visual C#のWebカテゴリーのASP.NET Webアプリケーションテンプレートを使って、プロジェクトを作成します。MVCを選択し、Web APIにチェックを入れて作成します。 そのまま、Azure Web Site上に作れてしまうので、指示に従ってWebサイトをAzure Web Site上に作ってしまいます。 SignalRのハブを作成します。SignalRは、インターネット上で、計測した温度をStoreアプリに通知するために利用します。ソリューションエクスプローラーで、プロジェクトの”Models”フォルダーに”SensorReading.cs”という名前でクラスを追加します。これは、モバイルサービスからのデータ転送、SignalRによる同報通信の際にデータを格納する為のクラスです。以下のようにコーディングします。     public class SensorReading   …

0

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

日本以外は英語で日本は日本語で表示するWindowsストアアプリの作り方まとめ

ワールドワイド向けにストアアプリを公開したい場合、英語でUIを構成すれば十分です。しかし、日本向けには日本語で表示されるアプリにしたい…そんな方は多いと思います。多国語化対応に関する記事や解説は多く出ていて、ネット上で探せば対応できるのですが、いちいち探すのは面倒なので、この投稿で、ハブアプリプロジェクトテンプレートをベースに開発する場合について、英語と日本語を適切に切り替える方法をまとめて解説しておきます。 やりたいことは、 OSのロケールがja-jpの時→アプリ実行時の全てのテキスト表示を日本語化し、アプリ名表示も日本語表示 OSのロケールがja-jp以外の時→アプリ実行時の全てのテキスト表示を英語化し、アプリ名表示も英語表示 です。ハブアプリテンプレート作成時、プロジェクトの構成は、 こんな感じです。先ずは、日本語で全てアプリを開発してしまいましょう。DataModelフォルダーのSampleData.jsonに日本語を記載する場合は、保存オプションの詳細設定で、”Unicode(UTF-8 シグネチャ付き – コードページ 650001”を指定して保存しなおしてください。 一通りこれを英語化していきます。 その1)SampleData.jsonの二カ国語化 このファイルに記載されている内容はアプリのグループやアイテムの情報として表示されるわけです。これが日本語だったり英語だったりすれば切り替わらないですね。このファイルの中に日本語英語を両方詰め込むやり方も考えられるのですが、インテリセンスも効かないし、間違えやすいので、ダブルファイルによる解決を採用しますこのプロジェクトをファイルエクスプローラーで開いて、DataModelフォルダーのSampleData.jsonをSampleData-jp.jsonという名前でコピーします。コピーしたファイルを、ソリューションエクスプローラー上で、DataModelフォルダーを右クリック→追加→既存の項目を選択し、プロジェクトに追加します。このファイルのプロパティのビルドアクションを”コンテンツ”に変更することを忘れずに。で、元のSampleData.jsonの記述を英語化します。DataModelフォルダーのSampleDataModel.csのSampleData.jsonを読み込んでいるコード(SampleDataSourceのGetSampleDataAsyncメソッド)を、以下の様に修正します。             string fileName = “SampleData.json”;            if (Windows.Globalization.ApplicationLanguages.Languages.Count>0)            {                if (Windows.Globalization.ApplicationLanguages.Languages[0] == “ja”)                {                    fileName = “SampleData-jp.json”;                }            }            Uri dataUri = new Uri(“ms-appx:///DataModel/” + fileName);            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);            string jsonText = await FileIO.ReadTextAsync(file, Windows.Storage.Streams.UnicodeEncoding.Utf8);            JsonObject jsonObject = JsonObject.Parse(jsonText);  これで、OSのロケールに合わせて日本語の場合には、SampleData-jp.jsonを、日本語以外の場合には、SampleData.jsonを読み込むことになります。 その2)UI固定部分の表示の二カ国語化…

0

Visual Studioを機能拡張する – ライブラリとプロジェクトテンプレートの追加

一定水準以上のソフトウェア技術者なら、アプリを開発中、汎用的に使えそうなコードをライブラリー化したり、パターン化したプロジェクトを基にプロジェクトテンプレートを作って、作業を効率化しますね。 でも、作ったライブラリーを別のプロジェクトで使うとき、ライブラリをコピペしたり、ライブラリプロジェクトを追加したり、と結構めんどくさいですよね。場合によってはソースコードは見せたくなくてアセンブリーだけ、他人に提供したい…なんてケースもあると思います。プロジェクトテンプレートにしても、ZIPファイルをあぁだらこぅだらのフォルダーにコピーしてくださいとか、めんどくさい。 こんな場合は、VSIXパッケージ化して、Visual Studioに組み込んでしまいましょう。そうすれば、VSIXパッケージを実行するだけで、プロジェクトへの参照追加だけで共有ライブラリを参照可能にしたり、所定の場所にプロジェクトテンプレートがインストールされて新規作成で便利になります。 VSIX、某アイドルグループではありません。Visual Studio を拡張する為のパッケージの形式です。この形式にしておくと、Visual Studio ギャラリーを通じて こんな感じで、公開して、Visual Studioの”ツール”→”拡張機能と更新プログラム”から選択してインストールするなんてことも出来てしまう。 では早速作り方を紹介していきますね。VSIXパッケージを作成するには、Visual StudioのUltimateエディションが必要です。Visual Studio Ultimateに対して、Visual Studio SDKをインストールします。上の図で示したダイアログで、左側で”オンライン”を選択し、右上の検索窓に”Visual Studio SDK”と入力して検索します。”Microsoft Visual Studio 2013 SDK”と表示される(過去のバージョンはそれぞれのバージョンに対応するSDKが出るはず)ので、それを選択し、”インストール”ボタンをクリックして実行してください。 Visual Studio SDK をインストールすると、Visual Studioで出来る事のおよそほとんどの事をプログラムで自動実行できるようになります。自動生成ツールを作ったり、開発環境の拡張が好きな人には堪らないですね~。 先ず、ライブラリをSDK化する方法を紹介します。上の図でBingのOptical Character RecognitionやMap、Translator Controlなどがリスト表示されていますが、これらはみんな、Bingサービスと連携するWindows Storeアプリで使えるUI部品とライブラリを含んでいます。こんな感じで皆さんのライブラリやUI部品が共有できたらクールじゃないっすか?で、ここでは、折角なのでWindows ストアアプリ向けのWindows Runtime Component ライブラリのSDK化を説明します。 先ず、Windows Runtime Componentを作ります。これは、プロジェクトの新規作成で、Visual Basic、C#、Visual C++のそれぞれのWindowsストアカテゴリに、”Windows ランタイムコンポーネント”というプロジェクトテンプレートがあるので、それを使って作ります。 ライブラリが出来たら、それをVSIXパッケージ化します。下の図の”VSIX Project”テンプレート(Visual C#→拡張機能)を使って新規にプロジェクトを一個作成します。 出来上がったプロジェクトに下の図の様に、フォルダーを作成します。redist/commonconfiguration/neutral、references/commonconfiguration/neutralの2フォルダー(というか実際に作るフォルダーは6フォルダーですが)。 作成した二つのフォルダーに、Windows Runtime Componentライブラリプロジェクトをビルド後bin/Releaseフォルダに出来上がっている拡張子priとwinmdの二つのファイルをコピーします。コピーしたファイルは、プロジェクトに”既存の項目”で追加し、プロパティで、”ビルドアクション”の値を”コンテンツ”に変更します。 プロジェクトにSDKManifest.xml という名前のXMLファイルを新しく作成します。ファイルの中身は、 <?xml version=”1.0″ encoding=”utf-8″…

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

色々と連携するアプリを考えてみる

最近、日本アンドロイド友の会の皆さんも交え、色々と連携するアプリを開発しよう!!という活動を進めています。元々BluetoothやUSBでつながる周辺機器と連携するストアアプリや、Internet Of Thingsの世界で、組込み機器+一般端末+クラウドの連携なども話しているので、まぁその自然な延長ってやつです。 スマートフォンは、移動しながら(基本ながら見は厳禁ですがw)とかチラ見するとかに適しているけど、会議中にちらちら見るのは失礼だったり、画面が小さく老眼にはきつかったり、タブレットは移動にも使えて、行った先でパネル的に使えるけど、細かな情報を編集したりするのは普通の人にはちょっと厳しい、ノートPCは細かな編集に便利でドカッと腰を据えてアプリを使うのに便利、家の中などでは、ハイスペックのデスクトップやオールインワンがやっぱり便利と、デバイスの特性に合わせて、アプリとして提供するコンテンツ、操作性はそれぞれに最適化されていた方が便利。 日常生活を考えると、例えば、仲間と飲みに行ったり遊びに行ったりするときには、誰かの「飲みてー」や「あそこ行きてー」、「○○やりてー」があって、知り合いと「行く?」とか「やる?」的なやり取りがあって、「どこ行くか?」「○○なんかどうよ?」、「○時に○集合だよ~」、「誰が参加するの?」「○さん呼ぼうよ」とか、当日「みんな集まってるか?」「○さん来ないけど今どこ?」、イベント中も、パーティ系なら盛り上げるための余興とか、旅先なら「あ”~あそこ行けばよかった」的な後悔を残さない仕組みとか、イベント中に起こった出来事やハプニングの記録や、幹事さんからの適時連絡とか、特定個人通しの秘密の会話支援が必要で、終わった後も、「楽しかったね~」、「またやろうね~」と振り返り…と一連の流れが続きます。これ全て一つのアプリとして詰め込むという考え方もありますが、タッチ主体の操作性では、階層が深かったり、機能が複雑なアプリは使いにくいし、今時、共有データは簡単にクラウド上に蓄積して、様々なデバイス、アプリからアクセスできるので、それぞれのシーンを切り出して、各シーン毎に用途に応じたアプリがあれば便利なのではと思うわけです。例えば、参加する仲間が集合しているシーンでは、移動中の人は位置情報通知+集合場所に辿り着く為の支援機能を持ったモバイル端末で動くアプリと、既に待合せ場所についた人や参加したかったけど参加できずに別の場所にいる人とかが、参加者が今どこにいるかを地図に重ねてパッと見れるアプリや、参加者にリアルタイムに連絡を通知するための幹事さん向けアプリ、など、一つのシーンにおいても、役割や目的に応じて複数のアプリが考えられます。 こうやって考えていくと、他にも、パーティで良く行われるビンゴ、これも、参加者各自の数字ヒット状況を表示するアプリ、主催者側が次の玉をランダムに選び出したり色々何するアプリ、参加者向けに出玉の数字や景品の残り状況を表示するアプリの三つで構成するとか、ポーカーやコントラクトブリッジ、麻雀など、プレイヤー向けアプリ、誰かがプレイしているのを観戦するアプリ、勝負の記録を閲覧するアプリ、等々、見方をいろいろ変えるとアプリのアイデアがどんどん出てきます。Androidアプリ、Windows ストアアプリを開発している皆さん、頭の体操を兼ねて、色々と考えてみてみるのも面白いでしょう。 最近沢山市場に出つつある、Bluetooth SMART対応の時計や健康器具、面白そうなガジェット達、これも、スマートフォンやPCの機種によって、つなげられたり、つなげられなかったり。ならば、スマートフォン+ガジェット⇔PCや、スマートフォン⇔PC+ガジェットで連携させるとか、リアルタイム系のアプリはモバイル端末で、後からじっくり見る分析・活用形のアプリはタブレット、旧来のPCで、というケースもあります。 読者のみなさん、色々考えてみてくださいね。 さて、では、AndroidアプリとWindowsストアアプリを連携させる方法を紹介していきましょう。必要なのは、AndroidデバイスとWindows PC間でのデータ通信です。データを送受信さえできれば、何とでもなります。つなぎ方にはネットワークの観点から、 ピアツーピア ローカルネットワーク インターネット(クラウド) の三種類に分類できます。先ずピアツーピアですが、考えられるのは、 Bluetooth RfcComm(旧来の仮想ポートにマップされてシリアル通信するタイプ) NFCやWi-Fi Directによる近接間通信 の二方法です。前者は知見者の助けも借りて現在研究中。後者が将来的には本命だと思いますが、残念ながら、NFCやWi-Fiに対応しているWindows PCが少ないのが弱点。こちらについては、別途、色々とわかってきた段階で実装方法を紹介していく予定。 次にローカルネットワークですが、一番シンプルなのは、UDP Multicast Group通信の利用です。Wi-Fiも含め同じルーターに接続されていれば、あらかじめ決められたグループアドレスとグループポートを使って、アドホックに連携してシンプルな形式でデータを交換可能です。ビンゴアプリやゲーム進行、特定の誰かとのひそひそチャットなどで利用できます。Androidアプリでは、http://developer.android.com/reference/java/net/MulticastSocket.htmlで紹介されているライブラリで実装可能。Windows ストアアプリでは、https://aka.ms/Win8UDPMCGComm を参考にしてください。UDP Multicast Group通信は、家電のEchonet-Liteなどでも使われていて、スマートフォン、タブレット、PCだけでなく、.NET Micro FrameworkやArduino端末でも通信可能です。 最後のインターネット(クラウド)ですが、端末がインターネットに接続されている環境なら、これが一番楽でしょう。ここでは、Windows Azure で提供されているサービスで利用可な二つのサービスを紹介します。 SignalRによるリアルタイム通信 Windows Azure モバイルサービス SignalRは、インターネット上でリアルタイムにデータを通信しあうためのプロトコルです。UDP Multicast Group通信のインターネット版とも言ってもいいと思います。SignalR対応のWebサイトにデータを送信すれば、そのサイトにConnectしているデバイスはすべてリアルタイムにデータを受信可能です。Windows AzureのWebサイトで、構築可能です。Windows ストアアプリ向けのライブラリやJavaScript向けのSignalR対応ライブラリが提供されています。Androidアプリでは、Xamarin向けのライブラリが提供されているのでそれを使います。Xamarinについては、http://msdn.microsoft.com/ja-jp/magazine/dn385713.aspx を参考にしてください。iOSアプリもこれで、SignalR対応のアプリが開発可能です。Windows AzureのWebサイトは無料運用も可能なので、技術検証やプロトタイピング、テストにも便利です。 Windows Azure モバイルサービスは、SQL Azureに蓄積されるテーブル形式のクラウドストレージと、アプリにPush通知を送るサービスを提供します。このサービスは、Windows ストアアプリやWindows Phoneアプリだけでなく、Androidアプリ、iOSアプリ、Webアプリ、Xamarin向けの、テーブルアクセスとPush通知に関する機能が実装されたプロジェクトのひな形をダウンロードできます。そのひな形をスタート地点にアプリ開発が進められるので、とても便利です。こちらも無料運用枠があるので、検証やテストで活用できます。  …といったような話を、昨日1月15日の日本アンドロイド友の会の1月定例会でお話しした次第。 SignalRとWindows Azure モバイルサービスについては、MSC2013やET2013で活用したInternet…

0

MSC2013/ET2013でデモ&展示したMicro Device+Cloud連携

ちょっと時間がたってしまいましたが、昨年(2013)の11月に開催されたMSC、及び、ET2013でデモ&展示した、Micro Device+Cloud連携を紹介します。紹介するのは以下の二つです。 ICTコンセプトデモMSCデベロッパーキーノートでデモ、ET2013マイクロソフトブースで展示 アグリカルチャーセンサークラウドプロトタイプET2013マイクロソフト招待講演でデモ、MSC2013VSブース、及び、ET2013マイクロソフトブースで展示 先ずは、ICTコンセプトデモです。まぁこの構成でICTと言ってしまうのは非常に微妙ですが、イメージとしては、 のごく一部の実装です。 Windows AzureのWebサイトにSignalR対応のASP.NETアプリを稼働させ、センサーで計測したデータをSignalRで送信する、というシステムを、MSCのデベロッパーキーノートの中のデモで、同僚の田中達彦さんが、荷台に.NET Micro Frameworkのボードが載ったトラックを使ってデモしていました。 荷台に搭載されていたボードは、 こういう構成です。このボード、スイッチを入れると、 Wi-Fiでインターネットに接続 Wi-Fiでの接続に失敗した場合、有線LANで接続 タイムサーバーから現在時刻を取得して時刻設定 WebサイトにSignalRで接続 加速度センサー、ジャイロセンサー、方位センサー、GPSで計測したデータをSignalRでWebサーバーに2秒ごとに送信 加速度センサーで、ボードがすごく傾いたことを検知すると、StatusをRegularからTroubleに切り替えて送信 という動作を行います。他にも、このボード自体がREST形式でセンサー計測データを提供するWebサーバーとなる機能を持っていて、ネットワークにつながっている別のデバイスから、XML形式で計測データを取得できます。.NET Micro Frameworkによる詳細は、このブログの過去の投稿で説明しているのでそちらをご覧ください。 次にアグリカルチャーセンサープロトタイプです。こちらは、ET2013の金曜日のマイクロソフトの招待講演の中で私がデモしたものです。ET2013のマイクロソフトブース、MSCのWindows 8ハンズオン会場、及びVSブースで展示されていました。こちらは、以下の様なシステムを想定しています。 このシステムは、.NET Micro Frameworkのボードで計測した各種センサーデータを、Windows Azure モバイルサービスのテーブルに逐次格納し、Windows Azureモバイルサービス対応のストアアプリから参照するものです。ICTプロトタイプと同じく、REST形式によるネットワーク越しの計測データ取得、クラウドへの計測データアップロードの開始と停止、リレーのOFF/ON制御が可能です。他にUDP Multicat通信にも対応していて、UDP Muticastによるメッセージ通信で、リレーをOFF/ONすることも可能です。モバイルサービスのテーブルに格納した計測データは、勿論、ExcelのPower Map、Power Queryによる参照も可能です。 ボードの構成は、 です。温度が30度を超えると、ストアアプリにPush Notificationを通知するよう、ステータスを変えてモバイルサービスにデータを送信します。このボードは以下の動作を行います。 ネットワークに接続する ネットワーク上のタイムサービスを使って現在時刻設定 REST形式によるWebサービス起動 UDP Multicast Group通信用にグループにJoin センサー計測データをLCDに表示 REST形式でのアクセスにより、センサー計測データの取得、リレーのOFF/ON制御と状態取得、Windows Azure モバイルサービスへのデータ送信開始停止要求受付 UDP Multicast Group通信でリレーのOFF/ON要求が来たら対応 Windows Azure モバイルサービスにデータをアップロードしていない間は、マイクロSDカードにデータ蓄積したら完璧(すいません。未実装です) デモのしやすさを考えて、有線LANが未接続状態で起動した場合には、センサー計測&LCDへの表示のみを開始し、LANケーブルが接続された時点で、時刻設定、REST形式WEBサービス起動、Multicast Group通信設定を行い、Windows Azure…

0