Slide 1

Slide 1 text

sakura.io体験ハンズオン Raspberry PiとFaboでIoTを体験しよう 2020/3/7 (C) Copyright SAKURA Internet Inc. さくらインターネット株式会社 コミュニティマネージャー 法林 浩之 だれもが、データを活かせる世の中へ。

Slide 2

Slide 2 text

3 はじめに

Slide 3

Slide 3 text

本ハンズオンの⽬的とお願い l 本ハンズオンは sakura.io を使⽤し、組込み、Web/アプリ開発、それぞれのスキルセッ トを⼤きく超えることなく、Internet of Things(IoT) に携わることができることをご体験 いただくものです。 l そのため、組み込み系またはWeb/アプリ系のどちらか、または両⽅わからないという⽅に もご参加いただくことができます。 l 今回は1⼈に1つのキットをご⽤意しています。もしもご⾃⾝の知識分野で、近くの⽅の フォローができそうだなと思われましたら、積極的にサポートしあって進めていただければと 思います。 4

Slide 4

Slide 4 text

Webサービス連携 ① 今回のハンズオンの流れ 5 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④

Slide 5

Slide 5 text

SNSへの投稿・シェア、⼤歓迎です︕ 7 #sakuraio

Slide 6

Slide 6 text

8 ハンズオンの準備

Slide 7

Slide 7 text

今回のワークショップでご提供するもの 9 組み上げ済みキット USB2.0 ケーブル(A-B) Raspberry Pi ACアダプタ Fabo #108 Temperature Fabo #101 LED Fabo 3pin Cable x 2本 下記2つの組み合わせ Raspberry Pi sakura.io HAT for Raspberry Pi FaBo #502 OUT/IN Shield for Raspberry Pi sakura.ioモジュール (アンテナ取付済み)

Slide 8

Slide 8 text

ハンズオンの準備 ハンズオンで利⽤するページを集めたリンク集にアクセスしましょう。 (Raspberry PiとノートPCの両⽅でアクセスしておくと便利です) 10 https://bit.ly/sakuraio01

Slide 9

Slide 9 text

ハンズオンの準備 ページが表⽰されたら、「Raspberry Pi & sakura.io 体験ハンズオン part1 リンク集」までスクロールしてください。 11 「本編リンク」を あとで使います

Slide 10

Slide 10 text

ハンズオンの準備 今⽇の資料は同じページの「スライド」に載っています。 12 ハンズオン 資料 サービス 紹介資料

Slide 11

Slide 11 text

ハンズオン資料はダウンロードできます 14 ココ!!

Slide 12

Slide 12 text

15 Webサービス連携(前編)

Slide 13

Slide 13 text

Webサービス連携 ① 今回のハンズオンの流れ 16 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④ç

Slide 14

Slide 14 text

さくらのクラウド コントロールパネル ログイン(さくらインターネット会員) l さくらのクラウドコントロールパネルにログインします。 l [ さくらインターネット会員としてログイン︓ ]に会員ID、パスワードを⼊⼒し 【 ログイン 】をクリックします。 18 https://secure.sakura.ad.jp/cloud/

Slide 15

Slide 15 text

さくらのクラウド コントロールパネル ログイン l ログインするとアカウントの選択を 求められるため、割り当てられたア カウントを選択します。 ハンズオンでは参加者の皆さんに個別の アカウントを割り当てます。 注︓実運⽤の際にアカウントを作成をされていない場合には、 左メニュー[ アカウント ]タブからアカウントとユーザを作成す る必要があります。 19

Slide 16

Slide 16 text

さくらのクラウド コントロールパネル ゾーン選択 20 l 環境を構築するゾーンを選択します。講師が別途指定するゾーンをご利⽤ください。

Slide 17

Slide 17 text

Node-REDサーバの作成 l 左側のペインのサーバを選択し、右上の【 追加 】ボタンをクリックします。 ※サーバ追加の案内が出る場合があります。 21

Slide 18

Slide 18 text

Node-REDサーバの作成 l デフォルトのサーバ作成画⾯は細かい設定が不要な「シンプルモード」になっています。 l もしチェックが外れていたら、右上【 シンプルモード 】のチェックを⼊れます。 22

Slide 19

Slide 19 text

Node-REDサーバの作成 l 今回は直接Node-REDがインストールされたサーバを配備します。 l タブ内から【 アプリケーション 】をクリックします。 23

Slide 20

Slide 20 text

Node-REDサーバの作成 l 現在利⽤可能なアプリケーションが表⽰されます。 l アイコン内の【 Node-RED 】をクリックします。 24

Slide 21

Slide 21 text

Node-REDサーバの作成 l Node-REDが選択され、【 CentOS 7.x ... 】が表⽰されていることを確認します。 l 以降は下にスクロールし、必要な設定を加えていきます。 25

Slide 22

Slide 22 text

Node-REDサーバの作成 l サーバープランおよびディスクプランを選択します。 l 今回はすべてデフォルトの値を使⽤しますので変更は不要です。 26

Slide 23

Slide 23 text

Node-REDサーバの作成 l Node-RED固有の設定値を指定します。 l 項⽬は以下をそれぞれ指定します。 ※ログインIDとログインパスワードは後ほど使いますのでメモをしておいてください。 27 Node-REDのWebUIポート番号︓ 【 80 】を⼊⼒ Node-REDのログインID︓ 任意のログインIDを⼊⼒ Node-REDのログインパスワード︓ 任意のパスワードを⼊⼒

Slide 24

Slide 24 text

Node-REDサーバの作成 l 接続先のネットワークはインターネットのままで結構です。 l 管理ユーザのパスワードを設定してください。 ※パスワードは後ほど使いますのでメモをしておいてください。 28

Slide 25

Slide 25 text

Node-REDサーバの作成 l ホスト名と作製数を指定します。 l ホスト名は任意の名称を指定し、【 作成 】をクリックします。 ※⾦額は作成するゾーンによって異なります。 29

Slide 26

Slide 26 text

Node-REDサーバの作成 l 操作確認のダイアログが表⽰されるため、【 作成 】をクリックします。 l 指定した条件でサーバおよびディスクの作成を開始します。ステータスが全て成功になれば サーバの作成は完了です。 作成完了からNode-REDが起動しアクセスできるようになるまで、10分程度かかります。 30

Slide 27

Slide 27 text

Node-REDサーバの作成 l サーバ作成のステータスが成功に遷移した時点でサーバのIPアドレスを確認できます。 コントロールパネル左側の【 サーバ 】をクリックすると作成済みサーバの⼀覧が表⽰されます。 l 最右部【 ▼ 】をクリックし、【 IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 31 ***.*** メモ情報あり

Slide 28

Slide 28 text

【参考】スタートアップスクリプト進捗状況の確認 l コントロールパネル上でサーバの起動状況は確認できますが、スタートアップスクリプトによる 処理が完了したかまでは確認できないため、必要に応じてコンソールを⽤いて確認します。 l 該当のサーバをダブルクリックし、【 コンソール 】を選択するとOSの起動処理画⾯を確認で きます。全ての処理が完了すると、起動画⾯からログインプロンプトに遷移します。 32

