さくらのIoTプラットフォーム「sakura.io」を使ってみよう
https://sakura.io

2018/12/08

さくらインターネット株式会社

コミュニティマネージャー

法林 浩之(C) Copyright 1996-2017 SAKURA Internet Inc

はじめに

本日の資料はこちらで公開します
https://www.slideshare.net/hourin/

もしくは「slideshare 法林」で検索
2

SNSへの投稿、大歓迎です！

#sakuraio #osc18fk

3

私について法林 浩之
写真@hourin
どんな人？
・フリーランスエンジニア
・さくらインターネット コミュニティマネージャー- 会社主催イベントの運営- 社外イベント対応(協賛/出展/登壇/取材など)- さくらのナレッジ 編集長
・日本UNIXユーザ会 幹事 (元会長)- さまざまなコミュニティと共同でイベントを開催- 全国各地のイベントで研究会を開催
・くわしくは「法林浩之」で検索
4

どんな話をするのか• IoTを取り巻く状況• IoTサービスを作るときの問題点• sakura.ioについて• 開発経緯• サービス概要• 利用事例• sakura.ioとOSSの組み合わせ5

さくらインターネットについて
商号
代表取締役

大阪本社
（梅田/大阪）さくらインターネット株式会社（SAKURA Internet Inc.）
田中 邦裕

設立

1999年8月17日（サービス開始：1996年12月23日）

資本金

22億5,692万円

事業内容

インターネットでのサーバの設置およびその管理業務
電気通信事業法に基づく電気通信事業
マルチメディアの企画並びに製作・販売

従業員数

495名（連結/2017年3月末）

所属団体

特定非営利活動法人 日本データセンター協会（JDCC）
社団法人 コンピュータソフトウェア協会（CSAJ）
社団法人 日本ネットワークインフォメーションセンター（JPNIC）
社団法人 インターネットプロバイダー協会（JAIPA）

グループ会社

アイティーエム株式会社
https://www.itmanage.co.jp/
株式会社S2i
http://www.s2i.life/
ゲヒルン株式会社
https://www.gehirn.co.jp/
株式会社Joe’sクラウドコンピューティング https://joes.co.jp/
ビットスター株式会社
https://bitstar.jp/
櫻花移動電信有限公司

東京支社（西新宿） 福岡オフィス（赤坂）6さくらインターネットの事業領域
新規サービスレンタルサーバ
さくらのレンタルサーバ
さくらのマネージドサー
バ

VPS・クラウド（仮想化基盤）

IoT
通信モジュールから提供することで、セキュアな通信環境とデータの保存や処理システムを一体型で提供するIoTプラットフォームサービス

IoT さくらのセキュアモバイルコネクト
お使いのデバイスを、SIMからさくらのクラウドのまでインターネットを経
由せず、安全に接続できるIoT向けモバイルサービス

専用サーバ・データセンター
ハウジング
リモートハウジン

AI・人工知能コンテナ

機械学習、データ解析、高精度シミュ
レーション用途に特化したGPU搭載の専用サーバサービス

Dockerコンテナのマネージド
サービスであり、コンテナを手
軽かつシンプルに実行・運用

グ

新しい社会のインフラを支えながら、最先端のサービスを構築
7

IoTを取り巻く状況
8

IoTと呼ばれているもの

http://mattturck.com/2016-iot-landscape/9IoTと呼ばれているもの“インターネット"と同じぐらい広すぎる
10

IoTと呼ばれているもの(垂直統合型)

モノとサービスの両方を提供(垂直統合型)
11

IoTと呼ばれているもの(水平統合型)

汎用的な基盤を提供(水平統合型)

12

IoTと呼ばれているもの(要素技術)

各種構成要素を提供(要素技術)

13

sakura.ioの位置付け

sakura.ioはここに分類されるサービス

ソフトウェア/接続性/分析/セキュリティなどのプラットフォームサービス

http://mattturck.com/2016-iot-landscape/14

IoTは次の世の中を作る部品

IoTの領域 → 収集

AIの領域 → 情報化

モノゴトをデバイス経由でデータ化し収集、蓄積

データのクレンジング処理
他情報と組み合わせによる意味付け

生活

情
報

