さくらのiot platform β版ハンズオン

135
さくらの IoT Platform β版ハンズオン 2017/1/12 (C) Copyright 1996-2017 SAKURA Internet Inc さくらインターネット株式会社 IoT Platform Team 西田 有騎

Post on 16-Apr-2017

1.951 views

Category:

Services


0 download

TRANSCRIPT

さくらの IoT Platformβ版ハンズオン

2017/1/12

(C) Copyright 1996-2017 SAKURA Internet Inc

さくらインターネット株式会社 IoT Platform Team 西田有騎

2

はじめに

本ワークショップの目的

3

1. 本ワークショップはさくらのIoT Platformを使用し、組込み系およびWeb/アプリ開発系のエンジニアがご自身のスキルセットを大きく超えることなく、Internet of Things(IoT)に挑戦できることを体験いただくものです。

2. そのため各章内で技術的な詳細は極力省略しております。

3. 今回は1人1つワークショップキットをご用意しておりますが、組込みやWeb/アプリ開発に詳しい方がいらっしゃいましたら、ご不明点を積極的にフォローしあって進めていただければと思います。

今回のハンズオンの流れ

4

さくらのIoTPlatform

マイコンおよびプログラムの構築

Webサービス連携(さくらのクラウド)

Webサービス連携(Arukas)

マイコン(Arduino Uno)

温湿度センサ(HDC1000)

さくらの通信モジュール

さくらのIoTPlatformの設定

仮想サーバ

コンテナ

Agenda

5

1. マイコンおよびプログラムの構築₋ マイコン(Arduino)による開発環境の準備

₋ 温湿度センサおよびさくらの通信モジュールの繋ぎ込み

₋ 試験用プログラムの流し込み

2. さくらのIoT Platformの設定₋ プロジェクトの作成

₋ さくらの通信モジュールの登録

₋ 連携サービスの設定

3. Webへのデータ連携(さくらのクラウド)₋ Node-REDサーバ用インスタンスの作成

₋ コンソールでの環境のセットアップ

₋ WebSocketを利用したデータ連携フロー作成

4. Webへのデータ連携(コンテナホスティングサービス Arukas)₋ Node-REDコンテナの立ち上げ

₋ WebSocketを利用したデータ連携フロー作成

6

マイコンおよびプログラムの構築

今回のハンズオンの流れ

7

さくらのIoTPlatform

マイコンおよびプログラムの構築

Webサービス連携(さくらのクラウド)

Webサービス連携(Arukas)

マイコン(Arduino Uno)

温湿度センサ(HDC1000)

さくらの通信モジュール

さくらのIoTPlatformの設定

仮想サーバ

コンテナ

今回のワークショップでご提供するもの

8

Arduino Uno

Rev3

ジャンパーコード 人感センサ

(SB412A)

照度センサ

(GL5537-2)

温湿度センサ

(HDC1000)

各種抵抗

※必要に応じてご提供

さくらの通信モジュール

+Arduino用シールド

USB2.0

ケーブル(A-B)

棒アンテナ

x2本

本日は使用しません

ブレッドボード

Arduino IDEのセットアップ

9

https://www.arduino.cc/en/Main/Softwareから開発環境(Arduino IDE)を入手します。2017/1/12時点での最新版は【1.8.1】となります。Windowsは【Windows Installer】、Macは【Mac OS X 10.7 Lion or newer】を選択します。

Arduino IDEのセットアップ

10

該当の金額選択する(寄付する場合)、もしくは【JUST DOWNLOAD】にてダウンロードします。

Arduino IDEのセットアップ

11

インストールはデフォルト推奨、ドライバーについても全てインストールします。#本スライド記載の画像はWindowsの場合になります。

Arduino IDEのセットアップ

12

Arduino IDEが起動したら、Arduino本体をPCに接続します。ボードは【Arduino/Genuino Uno】、シリアルポートは出てきたCOMポートを選択します。Macの場合はシリアルポート内の「~~~(Arduino/Genuino Uno)」となるものを選択します。

ボードの選択 シリアルポートの選択

マイコン(Arduino)の準備

13

[ファイル]→[新規ファイル]→【→】ボタンクリックでArduinoに書き込まれている内容がクリアされます。該当箇所のLEDが点灯状態になることを確認します

マイコン(Arduino)の準備

14

[ファイル]→[スケッチの例]→[01.Basics]→[Blink]→【→】ボタンクリックで該当箇所のLEDが点滅状態になることを確認します

さくらの通信モジュールの取り付け

15