Slide 29

Slide 29 text

33 sakura.ioの設定

Slide 30

Slide 30 text

④ Webサービス連携 ① 今回のハンズオンの流れ 34 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 31

Slide 31 text

sakura.io コントロールパネルの考え⽅ 35 プロジェクトC プロジェクトB プロジェクト モジュール3 ☑ データストアプラン 有償版/無償版 ☑ 簡易位置情報提供 利⽤する/しない ☑ ファイル配信 ファイル1、ファイル2... 連携サービス3 モジュール / 連携サービス プロジェクトに対して複数登録可能 オプションサービス プロジェクトに対して1つ/1セット設定可能 モジュール2 連携サービス2 モジュール1 uAAAAAAAAAA 連携サービス1 WebSocket l sakura.ioは【 プロジェクト 】という単位で管理します。 l プロジェクトには【 モジュール 】【 連携サービス 】を複数紐付けることができます。 l 各種【 オプションサービス 】はプロジェクトに対して1つもしくは1セット設定できます。

Slide 32

Slide 32 text

sakura.io コントロールパネル ログイン l sakura.ioコントロールパネルにログインします。上記URLにアクセスします。 l 以下の画⾯で会員認証を求められるので、会員ID、パスワードを利⽤してログインします。 ※ログイン済みのセッションがある場合、この画⾯は省略されます。 36 https://secure.sakura.ad.jp/iot/

Slide 33

Slide 33 text

コントロールパネルへのログイン l ログインが成功すると、以下のような画⾯に誘導されます。 l 何も作成されていない状態になります。 38

Slide 34

Slide 34 text

プロジェクトの作成 l 初めはプロジェクトが無いため、新規にプロジェクトを作成する必要があります。 l プロジェクトを作成するには、まず【 プロジェクト追加 】をクリックします。 39

Slide 35

Slide 35 text

プロジェクトの作成 l プロジェクトの追加画⾯に遷移します。 l [ 名称 ]欄に任意の名前を⼊⼒し、【 追加 】をクリックします。 ※ハンズオンでは他の参加者と重複しないよう、名前等の判別可能な情報を⼊れて作成してください 40

Slide 36

Slide 36 text

モジュールの登録 l プロジェクトが作成されました。次にプロジェクト詳細画⾯からモジュールの登録を⾏います。 l 表⽰されているモジュール⼀覧画⾯右上の【 モジュール登録 】をクリックします。 41

Slide 37

Slide 37 text

組み上げ済みキットの取り出し l 組み上げ済みキットを箱から取り出します 43 組み上げ済みキット

Slide 38

Slide 38 text

モジュール登録(単品) l モジュールの追加画⾯に遷移します。⾃⾝のプロジェクトが選択されていることを確認のうえ、 モジュール記載の登録⽤ID、登録⽤パスワードおよび任意の名称を⼊⼒して、【 追加 】 をクリックします。 ※モジュールの追加には数秒かかります。 44 モジュール上⾯ ⽩ラベル表記

Slide 39

Slide 39 text

モジュール登録(単品) l モジュール追加に成功すると[ モジュールを追加しました ]ダイアログが表⽰されるので、 【 モジュール⼀覧へ戻る 】ボタンをクリックしてプロジェクト詳細画⾯に戻ります。 ※ID/PASSが正しくない、もしくは登録済モジュールを追加しようとした場合は下記ダイアログが表⽰されます 45 登録が成功した場合 登録が失敗した場合 invalid は 登録⽤ID / 登録⽤パスワード のいずれかに誤りがあります、再度ご確認ください already registered は別の会員IDで登録されています、まず過去に登録した 会員IDでログインのうえ、該当モジュールの登録を解除ください

Slide 40

Slide 40 text

モジュール登録 l モジュールを登録しました。表⽰されているモジュールIDは⼀意のものであり、届いたデータ の送信元判別や、デバイスへのデータ送信の際に使⽤します。 ※モジュールIDは後ほど使いますのでメモしてください。 47 メモ情報あり

Slide 41

Slide 41 text

連携サービスの設定 l 最後に外部への連携サービスを設定します。プロジェクト詳細画⾯で【 連携サービス 】を クリックし、その後【 連携サービス追加 】をクリックします。 48

Slide 42

Slide 42 text

連携サービスの設定(WebSocket) l 連携サービスの選択画⾯に遷移します。 l 今回はWebSocketを作成しますので、【 WebSocket 】をクリックします。 49

Slide 43

Slide 43 text

連携サービスの設定(WebSocket) l WebSocketの作成には特に設定事項はありません。 l [ 名前 ]欄に任意の名前を⼊⼒し、【 作成 】をクリックします。 50

Slide 44

Slide 44 text

連携サービスの設定 l 連携サービスが登録されました。この後で使⽤するWebSocketのURLを確認します。 l 作成した連携サービスの【 】をクリックします。 51

Slide 45

Slide 45 text

連携サービスの設定(WebSocket) l WebSocketを設定しました、これでコントロールパネルでの準備は完了です。 ※WebSocketのURLは後ほど使⽤しますのでメモしてください。 52 メモ情報あり

Slide 46

Slide 46 text

53 Raspberry Piとデバイスの設定

Slide 47

Slide 47 text

④ Webサービス連携 ① 今回のハンズオンの流れ 54 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 48

Slide 48 text

HATの組み⽴て l HATにスペーサーを取り付け、ネジ⽌めします。 55

Slide 49

Slide 49 text

HATとRaspberry Piの接続 l Raspberry Pi本体の上に HAT(sakura.ioモジュール付き)が覆い 被さるような形で重ねます。 l 接続しているピンにズレがないかを確認して ください。 l 合っている事を確認したら、ピンをしっかりと 奥まで差し込み接続します。 l まだ電源は⼊れないでください。 56

Slide 50

Slide 50 text

HAT上DIPスイッチの確認 l sakura.io HATには、sakura.ioモジュールの持つ ピンのうち、どれをRaspberry Piに接続するかを選 択することができるDIPスイッチが存在します。 l DIPスイッチを以下の設定にしてください。 57 番号 状態 ピン名 1 ON SDA 2 ON SCL 3 OFF Rx 4 OFF Tx 5 OFF WAKE_IN 6 OFF WAKE_OUT SW2 SW1 番号 状態 ピン名 1 OFF RESET 2 ON CS 3 OFF CS 4 ON MOSI 5 ON MISO 6 ON SCK

Slide 51

Slide 51 text

Raspberry Piの起動 l Raspberry PiのHDMI端⼦とディスプレイを接続します。 l Raspberry PiのmicroUSB端⼦にACアダプタをつなぐと⾃動的に電源が⼊ります。 l しばらく放置するとモニターにデスクトップ画⾯が出てきます。 l なお、初回起動時にセットアップ画⾯が出てくる場合がありますが、今回は使⽤しませんの でウィンドウ右上の×ボタンでウィンドウを閉じてください。 58