ロボティクスの領域→ フィードバック
情報を活用し具体的なアクションに反映
and,more..

15

IoTデバイスも急激に増加中
世界のIoTデバイス数の推移及び予測

403億

年平均成長率予測

13.6%

274.9
億

2017

2018

2019

2020

出典：「平成30年版情報通信白書」（総務省）

16

どうやって

データ
集めるの？
17

「どうやってデータ集めるの？」に挑戦

sakura.ioは「どうやってデータ集めるの？」に挑戦するサービス

ソフトウェア/接続性/分析/セキュリティなどのプラットフォームサービス

http://mattturck.com/2016-iot-landscape/18

IoTサービスを作るときの問題点
19

IoTサービスを作る人がやりたいことモノからデータを取得してWebやアプリで使いたい！
Webやアプリから指令を出してモノを操作したい！
通信 ネットワーク

DB

ミドル

API

モノをインターネットにつないで何かしたい20

IoTサービスを作る人が実際にやること

通信 ネットワーク

DB

ミドル

API

ハードウェア/ソフトウェア両方の知識が必要
21

IoTサービスを作るときに必要な作業

IoTサービスを作るときに必要な作業• ハードウェア(モノ作り)• 機構設計 / 電気設計 / ファームウェア設計 / 通信設計

• ソフトウェア(フロントエンド)• UI設計 / アプリ開発• ソフトウェア(バックエンド)• インフラ設計 / ミドルウェア設計 / DB設計 / API設計• セキュリティ• ユーザ認証 / 機器認証 / 暗号化 / バックアップ
22

IoTサービスを作るときに必要な作業

IoTサービスを作るときに必要な作業• ハードウェア(モノ作り)• 機構設計 / 電気設計 / ファームウェア設計 / 通信設計

これらを全部できる人は• ソフトウェア(バックエンド)
ほとんどいない• ソフトウェア(フロントエンド)• UI設計 / アプリ開発• インフラ設計 / ミドルウェア設計 / DB設計 / API設計• セキュリティ• ユーザ認証 / 機器認証 / 暗号化 / バックアップ
23ハードウェアエンジニアの守備範囲

通信 ネットワーク

DB

ミドル

API

物理的なことや電気的なことはわかるがTCP/IPやHTTPのことはわからない24

ソフトウェアエンジニアの守備範囲

通信 ネットワーク

DB

ミドル

API

TCP/IPやHTTPのことはわかるが物理的なことや電気的なことはわからない

25

通信方法をどうするか

モノをネットにつなぐ手段は増えている

TCP/IP

not IP

近くと
つながる
どこでも
つながる
26

通信方法をどうするか

IoT向けの通信方式として注目

出典：ビジネスネットワーク.jp http://businessnetwork.jp/Detail/tabid/65/artid/5106/Default.aspx

27通信方法をどうするかどの方式にも弱点がある• LAN / WiFi：回線やアクセスポイントが必要• モノをつなぐためだけにBフレッツを敷設？

• LTE• 山奥や地中深くでは電波が入らない• 空中では使用禁止(電波法)• Bluetooth：近距離でないと使えない• その他：普及していない28

セキュリティをどう守るか• IoTで扱うデータは個人情報が多い• 生体情報、位置情報、など• データの暗号化は必須• IoTデバイスはコンピュータとしては非力な場合が多い• Linuxでは重いので軽量なリアルタイムOSが普及• デバイス側に暗号化の仕組みを実装するのは難しい• ハードウェアエンジニアにはTCP/IPやSSLの実装は困難• インターネットにつなぐと攻撃対象になる• 不正アクセスを受けて乗っ取られる• DoS攻撃を受けて通信できなくなる
29

その他の問題• 多様な環境に適応する必要性• WiFiがあるとは限らない• スマホがあるとは限らない• できれば設定や操作をなくしたい• デバイスが勝手にデータを送受信すればよい• 初期投資が大きい• モノの製造コストがかかるのが大きな負担• サービスの継続にコストがかかる• デバイスの量産、保守、サポートなど
30

さくらインターネットが考える
IoTソリューション

31

さくらインターネットの考えるIoTソリューション

1. どこでも、だれでも
2. 安全なネットワーク
3. ノーコミット＆ノーリミット
4. 検証から、量産まで
5. 圧倒的コスパ
32

