$30 off During Our Annual Pro Sale. View Details »

Raspberry Pi & sakura.io 体験ハンズオン/ sakuraio hand...

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. さくらインターネット株式会社

    コミュニティマネージャー 法林 浩之 だれもが、データを活かせる世の中へ。
  2. 本ハンズオンの⽬的とお願い l 本ハンズオンは sakura.io を使⽤し、組込み、Web/アプリ開発、それぞれのスキルセッ トを⼤きく超えることなく、Internet of Things(IoT) に携わることができることをご体験 いただくものです。

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

    モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④
  4. 今回のワークショップでご提供するもの 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モジュール (アンテナ取付済み)
  5. Webサービス連携 ① 今回のハンズオンの流れ 16 ② Raspberry Piと デバイスの設定 温度センサ sakura.io

    モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED ④ç
  6. Node-REDサーバの作成 l サーバ作成のステータスが成功に遷移した時点でサーバのIPアドレスを確認できます。 コントロールパネル左側の【 サーバ 】をクリックすると作成済みサーバの⼀覧が表⽰されます。 l 最右部【 ▼ 】をクリックし、【

    IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 31 ***.*** メモ情報あり
  7. ④ Webサービス連携 ① 今回のハンズオンの流れ 34 ② Raspberry Piと デバイスの設定 温度センサ

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  8. sakura.io コントロールパネルの考え⽅ 35 プロジェクトC プロジェクトB プロジェクト モジュール3 ☑ データストアプラン 有償版/無償版

    ☑ 簡易位置情報提供 利⽤する/しない ☑ ファイル配信 ファイル1、ファイル2... 連携サービス3 モジュール / 連携サービス プロジェクトに対して複数登録可能 オプションサービス プロジェクトに対して1つ/1セット設定可能 モジュール2 連携サービス2 モジュール1 uAAAAAAAAAA 連携サービス1 WebSocket l sakura.ioは【 プロジェクト 】という単位で管理します。 l プロジェクトには【 モジュール 】【 連携サービス 】を複数紐付けることができます。 l 各種【 オプションサービス 】はプロジェクトに対して1つもしくは1セット設定できます。
  9. モジュール登録(単品) l モジュール追加に成功すると[ モジュールを追加しました ]ダイアログが表⽰されるので、 【 モジュール⼀覧へ戻る 】ボタンをクリックしてプロジェクト詳細画⾯に戻ります。 ※ID/PASSが正しくない、もしくは登録済モジュールを追加しようとした場合は下記ダイアログが表⽰されます 45

    登録が成功した場合 登録が失敗した場合 invalid は 登録⽤ID / 登録⽤パスワード のいずれかに誤りがあります、再度ご確認ください already registered は別の会員IDで登録されています、まず過去に登録した 会員IDでログインのうえ、該当モジュールの登録を解除ください
  10. ④ Webサービス連携 ① 今回のハンズオンの流れ 54 ② Raspberry Piと デバイスの設定 温度センサ

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  11. HATとRaspberry Piの接続 l Raspberry Pi本体の上に HAT(sakura.ioモジュール付き)が覆い 被さるような形で重ねます。 l 接続しているピンにズレがないかを確認して ください。

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

    l なお、初回起動時にセットアップ画⾯が出てくる場合がありますが、今回は使⽤しませんの でウィンドウ右上の×ボタンでウィンドウを閉じてください。 58
  13. 開発環境の準備 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
  14. 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
  15. 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
  16. ⼿⼊⼒で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
  17. サンプルプログラムの実⾏ 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
  18. デバイスから送信されたデータの確認 l サービス連携の編集画⾯下部に、デバイスから送信したデータがリアルタイムに表⽰されます l 最新データ (50件) ではモジュールから受け取ったデータを以下のように確認できます タイプ︓ プラットフォームからの内容に応じて、いくつかの種類に分かれる ・channels

    ︓モジュールからのデータ ・connection ︓接続の開始/終了 ・location ︓簡易位置情報 ・keepalive ︓WebSocketセッション確認 ペイロード︓ 受け取ったデータの payload部が表⽰される 時刻︓ プラットフォームで該当のメッセージ を受け取ったタイムスタンプ 75 モジュール︓ データを送信した モジュールのID
  19. ④ Webサービス連携 ① 今回のハンズオンの流れ 78 ② Raspberry Piと デバイスの設定 温度センサ

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

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

    IPアドレスをコピー 】をクリックすることで、該当サーバのIPア ドレスをコピーすることができます。 Node-REDサーバのIPアドレスは後ほど使いますのでメモしてください。 80 ***.*** メモ情報あり
  22. 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
  23. サンプルプログラムの設定 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 ここにペースト
  24. ④ Webサービス連携 ① 今回のハンズオンの流れ 88 ② Raspberry Piと デバイスの設定 温度センサ

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

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

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

    sakura.io モジュール Raspberry Pi ③ 前編 後編 ハンズオン キット WebSocket 連携 サービス モジュール sakura.ioの設定 温度表⽰ LED制御 プロジェクト LED
  32. Node-RED サーバへのログイン l Node-REDのアクセス画⾯では、[ Username ]と[ Password ]欄に 指定した【 Node-REDのログインID

    】と【 Node-REDのログインパスワード 】を ⼊⼒し、【 ログイン 】をクリックします。 99
  33. Node-RED WebSocketノードの作成 l [ URL ]欄には、sakura.ioのWebSocketのURL情報をペーストします。 l [ TLS設定 ]はデフォルトの【

    新規にtls-configを追加... 】のまま、[ 送信/受 信 ]もデフォルトの【 ペイロードを送信/受信 】を選択し、【 追加 】をクリックします。 104
  34. 動作確認 l 不備がなければwebsocket inノード下部に[ ]が表⽰されます。 ※2018/10/10現在、⽇本語表⽰の場合 と誤訳されて表⽰されます。 l 【 デバッグ(

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

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

    ノードを追加 】タブ の検索窓から【 node-red-dashboard 】を検索します。 l ノードがヒットしたら【 ノードを追加 】をクリックします。 112
  37. 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 】でコピーします
  38. Node-RED フローサンプルの紹介 l Node-RED右上の[ メニュー( )]から 【 読み込み 】 をクリックし、上記URLで

    コピーした内容をペーストのうえ、【 読み込み 】 をクリックします。 l 記載されたJSONの内容に基づき、シートに新たにフローが作成されます。 115 コピーしたJSONをペースト https://github.com/sakuraio/handson-sample/blob/reform/firststep/part2/nodered-firststep-part2.json
  39. l [ ダッシュボード画⾯でのグラフ表⽰ ]フローでは、sakura.ioから受け取った JSONデータから温度の値を抽出し、現在値と⼀定間隔での推移を可視化します。 l sakuraio_inノード(websocket in)を設定することで動作します。 Node-RED フローサンプルの紹介

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

    接続 】、URLは先程指定したもの、名前は任意の名称を⼊⼒します。 ※URLは過去設定したものがある場合、ドロップダウンで指定できます l 全て設定したら【 完了 】をクリックします。 118 先ほど設定したものを選択します
  41. ④ Webサービス連携 ① 今回のハンズオンの流れ 121 ② Raspberry Piと デバイスの設定 温度センサ

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

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

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

    %%moduleID%% 】をsakura.ioのコントロールパネルで確認でき るモジュールID(uから始まる12桁の⽂字列)に変更し、【 完了 】をクリックします。 124
  45. Node-RED フローサンプルの紹介(デバイス制御 – WebSocketURLの指定) l [ デバイス制御(動作部分) ]フローでは、ダッシュボード画⾯でクリックするボタンの 表⽰を⾏います。 l

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

    接続 】、名前は【 任意の名称 】を⼊⼒します。 l URLは過去設定したものがある場合、ドロップダウンで指定できます。 l 全て設定したら【 完了 】をクリックします。 127
  47. 今回のハンズオンの流れ 130 温度センサ sakura.io モジュール Raspberry Pi 前編 後編 ハンズオン

    キット WebSocket 連携 サービス モジュール 温度表⽰ LED制御 プロジェクト LED moduleで指定された モジュールにデータを送信 JSONは電気信号に変換され LEDの点灯/消灯を実⾏ ⼀定間隔で温度と カウント値データを送信 WebSocketにより、 リアルタイムで連携 受信したJSONデータから 温度とカウント値を表⽰ l これで、センサーからsakura.io経由でのデータ受信と活⽤、およびWebから sakura.io経由でデータを送信してのIoTデバイス操作の両⽅ができるようになり ました︕ ボタン操作で指定した内容 に基づきJSONデータ送信
  48. 結局どのくらいかかったか 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
  49. 【参考】連携サービスの設定(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】︓取得するチャンネル指定
  50. 【参考】連携サービスの設定(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数分列挙
  51. 【参考】連携サービスの設定(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】︓指定⽇時の以前と以後指定
  52. 【参考】連携サービスの設定(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]単位のデータ
  53. 【参考】Shell.ino 154 構⽂ 【reset】モジュールのソフトウェアリセットを実⾏する 出⼒結果 reset >reset > 備考 シリアルモニタに実⾏結果は表⽰されません。

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

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

    sendコマンドを実⾏すると、貯められたデータは16個分を1つのメッセージとして送信します。 キューが17個以上存在する場合、2つ⽬のメッセージも送信され、キューから削除されます。
  56. 【参考】Shell.ino 157 構⽂ 【size】送信/受信キューに貯められたデータ数を確認する 出⼒結果 size >size Tx Queue Avail:

    32 Queued: 0 Rx Queue Avail: 32 Queued: 0 備考 Tx Queue は送信キュー、Rx Queue は受信キューを表します。 Availは利⽤可能数、Queuedは貯められているキューの数を表します。
  57. 最後に 〜sakura.io〜 l 登録解除実⾏を確認されます。問題ない場合は再度 【 登録解除 】 をクリックします。 モジュールの削除には数秒かかります。 l

    削除が完了すると、プロジェクトから該当モジュールの表⽰が消えていることを確認できます。 166