Slide 52

Slide 52 text

Raspberry Piの設定 l メニューから Raspberry Pi Configuration を起動します。 59

Slide 53

Slide 53 text

Raspberry Piの設定 l Interfacesタブに移動し、I2CとSPIをEnableにします。 l OKをクリックしてRaspberry Pi Configurationを終了します。 l 終了時にリブートするか尋ねられますので Yes を選択し再起動します。 60

Slide 54

Slide 54 text

サンプルプログラムのダウンロード l ターミナルソフトウェアを起動してください。 l GitHubに置いてあるサンプルプログラム集をRaspberry Piにダウンロードします。 % git clone https://github.com/sakuraio/handson-sample.git l サンプルプログラム集のディレクトリに移動します。 % cd handson-sample/rpi 61

Slide 55

Slide 55 text

開発環境の準備 l install-devtools.sh に記載されているコマンドを順番に実⾏します。以下は各コマンド の説明です。 l Raspberry Piで保持しているパッケージ情報のリストを最新にします。 % sudo apt update l Python3およびパッケージ管理ツール(pip)をインストールします。 % sudo apt install python3 python3-pip l Pythonでハードウェアを制御するためのライブラリをインストールします。 % sudo apt install python3-smbus python3-rpi.gpio i2c-tools l pipを使⽤してsakura.ioライブラリをインストールします。 % sudo pip3 install sakuraio pyserial 62

Slide 56

Slide 56 text

Pythonでsakura.ioを使ってみる l Python3のインタラクティブシェルを起動します。 % pyhton3 l >>> と表⽰されたら、以下のコードを1⾏ずつ⼊⼒し、⾏ごとにEnterキーを押してください。 import sakuraio from sakuraio.hardware.rpi import SakuraIOSMBus sakuraio = SakuraIOSMBus() print(sakuraio.get_unique_id()) ※サンプルプログラム集の sakuraio-test.py からインタラクティブシェルにコピー& ペーストするか、コマンドラインで下記を実⾏しても動きます。 % python3 sakuraio-test.py 63

Slide 57

Slide 57 text

Pythonでsakura.ioを使ってみる l 以下のような出⼒が得られれば成功です。 $ python3 Python 3.5.3 (default, Jan 19 2017, 14:11:04) [GCC 6.3.0 20170124] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sakuraio >>> from sakuraio.hardware.rpi import SakuraIOSMBus >>> sakuraio = SakuraIOSMBus() >>> print(sakuraio.get_unique_id()) 16X00000000 >>> 64

Slide 58

Slide 58 text

⼿⼊⼒でsakura.ioにデータを送信 l Pythonのインタラクティブシェルでsakura.ioにデータを送ってみます。 l 以下のコマンドを⼊⼒してください。 from sakuraio.hardware.rpi import SakuraIOSMBus sakuraio = SakuraIOSMBus() sakuraio.enqueue_tx(0, 1) sakuraio.send() ※サンプルプログラム集の sakuraio-send.py からインタラクティブシェルにコピー& ペーストするか、コマンドラインで下記を実⾏しても動きます。 % python3 sakuraio-send.py 65

Slide 59

Slide 59 text

Raspberry Piから送信されたデータの確認 l sakura.ioの管理画⾯で、Raspberry Piから送信されたデータを受信できているかを 確認できます。 l プロジェクトの詳細から作成したWebSocketの【 】をクリックします。 66

Slide 60

Slide 60 text

Raspberry Piから送信されたデータの確認 l sakuraio.send()を実⾏したタイミングで、連携サービス詳細画⾯にデータが 表⽰されれば成功です。 l 送信する値を変えたい場合には、sakuraio.enqueue_tx(0, N)のNを任意 の数値に置き換え、再度sakuraio.send()を実⾏してください。 67 送信した数値は “value”の欄に ⼊ります

Slide 61

Slide 61 text

ACアダプタの取り外し lFaboを接続するため、いったんRaspberry Piをシャットダウンし、 ACアダプタを取り外します。 68

Slide 62

Slide 62 text

Faboシールドの取り付け l Faboのシールドを取り出し、ピン位置に注意しながらHATの上に取り付けます。 69 組み上げ済みキット Fabo ベースシールド +

Slide 63

Slide 63 text

l FaBoは、IoTハード等のプロトタイピングをおこなうためのプロトタイピングツールです。 l 各モジュールには最⼩限の機能が実装されており、それぞれのモジュールを線で結合する ことで、IoTハードの試作をおこなう事が可能になります。 l コネクタが共通規格になっているので、簡単に接続することができます。 Faboについて 70

Slide 64

Slide 64 text

温度センサとLEDのつなぎ込み l 図に従い、Faboケーブル(3pin)を使⽤して、温度センサとLEDを配線します。 ※Faboケーブルには3pinと4pinがあるのでご注意ください。 l 配線が終わったら、Raspberry PiのACアダプタを再度接続します。 71 [GPIO4] LED [A0] 温度センサ

Slide 65

Slide 65 text

温度を取得してsakura.ioに送信 l 温度センサーから温度情報を取得し、sakura.ioに送信するPythonの プログラムをインストールし実⾏してみましょう。 72

Slide 66

Slide 66 text

サンプルプログラムの実⾏ l 温度情報をsakura.ioに送信するプログラムを実⾏します。 % python3 rpi-fabo.py l 以下のような出⼒が得られれば成功です。 l 温度センサーを指で軽く押さえると温度(temp)の数値が変化します。 pi@raspberrypi:~ $ python3 rpi-fabo.py cnt = 0 temp = 22.000000 nothing recv... cnt = 1 ← カウンタ (1ずつアップします) temp = 23.000000 ← 温度 nothing recv... ← 今は無視してください … 73

Slide 67

Slide 67 text

デバイスから送信されたデータの確認 l sakura.ioでは連携サービスの⼀つであるWebSocketで、デバイスから送信された データを受信できているかを確認できます。 l プロジェクトの詳細から作成したWebSocketの【 】をクリックします。 74

Slide 68

Slide 68 text

デバイスから送信されたデータの確認 l サービス連携の編集画⾯下部に、デバイスから送信したデータがリアルタイムに表⽰されます l 最新データ (50件) ではモジュールから受け取ったデータを以下のように確認できます タイプ︓ プラットフォームからの内容に応じて、いくつかの種類に分かれる ・channels ︓モジュールからのデータ ・connection ︓接続の開始/終了 ・location ︓簡易位置情報 ・keepalive ︓WebSocketセッション確認 ペイロード︓ 受け取ったデータの payload部が表⽰される 時刻︓ プラットフォームで該当のメッセージ を受け取ったタイムスタンプ 75 モジュール︓ データを送信した モジュールのID

Slide 69

Slide 69 text