どこでも、だれでもLTEのメリット
1. 高いカバー率（島嶼、山間）
2. 移動体でも使用可能
3. 設定不要で繋がる
LTEなら最終利用者も手軽に利用できる33

安全なネットワーク

マルウェア

ハッカー

ボットネット

自分だけのネットワー
閉域網
ク

インターネットからの直接アクセス不可
デバイス⇔クラウド間のリスクポイントを削減

34

ノーコミット＆ノーリミット

1. 契約期間縛りなし
2. 契約/解約手数料なし
3. 再登録が何度でも可能
4. 速度制限なし
IoT用途での課題となる各種制約や上限を撤廃

35

さくらが提供するIoT向けサービス
セキュアモバイルコネクト

IoT向けSIMの提供

プラットフォームの提供

デバイスからコンピューティング
リソースにセキュアに接続できる
モバイル回線モジュール＋クラウドの一体提供で開発スピードを向上、スケール対応や運用保守はさくらで実施

カード型SIM

チップ型SIM

専用モジュール

基本機能（単体方式 or ゲートウェイ方式） （つなぐ・貯める・連携する）

36

sakura.io（さくらアイオー）

37

IoTサービスを作るときの問題点

IoTサービスを作る人がやりたいことモノからデータを取得してWebやアプリで使いたい！
Webやアプリから指令を出してモノを操作したい！
通信 ネットワーク

DB

ミドル

API

モノに関する部分と、Webサービスやアプリの部分だけ作りたい38

IoTサービスを作るときの問題点

IoTサービスを作る人が実際にやること

通信 ネットワーク

DB

ミドル

API

ネットワークとデータをやり取りしたいだけなのに…
やらなければならないことが多すぎる39

さくらインターネットの取り組み

通信⇔データ連携
さくらインターネットにおまかせ

通信 ネットワーク

DB

ミドル

API

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

40

sakura.ioが提供する価値

組み込み側はモノとの電気信号 / Web側はサービスとのJSONデータ
41のやり取りに注力可能

他のIoTプラットフォームとの差異

sakura.io
や
り
た
い

他社IoT
プラットフォームIoT用MVNO事業者

企画・アイディア「データを迎えに行く」という発想

センサー/チップ・モノからのアウトプットだけでなくモノへのインプットも・電源を入れるだけで利用可能

デバイス（外装、基板、ファームウェア）

サービス（可視化/予測/効率化）

や
ら
ね
ば
な
ら
な
い

データの送受信手段
安全な通信経路
デバイス認証/管理プラットフォーム機能（収集/蓄積/連携）【 やりたい 】に注力できるプラットフォームとして提供
42

sakura.io
サービス詳細43

データセンタ事業者だからできたデータの収集データの蓄積ラージスケール対応

データの連携アップデート

運用機能

障害切り分け、復旧

セキュリティ

必要な機能・運用をプラットフォームサービスとして提供
IoTデバイスやサービスごとの基本機能開発や運用設計は不要

44

sakura.ioモジュール

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

34mm

LTEモデムチップ
通信制御用MCU

SIMカードコネクタ
46mm

SDカードほぼ2枚分に収まるコンパクトサイズ
モノ側の通信に必要なすべてを凝縮

45どこでもつながる通信モジュール

データの収集46mm

量産性に配慮した“基板間コネクタ”を採用

LTE
2.4GHz920MHz(LoRa)

34mm

データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

方式

GW

特徴

通信可能
レンジ

伝送
速度

消費
電力

LTE

不要

単独
使用可

キャリア網内
どこでも

速い

大きい

2.4GHz帯

必要

短距離
大容量

数百メートル

速い

小さい

920MHz帯(LoRa)

必要

長距離
小容量

遅い

小さい

（最大1Km程度）

数キロメートル（最大10km程度）

共通インターフェースおよび寸法のため複数の無線規格への対応が容易46

どこでもつながる通信モジュール

デバイスは単体方式とゲートウェイ方式を提供

47

どこでもつながる通信モジュール

LPWA併用のメリット
1. ラストワンマイル対策
2. デバイスのさらなる省電力化

48データはポリシーに応じたデータストアに自動で保管

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

フリー

ライト

