★【 My Biz Blog 】★

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

Azure IoT Suite(3)

2015-10-26 18:36:11 | Azure
Azure IoT Suiteを一週間ちょっと動かしてたら、
気が付いたらサブスクリプションの枠を食いつぶしてしまった話。

今週配信されたMicrosoftの組込業界向けニュースレター「Dev Wire」に
解決策が記載されていたのでシェアします。

Azure IoT SuiteのPreconfigured Solutionsの一つ「Remote Monitoring」をプロビジョニングすると、
IoT Hubが生成されますが、どうやら一番高いスペックS2 (High Frequency)のIoT Hubが生成されるようです。
⇒これだけで1ヵ月25,500円・・・。

Remote Monitoringソリューションをプロビジョニング後、
Azureポータルで生成されたIoT HubをS1クラスに変更すると、
課金が1/10になるので、ここの課金が2,550円になるとのこと。
⇒無料のF1クラスには変更できないようです。
 なお、F1クラスから有料のクラスにも変更できません。

みなさん、プロビジョニング後にIoT Hubのスケールダウンすることをお忘れなく・・・。
※その他のサービスの課金のチェックもお忘れなく・・・。



Azure IoT Hub(4)

2015-10-26 18:00:00 | Azure
IoT Hubの検証をするために、IoT Hubに接続するデバイス側の処理を作成していきたいと思います。
デバイス側は、ラズパイ2 + Windows 10 IoT Core + ユニバーサルアプリでやってみようと思います。

Visual Studio Community 2015やラズパイ2のセッティングについては、
私がDocs.comで公開している勉強会資料を参考にしてください。
Windows 10 IoTについて(第4回IoT/M2M勉強会資料_配布用)

デバイス側の処理を作るにあたって、
Connect your device to Azure IoT Hubというページで、デバイスやプラットフォームに応じた
サンプルコードを生成することができます。


①上記のページにアクセスすると、以下のような画面が表示されます。
 まずはデバイスの選択から。
 今回はラズパイ2を使うので、「Raspberry Pi 2」を選びます。




②続いて、プラットフォームを選択します。
 今回はWindows 10 IoT Coreを使用するので、「Windows」を選びます。




③次はプログラミング言語を選択します。
 今回はC#で開発してみようと思います。
 C#のタブを選択するとコードが表示されますが、これは使用しません。 



タブより下の方に、「Sample 1: Sending Data to Azure IoT Hub」という記載があり、
ここにサンプルコードが記載されています。

Visual StudioでUWPのテンプレートを使用してアプリのひな形を作ったら、
NuGet経由で「Microsoft.Azure.Devices.Client」ライブラリをソリューションに取り込みます。
※このライブラリは(2015年10月26日現在)プレリリース版なので、「プレリリースを含める」のチェックをお忘れなく。


MainPage.xamlをデザイナで開いて、画面にボタンを設置した後、
MainPage.xaml.csにサンプルコードをコピー&ペーストしていきます。

■usingディテクティブ

using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Devices.Client;


■ボタンのクリックイベントハンドラ

DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("<replace>", TransportType.Http1);

var text = "Hellow, Windows 10!";
var msg = new Message(Encoding.UTF8.GetBytes(text));

await deviceClient.SendEventAsync(msg);



なお、上記の<replace>は、IoT Hub接続用文字列に置き換える必要があります。
次回は接続用文字列の生成方法とアプリを実際に動かした結果を見てみます。











Azure IoT Hub(3)

2015-10-18 10:52:05 | Azure
IoT Hubについて引き続きお勉強。
概要は『Azure IoT Hub とは』に記載されてます(すでに日本語化されているのが嬉しいですね)。

IoT HubはEvent Hubs同様にデバイスからのイベントデータを受け付けて、一時的にバッファリングしておける仕掛けです。
また、接続されたデバイスに対しメッセージを送信する機能もあります。
⇒そういう意味で「双方向」なんですね。

IoTシステムでは、接続される機器の台数も送信されるデータも大量になる可能性がありますが、
IoT Hubでは数百万単位の同時接続および毎秒数百万単位のイベントに対応しているとのこと。
⇒どうやって実際試験したんだろう?

バッファリングの期間は最大7日間。

デバイスとIoT Hubとの通信のために、MicrosoftからSDKが提供されています。
プログラミング言語はC、C#、Java、JavaScriptとなっています。
サポートしているプラットフォームはWindowsといくつかのLinux、RTOSと記載されています。
RTOS・・・なんですかね(笑)。

このSDKのライブラリが使用できない環境の場合、HTTP1.1とAMQP1.0といったプロトコルを使用できます。
MQTT v3.1.1も使用できるようにすることも可能なようです。
カスタム プロトコルをサポートするように拡張することも、ファイルアップロード/ダウンロード等の他の一般的なパターンを実装できるって記載がありますね。
どうやってやるか、ここも調査しないと。