デバイスから送信されたデータの確認 l 【 受信データ 】をクリックするとチャンネルごとに最新の受信データが確認できます。 l モジュールは同⼀ですが、データの内容によりタイプやペイロードが異なります。 76 チャンネル︓ 各チャンネルに届いた最終のValueを表⽰ 接続ボタン︓ クリックでログ出⼒を開始/停⽌ 表⽰切り替えボタン︓ 表⽰種別の切り替え

Slide 70

Slide 70 text

77 Webサービス連携 (さくらのクラウド後編その1)

Slide 71

Slide 71 text

④ Webサービス連携 ① 今回のハンズオンの流れ 78 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 72

Slide 72 text

今回のハンズオンの流れ 79 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l これまでの作業で、温度とカウント値をRaspberry Piからsakura.ioに送信することができました。 l 今度は、sakura.ioにあるデータをWebSocketで受信し、温度とカウント値を出⼒してみましょう。 ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰

Slide 73

Slide 73 text

Node-REDサーバのIPアドレスをコピー l サーバ作成のステータスが成功に遷移した時点でサーバのIPアドレスを確認できます。 コントロールパネル左側の【 サーバ 】をクリックすると作成済みサーバの⼀覧が表⽰されます。 l 最右部【 ▼ 】をクリックし、【 IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 80 ***.*** メモ情報あり

Slide 74

Slide 74 text

Node-REDサーバにログイン l ターミナルソフトウェアを起動してください。(Windowsの⽅はTeraTermなど、 Macの⽅は標準のターミナル) l Node-REDサーバにsshでログインします。 % ssh root@<サーバのIPアドレス> % ssh [email protected] The authenticity of host 'ww.xx.yy.zzz (ww.xx.yy.zzz)' can't be established. ECDSA key fingerprint is SHA256:… … … … … … … … … … … … … … … . Are you sure you want to continue connecting (yes/no)? yes [email protected]ʻs password: (管理ユーザのパスワードを⼊⼒) [root@nodered ~]# 81

Slide 75

Slide 75 text

Pythonおよびモジュールのインストール l Python3をインストールします。(同時にパッケージ管理ツールpipもインストールさ れます) % yum install python3 l Python3でWebSocketを扱うためのモジュールをインストールします。 % pip3 install websocket-client 82

Slide 76

Slide 76 text

サンプルプログラムのダウンロード l GitHubに置いてあるサンプルプログラム群をダウンロードします。 % git clone https://github.com/sakuraio/handson-sample.git l サンプルプログラム群のディレクトリに移動します。 % cd handson-sample/rpi 83

Slide 77

Slide 77 text

サンプルプログラムの設定 l sakura.ioのデータをWebSocketで受信するプログラムに、WebSocketの URLを設定します。 l エディタでwebsocket-recv.pyを開いてください。(下記はviを使う場合) % vi websocket-recv.py l 変数uriに、 sakura.ioのWebSocketのURLを設定します。 # 【要設定】WebSocketのURI uri = "wss://api.sakura.io/ws/v1/xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyy" 84 ここにペースト

Slide 78

Slide 78 text

サンプルプログラムの設定 l [ uri ] に設定する値は、sakura.io管理画⾯の連携サービスで確認できる⾚枠部分で す。⾚枠部分の情報をコピーして、 websocket-recv.pyのuri変数にペーストします。 85

Slide 79

Slide 79 text

サンプルプログラムの実⾏ l sakura.ioのデータをWebSocketで受信するプログラムを実⾏します。 % python3 websocket-recv.py ※Raspberry Piで起動したrpi-fabo.pyは動かしたままにしておいてください。 (rpi-fabo.pyから送信されたデータをsakura.io経由で受信しているため) 86

Slide 80

Slide 80 text

サンプルプログラムの実⾏ l 以下のような出⼒が得られれば成功です。 l 温度センサーを指で軽く押さえると温度(temp)の数値が変化します。 l rpi-fabo.pyを停⽌すると、データを受信しなくなります。 % python3 websocket-recv.py Receiving... cnt = 8 temp = 22.000000 cnt = 9 ← カウンタ (1ずつアップします) temp = 21.000000 ← 温度 cnt = 10 temp = 21.000000 … 87

Slide 81

Slide 81 text

④ Webサービス連携 ① 今回のハンズオンの流れ 88 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 82

Slide 82 text

今回のハンズオンの流れ 89 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l sakura.ioは、IoTデバイスに向けてデータを送信し、デバイスを制御することもできます。 l Node-REDサーバから値を⼊⼒し、その値に応じてRaspberry Piに接続されたLEDを点灯/ 消灯してみましょう。 moduleで指定された モジュールにデータを送信 コマンドラインに⼊⼒した値 に基づきJSONデータ送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏

Slide 83

Slide 83 text

サンプルプログラムの設定 l Node-REDサーバで動かすプログラムに、WebSocketのURLと、sakura.ioモ ジュールのIDを設定します。 l エディタでwebsocket-send.pyを開いてください。(下記はviを使う場合) % vi websocket-send.py l 変数uriにWebSocketのURL、変数module_idにsakura.ioモジュールのID を設定します。 # 【要設定】WebSocketのURI uri = "wss://api.sakura.io/ws/v1/xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyy” # 【要設定】sakura.ioモジュールのID module_id = "uxxxxxxxxxxx" 90

Slide 84

Slide 84 text

サンプルプログラムの設定 l [ module_id ] に設定する値は、sakura.ioの管理画⾯でプロジェクトに表⽰されてい たuから始まる12桁の⽂字列です。 91

Slide 85

Slide 85 text

サンプルプログラムの実⾏ l Raspberry Piで rpi-fabo.py を実⾏します。 ※すでに実⾏中の⽅はそのままで結構です。 % python3 rpi-fabo.py l Node-REDサーバで、websocket-send.pyを実⾏します。 % python3 websocket-send.py 92 websocket-send.py rpi-fabo.py JSON

Slide 86

Slide 86 text

サンプルプログラムの実⾏ l websocket-send.py を実⾏すると >> が表⽰されますので、0か1を⼊⼒し てください。(それ以外は無視されます) l 1を⼊⼒するとLEDが点灯、0を⼊⼒するとLEDが消灯します。 % python3 websocket-send.py Sending... input data: (0=OFF/1=ON/other=NOP) >> 1 input data: (0=OFF/1=ON/other=NOP) >> 0 input data: (0=OFF/1=ON/other=NOP) >> 5 nothing send ... ← 1,0以外の値を⼊れても何も送信されない 93

Slide 87

Slide 87 text

Raspberry Piで確認 l Raspberry Piにてrpi-fabo.pyの出⼒を確認しましょう。 l websocket-send.pyで1や0を⼊⼒すると、rpi-fabo.pyの出⼒に led=1やled=0が表⽰されます。取得すべきデータがないときはnothing recvとなります。 pi@raspberrypi:~ $ python3 rpi-fabo.py cnt = 100 temp = 22.000000 led = 1 ← LED (1:点灯 / 0:消灯) cnt = 101 ← カウンタ (1ずつアップします) temp = 23.000000 ← 温度 nothing recv... ← ledに値がセットされていない (何もしない) … 94