スタンダードプライベート

料金

無料

有料（50円/月）※

有料（200円/月）

有料

専有/共有

共有領域

共有領域

共有領域

専有領域

公開有無

公開

非公開

非公開

非公開

閲覧可能期間

40日間

40日間

2年間

制限なし

リリース

未公開

リリース済みリリース済み未公開※料金は通信モジュール1個あたりの金額となります※ライトプランは現在無料で提供されています

デバイスから送られたデータはポリシーに応じてプラットフォーム内のデータストアに自動で保存される

49

Webエンジニアの負担を軽減する設計

データの収集

リアルタイム連携

データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

JSON形式{"module": "XXXXXXXXX","type": "channels","datetime": "2016-06-01T12:21:11.628907163Z","payload": {"channels": [{"channel": 1,"type": "i","value": 1,"datetime": "2016-06-01T10:21:11.628907163Z"}, {"channel": 2,
…
}]
}

一括連携

HTTP
Request}

データ取り出しやデバイス制御はすべてJSONフォーマットで実施
既存システムや扱いに慣れたクラウドサービスとの接続も可能

50

「安全」を超えた「安心」を

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

さくらの通信モジュール

さくらの通信モジュール

SSL/TLS通信
インターネット

他社モジュール＋さくら提供SIM

デバイスからプラットフォームまでは閉域網経由、他デバイス含め
外部アクセスはAPI経由でのみ行うことでセキュリティを担保

51

さくらが考えるIoTのセキュリティ• インターネット上のサーバ間の通信はSSLを使用• サーバは継続的にアップデート可能• 組み込み機器との通信は構造上安全にする• 閉域網を利用(グローバルネットワークに接続しない)• 通信の暗号化と認証は基本的にLTEを利用• その上で簡易な暗号化と認証をソフトウエアで実装• モノ作りの人にTCP/IPやSSLを実装させない
52

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

時刻提供機能

時刻要求

時刻提供

時刻提供
※一部マイコン側での対応が必要です

スケジュールでの一斉動作といった場合でも通信モジュールから時刻情報を提供可能

53

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

簡易位置情報提供機能
基地局情報

簡易的な
位置情報

※利用には別途月額料金が必要になります

エリアレベルでの大まかな設置場所を収集するようなケースであれば通信モジュールの機能として提供

54

運用を考慮した機能群

データの収集データの蓄積データの連携

ラージスケール対応

アップデート

障害切り分け、復旧

セキュリティ

運用機能

ファイル配信機能
ファイル要求ファイル要求ファイル配信ファイル配信
※一部マイコン側での対応が必要です※別途通信量に対する課金が発生します

設置済みデバイスに対する遠隔アップデート等
ソフトウェアな問題への対処を実現

55

世界のすべてを繋ぎたい
汎用/特定サービスとの連携

世界中で利用できる

世界対応

統一IF
サイズ

[New!]

セキュリティ
連携
サービス

クラウド
スケール

既存システムと連携しやすいフラットな仕組みを世界のどこでも使えるように提供

56

ご提供価格/方式
57

sakura.io 料金体系

つなぐ

初期費用（モジュール購入）
月額費用（回線、プラットフォーム利用）

貯める

連携する

8,000円
60円/月 ～

※料金はモジュール単位58

sakura.io 料金体系（月額費用）
•基本料金

✓

60円/月 ※毎月1万回分の通信が可能なポイントを付与•追加料金✓ 通信回数の追加、オプション機能の利用※特定のオプション機能を利用した場合は別途定額の追加料金がかかります

追加料金
オプション機能利用60円

sakura.io
利用開始

モジュール購入

通信回数追加100円

通信回数追加100円

モジュールB 基本料金

モジュールB 基本料金

60円

60円

モジュールA 基本料金

モジュールA 基本料金

モジュールA 基本料金

60円

60円

60円

N月

N+1月

N+2月

基本料金

5分に1回の通信なら、毎月60円で実現
より幅広いサービスへ適用可能

59

sakura.io 1回の通信に含めることができるデータ（LTEモデル）
sendenqueue

送信（Tx） キュー

最大

128byteマイコン
dequeue

受信（Rx） キュー（自動受信）

32個分のキュー（Tx/Rx）