このIoT Hubですが、サービス支援通信パターンなる考え方で実装されているそうです。
リンク先は英語なので、ちょっと読むの大変ですが(笑)。


Event Hubsとの違いが気になる人もいると思います。
Comparison of IoT Hub and Event Hubs』に少し開設されているので、参考にしてください。


Azure IoT Suite(2)

2015-10-11 20:13:51 | Azure
Azure IoT SuiteのPreconfigured Solutionsの一つ「Remote Monitoring」の

Webアプリ側を見ていきます。



画面左側には
 ・DASHBOARD
 ・DEVICES
 ・RULES
 ・ACTION

 ・ADD DEVICE
の5つのボタンがあります。

DASHBOARDは上記の画面キャプチャですが、
左側には登録されている機器の地図表示、アラーム履歴が表示されています。
右側には指定した機器のトレンドグラフ、最大値・最小値・平均値が表示されています。


DEVICESは下記のような画面です。

登録されている機器の情報が表示されています。
機器情報にはIDや製造元、型番、バージョン、CPU、RAMなどが登録できるようです。


RULESは下記のような画面です。
アラームの条件が表示されます。



ACTIONは下記のような画面です。
RULESで指定できるACTION、つまりアラームが発生した際の動作ですね。





なお、Azure IoT SuiteのPreconfigured Solutionsはカスタマイズできるようです。
Customizing Preconfigured Solutions

上記のページに、カスタマイズの簡単なポイントが記載されています。

10/5現在、「Remote Monitoring」しかソリューションはないんですが、
このソリューションのソースコードはGithubで公開されています。

他にも、シミュレーション用のデバイスの作り方の記載もありますね。


AzureでNode-RED

2015-10-10 10:00:00 | Azure
前回の記事でAzure Web AppsへのNode-REDのデプロイ(展開)に失敗した話を書きましたが、
今回はAzure上のLinux仮想マシンにNode-REDを構築してみたので、その備忘録。


2015年6月の上表ですが、Azureで動作保証されているLinuxのディストリビューションは
以下のページに記載があります。
Azure での動作保証済み Linux ディストリビューション


今回はOpenLogicが提供しているCentOS 7.1で仮想マシンを作成。
仮想マシンのデプロイが完了したら、SSH経由でリモートログインします。

まずはNode.jsのインストールを実施。コマンドは以下のような感じ。

 sudo yum install epel-release
 sudo yum install nodejs npm --enablerepo=epel

途中確認メッセージが表示されるので、都度「y」を入力します。

続いてNode-REDのインストール。

 sudo npm install -g node-red


Node-REDはデフォルトでポート1880番を使用するので、
Azure 仮想マシンのネットワークセキュリティグループで
ポート1880番の通信を許可するようにしてください。

SSH経由で、コンソールに以下のコマンドを入力すれば、Node-REDが起動します。

 sudo Node-RED



ブラウザで、http://(仮想マシンのIPアドレス):1880と入力すると、
Node-REDにアクセスできます。


ただ、このままだと、ブラウザでアクセス時にエラーメッセージが表示されたり、
デバッグ出力がDebugタブに表示されない現象が発生しました。


Webなどで調べたところ、WebSocketの通信がうまくいっていない模様。
⇒結果、デバッグ出力の出力先タブとの通信もうまくいかない。

これは、setting.jsを編集して、httpsでの通信に切り替えると解決するらしい。


ということで(?)、最後に自己証明書を作成し、
それを使用する設定をsettings.jsに書き込んで、
Node-REDを再起動すると、エラーが出なくなり、ちゃんとデバッグ出力が表示されるようになります。






 





Azure Web AppsのNode.jsについて

2015-10-09 12:10:00 | Azure
Azure Web Apps(Websites)でNode.jsが動かせるということで、
IoT分野で注目を集めているNode-REDを動かしてみようと思い立ち、
昨日丸一日、四苦八苦してました。

そもそもNode.jsの知識が足りないということもあるんですが、
何度デプロイしてみても、HTTP 500 内部サーバーエラーになる・・・。
デプロイのログを確認してみると、
「MSBUILD : error MSB3428: Could not load the Visual C++ component ”VCBuild.exe”.」
なんていうエラーが。

Web Appsのコンソールを使って該当ファイルを検索してみても、
確かにVCBuild.exeは見当たらない。
Visual Studioは複数バージョン入っているみたいだけど、
もしかしてC#系のコンポーネントしか入ってないのかな。