Slide 88

Slide 88 text

今回のハンズオンの流れ 95 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED moduleで指定された モジュールにデータを送信 コマンドラインに⼊⼒した値 に基づきJSONデータ送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏ ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ l これで、センサーからsakura.io経由でのデータ受信と活⽤、およびサーバから sakura.io経由でデータを送信してのIoTデバイス操作の両⽅ができるようになり ました︕

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

④ Webサービス連携 ① 今回のハンズオンの流れ 97 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 91

Slide 91 text

http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ Node-RED サーバへのログイン l Webブラウザで上記URLにアクセスします。 ※[ Node-REDのWebUIポート]に【 80 】を指定した場合はポート番号を省略できます ※サーバ⾏を右クリック、もしくは⾏最右部にある 【 ▼ 】 をクリックで簡単にIPアドレスをコピーできます 98

Slide 92

Slide 92 text

Node-RED サーバへのログイン l Node-REDのアクセス画⾯では、[ Username ]と[ Password ]欄に 指定した【 Node-REDのログインID 】と【 Node-REDのログインパスワード 】を ⼊⼒し、【 ログイン 】をクリックします。 99

Slide 93

Slide 93 text

Node-RED サーバへのログイン l ログインが成功すると以下の画⾯が表⽰されます。 100

Slide 94

Slide 94 text

Node-RED 初期画⾯ l Node-REDは「ノード」と呼ばれる機能の固まりをシート上で組み合わせ、ひとつの「フロー」 にすることで、ほとんどプログラミングを知らない⼈でもプログラムを構築できるツールです。 101 ノード パレット シート Info/Debug コンソール デプロイ

Slide 95

Slide 95 text

Node-RED WebSocketノードの作成 l まずはWebSocketからのデータを受け取るノードを追加します。 l ノードパレットの【 ネットワーク 】から【 websocket in 】ノードをシートにドラッグ&ドロップ します。 102

Slide 96

Slide 96 text

Node-RED WebSocketノードの作成 l ドラッグ&ドロップされたwebsocket inノードをダブルクリックし、設定画⾯に移ります。 l 種類は【 接続 】、名前は任意の名前を⼊⼒のうえ、URLは【 新規にwebsocket- clientを追加... 】を選択した状態で、URLの⾏にある【 】をクリックします。 103

Slide 97

Slide 97 text

Node-RED WebSocketノードの作成 l [ URL ]欄には、sakura.ioのWebSocketのURL情報をペーストします。 l [ TLS設定 ]はデフォルトの【 新規にtls-configを追加... 】のまま、[ 送信/受 信 ]もデフォルトの【 ペイロードを送信/受信 】を選択し、【 追加 】をクリックします。 104

Slide 98

Slide 98 text

Node-RED WebSocketノードの作成 l 指定する[ URL ]の値は、コンパネの連携サービスで確認できる⾚枠部分です。 ⾚枠部分の情報をコピーして、websocket inノードのURL部分にペーストします。 ※URLの末尾とTokenは同⼀の⽂字列となるので、Token情報は不要です 105

Slide 99

Slide 99 text

Node-RED WebSocketノードの作成 l 【 完了 】 をクリックし、websocket inノードへ設定が反映され、 不備を⽰す右隅の三⾓マークが消えたことを確認します。 106

Slide 100

Slide 100 text

Node-RED Debugノードの作成 l 次に、ノードパレットの【 共通 】から【 debug 】ノードをシートにドラッグ&ドロップします。 ※Debugノードは⾃動で[ msg.payload ]に名前が変わります、設定は不要です 107

Slide 101

Slide 101 text

Node-RED ノード間の接続 l websocket inノード右端とDebugノード左端をドラッグ&ドロップで繋ぎます。 108

Slide 102

Slide 102 text

Node-RED フローのデプロイ l 各ノードを接続し、準備が完了したら、右上部の 【 デプロイ 】 をクリックします。 デプロイが成功すると[ デプロイが成功しました ]というメッセージが上部に表⽰されます。 109

Slide 103

Slide 103 text

動作確認 l 不備がなければwebsocket inノード下部に[ ]が表⽰されます。 ※2018/10/10現在、⽇本語表⽰の場合 と誤訳されて表⽰されます。 l 【 デバッグ( ))】タブをクリックするとsakura.ioからのJSONデータを確認できます。 ※debugノード右端の緑マークをクリックするとコンソールへの出⼒が停⽌されます。 110

Slide 104

Slide 104 text

l 次に追加するフローの動作を阻害しないよう[ フロー1 ]を以下⼿順で無効にします。 フローの無効化 111 1. [ フロー1 ]タブを ダブルクリックする 2. フローを編集画⾯で[ 状態 ]が 【 有効 】になっていることを確認して クリックする 3. [ 状態 ]が【 無効 】になったことを 確認できたら、【 完了 】をクリックする 4. [ フロー1 ]タブが点線表記になり 【】マークが付いていることを確認

Slide 105

Slide 105 text

Node-RED フローサンプルの紹介 l 次にサンプルのフローを利⽤するために必要なノードをNode-REDサーバに追加します。 l 右上部の[ メニュー( )]から【 パレットの管理 】をクリックし、【 ノードを追加 】タブ の検索窓から【 node-red-dashboard 】を検索します。 l ノードがヒットしたら【 ノードを追加 】をクリックします。 112

Slide 106

Slide 106 text

Node-RED フローサンプルの紹介 l ノードの追加に関する確認が表⽰されますので、【 追加 】をクリックします。 l 10秒程度でノードが追加され、パレットに追加された旨のメッセージが表⽰されます。 113

Slide 107

Slide 107 text

Node-RED フローサンプルの紹介 l Githubの該当するサンプルフローページで【 Raw 】をクリックし、キーボードで【 Ctrl + A 】ですべてを選択して、【 Ctrl +C 】でコピーします。 114 https://github.com/sakuraio/handson-sample/blob/reform/firststep/part2/nodered-firststep-part2.json [ { "id": "a4ba57e6.f91cc8", "type": "tab", "label": "グラフ表⽰と制御", "disabled": false, "info": "本フローはsakura.ioハンズオンで利⽤する、Arduino UnoとGrove温度センサ&LEDを⽤いたグラフ表⽰と制御を試すもので す。¥n¥n■グラフ表⽰¥n¥nsakura.ioのWebSocket (`wss://api.sakura.io/ws/v1/.....`)サービスから送信された JSONデータを⽤いてダッシュボード上にグラフを描画します。¥nまた、グラ フは`http://:<指定したWeb UIポート番号>/ui/`で 確認することができます。¥n¥nオプションとして、Twittter IDを設定す ることで温度情報(Channel1)を取り出し、Twitterにメッセージを投 稿します。¥n¥n以下2点を設定しデプロイすることで動作します。 ¥n¥n1. sakuraio_in(WebSocket-inノード)¥n¥n sakura.io コンパネで確認できるWebSocketのURL (`wss://api.sakura.io/ws/v1/.....`)を設定します。¥n¥n2. Tweet(Twitterノード) ※オプション¥n¥n Ch1(temp)_parseと trigger 1hrをドラッグアンドドロップで接続します。¥n¥n 認証を⾏い Twitterのアカウントを連携します。(鍵アカウントでの動作は確認して キーボードで【 Ctrl + A 】ですべてを選択 →【 Ctrl +C 】でコピーします

