★【 My Biz Blog 】★

興味のあるビジネス情報を伝えていきます♪
(IoT,Azure,Windows 10, etc...)

Power BI Embeddedを試す(2)

2017-04-15 13:00:03 | Power BI
Power BI Embeddedのサンプルコードの動かし方は、
日本語のページ(https://docs.microsoft.com/ja-jp/azure/power-bi-embedded/power-bi-embedded-get-started-sample)じゃなくて、
英語のページ(https://docs.microsoft.com/en-us/azure/power-bi-embedded/power-bi-embedded-get-started-sample)を見るべし。

XamarinでAzure IoT Hub接続アプリを作る

2017-03-26 22:00:00 | IoT,M2M
CordovaだとAzure IoT Hubに接続するのに、Node.jsのライブラリを使おうとすると、ちょっと特殊な手立てを打たなきゃいけないのが残念だったので、
試しに同じくCross PlatformなXamarinで同様のことを試してみようと考える。

参考にするのはGitHubにある以下のソース
Xamarin application to connect mobile devices to Azure IoT Suite Remote Monitoring preconfigured solution

このプロジェクトには、Azure IoT SuiteのPreconfigured Solutionの一つ「Remote Monitoring」に接続するサンプルアプリが入っている。
ソースは2016年10月ぐらいのものなので、比較的新しい。
Xamarin.Formsのソリューションも入っている。


プロジェクトの中を覗いてみると、NuGetで以下のライブラリを取得して使っている。
・Microsoft.Azure.Devices.Client.PCL
・Xam.Plugins.Settings

ふむふむ。
Commonフォルダにあるヘルパークラス「AzureIoTSuiteRemoteMonitoringHelper.cs 」でほぼほぼ処理しているので、
このソースを見れば通信部分はわかる。


VS2015でXAMLファイルをコピーしたときに

2017-03-25 22:00:00 | ビジネス一般
ちょっとはまったので備忘録。

XAMLファイルを他所からコピーして、プロジェクトを右クリックして「追加」⇒「既存の項目」でプロジェクトに追加する。
その後ビルドをかけてみたら、
「ビルド アクション 'Page' は、プロジェクトのターゲットの特定の組み合わせでサポートされていません。」
というエラーが出る。

VS2015上で対象のファイルのプロパティを見たら、
「詳細」の中の「ビルドアクション」が上記の通り「Page」になっている。
これを「埋め込みリソース」に変更すると、ビルドエラーが解消する。

コピーしたXAMLファイルを追加した際には気を付けないと。

Power BI Embeddedを試す

2017-02-17 02:08:50 | Power BI
Power BIはIoTのデータの可視化ツールとして非常に期待しているサービスの一つなのですが、
そのPower BIを自社Webサービスに組み込むための方法として、Power BI Embeddedがあります。

個人的に、Embeddedとついていると、ハードウェアな感じがしてたまらないのですが、今回は組込機器とは無関係です(笑)。


まず、Power BI Embeddedの概要が以下のページに書いてあるのですが、なんだかよくわからない・・・。
Microsoft Power BI Embedded とは何ですか?

自分なりに理解した内容を書いておきます。
・開発したWebアプリやモバイルアプリにPower BI Desktopで作成したレポートを統合することができる。
・Power BI Embeddedは、いわばREST APIのサービス。
・ワークスペースコレクションとワークスペースという概念がある。
 Power BI Desktopで作成したレポート一つ一つがワークスペース。それを束ねたものがワークスペースコレクションの模様。
・2017/2/16現在、Power BI Embeddedのサンプルコードとdocs.microsoft.comに掲載されている説明にミスマッチがあるので注意。
 サンプルコード:https://github.com/Azure-Samples/power-bi-embedded-integrate-report-into-web-app/
 説明:Power BI Embedded の使用を開始するためのサンプル
  例えば、説明内の「サンプル アプリの構成」以降に張られている画面キャプチャと実際のサンプルアプリのメニューにかなり差があります。
  現在のどのメニューになるかの読み替えが、パッとわからないです。
  ProvisioningSample.exeの起動時の画面は
   1 Collection management
   2 Report management
   3 Misc.
   4 Settings
  となっています。

  説明内の[Provision a new workspace in an existing workspace collection]は
  「1 Collection management」を選択後に表示される「6 Provision a new Workspace」です。

  説明内の[6.Import PBIX Desktop file into an existing workspace]は
  「2 Report management」を選択後に表示される「2 Import PBIX Desktop file into a workspace」です。

  
サンプルプログラムでは、本当に簡単にPower BI Desktopで作成したビジュアルがWebアプリに組み込まれます。
すでにASP .NET MVCでWebサービスを構築しているのであれば、サンプルプログラムを参考にすれば、
比較的簡単にPower BI機能を組み込めそうですね。



HoloLensでBeacon検知

2017-02-08 11:21:48 | HoloLens
HoloLensのアプリ開発中ですが、これまでやってきたBluetoothのBeaconを検知するアプリを作ってみようと思い、チャレンジしてみました。

UWPでBLE Beaconを検知するアプリは、既出ですが以下のサンプルが非常に役に立ちます。
Bluetooth advertisement sample

同じようなことをチャレンジされている方が既にいて、Unity側の実装は以下のページが参考になります。
GPS on the Microsoft Hololens

上記ページで、BLE Watcher in UWP C#の章の
「First, the role of the event dispatcher gameobject that ・・・」と記載されている箇所のサンプルコードと
「Now the Unity GPS Watcher class:」と記載されている箇所のサンプルコードを実装して下さい。

で、 変数BEACON_IDの値を検知したいBeaconに合わせて変更してください。
iBeaconであれば、0x004Cです。

あ、Package.appmanifestの機能(Capability)でBluetoothにチェックを入れておくことと、
HoloLensのBluetoothを有効にしておくことをお忘れなく(笑)。



Windows Holographic対応デバイスの情報

2017-01-08 18:03:19 | IoTデバイス
アメリカで開催されている展示会CESで、Windows Holographicに対応したヘッドマウントディスプレイがお目見えしているそうです。
Windows Holographic対応ヘッドセット5社(HP、Dell、3Glasses、Acer、Lenovo)のデザインが明らかに。スペック等詳細は不明

次のWindows 10の大型アップデートで対応が噂されているWindows Holographic。
デバイスも着々と準備が進んでいるようなので、チェックしておかねば・・・。

HoloLensの日本発売

2016-12-05 08:00:00 | IoTデバイス
AR/MR機器として注目を集めているMicrosoft社のHoloLensですが、
ついに日本での発売が決まりましたね。

12/2からプレオーダーが始まっています。
1/18から順次提供開始とのこと。
Microsoft HoloLens のプレオーダーを 12 月 2 日(金)より開始
 Microsoft HoloLens のプレオーダーを本日より開始。2017 年 1 月 18 日(水)より順次提供


IoTの分野では、人をネットワークにつなぐために、スマホやウェアラブルデバイス等が使われていますが、
このHoloLensもその性能の高さ・アプリ開発の容易さから、活用検討が進んでいます。
まだ価格が高い、視野角が狭いという点もありますが、
コンセプトデモやPoC(Proof of Concept:概念実証)ではどんどん使われていきそうです。

Azure IoT Hubと接続するアプリを作ってみる(9)

2016-11-27 23:03:10 | IoT,M2M
前々回の記事で、CordovaアプリからIoT Hubにデータを送信してみました。
今回は、スマホでBLE Beaconを検知して、情報をIoT Hubに上げる処理を作ってみます。

BLE Beaconには、Aplix社のUSB型のMy Beaconを使っています。
アプリを実行する実機は、Androidの場合はバージョンが4.4以上、ハードウェアがBluetooth 4.0以上に対応している必要があります。

1.CordovaアプリでBLE Beaconを検知させるために、プラグインを追加します。
 プラグインはこちらのサイトのものを使用します。
 コマンドプロンプトを起動し、カレントディレクトリをCordovaアプリのプロジェクト用フォルダに移動後、以下のコマンドを実行します。
  cordova plugin add https://github.com/petermetz/cordova-plugin-ibeacon.git
 プラグインの追加が完了するまで少しお待ちください。

2.プラグインの追加が完了したら、次はiBeacon検知用のコードを作成します。
 今回は、前々回作成したデータ送信用ボタンの処理を変更し、
 Beaconの検知用コードに変更します。

 wwwフォルダ内のindex.html


 作業用フォルダ(ここではtempフォルダ)内のindex.js
  onDeviceReady関数内で、ボタンクリック時に呼び出す処理を変更します。
  id名は上記のindex.htmlでの変更内容に合わせます。


  startBeaconFind関数は、プラグインのサイトのサンプルコードを参考に、以下のコードを実装。
  ※スペースが全角になっているので、コピペする場合は注意してください。
   BeaconRegion関数の引数で[]で表記している個所は、各自で設定ください。

   startBeaconFind: function() {
     window.locationManager = cordova.plugins.locationManager;
     var delegate = new cordova.plugins.locationManager.Delegate()

     delegate.didDetermineStateForRegion = function(pluginResult)
     {
       console.log('didDetermineStateForRegion:' + JSON.stringify(pluginResult));
     }

     delegate.didStartMonitoringForRegion = function(pluginResult)
     {
       console.log('didStartMonitoringForRegion:' + JSON.stringify(pluginResult));
     }

     delegate.didRangeBeaconsInRegion = function(pluginResult)
     {
       var resultJson = JSON.stringify(pluginResult);
       console.log('didRangeBeaconsInRegion: ' + resultJson);
       app.sendData(resultJson);
     }

     var br1 = new cordova.plugins.locationManager.BeaconRegion('[任意の文字列]', '[検知したいBeaconのUUID]', [検知したいBeaconのMajor番号], [検知したいBeaconのMajor番号]);

     locationManager.setDelegate(delegate);

     cordova.plugins.locationManager.requestWhenInUseAuthorization();

     cordova.plugins.locationManager.startMonitoringForRegion(br1)
       .fail(function(e) { console.error(e); })
       .done();

     cordova.plugins.locationManager.startRangingBeaconsInRegion(br1)
       .fail(function(e) { console.error(e); })
       .done();

   },


  sendData関数は、Beaconが検知された時の情報(JSONデータ)を受け取れるよう引数を追加し、
  その引数内のデータをそのままIoT Hubに送信するようにします。

  sendData: function(resultJson) {
    var connectionString = '[IoT Hub device connection string]';

    var clientFromConnectionString = require('azure-iot-device-http').clientFromConnectionString;

    var client = clientFromConnectionString(connectionString);

    var Message = require('azure-iot-device').Message;

    var connectCallback = function (err) {
      if (err) {
        console.error('Could not connect: ' + err);
      } else {
        console.log('Client connected');
        var msg = new Message(resultJson);

        client.sendEvent(msg, function (err) {
          if (err) {
            console.log(err.toString());
          } else {
            console.log('Message sent');
          };
        });
      };
    };

    client.open(connectCallback);
  }

3.コードの変更後、前々回同様の手順でビルドします。
 コマンドプロンプトでカレントディレクトリを作業用フォルダ(ここではtemp)に移動し、以下のコマンドを実行
  browserify index.js -o ../www/js/index.js

 Visual Studio Codeでプロジェクトをビルドし、実機で実行してみてください。




4.Device ExplorerのDataタブを開き、Monitoringをクリックし、IoT Hubのデータを観察できるようにしておきます。
 実機のBluetoothデバイス機能を有効にしたあと、アプリの「START BEACON SEARCH」ボタンをクリックしてください。
 Device Explorerには以下のようなデータが送信されているはず。


 RSSIが電波強度ですね。1秒周期程度でBeaconのデータを受信してIoT Hubに送信していることがわかります。
 ⇒Beaconの検知周期って、どこで設定しているんだろう・・・(汗)。






SigFoxのデータをAzure IoT Hubに送る方法

2016-11-15 06:50:44 | IoT,M2M
日本でも来年からSigFoxのサービスがスタートします。
京セラ、IoTネットワーク「SIGFOX」を日本で展開し、LPWAネットワーク事業へ参入


これに向けていろいろと調べものをしていますが、
SigFoxからAzure IoT Hubにデータを送信するしかけが、
すでにSigFox側に入っているとのこと。
Push your Sigfox devices data to Azure IoT Hub

これ、早く試してみたい!

Azure IoT Hubと接続するアプリを作ってみる(8)

2016-11-13 02:16:37 | IoT,M2M
前回の記事では、CordovaアプリからIoT Hubにデータを送信してみました。
今回はちょっと余談で、Node.jsのアップデートの話。

前回の記事を試している最中でいろんな問題があって調査してたんですが、
その過程でVisual Studio 2015 CommunityでインストールしたNode.jsのバージョンが結構古いことがわかり、
最新版で試そうと思ってバージョンを上げてみました。

1.Node.jsのポータルサイトから、「32-bit」版のインストーラーをダウンロードしてインストールする。

2.JAVAのSDK(Ver1.8以降)もダウンロードしてインストールする。

3.環境変数を設定する。
 JAVA_HOME:
  SDKのインストール先(たぶんC:\Program Files (x86)\Java\jdk1.8.0_XXX的なフォルダのはず)

 _JAVA_OPTIONS:
  この環境変数自体はJAVAコマンド実行時のオプション。
  環境によってはいらないかもですが、JDK8になってヒープサイズが足りないというようなエラーが出ました。
  -Xmx1024mなどヒープサイズを指定する値を指定しました。


ユーザーフォルダ配下のAppData\Roaming内にあるnpmおよびnpm-cacheフォルダを事前に削除しておいたほうがいいかも。
⇒npm installでパラメータに-gを指定した時の格納先?