このエラーがHTTP 500の原因かどうかも、
Web Appsの環境にVisual C++コンポーネントをツッコむ方法もちょっとわからないので、
いったんWeb AppsにNode-REDを入れるのは保留して、
Linuxでサーバを立てることにしますかね・・・。


Azure IoT Suite(1)

2015-10-05 19:46:26 | Azure
ついにAzure IoT Suiteも公開されましたね。
こちらもいろいろと情報があって、自分が整理しきれてないので、まずはLinkのまとめから。

■Azure IoT Suiteのソリューション紹介Topページ
 https://azure.microsoft.com/en-us/solutions/iot/
 一番下にAzure IoT Suite servicesの紹介欄がありますが、
 そこにはIoT Hub、Azure ML、Stream Analytics、Notification Hubs、PowerBIの5つが記載されていました。


■Azure IoT Suite「Preconfigured Solutions」の始め方
 http://www.microsoft.com/en-us/server-cloud/internet-of-things/getting-started.aspx
 ここでは、上記に記載した個別のIoT Suite Serviceではなくて、
 「Preconfigured Solutions」と言われるパッケージ的なものをプロビジョニングします。

 見てもらうとわかりますが、Azureのアカウントを用意して(Step1)、
 https://www.azureiotsuite.com/にアクセスしてプロビジョニングする(Step2)とだけ記載されてます。
 
 で、Preconfigured Solutionsのプロビジョニングですが、
 https://www.azureiotsuite.com/にアクセスしてください。
 以下のような画面が出るので、とりあえずクリック。
 

 そうすると、ソリューションを選択する画面が表示されます。
 Predictive maintenanceとかすごく気になりますが、今はRemote Monitoringのみ選択できます。
 ⇒下の方にスクロールしていって、「Select」というボタンをクリックしてください。
 

 続いてソリューション名やリージョン、サブスクリプションを選択する画面が表示されますので、
 任意に入力してください。
 ※日本のリージョンは選択できません。
  選択できるのは、East Asia/East US/North Europeなので、IoT Hubと一緒ですね。

 Create Solutionボタンをクリックすると、ソリューション生成が始まります。
 枠の右上にProvisioningというのがReadyになるまでお待ちください。
 


 以下のようにReadyとなったら、Launchボタンをクリックしてください。 
 

 そうすると、以下のような画面が表示されます。
 

 地図やグラフ、表形式でデバイスの情報が表示されています。
 
 機器をエミュレートするサンプル機器が動作しているんですかね。
 データ(温度と湿度)が自動的に更新されます。
 グラフの下には、湿度の最大・最小・平均値が表示されています。
 

 
 次回はこの画面の他のタブについて紹介します。





Azure IoT Hub(2)

2015-10-03 09:00:00 | Azure
とりあえずAzure IoT Hubの作成に成功したので(笑)、
何ができるのかを確認していこうかと。

以下のページから、チュートリアルや前回紹介したChannel 9の動画にアクセスできます。
IoT Hub documentation
※ただし、英語です(2015/10/2現在)。

まずはちょっと気付いたことから。

■無料のIoT Hubは一個しか作れない。
 Azure IoT Hubの新規作成時に、「Pricing and scale tier」を「F1 Free」で作成後、
 再度Azure IoT Hubの新規作成を行ってみたら、以下のような表示になってました。



 無料のIoT Hubはサブスクリプションで一つしか作れないそうです。
 S1とかS2の下に記載の数字は、円なんだろうか。それともドルなんだろうか・・・。


■デフォルトでアクセスポリシーが作られている。
 Event hubsを作ったときは、アクセスポリシーを自分で追加する必要があったと思うんですが、
 Azure IoT Hubを作ったら、5種類のアクセスポリシーがデフォルトで作成されてました。



 Permissionの内容がEvent hubsとは違うので、ちょっと中身確認しないと・・・。


Azure IoT Hub(1)

2015-10-02 19:02:15 | Azure
ポータルにAzure IoT Hubなるサービスが追加されていたので、
よくわからないまま(笑)作ってみることに。

Channel 9に概要解説のビデオがあったので、
とりあえず聞き流しながらサービスを新規作成してたんですが、
なぜかDeployに失敗する・・・。

エラー内容を確認すると、
codeは「DisallowedLocation」
messageに「The provided location ’米国東部’ is not permitted for subscription.
List of permitted regions is ’eastasia,eastus,northeurope’.
Please contact support to change your supported regions.」
って書いてあって、何だか違和感が。

許容されるリージョンに「eastus」って書いてあるのに、「米国東部」を指定するとなぜエラーになるのか・・・。

もしかしてと思って、ポータルの設定で表示言語を「English」に変えて再度作成してみると、
今度はちゃんと作成できました・・・。

んー、まだローカライズが怪しいということですかねぇ。
作成後に表示言語を戻して、とりあえず様子見します。