Slide 108

Slide 108 text

Node-RED フローサンプルの紹介 l Node-RED右上の[ メニュー( )]から 【 読み込み 】 をクリックし、上記URLで コピーした内容をペーストのうえ、【 読み込み 】 をクリックします。 l 記載されたJSONの内容に基づき、シートに新たにフローが作成されます。 115 コピーしたJSONをペースト https://github.com/sakuraio/handson-sample/blob/reform/firststep/part2/nodered-firststep-part2.json

Slide 109

Slide 109 text

l ⽤意されたフローはほぼ構成は済んでいます。以下の3つのノードを設定することで 動作します。 Node-RED フローサンプルの紹介 116 ダッシュボードでの可視化 ボタン操作によるデバイス制御 sakuraio_in (websocket inノード) moduleID_set (Functionノード) sakuraio_out (websocket outノード)

Slide 110

Slide 110 text

l [ ダッシュボード画⾯でのグラフ表⽰ ]フローでは、sakura.ioから受け取った JSONデータから温度の値を抽出し、現在値と⼀定間隔での推移を可視化します。 l sakuraio_inノード(websocket in)を設定することで動作します。 Node-RED フローサンプルの紹介 117 ⽂字列として受け取った JSONデータの変換 sakura.ioのWebSocket から情報を取得 モジュールからのデータのみを通過 (type == channels) ../ui/ にグラフとして可視化 温度(ch0)データだけを抽出

Slide 111

Slide 111 text

Node-RED フローサンプルの紹介(GUI表⽰ - WebSocket設定) l 作成された【 WebSocket inノード(sakuraio_in) 】をダブルクリックし、先程の⼿順と 同様、種類は【 接続 】、URLは先程指定したもの、名前は任意の名称を⼊⼒します。 ※URLは過去設定したものがある場合、ドロップダウンで指定できます l 全て設定したら【 完了 】をクリックします。 118 先ほど設定したものを選択します

Slide 112

Slide 112 text

Node-RED フローサンプルの紹介(GUI表⽰ - WebSocket設定) l 画⾯右上の【 デプロイ 】をクリックします。 119

Slide 113

Slide 113 text

Node-RED フローサンプルの紹介(GUI表⽰) l デプロイが成功したら、上記URLにアクセスするか[ ダッシュボード( )]タブの 【 】をクリックするとデータによりリアルタイムに変化する様⼦を確認できます。 120 http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ui/

Slide 114

Slide 114 text

④ Webサービス連携 ① 今回のハンズオンの流れ 121 ② Raspberry Piと デバイスの設定 温度センサ sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED

Slide 115

Slide 115 text

今回のハンズオンの流れ 122 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l 現時点の設定ではボタンでのデバイス制御は正しく動作しません。これは制御対象となる モジュールIDと、クラウドの受け⼝となるWebSocketのURLを指定できていないためです。 l そのため、最後にNode-REDにて、上記2つのパラメータを指定します。 ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ モジュールIDとWebSocketURLが 指定されていないため動作しない フロー内でモジュールIDと WebSocketURLを指定する

Slide 116

Slide 116 text

Node-RED フローサンプルの紹介(デバイス制御 – モジュールIDの指定) l [ デバイス制御(モジュール...) ]フローでは、指定したモジュールIDを元に制御⽤の JSONデータを8個⽣成し、それらを変数にセットします。 l moduleID_setノード(Function)にモジュールIDを追記することで動作します。 l このフローはデプロイされた時に1回だけ動作します。 123 JSONデータに埋め込む モジュールIDを定義 デプロイ時に⾃動実⾏ 制御⽤JSONデータ⽣成 (変数context.global.xxxにセット)

Slide 117

Slide 117 text

Node-RED フローサンプルの紹介(デバイス制御 – モジュールIDの指定) l 【 functionノード(moduleID_set) 】をダブルクリックし、設定画⾯を開きます。 l コード2⾏⽬の【 %%moduleID%% 】をsakura.ioのコントロールパネルで確認でき るモジュールID(uから始まる12桁の⽂字列)に変更し、【 完了 】をクリックします。 124

Slide 118

Slide 118 text

Node-RED フローサンプルの紹介(デバイス制御 – モジュールIDの指定) l 【 %%moduleID%% 】 から差し替える値は、先程sakura.ioのコントロールパネルで プロジェクトに表⽰されていたuから始まる12桁の⽂字列です。 125

Slide 119

Slide 119 text

Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l [ デバイス制御(動作部分) ]フローでは、ダッシュボード画⾯でクリックするボタンの 表⽰を⾏います。 l sakuraio_outノード(websocket out)を設定することで動作します。 l ダッシュボードでボタンが押下されるたび、JSONデータを指定のWebSocketに送信します。 126 指定したWebSocketのURL にJSONデータを送信 ../ui/ でボタンとして表⽰ クリックされると制御⽤JSONデータを送出

Slide 120

Slide 120 text

Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l 作成された【 WebSocket out(sakuraio_out) 】ノードをダブルクリックし、設定画⾯ を開きます。先程の⼿順と同様、種類は【 接続 】、名前は【 任意の名称 】を⼊⼒します。 l URLは過去設定したものがある場合、ドロップダウンで指定できます。 l 全て設定したら【 完了 】をクリックします。 127

Slide 121

Slide 121 text

Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l 画⾯右上の【 デプロイ 】をクリックします。 128

Slide 122

Slide 122 text

Node-RED フローの動作確認 l ダッシュボード右側に並んでいるボタンでLEDを制御します。 ※有効なボタンは「RED(D7) ON」「RED(D7) OFF」「ALL ON」「ALL OFF」です。 l 押したボタンに応じて、Raspberry Piに接続されたLEDが点灯/消灯することを確認して ください。 129

Slide 123

Slide 123 text

今回のハンズオンの流れ 130 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED moduleで指定された モジュールにデータを送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏ ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ l これで、センサーからsakura.io経由でのデータ受信と活⽤、およびWebから sakura.io経由でデータを送信してのIoTデバイス操作の両⽅ができるようになり ました︕ ボタン操作で指定した内容 に基づきJSONデータ送信

Slide 124

Slide 124 text