sakura.ioモジュール

1回の送受信データ（メッセージ）は、最大「128byte（8byte x 16）」時間や送信元情報はプラットフォーム受信時に付与、マイコン側対応不要

60

sakura.io ハードウェア料金表

LTE通信モジュール

Arduino用

商品名

Raspberry Pi用IchigoJam用

必須/オプション

料金

8,000円sakura.io モジュール（LTE）

必須

sakura.io シールド for Arduino

オプション

5,000円sakura.io HAT for Raspberry Pi

オプション

5,000円IchigoSoda / IchigoJam for sakura.io

オプション

5,000円

登録後 60円/月※モジュール金額は個包装のものです※すべて税別表記です61検証から、量産まで
提供方式

数量

用途

個包装

1個〜

少量生産（数台～十数台）
個人利用/プロトタイプ

トレイ

90個単位

少量～中量生産（数百台）
サービス提供開始

不問

自由な部品/レイアウト
大量生産製造ライン投入

ライセンス（プロトコルライセンス）

段階に応じて提供方式を選択可能

62検証から、量産までライセンス方式は通信機能の作り方を提供「自社ソフトウェアに組み入れたい」 に対応
さくらインターネット

お客さま

開発時

 プロトコル仕様書
 ライブラリ／サンプル
コード（C言語・Go言語） 製造・検査手順書

 ファームウェア開発
 通信モジュール開発
 ハードウェア開発

製造時

 SIM

 製造ライン開発
 製造※ ファームウェアのアップデート機構は、お客さまご自身で設計いただく必要があります。
63

利用事例
64

広がる利活用分野

公共
教育
農業
健康
新分野
製造
65

河川の水位計測

https://www.sakura.ad.jp/information/pressreleases/2018/03/30/90212/

https://sakura.io/blog/2018/10/04/eq-lpwa/• 石狩市北部の河川(6か所)の水位計測• 超音波センサーで測定したデータをsakura.ioに送り可視化• LPWA採用により低消費電力化(電池で1年間連続稼働予定)
66

害獣駆除

• イノシシやマングースの駆除に利用• 罠に通信モジュールを装着し動作状況を取得• LTEが不安定な場所ではゲートウェイを利用

http://pcn.club/katsuyama/azure201703/

http://knowledge.sakura.ad.jp/other/7902/

67バス乗客リアルタイムオープンデータシステム• 鯖江市のコミュニティ
バス「つつじバス」• 運転手の操作盤に通信モジュールを装着
し乗客数などを取得• 集計結果はオープン
データとして活用

https://www.sakura.ad.jp/press/2017/0330_sabae-tsutsujibus/
68天草Xアスロン• アウトドアスポーツの競技会• 2016年の大会にて実証実験• パラグライダーの飛行状況を
リアルタイムで表示• 空中ではLTEが使えないのでLoRaを使用• https://thinkit.co.jp/article/10084

69スマートロック• 3G/LTE搭載鍵デバイス「TiNK」• 制作：株式会社 tsumug https://www.tsumug.com/• テンキーで暗証番号を入力しsakura.io経由で認証• 全国の賃貸住宅への導入を目指す
70

sakura.io
products

71メルチャリ

http://edge.tsumug.com/entry/tinktech-sakuraio• メルカリが運営するシェアサイクルサービス• アプリで鍵のQRコードを読み取るとsakura.io経由で解錠• 福岡市内でサービス中
72

sakura.ioとOSSの組み合わせ73sakura.ioの両端はオープン

電気信号とJSONを相互変換する
プラットフォーム
I2C/SPI

JSON

モノ/マイコンクラウド

sakura.ioの両端はオープンな通信方式とデータ形式を採用
74

