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/

Transcript

  1. sakura.io体験ハンズオン Raspberry PiとFaboでIoTを体験しよう 2020/3/7 (C) Copyright SAKURA Internet Inc. さくらインターネット株式会社

    コミュニティマネージャー 法林 浩之 だれもが、データを活かせる世の中へ。
  2. 3 はじめに

  3. 本ハンズオンの⽬的とお願い l 本ハンズオンは sakura.io を使⽤し、組込み、Web/アプリ開発、それぞれのスキルセッ トを⼤きく超えることなく、Internet of Things(IoT) に携わることができることをご体験 いただくものです。

    l そのため、組み込み系またはWeb/アプリ系のどちらか、または両⽅わからないという⽅に もご参加いただくことができます。 l 今回は1⼈に1つのキットをご⽤意しています。もしもご⾃⾝の知識分野で、近くの⽅の フォローができそうだなと思われましたら、積極的にサポートしあって進めていただければと 思います。 4
  4. Webサービス連携 ① 今回のハンズオンの流れ 5 ② Raspberry Piと デバイスの設定 温度センサ sakura.io

    モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④
  5. SNSへの投稿・シェア、⼤歓迎です︕ 7 #sakuraio

  6. 8 ハンズオンの準備

  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モジュール (アンテナ取付済み)
  8. ハンズオンの準備 ハンズオンで利⽤するページを集めたリンク集にアクセスしましょう。 (Raspberry PiとノートPCの両⽅でアクセスしておくと便利です) 10 https://bit.ly/sakuraio01

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

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

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

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

  13. Webサービス連携 ① 今回のハンズオンの流れ 16 ② Raspberry Piと デバイスの設定 温度センサ sakura.io

    モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④ç
  14. さくらのクラウド コントロールパネル ログイン(さくらインターネット会員) l さくらのクラウドコントロールパネルにログインします。 l [ さくらインターネット会員としてログイン︓ ]に会員ID、パスワードを⼊⼒し 【

    ログイン 】をクリックします。 18 https://secure.sakura.ad.jp/cloud/
  15. さくらのクラウド コントロールパネル ログイン l ログインするとアカウントの選択を 求められるため、割り当てられたア カウントを選択します。 ハンズオンでは参加者の皆さんに個別の アカウントを割り当てます。 注︓実運⽤の際にアカウントを作成をされていない場合には、

    左メニュー[ アカウント ]タブからアカウントとユーザを作成す る必要があります。 19
  16. さくらのクラウド コントロールパネル ゾーン選択 20 l 環境を構築するゾーンを選択します。講師が別途指定するゾーンをご利⽤ください。

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

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

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

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

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

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

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

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

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

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

  27. Node-REDサーバの作成 l サーバ作成のステータスが成功に遷移した時点でサーバのIPアドレスを確認できます。 コントロールパネル左側の【 サーバ 】をクリックすると作成済みサーバの⼀覧が表⽰されます。 l 最右部【 ▼ 】をクリックし、【

    IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 31 ***.*** メモ情報あり
  28. 【参考】スタートアップスクリプト進捗状況の確認 l コントロールパネル上でサーバの起動状況は確認できますが、スタートアップスクリプトによる 処理が完了したかまでは確認できないため、必要に応じてコンソールを⽤いて確認します。 l 該当のサーバをダブルクリックし、【 コンソール 】を選択するとOSの起動処理画⾯を確認で きます。全ての処理が完了すると、起動画⾯からログインプロンプトに遷移します。 32

  29. 33 sakura.ioの設定

  30. ④ Webサービス連携 ① 今回のハンズオンの流れ 34 ② Raspberry Piと デバイスの設定 温度センサ

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  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セット設定できます。
  32. sakura.io コントロールパネル ログイン l sakura.ioコントロールパネルにログインします。上記URLにアクセスします。 l 以下の画⾯で会員認証を求められるので、会員ID、パスワードを利⽤してログインします。 ※ログイン済みのセッションがある場合、この画⾯は省略されます。 36 https://secure.sakura.ad.jp/iot/

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

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

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

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

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

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

    ⽩ラベル表記
  39. モジュール登録(単品) l モジュール追加に成功すると[ モジュールを追加しました ]ダイアログが表⽰されるので、 【 モジュール⼀覧へ戻る 】ボタンをクリックしてプロジェクト詳細画⾯に戻ります。 ※ID/PASSが正しくない、もしくは登録済モジュールを追加しようとした場合は下記ダイアログが表⽰されます 45

    登録が成功した場合 登録が失敗した場合 invalid は 登録⽤ID / 登録⽤パスワード のいずれかに誤りがあります、再度ご確認ください already registered は別の会員IDで登録されています、まず過去に登録した 会員IDでログインのうえ、該当モジュールの登録を解除ください
  40. モジュール登録 l モジュールを登録しました。表⽰されているモジュールIDは⼀意のものであり、届いたデータ の送信元判別や、デバイスへのデータ送信の際に使⽤します。 ※モジュールIDは後ほど使いますのでメモしてください。 47 メモ情報あり

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

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

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

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

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

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

  47. ④ Webサービス連携 ① 今回のハンズオンの流れ 54 ② Raspberry Piと デバイスの設定 温度センサ

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  48. HATの組み⽴て l HATにスペーサーを取り付け、ネジ⽌めします。 55

  49. HATとRaspberry Piの接続 l Raspberry Pi本体の上に HAT(sakura.ioモジュール付き)が覆い 被さるような形で重ねます。 l 接続しているピンにズレがないかを確認して ください。

    l 合っている事を確認したら、ピンをしっかりと 奥まで差し込み接続します。 l まだ電源は⼊れないでください。 56
  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
  51. Raspberry Piの起動 l Raspberry PiのHDMI端⼦とディスプレイを接続します。 l Raspberry PiのmicroUSB端⼦にACアダプタをつなぐと⾃動的に電源が⼊ります。 l しばらく放置するとモニターにデスクトップ画⾯が出てきます。

    l なお、初回起動時にセットアップ画⾯が出てくる場合がありますが、今回は使⽤しませんの でウィンドウ右上の×ボタンでウィンドウを閉じてください。 58
  52. Raspberry Piの設定 l メニューから Raspberry Pi Configuration を起動します。 59

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

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

    l サンプルプログラム集のディレクトリに移動します。 % cd handson-sample/rpi 61
  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
  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
  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
  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
  59. Raspberry Piから送信されたデータの確認 l sakura.ioの管理画⾯で、Raspberry Piから送信されたデータを受信できているかを 確認できます。 l プロジェクトの詳細から作成したWebSocketの【 】をクリックします。 66

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

    送信した数値は “value”の欄に ⼊ります
  61. ACアダプタの取り外し lFaboを接続するため、いったんRaspberry Piをシャットダウンし、 ACアダプタを取り外します。 68

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

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

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

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

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

  68. デバイスから送信されたデータの確認 l サービス連携の編集画⾯下部に、デバイスから送信したデータがリアルタイムに表⽰されます l 最新データ (50件) ではモジュールから受け取ったデータを以下のように確認できます タイプ︓ プラットフォームからの内容に応じて、いくつかの種類に分かれる ・channels

    ︓モジュールからのデータ ・connection ︓接続の開始/終了 ・location ︓簡易位置情報 ・keepalive ︓WebSocketセッション確認 ペイロード︓ 受け取ったデータの payload部が表⽰される 時刻︓ プラットフォームで該当のメッセージ を受け取ったタイムスタンプ 75 モジュール︓ データを送信した モジュールのID
  69. デバイスから送信されたデータの確認 l 【 受信データ 】をクリックするとチャンネルごとに最新の受信データが確認できます。 l モジュールは同⼀ですが、データの内容によりタイプやペイロードが異なります。 76 チャンネル︓ 各チャンネルに届いた最終のValueを表⽰

    接続ボタン︓ クリックでログ出⼒を開始/停⽌ 表⽰切り替えボタン︓ 表⽰種別の切り替え
  70. 77 Webサービス連携 (さくらのクラウド後編その1)

  71. ④ Webサービス連携 ① 今回のハンズオンの流れ 78 ② Raspberry Piと デバイスの設定 温度センサ

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

    キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l これまでの作業で、温度とカウント値をRaspberry Piからsakura.ioに送信することができました。 l 今度は、sakura.ioにあるデータをWebSocketで受信し、温度とカウント値を出⼒してみましょう。 ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰
  73. Node-REDサーバのIPアドレスをコピー l サーバ作成のステータスが成功に遷移した時点でサーバのIPアドレスを確認できます。 コントロールパネル左側の【 サーバ 】をクリックすると作成済みサーバの⼀覧が表⽰されます。 l 最右部【 ▼ 】をクリックし、【

    IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 80 ***.*** メモ情報あり
  74. Node-REDサーバにログイン l ターミナルソフトウェアを起動してください。(Windowsの⽅はTeraTermなど、 Macの⽅は標準のターミナル) l Node-REDサーバにsshでログインします。 % ssh root@<サーバのIPアドレス> %

    ssh root@ww.xx.yy.zzz 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 root@ww.xx.yy.zzzʻs password: (管理ユーザのパスワードを⼊⼒) [root@nodered ~]# 81
  75. Pythonおよびモジュールのインストール l Python3をインストールします。(同時にパッケージ管理ツールpipもインストールさ れます) % yum install python3 l Python3でWebSocketを扱うためのモジュールをインストールします。

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

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

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

  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
  81. ④ Webサービス連携 ① 今回のハンズオンの流れ 88 ② Raspberry Piと デバイスの設定 温度センサ

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

    キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l sakura.ioは、IoTデバイスに向けてデータを送信し、デバイスを制御することもできます。 l Node-REDサーバから値を⼊⼒し、その値に応じてRaspberry Piに接続されたLEDを点灯/ 消灯してみましょう。 moduleで指定された モジュールにデータを送信 コマンドラインに⼊⼒した値 に基づきJSONデータ送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏
  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
  84. サンプルプログラムの設定 l [ module_id ] に設定する値は、sakura.ioの管理画⾯でプロジェクトに表⽰されてい たuから始まる12桁の⽂字列です。 91

  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
  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
  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
  88. 今回のハンズオンの流れ 95 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン

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

  90. ④ Webサービス連携 ① 今回のハンズオンの流れ 97 ② Raspberry Piと デバイスの設定 温度センサ

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  91. http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ Node-RED サーバへのログイン l Webブラウザで上記URLにアクセスします。 ※[ Node-REDのWebUIポート]に【 80 】を指定した場合はポート番号を省略できます

    ※サーバ⾏を右クリック、もしくは⾏最右部にある 【 ▼ 】 をクリックで簡単にIPアドレスをコピーできます 98
  92. Node-RED サーバへのログイン l Node-REDのアクセス画⾯では、[ Username ]と[ Password ]欄に 指定した【 Node-REDのログインID

    】と【 Node-REDのログインパスワード 】を ⼊⼒し、【 ログイン 】をクリックします。 99
  93. Node-RED サーバへのログイン l ログインが成功すると以下の画⾯が表⽰されます。 100

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

    コンソール デプロイ
  95. Node-RED WebSocketノードの作成 l まずはWebSocketからのデータを受け取るノードを追加します。 l ノードパレットの【 ネットワーク 】から【 websocket in

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

    clientを追加... 】を選択した状態で、URLの⾏にある【 】をクリックします。 103
  97. Node-RED WebSocketノードの作成 l [ URL ]欄には、sakura.ioのWebSocketのURL情報をペーストします。 l [ TLS設定 ]はデフォルトの【

    新規にtls-configを追加... 】のまま、[ 送信/受 信 ]もデフォルトの【 ペイロードを送信/受信 】を選択し、【 追加 】をクリックします。 104
  98. Node-RED WebSocketノードの作成 l 指定する[ URL ]の値は、コンパネの連携サービスで確認できる⾚枠部分です。 ⾚枠部分の情報をコピーして、websocket inノードのURL部分にペーストします。 ※URLの末尾とTokenは同⼀の⽂字列となるので、Token情報は不要です 105

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

  100. Node-RED Debugノードの作成 l 次に、ノードパレットの【 共通 】から【 debug 】ノードをシートにドラッグ&ドロップします。 ※Debugノードは⾃動で[ msg.payload

    ]に名前が変わります、設定は不要です 107
  101. Node-RED ノード間の接続 l websocket inノード右端とDebugノード左端をドラッグ&ドロップで繋ぎます。 108

  102. Node-RED フローのデプロイ l 各ノードを接続し、準備が完了したら、右上部の 【 デプロイ 】 をクリックします。 デプロイが成功すると[ デプロイが成功しました

    ]というメッセージが上部に表⽰されます。 109
  103. 動作確認 l 不備がなければwebsocket inノード下部に[ ]が表⽰されます。 ※2018/10/10現在、⽇本語表⽰の場合 と誤訳されて表⽰されます。 l 【 デバッグ(

    ))】タブをクリックするとsakura.ioからのJSONデータを確認できます。 ※debugノード右端の緑マークをクリックするとコンソールへの出⼒が停⽌されます。 110
  104. l 次に追加するフローの動作を阻害しないよう[ フロー1 ]を以下⼿順で無効にします。 フローの無効化 111 1. [ フロー1 ]タブを

    ダブルクリックする 2. フローを編集画⾯で[ 状態 ]が 【 有効 】になっていることを確認して クリックする 3. [ 状態 ]が【 無効 】になったことを 確認できたら、【 完了 】をクリックする 4. [ フロー1 ]タブが点線表記になり 【】マークが付いていることを確認
  105. Node-RED フローサンプルの紹介 l 次にサンプルのフローを利⽤するために必要なノードをNode-REDサーバに追加します。 l 右上部の[ メニュー( )]から【 パレットの管理 】をクリックし、【

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

  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://<IPアドレス>:<指定した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 】でコピーします
  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
  109. l ⽤意されたフローはほぼ構成は済んでいます。以下の3つのノードを設定することで 動作します。 Node-RED フローサンプルの紹介 116 ダッシュボードでの可視化 ボタン操作によるデバイス制御 sakuraio_in (websocket

    inノード) moduleID_set (Functionノード) sakuraio_out (websocket outノード)
  110. l [ ダッシュボード画⾯でのグラフ表⽰ ]フローでは、sakura.ioから受け取った JSONデータから温度の値を抽出し、現在値と⼀定間隔での推移を可視化します。 l sakuraio_inノード(websocket in)を設定することで動作します。 Node-RED フローサンプルの紹介

    117 ⽂字列として受け取った JSONデータの変換 sakura.ioのWebSocket から情報を取得 モジュールからのデータのみを通過 (type == channels) ../ui/ にグラフとして可視化 温度(ch0)データだけを抽出
  111. Node-RED フローサンプルの紹介(GUI表⽰ - WebSocket設定) l 作成された【 WebSocket inノード(sakuraio_in) 】をダブルクリックし、先程の⼿順と 同様、種類は【

    接続 】、URLは先程指定したもの、名前は任意の名称を⼊⼒します。 ※URLは過去設定したものがある場合、ドロップダウンで指定できます l 全て設定したら【 完了 】をクリックします。 118 先ほど設定したものを選択します
  112. Node-RED フローサンプルの紹介(GUI表⽰ - WebSocket設定) l 画⾯右上の【 デプロイ 】をクリックします。 119

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

    UIポート番号>/ui/
  114. ④ Webサービス連携 ① 今回のハンズオンの流れ 121 ② Raspberry Piと デバイスの設定 温度センサ

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

    キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED l 現時点の設定ではボタンでのデバイス制御は正しく動作しません。これは制御対象となる モジュールIDと、クラウドの受け⼝となるWebSocketのURLを指定できていないためです。 l そのため、最後にNode-REDにて、上記2つのパラメータを指定します。 ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ モジュールIDとWebSocketURLが 指定されていないため動作しない フロー内でモジュールIDと WebSocketURLを指定する
  116. Node-RED フローサンプルの紹介(デバイス制御 – モジュールIDの指定) l [ デバイス制御(モジュール...) ]フローでは、指定したモジュールIDを元に制御⽤の JSONデータを8個⽣成し、それらを変数にセットします。 l

    moduleID_setノード(Function)にモジュールIDを追記することで動作します。 l このフローはデプロイされた時に1回だけ動作します。 123 JSONデータに埋め込む モジュールIDを定義 デプロイ時に⾃動実⾏ 制御⽤JSONデータ⽣成 (変数context.global.xxxにセット)
  117. Node-RED フローサンプルの紹介(デバイス制御 – モジュールIDの指定) l 【 functionノード(moduleID_set) 】をダブルクリックし、設定画⾯を開きます。 l コード2⾏⽬の【

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

    125
  119. Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l [ デバイス制御(動作部分) ]フローでは、ダッシュボード画⾯でクリックするボタンの 表⽰を⾏います。 l

    sakuraio_outノード(websocket out)を設定することで動作します。 l ダッシュボードでボタンが押下されるたび、JSONデータを指定のWebSocketに送信します。 126 指定したWebSocketのURL にJSONデータを送信 ../ui/ でボタンとして表⽰ クリックされると制御⽤JSONデータを送出
  120. Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l 作成された【 WebSocket out(sakuraio_out) 】ノードをダブルクリックし、設定画⾯ を開きます。先程の⼿順と同様、種類は【

    接続 】、名前は【 任意の名称 】を⼊⼒します。 l URLは過去設定したものがある場合、ドロップダウンで指定できます。 l 全て設定したら【 完了 】をクリックします。 127
  121. Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l 画⾯右上の【 デプロイ 】をクリックします。 128

  122. Node-RED フローの動作確認 l ダッシュボード右側に並んでいるボタンでLEDを制御します。 ※有効なボタンは「RED(D7) ON」「RED(D7) OFF」「ALL ON」「ALL OFF」です。 l

    押したボタンに応じて、Raspberry Piに接続されたLEDが点灯/消灯することを確認して ください。 129
  123. 今回のハンズオンの流れ 130 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン

    キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED moduleで指定された モジュールにデータを送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏ ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ l これで、センサーからsakura.io経由でのデータ受信と活⽤、およびWebから sakura.io経由でデータを送信してのIoTデバイス操作の両⽅ができるようになり ました︕ ボタン操作で指定した内容 に基づきJSONデータ送信
  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
  125. 132 IoTデバイスのセキュリティ向上

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

    マルウェア ハッカー ボットネット WiFi SSL/TLS IoTデバイス PC/Web
  127. Raspberry PiのWiFiを切断 lRaspberry PiのWiFiを切断します。(画⾯右上にて設定) 134

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

  129. 136 参考 DataStore API

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

    呼び出すことができます。 137 リアルタイム連携 (WebSocket他) ⾮リアルタイム連携 (DataStore API) 外部システム sakura.io モジュール データストア HTTP MQTT WebSocket HTTP
  131. 【参考】連携サービスの設定(DataStore API) l 連携サービスの選択画⾯で 【 DataStore API 】 をクリックします。 138

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

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

    】をクリックします。 【参考】連携サービスの設定(DataStore API) 140
  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】︓取得するチャンネル指定
  135. 【参考】連携サービスの設定(DataStore API) /channels の取得 l 指定された条件を元に【 Try it out! 】をクリックすると、[

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

    Response Body ]欄に条件に応じ たデータを返します。またクリック後に返される[ Request URL ]から同様のデータを取得できます。 144 { "meta": { "count": <取得した件数>, "cursor": “<sizeで指定した件数を超えた場合に、次のレスポンスを取得するためのカーソル>”, "match": <ヒットした件数> }, "results": [ { “datetime”: “<対象のRMをプラットフォーム側で受信した時間>”, "id": “<格納されたRMのID>", "module": “<データが送信されたモジュールのID>", "payload": { "channels": [ { "channel": <データが格納されているチャンネル>, "type": “<送信されたデータの型式>", "value": <typeで指定された型式でのデータ> } ] }, "type": "channels" }, { “datetime”: … #以下[message]単位のデータ
  138. 145 参考 サンプルスケッチ

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

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

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

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

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

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

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

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

    Unlock Starting update Waiting for update . 備考
  147. 【参考】Shell.ino 154 構⽂ 【reset】モジュールのソフトウェアリセットを実⾏する 出⼒結果 reset >reset > 備考 シリアルモニタに実⾏結果は表⽰されません。

    ソフトウェアリセットを実⾏するとモジュールが再起動を⾏います。 モデムの起動、および通信確⽴までにおおよそ1分程度を要します。
  148. 【参考】Shell.ino 155 構⽂ 【enqueue】送信キューにデータを格納する 出⼒結果 enqueue <ch> <type> <value> >enqueue

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

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

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

    受信キューに貯められたデータの⼀部だけを削除することはできません。
  153. 【参考】Shell.ino 160 構⽂ 【dequeue】受信キューに貯められたデータをすべて受信する 出⼒結果 dequeue >dequeue empty 備考 受信キューに貯められたデータの⼀部だけを受信することはできません。

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

    受信可能なデータが存在しない場合はemptyを返します。 閲覧したデータは削除されずキューに残されます。
  155. 【参考】Standard.ino 162 保持している情報をすべて書き出すプログラムです。シリアルモニタに以下の情報を出⼒しながら カウント値を0チャンネルに書き込み、キューが⼀定量貯まると送信します。

  156. 163 最後に

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

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

  159. 最後に 〜sakura.io〜 l 登録解除実⾏を確認されます。問題ない場合は再度 【 登録解除 】 をクリックします。 モジュールの削除には数秒かかります。 l

    削除が完了すると、プロジェクトから該当モジュールの表⽰が消えていることを確認できます。 166
  160. 最後に 〜sakura.io〜 l 次は連携サービスとともにプロジェクトを削除します。 l プロジェクトの【 詳細 】から、プロジェクト詳細画⾯で【 削除 】をクリックします。

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

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

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

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

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

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

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

  168. 最後に 175 さくらインターネットでは、「さくらクラブ」としてハンズオン等の イベントをともに開催いただける仲間(部員)を募集しています。 (テーマはIoTに限らずクラウドやVPS、スタートアップ系ネタもOK︕) ご興味があれば、Come and join us &

    Feel free to contact me! 連絡先 ︓ sakura-club@sakura.ad.jp さくらクラブ ︓ http://www.slideshare.net/MasayaHayashi/lt20151224
  169. 176 そこに、さくら

  170. 177 質疑応答