結局どのくらいかかったか 131 分類 名称 固定費⽤ 変動費⽤ 備考 購⼊先URL アプリケーション さくらのクラウド (1Core/1GB+20GB) - ¥27 3時間分 Node-RED稼働 - プラットフォーム &ネットワーク sakura.io基本料 - ¥60 1ヶ⽉分 10,000回の送受信 - 端末 sakura.ioモジュール ¥8,000 - https://sakura.io/product/module_l te.html sakura.io HAT for Raspberry Pi ¥5,000 - https://sakura.io/product/arduino.h tml Raspberry Pi Model3 B ¥4,814 - https://eleshop.jp/shop/g/gGBH31 2/ ACアダプター ¥1,195 - 給電⽤ https://eleshop.jp/shop/g/gF5T311 / FaBo #003 Starter Kit for RaspberryPi ¥10,000 - https://fabo.store/products/starter- kit-for-arduinoのコピー 合計(税抜) ¥29,009 ¥87

Slide 125

Slide 125 text

132 IoTデバイスのセキュリティ向上

Slide 126

Slide 126 text

IoTデバイスをインターネットにつなぐと攻撃されやすい l 現在はRaspberry PiのWiFiが有効になっているので、インターネットからの攻撃を受けや すい状態になっています。 l IoTデバイスを攻撃から守るためにWiFiを切断し、その状態でもsakura.io経由では通信 できることを確認しましょう。 133 閉域網 マルウェア ハッカー ボットネット WiFi SSL/TLS IoTデバイス PC/Web

Slide 127

Slide 127 text

Raspberry PiのWiFiを切断 lRaspberry PiのWiFiを切断します。(画⾯右上にて設定) 134

Slide 128

Slide 128 text

サンプルプログラムの実⾏ lPythonのプログラムやNode-RED アプリが、WiFiを切断する前と同じよ うに動作することを確認してください。 135

Slide 129

Slide 129 text

136 参考 DataStore API

Slide 130

Slide 130 text

【参考】連携サービスの設定(DataStore API) l sakura.ioは、蓄積データを活⽤するために[ DataStore API ]を提供しています。 l リアルタイムではなく、バッチ処理等でのデータの受け取りを想定したシステムでも連携が 可能になるよう、APIを利⽤して期間やモジュール等の条件を指定したJSONデータを 呼び出すことができます。 137 リアルタイム連携 (WebSocket他) ⾮リアルタイム連携 (DataStore API) 外部システム sakura.io モジュール データストア HTTP MQTT WebSocket HTTP

Slide 131

Slide 131 text

【参考】連携サービスの設定(DataStore API) l 連携サービスの選択画⾯で 【 DataStore API 】 をクリックします。 138

Slide 132

Slide 132 text

【参考】連携サービスの設定(DataStore API) l [ 名前 ]は任意の名称を⼊⼒し、[ 作成 ]をクリックします。 139

Slide 133

Slide 133 text

l 作成した連携サービスをクリックすると【 Token 】を確認できます。 l Tokenをコピーし、コンパネ右上の会員IDをクリックし、展開されたメニューから 【 DataStore v1 Document 】をクリックします。 【参考】連携サービスの設定(DataStore API) 140

Slide 134

Slide 134 text