デバイス側• I2C/SPIで通信できればよい• マイコンとはボードで接続• Arduino / Raspberry Pi / IchigoJam• ライブラリやサンプルプログラムも公開• http://www.arduinolibraries.info/libraries/sakura-io• https://github.com/sakuraio• ブレイクアウトボード(検証ボード)もあり
75インターネット側• sakura.ioで用意したAPIによりリクエストを送出• 対応プロトコル/サービス
{
•
•
•
•
•
•
•

Websocket
Webhook (Incoming / Outgoing)
MQTT Client
DataStore APIAWS IoT
Azure IoT Hub / Azure Event Hubs
Google Cloud Pub/Sub Publisher"module": "XXXXXXXXX","type": "channels","datetime": "2016-06-01T12:21:11.628907163Z","payload": {"channels": [{"channel": 1,"type": "i","value": 1,"datetime": "2016-06-01T10:21:11.628907163Z"}, {"channel": 2,…
}]}• URLの例• wss://api.sakura.io/ws/v1/(ID)• https://api.sakura.io/incoming/v1/(ID)}• JSON形式のデータが返ってくる• お好みのプログラミング言語でJSONデータを処理• 主要な言語はJSONを扱うライブラリあり
76利用例その1
温度・湿度の測定(Node-RED編)77出典：sakura.io体験ハンズオン

http://bit.ly/sakuraio-handson-part2-01
78

システム構成

温湿度データを取得しsakura.ioへ送出
マイコン（Arduino Uno）

sakura.io
モジュール

Websocketでデータを入手し
Node-REDで処理
LTE
閉域網

WebSocket

仮想サーバ
Linux (CentOS)

温湿度センサ79

作業内容

1. sakura.ioの設定
₋₋₋

プロジェクトの作成
さくらの通信モジュールの登録
連携サービス(Websocket)の設定

2. 機器の配線とマイコンのプログラム開発
₋₋₋

通信モジュールとArduinoシールドを接続
温湿度センサーからの出力をArduinoに取り込めるよう配線
温湿度情報をsakura.ioに出力するArduinoのプログラムを作成

3. サーバの作成とデータ加工処理の開発
₋₋
₋

Node-REDサーバを作成
温湿度データを加工するフローを作成
WebSocketでデータを入手し、 Node-REDで加工してグラフ表示＆Twitterに投稿
80sakura.ioの設定②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサsakura.io
モジュール

マイコン（Arduino Uno）

仮想サーバ
81

sakura.ioの設定
プロジェクトの登録

通信モジュールの登録

連携サービスの登録82

連携サービスの設定
連携サービスとして、WebSocketなどのオープンな通信プロトコルや、
AWS IoTなどのようなクラウド事業者のサービスを選択することができます。

83連携サービスの設定（WebSocket）
連携サービスとしてWebSocketを選択すると、WebSocketのURLが設定されます。
このURLにアクセスすると、sakura.ioとの間でJSON形式のデータを送受信します。

84

機器の配線とマイコンのプログラム開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサsakura.io
モジュール

マイコン（Arduino Uno）

仮想サーバ
85

sakura.ioモジュールとArduinoの接続
通信モジュールの下にArduinoシールドを敷き、さらにその下にArduinoを接続します。
通信モジュールにはLTEアンテナを取り付けます。

LTEアンテナ

Arduinoシールド

通信モジュール

Arduino86

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

組み上げ済みキット＋

Grove ベースシールド
87

温度センサーの配線

SIG

SIG

SIG

図に従い、Groveケーブルを使用して温度センサを配線します。

A0：温度センサ88

Arduinoのプログラムの作成
Arduinoにてsakura.ioを制御するためのライブラリをインストールし、
温湿度センサーの情報を送信するプログラムをArduinoに書き込みます。
プログラムが動作すると、シリアルモニタに温度・湿度・カウンタ値などが表示されます。

89

【参考】デバイスから送信されたデータの確認
sakura.ioの管理画面では、デバイスから送信されたデータがリアルタイムで表示されます。

時刻：
データがモジュールのキューに格納された時刻のタイムスタンプ

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

チャンネル
データが格納されたチャンネル番号型：
データの型式値：
送信された値→ 温度→ 湿度→ カウント値90サーバの作成とデータ加工処理の開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

温湿度センサsakura.io
モジュール

マイコン（Arduino Uno）

仮想サーバ
91

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

ノード
パレット

シート

Info/Debug
コンソール

92

Node-REDサーバの作成

作業概要• サーバを作成 (ここではCentOS 7を使用)• Node関連プログラムのリポジトリを登録• Node.jsのインストール• Node-REDのインストール• Node-REDの自動起動設定
93Node-REDサーバの作成
さくらのクラウドには、サーバ作成時に任意のスクリプトを自動実行する「スタートアップスクリプト」機能があります。
スタートアップスクリプトにNode-REDを指定することにより、前ページに掲げた作業がすべて自動的に実行され、Node-REDサーバを簡単に作ることができます。

94

Node-RED フローの作成
sakura.ioからWebSocketで温湿度データを入手し、加工して表示するフローを作成します。
WebSocketのURLを設定し、デプロイすると動作します。

https://github.com/sakuraio/handson-sample/blob/reform/firststep/part2/nodered-firststep-part2.json
95Node-RED フローの作成
フローの内部ではこのような処理をしています。

文字列として受け取った
JSONデータの変換../ui/ にグラフとして可視化

sakura.ioのWebSocket
から情報を取得

モジュールからのデータのみを通過（type == channels）

温度（ch1）データだけを抽出

https://github.com/sakuraio/handson-sample/blob/reform/firststep/part2/nodered-firststep-part2.json

96Node-RED フローの動作確認（グラフ表示）【 http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ui/ 】 にアクセスすると、取得した情報に応じて動的にグラフが生成されることを確認できます。

97

利用例その2
温度・湿度の測定(Zabbix編)
98システム構成

温湿度データを取得しsakura.ioへ送出
マイコン（Arduino Uno）

sakukra.io
モジュール

Websocketでデータを入手し
Zabbixに投入
LTE
閉域網

WebSocket

仮想サーバ
Linux (CentOS)
温湿度センサ99

作業内容

1. sakura.ioの設定
₋

利用例1と同じ

2. 機器の配線とマイコンのプログラム開発
₋

利用例1と同じ

3. Zabbixサーバの構築とデータ取得プログラムの開発
₋₋₋
₋

Zabbixサーバを作成
Zabbixにおける監視の設定
sakura.ioからのデータ取得プログラムを開発
プログラムをサーバに設置し定期的に作動するように設定
100

Zabbixサーバの構築

作業概要• サーバを作成 (ここではCentOS 7を使用)• firewalldの設定• Webサーバ(Apacheやnginxなど)の入手と設定• DBサーバ(MySQL/MariaDB/PostgreSQLなど)のインストールとDB作成• Zabbixのインストールと設定
10
1

Zabbixサーバの作成
さくらのクラウドには、サーバ作成時に任意のスクリプトを自動実行する「スタートアップスクリプト」機能があります。
スタートアップスクリプトにzabbix-serverを指定することにより、前ページに掲げた作業がすべて自動的に実行され、Zabbixサーバを簡単に作ることができます。

102

Zabbixの監視設定(概略)監視の有効化 → アイテムの作成 → グラフの追加→ スクリーンの追加

103

Zabbixへのデータ投入プログラム
sakura.io からの WebSocket を受信 → 温度と湿度を zabbix_sender で送信
下記の例はPerlとMojoliciousを使用しているが、WebsocketとJSONを扱えるならどのプログラム言語でも記述可能#!/usr/bin/perl
use strict;
use warnings;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;$ua->websocket('wss://api.sakura.io/ws/v1/xxxxxxxxxx/' => sub {（略）
open(CMD, "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o $dat |");
print "Temp:",$dat,"¥n";print "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o ",$dat,"¥n";104WebsocketのURIを入手しプログラムに設定

105

温度・湿度をZabbixでグラフ化

106利用例その3
LEDの操作107

システム構成
Node-REDのGUIでLEDを操作しWebSocketにてデータを送信

sakura.ioからデータを受信し3色のLEDを点灯/消灯
抵抗入りLEDsakura.io
モジュール

マイコン（Arduino Uno）

LTE
閉域網

WebSocket

仮想サーバ
10
8

作業内容

1. sakura.ioの設定
₋

利用例1,2と同じ

2. 機器の配線とマイコンのプログラム開発
₋₋₋

通信モジュールとArduinoシールドを接続
Arduinoからの信号がLEDに伝わるように配線
sakura.ioから入手したデータによりLEDを操作するArduinoのプログラムを作成

3. サーバの作成とLED操作フローの開発
₋₋
₋

Node-REDサーバを作成
LEDを操作するフローを作成しデプロイ
Node-REDのGUIを操作しLEDを点灯/消灯
109機器の配線とマイコンのプログラム開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

抵抗入りLEDsakura.io
モジュール

マイコン（Arduino Uno）

仮想サーバ
11
0

温度センサとLEDの繋ぎ込み

SIG

SIG

SIG

図に従い、Groveケーブルを使用してLED Socket Kitを配線します。

D7：LED（赤）D6：LED（緑）D5：LED（青）111Arduinoのプログラムの構築
sakura.ioから受信したデータに応じてLEDに信号を送るプログラムをArduinoに書き込みます。
プログラムが動作すると、シリアルモニタに結果が表示されます。
(LEDに関する情報は出ません)

112

サーバの作成とLED操作フローの開発②①
マイコンおよびプログラムの構築③

sakura.ioの設定

Webサービス連携（さくらのクラウド）

抵抗入りLEDsakura.io
モジュール

マイコン（Arduino Uno）

仮想サーバ
11
3

Node-REDフローの作成（デバイス制御 – モジュールIDの指定）• LEDが接続されているsakura.ioモジュールのIDを指定します。
• このフローはデプロイされた時に1回だけ動作し、用途に応じた制御用JSON
データを8個作成し、それらを変数にセットします。

JSONデータに埋め込む
sakura.ioモジュールのIDを設定
114

Node-RED フローの作成（デバイス制御 – WebSocketURLの指定）• sakura.ioからJSONデータを送信するWebSocketのURLを指定します。
• ダッシュボード画面でボタンが押下されると、制御用JSONデータを呼び出し、指定したWebSocketに送信します。

指定したWebSocketのURLに
JSONデータを送信../ui/ でボタンとして表示
クリックされると制御用JSONデータを送出
115

Node-RED フローの動作確認【 http://<サーバのIPアドレス>:<指定したWeb UIポート番号>/ui/ 】 にアクセスし、最右列のボタンをクリックすると、それに応じてLEDが点灯/消灯します。

116

まとめ

117

今日お話ししたこと• IoTを取り巻く状況• データ収集方法が課題• IoTサービスを作るときの問題点• 作業範囲が広範 / どの通信方式を選ぶか / セキュリティの確保• sakura.ioについて• 開発経緯 / サービス概要 / 利用事例

• sakura.ioとOSSの組み合わせ• 温湿度センサーから取得した温度と湿度をNode-REDやZabbixで表示• Node-REDからデータを送信しLEDを点灯/消灯
118

sakura.ioが目指す世界

通信⇔データ連携
さくらインターネットにおまかせ

通信 ネットワーク

DB

ミドル

API

モノとWebの間でデータを相互にやりとりするためのプラットフォームサービスを開発

既存の事業領域/スキルセットの大幅な変更なく
モノ/サービスづくり、連携に注力可能

11
9

参考情報

120

展示ブースのご紹介
利用例(温湿度測定/LED操作)のデモと、sakura.io関連製品を展示
さくらのクラウドなどのクーポン、2019年カレンダーなども配布

121sakura.io体験ハンズオン• 展示ブースのデモ内容と同じことを実習• 東京と大阪では定期的に開催中• パートナーとの共催ハンズオンも実施中• Twilio / Azure / Bluemix / 駅すぱあと / AWS など• 1月に福岡と佐賀で開催予定 (1/15 福岡、1/16 佐賀)• 「sakura.io ハンズオン (地名)」もしくは 「さくらのイベント九州版」
で検索• 他県でも開催したい！協力者求む！
122

sakura.ioではじめるIoT電子工作• sakura.ioを使ったIoT工作の解説書• 2018年2月発売• 主な内容• sakura.ioの使い方• Arduinoでsakura.ioを使う• Raspberry Piとsakura.ioの接続• LinuxやPythonでセンサーの値を処理• sakura.ioから受信したデータの処理(JavaScript、MQTT、データストアなど)
123

全国でさくらのイベントを！

• さくらのイベントを全国で開催したい！
• sakura.ioのハンズオン• さくらのクラウドなど各種サービスのハンズオン• さくらの夕べ / さくらクラブ など…

• 協力者求む！
• 会場の提供• 参加者集め
• 地元コミュニティとの共催も可• 連絡先：sakura-club@sakura.ad.jp
124そこに、さくら125