Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Raspberry Pi & sakura.io 体験ハンズオン/ sakuraio handson rpi part1

Raspberry Pi & sakura.io 体験ハンズオン/ sakuraio handson rpi part1

各地で開催されているさくらインターネットが提供するIoTプラットフォーム「sakura.io」のハンズオンでの資料となります。
本資料ではIoTデバイスのプロトタイピングを想定し「Raspberry Pi+sakura.ioモジュールを用いたマイコンおよびプログラムの構築」から「Node-REDを用いたWebサービス連携」までの手順をスライドでご覧いただけます。
また、ハードウェア構成を共通のコネクタ規格で接続可能なFaBoに置き換えることで、より簡単に環境を立ち上げられるようになっています。

サービス詳細は以下をご確認ください。
https://sakura.io/

More Decks by さくらインターネット(IoTプラットフォーム事業)

Other Decks in Technology

Transcript

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

    View Slide

  2. 3
    はじめに

    View Slide

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

    View Slide

  4. Webサービス連携

    今回のハンズオンの流れ
    5

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

  6. 8
    ハンズオンの準備

    View Slide

  7. 今回のワークショップでご提供するもの
    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モジュール
    (アンテナ取付済み)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. Webサービス連携

    今回のハンズオンの流れ
    16

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED
    ④ç

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 33
    sakura.ioの設定

    View Slide


  30. Webサービス連携

    今回のハンズオンの流れ
    34

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. 53
    Raspberry Piとデバイスの設定

    View Slide


  47. Webサービス連携

    今回のハンズオンの流れ
    54

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

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

    View Slide

  50. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. 開発環境の準備
    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

    View Slide

  56. 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

    View Slide

  57. 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

    View Slide

  58. ⼿⼊⼒で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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  66. サンプルプログラムの実⾏
    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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


  71. Webサービス連携

    今回のハンズオンの流れ
    78

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

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

    View Slide

  74. 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

    View Slide

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

    View Slide

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

    View Slide

  77. サンプルプログラムの設定
    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
    ここにペースト

    View Slide

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

    View Slide

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

    View Slide

  80. サンプルプログラムの実⾏
    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

    View Slide


  81. Webサービス連携

    今回のハンズオンの流れ
    88

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

  83. サンプルプログラムの設定
    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

    View Slide

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

    View Slide

  85. サンプルプログラムの実⾏
    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

    View Slide

  86. サンプルプログラムの実⾏
    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

    View Slide

  87. 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

    View Slide

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

    View Slide

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

    View Slide


  90. Webサービス連携

    今回のハンズオンの流れ
    97

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  107. 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 】でコピーします

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


  114. Webサービス連携

    今回のハンズオンの流れ
    121

    Raspberry Piと
    デバイスの設定
    温度センサ
    sakura.io
    モジュール
    Raspberry Pi

    前編
    後編
    ハンズオン
    キット
    WebSocket
    連携
    サービス
    モジュール
    sakura.ioの設定
    温度表⽰ LED制御
    プロジェクト
    LED

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  124. 結局どのくらいかかったか
    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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  129. 136
    参考
    DataStore API

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  134. 【参考】連携サービスの設定(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】︓取得するチャンネル指定

    View Slide

  135. 【参考】連携サービスの設定(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数分列挙

    View Slide

  136. 【参考】連携サービスの設定(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】︓指定⽇時の以前と以後指定

    View Slide

  137. 【参考】連携サービスの設定(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]単位のデータ

    View Slide

  138. 145
    参考 サンプルスケッチ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  156. 163
    最後に

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  169. 176
    そこに、さくら

    View Slide

  170. 177
    質疑応答

    View Slide