【参考】連携サービスの設定(DataStore API) /channels の取得 l [ /channels ]は蓄積されたデータをチャンネル単位で取得します。単体のデータを複数の形式(⼊⼒時の形式 [ value ]、数値[ value_num ]、⽂字列[ value_str ])で格納しているため、単体でも価値のある データが活⽤しやすい形式となっています。 l [ /channels ]は該当UR( https://api.sakura.io/datastore/v1/docs/ )にて、前述の【 Token 】 情報、および以下のパラメータを指定することで任意の情報を取得できます。 141 【module】︓モジュールのモジュールID 【size】︓⼀度に取得するデータの数 【order】︓昇順(ASC)と降順(DESC)指定 【cursor】︓※後述※ 【after/before】︓指定⽇時の以前と以後指定 【channel】︓取得するチャンネル指定

Slide 135

Slide 135 text

【参考】連携サービスの設定(DataStore API) /channels の取得 l 指定された条件を元に【 Try it out! 】をクリックすると、[ Response Body ]欄に 条件に応じたデータを返します。またクリック後に返される[ Request URL ]から同様の データを取得できます。 142 { "meta": { “count”: <取得した件数>, “cursor”: “”, “match”: <ヒットした件数> }, "results": [ { “channel”: <データが格納されているチャンネル>, “datetime”: “<データがモジュールのキューに格納された時間>”, “id”: “<送信されたデータのID>", “module”: “<データが送信されたモジュールのID>", “type”: “<送信されたデータの型式>", “value”: , “value_num”: , “value_str”: “" }, { "channel": … #以下[channel]単位のデータがcount数分列挙

Slide 136

Slide 136 text

【参考】連携サービスの設定(DataStore API) /messages の取得 l [ /messages ]は蓄積されたデータをRM単位で取得します。RMに含まれる複数チャンネルのデータの関係性が 重要な場合に活⽤しやすい形式です。(鍵の「解錠者ID」と「⼊退室フラグ」等) l また、[ /messages ]にはモジュールの接続および切断の情報も含まれています。 l [ /messages ]は該当URL( https://api.sakura.io/datastore/v1/docs/ )にて以下のパラメータを 指定することで任意の情報を取得できます。 143 【type】︓取得するRMのtype指定 【module】︓モジュールのモジュールID 【size】︓⼀度に取得するデータの数 【order】︓昇順(ASC)と降順(DESC)指定 【cursor】︓※後述※ 【after/before】︓指定⽇時の以前と以後指定

Slide 137

Slide 137 text

【参考】連携サービスの設定(DataStore API) /messages の取得 l 指定された条件を元に【 Try it out! 】をクリックすると、[ Response Body ]欄に条件に応じ たデータを返します。またクリック後に返される[ Request URL ]から同様のデータを取得できます。 144 { "meta": { "count": <取得した件数>, "cursor": “”, "match": <ヒットした件数> }, "results": [ { “datetime”: “<対象のRMをプラットフォーム側で受信した時間>”, "id": “<格納されたRMのID>", "module": “<データが送信されたモジュールのID>", "payload": { "channels": [ { "channel": <データが格納されているチャンネル>, "type": “<送信されたデータの型式>", "value": } ] }, "type": "channels" }, { “datetime”: … #以下[message]単位のデータ

Slide 138

Slide 138 text

145 参考 サンプルスケッチ

Slide 139

Slide 139 text

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

Slide 140

Slide 140 text

【参考】Shell.ino 147 シリアルモニタからのコマンド操作を提供します。改⾏を[CRのみ]とした後、 提供されているコマンドを⼿⼊⼒で確認することができます。

Slide 141

Slide 141 text

【参考】Shell.ino 148 構⽂ 【version】現在のファームウェアバージョンを表⽰する 出⼒結果 version >version v1.0.0-161109-c566dba 備考

Slide 142

Slide 142 text

【参考】Shell.ino 149 構⽂ 【serial】モジュールのシリアル番号を表⽰する 出⼒結果 serial >serial 16A0100134 備考

Slide 143

Slide 143 text

【参考】Shell.ino 150 構⽂ 【status】モジュールの通信状態を確認する 出⼒結果 status >status Online Last Error Code: 0 備考

Slide 144

Slide 144 text

【参考】Shell.ino 151 構⽂ 【sqi】モジュールの電波強度を確認する 出⼒結果 sqi >sqi 5 備考 電波強度は5を最⼤として強度に伴い数値が下がり、0は圏外であることを⽰します。

Slide 145

Slide 145 text

【参考】Shell.ino 152 構⽂ 【unixtime】UTC形式の現在時刻を表⽰する 出⼒結果 unixtime >unixtime 1480497574 備考

Slide 146

Slide 146 text

【参考】Shell.ino 153 構⽂ 【update】ファームウェアのアップデートを実⾏する 出⼒結果 update >update Current Version: v1.0.0-161109-c566dba Unlock Starting update Waiting for update . 備考

Slide 147

Slide 147 text

【参考】Shell.ino 154 構⽂ 【reset】モジュールのソフトウェアリセットを実⾏する 出⼒結果 reset >reset > 備考 シリアルモニタに実⾏結果は表⽰されません。 ソフトウェアリセットを実⾏するとモジュールが再起動を⾏います。 モデムの起動、および通信確⽴までにおおよそ1分程度を要します。

Slide 148

Slide 148 text

【参考】Shell.ino 155 構⽂ 【enqueue】送信キューにデータを格納する 出⼒結果 enqueue >enqueue 0 i 123 > 備考 シリアルモニタに実⾏結果は表⽰されません。 enqueueコマンドを実⾏すると登録したデータは送信キューに貯められます。 送信キューは最⼤で32個まで蓄積され、超過したキューは貯められず破棄されます。

Slide 149

Slide 149 text

【参考】Shell.ino 156 構⽂ 【send】送信キューに貯められたデータを送信する 出⼒結果 send >send > 備考 シリアルモニタに実⾏結果は表⽰されません。 sendコマンドを実⾏すると、貯められたデータは16個分を1つのメッセージとして送信します。 キューが17個以上存在する場合、2つ⽬のメッセージも送信され、キューから削除されます。

Slide 150

Slide 150 text

【参考】Shell.ino 157 構⽂ 【size】送信/受信キューに貯められたデータ数を確認する 出⼒結果 size >size Tx Queue Avail: 32 Queued: 0 Rx Queue Avail: 32 Queued: 0 備考 Tx Queue は送信キュー、Rx Queue は受信キューを表します。 Availは利⽤可能数、Queuedは貯められているキューの数を表します。

Slide 151

Slide 151 text

【参考】Shell.ino 158 構⽂ 【cleartx】送信キューに貯められたデータをすべて消去する 出⼒結果 cleartx >cleartx > 備考 シリアルモニタに実⾏結果は表⽰されません。 送信キューに貯められたデータの⼀部だけを削除することはできません。

Slide 152

Slide 152 text

【参考】Shell.ino 159 構⽂ 【clearrx】受信キューに貯められたデータをすべて消去する 出⼒結果 clearrx >clearrx > 備考 シリアルモニタに実⾏結果は表⽰されません。 受信キューに貯められたデータの⼀部だけを削除することはできません。

Slide 153

Slide 153 text

【参考】Shell.ino 160 構⽂ 【dequeue】受信キューに貯められたデータをすべて受信する 出⼒結果 dequeue >dequeue empty 備考 受信キューに貯められたデータの⼀部だけを受信することはできません。 受信可能なデータが存在しない場合はemptyを返します。 受信されたデータはキューから⾃動的に削除されます。

Slide 154

Slide 154 text

【参考】Shell.ino 161 構⽂ 【peek】受信キューに貯められたデータを閲覧する 出⼒結果 peek >peek empty 備考 受信キューに貯められたデータの⼀部だけを受信することはできません。 受信可能なデータが存在しない場合はemptyを返します。 閲覧したデータは削除されずキューに残されます。

Slide 155

Slide 155 text

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

Slide 156

Slide 156 text

163 最後に

Slide 157

Slide 157 text

最後に 〜sakura.io〜 l ハンズオンに使⽤したsakura.ioモジュールは必要に応じて登録を解除します。 l プロジェクトの【 詳細 】から、プロジェクト詳細画⾯で対象のモジュールの【 】を クリックします。 164

Slide 158

Slide 158 text

最後に 〜sakura.io〜 l モジュールの設定画⾯に遷移します。下部の 【 登録解除 】 ボタンをクリックします。 165

Slide 159

Slide 159 text

最後に 〜sakura.io〜 l 登録解除実⾏を確認されます。問題ない場合は再度 【 登録解除 】 をクリックします。 モジュールの削除には数秒かかります。 l 削除が完了すると、プロジェクトから該当モジュールの表⽰が消えていることを確認できます。 166

Slide 160

Slide 160 text

最後に 〜sakura.io〜 l 次は連携サービスとともにプロジェクトを削除します。 l プロジェクトの【 詳細 】から、プロジェクト詳細画⾯で【 削除 】をクリックします。 167

Slide 161

Slide 161 text

最後に 〜sakura.io〜 l 削除実⾏を確認されます。問題ない場合は再度 【 削除 】 をクリックします。 l 削除が完了すると、コントロールパネル上から該当プロジェクトの表⽰が消えていることを確 認できます。 168

Slide 162

Slide 162 text

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

Slide 163

Slide 163 text

最後に 〜さくらのクラウド〜 l シャットダウン対象を確認のうえ 【 シャットダウン 】 をクリックします。 l 再度ダイアログにて確認が表⽰されますので 【 実⾏ 】 をクリックします。 170

Slide 164

Slide 164 text

最後に 〜さくらのクラウド〜 l シャットダウンが正常に実⾏されると、チェックボックス横のラインが「緑→⾚→灰」と遷移します。 l ラインが灰⾊に変化したら再度対象となるサーバにチェックを⼊れ、 【 削除 】 をクリックします。 171

Slide 165

Slide 165 text

最後に 〜さくらのクラウド〜 l 今回は[ 接続されたディスク ]も削除しますのでチェックを⼊れ、【 削除 】をクリックします。 l ダイアログが表⽰されますので【 実⾏ 】をクリックします。 172

Slide 166

Slide 166 text

最後に 〜さくらのクラウド〜 l 削除の⼯程が表⽰されます。全てのステータスが成功となれば削除は完了です。 173

Slide 167

Slide 167 text

最後に 174 以上でハンズオンにおける作業は すべて終了となります。 お疲れさまでした︕

Slide 168

Slide 168 text

最後に 175 さくらインターネットでは、「さくらクラブ」としてハンズオン等の イベントをともに開催いただける仲間(部員)を募集しています。 (テーマはIoTに限らずクラウドやVPS、スタートアップ系ネタもOK︕) ご興味があれば、Come and join us & Feel free to contact me! 連絡先 ︓ [email protected] さくらクラブ ︓ http://www.slideshare.net/MasayaHayashi/lt20151224

Slide 169

Slide 169 text

176 そこに、さくら

Slide 170

Slide 170 text

177 質疑応答