まずUSBケーブルを本体から取り外した後、マイコン側のジャンパーコードを抜き去り、図に示すようにシールドとArduinoのピン穴と合致するようにはめ込みます。併せてアンテナケーブルと棒アンテナを接続します。

温湿度センサの繋ぎ込み

16

結線を行うため、再度ArduinoをPCから外します。その後図に従い、ジャンパーコードを接続します。ピンアサインはマイコンと同一ですが、シールドにはピンソケットの表記がないため、マイコン側の表記を参考にします。

+VSDASCL

GND

3.3V

GND

SDA

SCL

ライブラリの取得(HDC1000)

17

[スケッチ]→[ライブラリをインクルード]→ [ライブラリを管理...]をクリックし、右上検索窓から【hdc1000】を検索すると、[HDC1000 by Yuichi Tateno]がヒットします。インストールをクリックすると自動的に該当ライブラリが格納され、[INSTALLED]が表示されます。

温湿度センサの動作確認

18

[ファイル]→[スケッチの例]→[HDC1000]→[hdc1000]→【→】ボタンをクリックします。[ツール]→[シリアルモニタ]よりTemperature&Humidity情報が取得されることを確認します。何らかの問題があった場合、スケッチ下部にオレンジ色のエラーが表示されます。

ライブラリの取得(SakuraIO)

19

[スケッチ]→[ライブラリをインクルード]→ [ライブラリを管理...]をクリックし、右上検索窓から【sakuraio】を検索すると、[SakuraIO by SAKURA Internet Inc.]がヒットします。インストールをクリックすると自動的に該当ライブラリが格納され、[INSTALLED]が表示されます。

試験用プログラムの流し込み

20

[スケッチの例]→[SakuraIO]→[HDC1000] →【→】ボタンをクリックします。[ツール]→[シリアルモニタ]より「Waiting to come online」表記の後、カウント値、Temperature、Humidityに加え、Available(キューイング可能なチャンネル数)とQueued(キューで送信待ちになっているチャンネル数)が表示されることを確認します。

【参考】AlphaCompat.ino

21

さくらのIoT Platformαにて提供していたスケッチ(SakuraAlpha_I2C.ino)を置き換えたプログラムです。一定間隔でカウント値を0,1,2のチャンネルに書き込み、送信します。

【参考】FirmwareUpdate.ino

22

さくらの通信モジュールのファームウェアアップデートを実行します。現在のVersion情報を元にプラットフォームへ問い合わせ、新しいファームウェアが提供されている場合にアップデートを実行します。

新しいファームウェアが存在する場合 最新のファームウェアが適用されている場合

【参考】Shell.ino

23

シリアルモニタからのコマンド操作を提供します。改行を[CRのみ]とした後、提供されているコマンドを手入力で確認することができます。

【参考】Shell.ino

24

構文

【version】現在のファームウェアバージョンを表示する

出力結果

version

>versionv1.0.0-161109-c566dba

備考

【参考】Shell.ino

25

構文

【serial】通信モジュールのシリアル番号を表示する

出力結果

serial

>serial16A0100134

備考

【参考】Shell.ino

26

構文

【status】通信モジュールの通信状態を確認する

出力結果

status

>statusOnlineLast Error Code: 0

備考

【参考】Shell.ino

27

構文

【sqi】通信モジュールの電波強度を確認する

出力結果

sqi

>sqi5

備考

電波強度は5を最大として強度に伴い数値が下がり、0は圏外であることを示します。

【参考】Shell.ino

28

構文

【unixtime】UTC形式の現在時刻を表示する

出力結果

unixtime

>unixtime1480497574

備考

【参考】Shell.ino

29

構文

【update】ファームウェアのアップデートを実行する

出力結果

update

>updateCurrent Version: v1.0.0-161109-c566dbaUnlockStarting updateWaiting for update.

備考

【参考】Shell.ino

30

構文

【reset】通信モジュールのソフトウェアリセットを実行する

出力結果

reset

>reset>

備考

シリアルモニタに実行結果は表示されません。ソフトウェアリセットを実行すると通信モジュールが再起動を行います。モデムの起動、および通信確立までにおおよそ1分程度を要します。

【参考】Shell.ino

31

構文

【enqueue】送信キューにデータを格納する

出力結果

enqueue <ch> <type> <value>

>enqueue 0 i 123>

備考

シリアルモニタに実行結果は表示されません。enqueueコマンドを実行すると登録したデータは送信キューに貯められます。送信キューは最大で32個まで蓄積され、超過したキューは貯められず破棄されます。

【参考】Shell.ino

32

構文

【send】送信キューに貯められたデータを送信する

出力結果

send

>send>

備考

シリアルモニタに実行結果は表示されません。sendコマンドを実行すると、貯められたデータは16個分を1つのRMとして送信します。送信キューが17個以上存在する場合、2つ目のRMも送信され、キューから自動的に削除されます。

【参考】Shell.ino

33

構文

【size】送信/受信キューに貯められたデータ数を確認する

出力結果

size

>sizeTx Queue

Avail: 32Queued: 0

Rx QueueAvail: 32

Queued: 0

備考

Tx Queue は送信キュー、Rx Queueは受信キューを表します。Availは利用可能数、Queuedは貯められているキューの数を表します。

【参考】Shell.ino

34

構文

【cleartx】送信キューに貯められたデータをすべて消去する

出力結果

cleartx

>cleartx>

備考

シリアルモニタに実行結果は表示されません。送信キューに貯められたデータの一部だけを削除することはできません。

【参考】Shell.ino

35

構文

【clearrx】受信キューに貯められたデータをすべて消去する

出力結果

clearrx

>clearrx>

備考

シリアルモニタに実行結果は表示されません。受信キューに貯められたデータの一部だけを削除することはできません。

【参考】Shell.ino

36

構文

【dequeue】受信キューに貯められたデータをすべて受信する

出力結果

dequeue

>dequeueempty

備考

受信キューに貯められたデータの一部だけを受信することはできません。受信可能なデータが存在しない場合はemptyを返します。受信されたデータはキューから自動的に削除されます。

【参考】Shell.ino

37

構文

【peek】受信キューに貯められたデータを閲覧する

出力結果

peek

>peekempty

備考

受信キューに貯められたデータの一部だけを受信することはできません。受信可能なデータが存在しない場合はemptyを返します。閲覧したデータは削除されずキューに残されます。

【参考】Standard.ino

38

保持している情報をすべて書き出すプログラムです。シリアルモニタに以下の情報を出力しながらカウント値を0チャンネルに書き込み、キューが一定量貯まると送信します。

39

さくらのIoT Platformの設定

今回のハンズオンの流れ

40

さくらのIoTPlatform

マイコンおよびプログラムの構築

Webサービス連携(さくらのクラウド)

Webサービス連携(Arukas)

マイコン(Arduino Uno)

温湿度センサ(HDC1000)

さくらの通信モジュール

さくらのIoTPlatformの設定

仮想サーバ

コンテナ

コントロールパネルへのログイン

41

Googleにて「さくらインターネット iot開発者」を検索し、開発者向けページからコントロールパネル(https://secure.sakura.ad.jp/iot-alpha/)にログインします。下記ボタンよりアクセスします。

コントロールパネルへのログイン

42

既にログイン済みのセッションがない場合、以下画面にて会員認証を求められます。会員ID、パスワードを利用してログインします。

プロジェクトの作成

43

さくらのIoT Platformでは【プロジェクト】という単位で大枠を構成し、プロジェクト内にさくらの通信モジュールや連携先サービスを複数所属させていきます。ハンズオンでは、まず[新規プロジェクト]をクリックし、新規にプロジェクトを作成します。

プロジェクトの作成

44

新規プロジェクトの作成画面に遷移します。[名称]欄に任意の名前を入力し、[作成する]をクリックします。

通信モジュールの登録

45

プロジェクトが作成されました。次に通信モジュールの登録を行います。[モジュール登録]のボタンをクリックします。

通信モジュールの登録

46

モジュールの追加画面に遷移します。用意されている登録用ID、登録用パスワード、および任意の名称を入力して、[追加する]ボタンをクリックします。

連携サービスの設定

47

通信モジュールが登録されました。最後に外部への連携サービスを設定します。[サービス追加]のボタンをクリックします。

連携サービスの設定(WebSocket)

48

追加サービスの選択画面に遷移します。今回はWebSocketを作成しますので、[WebSocket]をクリックします。

連携サービスの設定(WebSocket)

49

WebSocketの作成には特に設定事項はありません。[名前]欄に任意の名前を入力し、[作成する]ボタンをクリックします。

連携サービスの設定(WebSocket)

50

WebSocketを設定しました、これでコントロールパネルでの準備は完了です。ここで表示されるWebSocketのURLはハンズオンの後半で使用しますので書き留めておいてください。

動作確認(WebSocket)

51

作成した連携サービスで、シリアルポートで表示される情報(温度/湿度/シリアル値)と同様の情報が画面上で受信データとして表示されていることを確認します。

データを送信した通信モジュールのID

データが格納されたチャンネル番号

→カウント値

→湿度

→温度

送信されたデータのタイムスタンプ

送信された値データの型

単一メッセージで送信された値は同一時刻で表示

【参考】連携サービスの設定(DataStore (β))

52

さくらのIoT Platformでは、新たに蓄積データの活用として【DataStore】を提供します。※β版追加サービスの選択画面で[DataStore (β)]をクリックします。

【参考】連携サービスの設定(DataStore (β))

53

追加サービスの選択画面で[DataStore (β)]をクリックします。[名前]は任意の名称を入力し、[作成する]をクリックします。

【参考】連携サービスの設定(DataStore (β))

54

追加サービスの選択画面で[DataStore (β)]をクリックします。[名前]は任意の名称を入力し、[作成する]をクリックすると、TokenおよびAPIドキュメントのURLが生成されます。

【参考】連携サービスの設定(DataStore (β)) /channelsの取得

55

[ /channels ]は蓄積されたデータをチャンネル単位で取得します。単体のデータを複数の形式(入力時の形式[value]、数値[value_num]、文字列[value_str])で格納しているため、単体でも価値のあるデータが活用しやすい形式となっています。[ /channels ]は該当URL(https://api.sakura.io/datastore/v1/docs/)にて前述の【Token】情報、および以下のパラメータを指定することで任意の情報を取得できます。

【module】:通信モジュールのモジュールID

【size】:一度に取得するデータの数

【order】:昇順(ASC)と降順(DESC)指定

【cursor】:※後述※

【after/before】:指定日時の以前と以後指定

【channel】:取得するチャンネル指定

【参考】連携サービスの設定(DataStore (β)) /channelsの取得

56

{"meta": {

“count”: <取得した件数>,“cursor”: “<sizeで指定した件数を超えた場合に、次のレスポンスを取得するためのカーソル>”,“match”: <ヒットした件数>

},"results": [

{“channel”: <データが格納されているチャンネル>,“datetime”: “<データが通信モジュールのキューに格納された時間>”,“id”: “<送信されたデータのID>",“module”: “<データが送信された通信モジュールのID>",“type”: “<送信されたデータの型式>",“value”: <typeで指定された型式でのデータ>,“value_num”: <number形式でのデータ>,“value_str”: “<string形式でのデータ>"

},{"channel": …#以下[channel]単位のデータがcount数分列挙

指定された条件を元に【Try it out!】をクリックすると、[Response Body]欄に条件に応じたデータが返されます。またクリック後に返される[Request URL]から同様のデータを取得できます。

【type】:取得するRMのtype指定

【参考】連携サービスの設定(DataStore (β)) /messagesの取得

57

[ /messages ]は蓄積されたデータをRM単位で取得します。RMに含まれる複数チャンネルのデータの関係性が重要な場合に活用しやすい形式です。(鍵の「解錠者ID」と「入退室フラグ」等)また、 [ /messages ]には通信モジュールの接続および切断の情報も含まれています。[ /messages ]は該当URL(https://api.sakura.io/datastore/v1/docs/)にて以下のパラメータを指定することで任意の情報を取得できます。

【module】:通信モジュールのモジュールID

【size】:一度に取得するデータの数

【order】:昇順(ASC)と降順(DESC)指定

【cursor】:※後述※

【after/before】:指定日時の以前と以後指定

【参考】連携サービスの設定(DataStore (β)) /messagesの取得

58

{"meta": {

"count": <取得した件数>,"cursor": “<sizeで指定した件数を超えた場合に、次のレスポンスを取得するためのカーソル>”,"match": <ヒットした件数>

},"results": [

{“datetime”: “<対象のRMをプラットフォーム側で受信した時間>”,"id": “<格納されたRMのID>","module": “<データが送信された通信モジュールのID>","payload": {

"channels": [{

"channel": <データが格納されているチャンネル>,"type": “<送信されたデータの型式>","value": <typeで指定された型式でのデータ>

}]

},"type": "channels"

},{“datetime”: …#以下[message]単位のデータ

指定された条件を元に【Try it out!】をクリックすると、[Response Body]欄に条件に応じたデータが返されます。またクリック後に返される[Request URL]から同様のデータを取得できます。

59

Webへのデータ連携(さくらのクラウド)

今回のハンズオンの流れ

60

さくらのIoTPlatform

マイコンおよびプログラムの構築

Webサービス連携(さくらのクラウド)

Webサービス連携(Arukas)

マイコン(Arduino Uno)

温湿度センサ(HDC1000)

さくらの通信モジュール

さくらのIoTPlatformの設定

仮想サーバ

コンテナ

さくらのクラウドコントロールパネルログイン

61

本ワークショップでは既にさくらのクラウドのユーザを作成済みとなります。以下URLより、「さくらのクラウドユーザとしてログイン:」に前述のユーザコード、会員ID、パスワードを入力します。 「https://secure.sakura.ad.jp/cloud/」

さくらのクラウドコントロールパネルログイン

62

ユーザでログインができたら[さくらのクラウド(IaaS)]をクリックします。

Node-REDサーバの作成スタートアップスクリプトの用意

63

本ワークショップではNode-REDの構築を簡単にするため、さくらのクラウドの機能である「スタートアップスクリプト」を作成します。右上の【設定】をクリックします。

Node-REDサーバの作成スタートアップスクリプトの用意

64

新しく現れたメニューから【スクリプト】をクリックします。その後【プライベート】タブをクリックし、右上の【追加】を選択します。

Node-REDサーバの作成スタートアップスクリプトの用意

65

以下の内容をコピー&ペーストします。必要に応じてエラー処理やログ用の記述を追加します。

#!/bin/sh# @sacloud-once# @sacloud-desc Git/NVM/Node.js/Node-REDのインストールを実行します。# @sacloud-desc このスクリプトは、CentOS6.xでのみ動作し、完了後自動再起動します。# @sacloud-desc 起動後、「#node-red」を実行すると、該当IPアドレスにWebブラウザにてアクセスできます。# @sacloud-require-archive distro-centos distro-ver-6.*

#Gitの入手yum -y install git#NVMの入手git clone https://github.com/creationix/nvm.git /root/.nvm#NVMの一時的なPATH設定source /root/.nvm/nvm.sh#NVMの恒久的なPATH設定sed -i '12i if [ -s /root/.nvm/nvm.sh ]; then' /root/.bash_profilesed -i '13i source /root/.nvm/nvm.sh' /root/.bash_profilesed -i '14i fi' /root/.bash_profile#Node.jsの入手nvm install v6.2.2#Node-REDの入手npm install -g node-red#Node-REDの編集済みコンフィグファイル(.node-red以下)を入手git clone https://github.com/Nyuuki0224/node-red-init.gitcp -rfv /root/node-red-init/.node-red/ /root/

exit 0

Node-REDサーバの作成スタートアップスクリプトの用意

66

【名前】は任意の値を入力し、スクリプトを【内容】に入力します。【作成】をクリックするとスタートアップスクリプトが作成されます。

Node-REDサーバの作成

67

左側のペインのサーバを選択し、右上の【追加】ボタンをクリックします。はじめはサーバ追加の案内が出る場合があります。

Node-REDサーバの作成

68

デフォルトではサーバの作成は細かい設定が不要な「シンプルモード」で作成できます。スタートアップスクリプトを利用する場合は右上の【シンプルモード】のチェックを外します。

Node-REDサーバの作成【シンプルモード】

69

ディスクイメージはUnix/LinuxタブからCentOSの【6.x 64bit】を選択します。

Node-REDサーバの作成【シンプルモード】

70

サーバプランは【1GB/1仮想コア】を、ディスクプランは【20GB SSDプラン】を、それぞれ選択します。(デフォルトで選択されています。)

Node-REDサーバの作成【シンプルモード】

71

管理ユーザのパスワードについてはパスワード強度が[普通]以上になるよう任意の値を入力します。接続先のネットワークは【インターネット】、公開鍵は【なし】を選択します。

Node-REDサーバの作成【シンプルモード】

72

ホスト名は任意の値を入力します。作成数はデフォルトのまま【作成】をクリックします。

Node-REDサーバの作成【シンプルモード不使用】

73

サーバプランでは仮想サーバに割り当てるCPUとメモリの量を指定します。仮想コアは【1】を、メモリは【1GB】を、それぞれ選択します。

Node-REDサーバの作成【シンプルモード不使用】

74

2.ディスクでは使用するディスクの種類やサイズ、インストールイメージを選択します。アーカイブ選択のみ【CentOS 6.x 64bit #xxxxxxxxxxxx】を選択し、後はデフォルトとします。

Node-REDサーバの作成【シンプルモード不使用】

75

3.NICではネットワークに関する設定を指定します。今回はすべてデフォルトの値を使用しますので変更は不要です。

Node-REDサーバの作成【シンプルモード不使用】

76

4.ディスクの修正ではOSに関する設定値を指定します。管理ユーザのパスワードおよびホスト名は任意の値を入力します。公開鍵は今回のハンズオンでは使用しないためデフォルトの【なし】を使用します。

Node-REDサーバの作成【シンプルモード不使用】

77

先程作成したスタートアップスクリプトについては[配置するスタートアップスクリプト]で選択することができます。今回は自動でNode-REDの構築を行うため、作成した名称のスクリプトを選択します。

Node-REDサーバの作成【シンプルモード不使用】

78

5.シンプル監視はさくらのクラウドで提供する死活監視のサービスとなります。本件では使用しないため、デフォルトのチェックなしで進めます。

Node-REDサーバの作成【シンプルモード不使用】

79

6.サーバの情報はコントロールパネル上で管理するための情報を記述する項目となります。本件では名前に判別がつくような任意の値を入力します。

Node-REDサーバの作成【シンプルモード不使用】

80

7.その他のオプションおよび作成数はすべてデフォルトの値を使用します。内容を確認し、問題がなければ【作成】をクリックします。

Node-REDサーバの作成

81

操作確認のダイアログにて、作成しても良いか改めて確認されますので、問題がなければ【作成】をクリックすると指定したサーバやディスクの作成を開始します。ステータスが全て成功になればサーバの作成が完了となります。

Node-REDサーバの作成

82

サーバが作成されました。次はターミナルソフトを使用して構築を行います。Windows(Teraterm等)、Mac(ターミナル)を起動します。

コンソールでの環境のセットアップ

83

ここからはターミナルソフトで操作することを前提に進めます。Windowsの場合、TeraTermでさくらのクラウドのコンパネ記載のIPアドレスへ接続します。初めてアクセスするサーバの場合、セキュリティ警告が表示されますが、[続行]をクリックします。Macの場合はターミナルから【ssh -p 22 root@<サーバのIPアドレス>】でアクセスします。

コンソールでの環境のセットアップ(スタートアップスクリプト利用時)

84

ログインが完了したら以下コマンドを実行するとWebブラウザから該当サーバのIPアドレスにアクセスできるようになります。実行が成功しない場合nvmのパス等確認のうえ、実施します。(# source ~/.nvm/nvm.sh等)

[root@test ~]# node-red

Welcome to Node-RED===================

22 Nov 10:00:29 - [info] Node-RED version: v0.15.222 Nov 10:00:29 - [info] Node.js version: v6.2.222 Nov 10:00:29 - [info] Linux 2.6.32-642.6.2.el6.x86_64 x64 LE22 Nov 10:00:29 - [info] Loading palette nodes22 Nov 10:00:29 - [warn] ------------------------------------------------------22 Nov 10:00:29 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node22 Nov 10:00:29 - [warn] ------------------------------------------------------22 Nov 10:00:29 - [info] Settings file : /root/.node-red/settings.js22 Nov 10:00:29 - [info] User directory : /root/.node-red22 Nov 10:00:29 - [info] Flows file : /root/.node-red/flows_test-01.json22 Nov 10:00:29 - [info] Server now running at http://127.0.0.1:80/22 Nov 10:00:29 - [info] Starting flows22 Nov 10:00:30 - [info] Started flows

Node-RED初期画面

85

Node-REDは「ノード」と呼ばれる機能の固まりをシート上で組み合わせ、ひとつの「フロー」にすることで、ほとんどプログラミングを知らない人でもプログラムを構築することができるツールとなります。

ノードパレット

シートInfo/Debugコンソール

デプロイ

Node-RED WebSocketノードの作成

86

まずはWebSocketからのデータを受け取るノードを追加します。ノードパレットから「websocket」ノードをシートにドラッグ&ドロップします。

Node-RED WebSocketノードの作成

87

ドラッグ&ドロップされたWebSocketノードをWクリックし、設定画面に移ります。Typeは「Connect to」、Nameは「任意の名称」を入力のうえ、URLの行にある鉛筆マークをクリックします。

Node-RED WebSocketノードの作成

88

指定するPathの値は、コンパネの連携サービスで確認できる赤枠部分となります。赤枠部分の情報をコピーして、WebSocketノードのPath部分にペーストします。

Node-RED WebSocketノードの作成

89

Path部分はコンパネからのペーストを行い、ドロップダウンの項目については「Send/Receive payload」を選択し、【Add】をクリックします。

Node-RED WebSocketノードの作成

90

【Done】をクリックするとwebsocketノードへの設定が反映されます。設定内容に不備がない場合はノード右上の三角マークが表示から消えます。

Node-RED WebSocketノードの作成

91

WebSocketノードへの設定が反映されましたが、この時点ではさくらのIoT Platformからデータは入ってきていません。続いてはデータを表示するためのDebugノードを作成します。

Node-RED Debugノードの作成

92

次に、ノードパレットから「debug」ノードをシートにドラッグ&ドロップします。Debugノードは自動で「msg.payload」に名前が変わります。特に設定は不要です。

Node-REDノード間の接続

93

各ノードでの動作を処理として繋げるために、WebSocketノードの右端とDebugノードの左端をドラッグ&ドロップで線を繋ぎます。

Node-REDフローのデプロイ

94

各ノードを接続し、準備が完了したら、右上部の【Deploy】をクリックします。デプロイが完了するとDeployボタンがグレーアウトされ、設定した内容を元に処理が開始されます。

動作確認

95

フローに問題がない場合、Websocketノード下部に「connected」と表示され、コンソールのdebug内にプラットフォームから取得したJSONデータを確認できます。Debugノード右端の緑マークをクリックするとdebugへの表示が停止されます。

96

Webへのデータ連携(コンテナホスティング Arukas)

今回のハンズオンの流れ

97

さくらのIoTPlatform

マイコンおよびプログラムの構築

Webサービス連携(さくらのクラウド)

Webサービス連携(Arukas)

マイコン(Arduino Uno)

温湿度センサ(HDC1000)

さくらの通信モジュール

さくらのIoTPlatformの設定

仮想サーバ

コンテナ

コンテナホスティングサービス Arukasとは

98

さくらのクラウド Arukas

コア技術

提供単位 仮想マシン/OS コンテナ

メリット・従来のOSと同様に扱える・既存環境の拡張ができる・その他機能と併用ができる

・展開が高速・オーバーヘッドが少ない・同一環境をPCでも再現可能

Server Server

Host OS Host OS

Hypervisor Docker Engine

Bins/Libs

Bins/Libs

App A

App A

Guest OS

Bins/Libs

App A

Guest OS

Bins/Libs

App B

Guest OS Bins/Libs

App A’ App A’ App B App B’

仮想マシン

コンテナ

コンテナホスティングサービス Arukas

99

「https://arukas.io/」にアクセスするとArukasのサービスページに飛びます。Arukasは通常のメールアドレス/パスワード、およびGithubのアカウントのいずれかでログインすることができます。

コンテナホスティングサービス Arukasログイン画面

100

登録が終わっている場合、以下のいずれかを使用してログインします。

メールアドレス&パスワード

Githubアカウント

新しいアプリケーション(コンテナ)の作成

101

ログインすると、初めにダッシュボード画面に遷移します。新しいコンテナ(アプリケーション)を立ち上げる場合は【新しいアプリケーションを作成】をクリックします。

新しいアプリケーション(コンテナ)の作成

102

今回のハンズオンでは、予め用意されているイメージを使用してNode-REDコンテナを立ち上げます。Image【chibiegg/node-red:0.14】、Port【1880/TCP】を入力して【アプリケーションの作成】をクリックします。AppNameは任意の名称を入力します。

新しいアプリケーション(コンテナ)の作成

103

作成が完了したら、ダッシュボード画面もしくはコンテナの名称をクリックしたDetail画面から【起動】ボタンをクリックします。起動処理が始まり、数十秒~数分程度でコンテナが利用可能となります。

新しいアプリケーション(コンテナ)の作成

104

コンテナのデプロイ中はオレンジ色で表記されます。

新しいアプリケーション(コンテナ)の作成

105

アプリが起動状態になると緑色で表示され、EndpointもしくはPort部分記載のリンクから環境にアクセスできるようになります。

Node-REDログイン画面

106

URLにアクセスするとNode-REDのログイン画面に遷移します。記載のUsernameとPasswordでログインします。

Username : nodePassword : r3d

Node-RED初期画面

107

Node-REDは「ノード」と呼ばれる機能の固まりをシート上で組み合わせ、ひとつの「フロー」にすることで、ほとんどプログラミングを知らない人でもプログラムを構築することができるツールとなります。

ノードパレット

シートInfo/Debugコンソール

デプロイ

Node-RED WebSocketノードの作成

108

まずはWebSocketからのデータを受け取るノードを追加します。ノードパレットから「websocket」ノードをシートにドラッグ&ドロップします。

Node-RED WebSocketノードの作成

109

ドラッグ&ドロップされたWebSocketノードをWクリックし、設定画面に移ります。Typeは「Connect to」、Nameは「任意の名称」を入力のうえ、URLの行にある鉛筆マークをクリックします。

Node-RED WebSocketノードの作成

110

指定するPathの値は、コンパネの連携サービスで確認できる赤枠部分となります。赤枠部分の情報をコピーして、WebSocketノードのPath部分にペーストします。

Node-RED WebSocketノードの作成

111

Path部分はコンパネからのペーストを行い、ドロップダウンの項目については「Send/Receive payload」を選択し、【Add】をクリックします。

Node-RED WebSocketノードの作成

112

【Done】をクリックするとwebsocketノードへの設定が反映されます。設定内容に不備がない場合はノード右上の三角マークが表示から消えます。

Node-RED WebSocketノードの作成

113

WebSocketノードへの設定が反映されましたが、この時点ではさくらのIoT Platformからデータは入ってきていません。続いてはデータを表示するためのDebugノードを作成します。

Node-RED Debugノードの作成

114

次に、ノードパレットから「debug」ノードをシートにドラッグ&ドロップします。Debugノードは自動で「msg.payload」に名前が変わります。特に設定は不要です。

Node-REDノード間の接続

115

各ノードでの動作を処理として繋げるために、WebSocketノードの右端とDebugノードの左端をドラッグ&ドロップで線を繋ぎます。

Node-REDフローのデプロイ

116

各ノードを接続し、準備が完了したら、右上部の【Deploy】をクリックします。デプロイが完了するとDeployボタンがグレーアウトされ、設定した内容を元に処理が開始されます。

動作確認

117

フローに問題がない場合、Websocketノード下部に「connected」と表示され、コンソールのdebug内にプラットフォームから取得したJSONデータを確認できます。Debugノード右端の緑マークをクリックするとdebugへの表示が停止されます。

118

最後に

最後に ~さくらのIoT Platform~

119

ハンズオンに使用したさくらの通信モジュールは必要に応じて登録を解除します。接続ステータス横の歯車マークをクリックします。

最後に ~さくらのIoT Platform~

120

モジュールの設定画面に遷移します。下部[削除する]ボタンをクリックします。

最後に ~さくらのIoT Platform~

121

削除してよいか確認されます。問題ない場合は再度[削除する]ボタンをクリックします。

最後に ~さくらのIoT Platform~

122

モジュールの登録が解除され、表示から削除されました。次は連携サービスとともにプロジェクトを削除します。プロジェクト右上のゴミ箱マークをクリックします。

最後に ~さくらのIoT Platform~

123

プロジェクトを削除してよいか確認されます。問題ない場合は再度[削除する]ボタンをクリックします。

最後に~さくらのクラウド~

124

グローバルIPアドレスを持つサーバは攻撃対象になりますので、作成いただいたサーバは削除します。サーバがまだ起動している場合、さくらのクラウドで対象サーバのチェックを入れ、[電源操作]から【シャットダウン】をクリックします。

最後に~さくらのクラウド~

125

シャットダウン対象を確認のうえ【シャットダウン】をクリックします。再度ダイアログにて確認が表示されますので【実行】をクリックします。

最後に~さくらのクラウド~

126

シャットダウンが正常に実行されると、チェックボックス横のラインが「緑→赤→灰」と遷移します。ラインが灰色に変化したら、再度対象となるサーバにチェックを入れ、【削除】をクリックします。

最後に~さくらのクラウド~

127

今回は[接続されたディスク]についても削除しますのでチェックを入れ、【削除】をクリックします。ダイアログが表示されますので【実行】をクリックします。

最後に~さくらのクラウド~

128

削除の工程が表示されます。全てのステータスが成功となれば削除は完了です。

最後に~Arukas~

129

Arukasで作成されたコンテナはインターネット上に公開されているため削除しておきましょう。Actionの「■」ボタンをクリックしてサービスを停止します。

最後に~Arukas~

130

停止に関するダイアログが表示されますので、【OK】をクリックします。

最後に~Arukas~

131

該当サービスの色が変わり、停止されたことを確認したら、ゴミ箱ボタンをクリックします。

最後に~Arukas~

132

こちらも同様のダイアログが表示されますので、「OK」をクリックします。

最後に~Arukas~

133

以上で作成したサービスは全て削除されました。

最後に

134

以上でハンズオンにおける作業は全て終了となります。お疲れ様でした!

135

そこに、さくら